function show_loading(){ 
    $("body").append("<div id='ajax-indicator'><span>Loading...</span></div>");
}

function hide_loading(){
    $("#ajax-indicator").remove();
}

$(document).ready(function(){
	$(".hover").hover(function() {
		//$(this).children("em").animate({opacity: "show", top: "-75"}, "fast");
		$(this).children("em").show();
	}, function() {
		//$(this).children("em").animate({opacity: "hide", top: "-85"}, "fast");
		$(this).children("em").hide();
	});
});


function compareTextAsFloat (option1, option2) {
  var value1 = parseFloat(option1.text);
  var value2 = parseFloat(option2.text);
  return value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
}

function compareValueAsFloat (option1, option2) {
  var value1 = parseFloat(option1.value);
  var value2 = parseFloat(option2.value);
  return value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
}

function sortSelect (select, compareFunction) {
  if (!select) 
    return;
  if (!compareFunction)
    compareFunction = compareText;
  var options = new Array (select.options.length);
  var selectedValue;
  for (var i = 0; i < options.length; i++) {
    options[i] = 
      new Option (
        select.options[i].text,
        select.options[i].value,
        select.options[i].defaultSelected,
        select.options[i].selected
      );
    if (select.options[i].selected) {
	selectedValue = select.options[i].value;
    }
    if (select.options[i].defaultSelected) {
	index = i;
    }
  }

  options.sort(compareFunction);

  select.options.length = 0;
  for (var i = 0; i < options.length; i++) {
    select.options[i] = options[i];
  }
  if (selectedValue) {
	  for (var i = 0; i < options.length; i++) {
	      if (select.options[i].value==selectedValue) {
		select.selectedIndex =  i;
		break;
	      }
	  }
  }
}


function getConnectionObjectInstance()
{
	//the soon to be gateway HTTP connection
	var gw_http_request = null;
	
	//try to create a new http connection object try MS
	if(window.ActiveXObject){
		try{
		      gw_http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e){
			try{
				gw_http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(ex){
				throw new Error("IE browser, but xmlhttp create failed: " + ex);
			}
		}
	//try gecko type
	} else {
		try {
			gw_http_request = new XMLHttpRequest();
			
			if(gw_http_request.readyState == null){
				gw_http_request.readyState = 1;
				gw_http_request.addEventListener(
					"load", 
					function(){
						gw_http_request.readyState = 4;
						if(typeof gw_http_request.onreadystatechange == "function")
							gw_http_request.onreadystatechange();
					},
					false
				);
			}
		} catch(e){
			throw new Error("Gecko browser, but xmlhttp create failed: " + ex);
		}
	}
	
	if(gw_http_request == null) {
		throw new Error("Unable to create connection to log toggling");
	}
	return gw_http_request;
}

function doGet(connection,method,url,params,async)  {
        if (async==undefined) {
	   async = true;
	} 

	connection.open(method, url+"?"+params, async);
        if(!params) {
		params= "nothing";
	} else {
		connection.setRequestHeader("Content-Length",""+params.length);
	}

	connection.onreadystatechange = function() {
	    if (connection.readyState == 4) {
		if(connection.status != 200) {
		    alert("Response status="+connection.status);
	        }
	    }
	};

        try {
            connection.send("");
        } catch(err) {
            // alert(err);
	    return "error";
        }

	if (!async) {
            return connection.responseText;
        }
}



function sendForm(form,url) {
  var getstr = "";
  var inputs = form.getElementsByTagName("input");

  for (i=0; i<inputs.length; i++) {
        if (inputs[i].type == "text" || inputs[i].type == "hidden") {
           getstr += inputs[i].name + "=" + inputs[i].value + "&";
        } else if (inputs[i].type == "checkbox") {
           if (inputs[i].checked) {
              getstr += inputs[i].name + "=" + inputs[i].value + "&";
           } else {
              getstr += inputs[i].name + "=&";
           }
        } else if (inputs[i].type == "radio") {
           if (inputs[i].checked) {
              getstr += inputs[i].name + "=" + inputs[i].value + "&";
           }
        }             	
  }
  var inputs = form.getElementsByTagName("textarea");
  for (i=0; i<inputs.length; i++) {
           getstr += inputs[i].name + "=" + escape(inputs[i].value) + "&";
  }
  var inputs  = form.getElementsByTagName("select");
  for (i=0; i<inputs.length; i++) {
        var sel = inputs[i];
        getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
  }
  var conn = getConnectionObjectInstance();
  return doGet(conn,"get",url,getstr,false);
}