/*
 * tripedia.org
 * 
 * (c) Jan Poeschko
 * 
 */

function createContexts() {
	//alert("hi");
  $$('.context').invoke('hide');
  $$('.contextitem').each(function(li) {
  	if (li.select('.context').size() > 0) {
      //log(li);
	    li.observe('mouseover', function() {
	      //log('over ' + li);
	      li.select('.context').invoke('show');
	    });
	    li.observe('mouseout', function() {
	      li.select('.context').invoke('hide');
	    });
  	}
  });
}

$(document).observe('dom:loaded', createContexts);
//Event.observe(window, 'load', createContexts);	// dom:loaded not fired in IE6

Ajax.Responders.register({
  onCreate: function() {
    $('ajaxloading').show();
  },
  onComplete: function(request, response, header) {
  	if (Ajax.activeRequestCount == 0)
  		$('ajaxloading').hide();
  	//log(response.status);
  	if (response.status / 100 == 2)
  		$('ajaxerror').hide();
  	else if (response.status != 0) {
  		//log(response.status);
  		$('ajaxerror').show();
  	}
  }/*,
  onException: function() {
  	$('ajaxerror').show();
  },
  onFailure: function() {
  	log('fail');
  	$('ajaxerror').show();
  },
  onSuccess: function() {
  	$('ajaxerror').hide();
  }*/
});

function formCancel(event) {
	var referer = this.up('form').select('input[name=referer]')[0].value;
  //history.back();
	//log(referer);
	window.location = referer;
  return true;
}

$(document).observe('dom:loaded', function() {
	$$('.cancel').each(function(input) {
		//log('observe ' + input);
		input.observe('click', formCancel.bindAsEventListener(input));
	});
});

function insert(txtarea, tagOpen, tagClose, sampleText) {
	var selText, isSample = false;

	if (document.selection  && document.selection.createRange) { // IE/Opera

		//save window scroll position
		if (document.documentElement && document.documentElement.scrollTop)
			var winScroll = document.documentElement.scrollTop
		else if (document.body)
			var winScroll = document.body.scrollTop;
		//get current selection  
		txtarea.focus();
		var range = document.selection.createRange();
		selText = range.text;
		//insert tags
		checkSelectedText();
		range.text = tagOpen + selText + tagClose;
		//mark sample text as selected
		if (isSample && range.moveStart) {
			if (window.opera)
				tagClose = tagClose.replace(/\n/g,'');
			range.moveStart('character', - tagClose.length - selText.length); 
			range.moveEnd('character', - tagClose.length); 
		}
		range.select();   
		//restore window scroll position
		if (document.documentElement && document.documentElement.scrollTop)
			document.documentElement.scrollTop = winScroll
		else if (document.body)
			document.body.scrollTop = winScroll;

	} else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla

		//save textarea scroll position
		var textScroll = txtarea.scrollTop;
		//get current selection
		txtarea.focus();
		var startPos = txtarea.selectionStart;
		var endPos = txtarea.selectionEnd;
		selText = txtarea.value.substring(startPos, endPos);
		//insert tags
		checkSelectedText();
		txtarea.value = txtarea.value.substring(0, startPos)
			+ tagOpen + selText + tagClose
			+ txtarea.value.substring(endPos, txtarea.value.length);
		//set new selection
		if (isSample) {
			txtarea.selectionStart = startPos + tagOpen.length;
			txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
		} else {
			txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
			txtarea.selectionEnd = txtarea.selectionStart;
		}
		//restore textarea scroll position
		txtarea.scrollTop = textScroll;
	} 

	function checkSelectedText(){
		if (!selText) {
			selText = sampleText;
			isSample = true;
		} else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
			selText = selText.substring(0, selText.length - 1);
			tagClose += ' '
		} 
	}

}

function openHelp(page) {
  var left = (screen.width - 550) / 2;
  var top = (screen.height - 580) / 2;
  var help = window.open(page, 'tripedia_org_help',
    'width=550, height=580, left=' + left + ', top=' + top +
    ', dependent=yes, menubar=no, scrollbars=yes, toolbar=no, resizeable=yes');
  help.focus(); 
}

function openExternal(sender) {
  if (opener)
    opener.open(sender.href);
  else
    window.open(sender.href);
  return false;
}

function openMain(page) {
  opener.location.href = page;
  opener.focus();
}

function deleteMessage(id) {
  askQuestion("Delete message", "Do you really want to delete this message?", ["Yes, delete it", "No"], function() {
    $('delete_message_id').value = id;
    $('delete_message_form').submit();
  });
}

/*function onShortTextMouseOver(text) {
  $(text).toggleClassName('mouseover');
}

function onShortTextMouseOut(text) {
  $(text).removeClassName('mouseover');
}

function onShortTextClick(url) {
  location.href = url;
}*/