//Base class for reused functions.

function debug_info(text){
	/*
	var e = ebi('debug_text');
	if (e){
		e.value = e.value + "\n" + text;
	}
	*/
}



/** 
from alexking.org
*/
function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) { 
    	myField.focus();
    	sel = document.selection.createRange();
    	sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
    	var startPos = myField.selectionStart;
    	var endPos = myField.selectionEnd;
    	myField.value = myField.value.substring(0, startPos)
    		+ myValue
    		+ myField.value.substring(endPos, myField.value.length);
    } else {
    	myField.value += myValue;
    }
}

function doNothingAtCursor(myField){
    //IE support
    if (document.selection) {
	myField.focus();
	myField.value = myField.value;
    }
}

function ebi(id){
	var obj = document.getElementById(id);
	//if (obj == null){
	//	alert(id + " is null");
	//}
	return obj;
}

function replace_element(id, req){
//check for logout.
  var responseText = req.responseText.substring(0, 1000);
  //alert(responseText);
  if (responseText.indexOf('%LOGGEDOUT%') >= 0) {
  	//alert("logged out");
  	document.location = "/Public/PublicHome.html";
  } else if (responseText.indexOf('%SEARCHPAGE%') >= 0) {
  	//alert("logged out");
  	document.location = "/search/SearchPage.html";
  } else {
  	var element = ebi(id)
    element.innerHTML = req.responseText;
    if(element.id == "main_wrapper" && document.body.className.indexOf('wordbankLayout') >= 0) { applyWWHoverEvents(); }
    create_compound_tabs();
    create_flash_objects();
 	hide_nonjs_show_jsonly();
 	setUpFlashSoundHover();
   }
}

function switch_main(req){
  replace_element("main_wrapper", req);
}

function switch_side(req){
  replace_element("side_wrapper", req);
  start_timer();
}

function dosearch(formid, param, value) {
doParamChangeAndSubmit(formid, param, value);
}

function doParamChangeAndSubmit(formid, param, value)
// used for changing the value of a parameter and resubmitting a form
// for example for pagination and sorting
{
//  alert(formid + " " + param + " " + value);
  var form = ebi(formid);
  if (form) 
   {
        p = form.elements[param];
        if (p) 
          p.value = value;
//        else alert("no " + param);
   }    
//    else alert("no " + formid);

  if (!form.onsubmit || form.onsubmit()) {
    // either there is no onsubmit method,
    // or we call it and it succeeds
    form.submit();
  }
}

function doParamChange(formid, param, value)
// used for changing the value of a parameter and resubmitting a form
// for example for pagination and sorting
{
  var form = ebi(formid);
  if (form) 
   {
        p = form.elements[param];
        if (p) 
          p.value = value;
   }     
}



function doMultiChangeAndSubmit(formid, param, csv_value)
// used for changing the value of an array of parameters to the values in the csv_value
// then submitting the form
{
  //alert("csv: " + csv_value);
  var form = ebi(formid);
  a = form.elements[param];
  //alert("a.length: " + a.length);
  var values = csv_value.split (",");
  //alert("values.length: " + values.length);
  
  var i;
  for (i=0; i<a.length && i<values.length; i++) {
       //alert(i);
       //alert("Setting param." + i + " to " + values[i]);
       a[i].value = values[i];
  }
  for (; i<a.length; i++)
     a[i].value = "";

  if (!form.onsubmit || form.onsubmit()) {
    // either there is no onsubmit method,
    // or we call it and it succeeds
    form.submit();
  }
}

function compare(formid, param, value) {
	return ebi(formid).elements[param].value == value;
}


//timer functions

var browse_select_timer;

function clear_timer(){
  if (browse_select_timer){
    window.clearTimeout(browse_select_timer);
  }
}

function start_timer(){
  clear_timer();
  if (ebi('current_entry')){
  	var timer = window.setTimeout("select_current_entry()", 3 * 1000);
  	browse_select_timer = timer;
  }
}

//end timer functions

function get_main_form(){
  return ebi("translate_form");
}

function change_query_value(id, name, value){
	var element = ebi(id);
	var used = false;
	var newsearch = "?";
	var oldsearch = element.search;
	if (oldsearch.charAt(0) == '?') {
		oldsearch = oldsearch.substring(1);
	}
	for (term in oldsearch.split('&')){
		if (term.indexOf(name + '=') == 0){
		  newsearch += name + '=' + value;
		  used = true;
		} else {
		  newsearch += term;
		}
		newsearch += '&';
	}
	if (!used){	
		  newsearch += name + '=' + value;		
	}
	element.search = newsearch.substring(0, newsearch.length - 1);
}

