//generic functions
//==================================================================================
function accessCSS(layerID) 
{ 
	if(document.getElementById){
		return document.getElementById(layerID).style; 
	} 
	else if(document.all) { 
		return document.all[layerID].style; 
	} 
	else if(document.layers) { 
		return document.layers[layerID]; 
	}
	else {
		return false;
	}
}

//==================================================================================
//Created by: Cyanide_7
function autoTab(input, len, e)
{
	var isNN = (navigator.appName.indexOf("Netscape") != -1);
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)){
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}

	function containsElement(arr, ele)
	{
		var found = false, index = 0;
		while(!found && index < arr.length)
		if(arr[index] == ele)
		found = true;
		else
		index++;
		return found;
	}

	function getIndex(input)
	{
		var index = -1, i = 0, found = false;
		while(i < input.form.length && index == -1)
		if(input.form[i] == input)index = i;
		else i++;
		return index;
	}
	return true;
}

//ajax begin
var http_request = false;
var div_recv;

//=================================================
function makePOSTRequest(url, parameters)
{
	http_request = false;
	
	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType){
			http_request.overrideMimeType('text/xml; charset=iso-8859-1' );
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){
			}
		}
	}
	
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = alertContents;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	if(parameters)
		http_request.setRequestHeader("Content-length", parameters.length);
	else
		http_request.setRequestHeader("Content-length", url.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

//=================================================
function alertContents() 
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			result = http_request.responseText;

			if(div_recv) {
				document.getElementById(div_recv).innerHTML = result;
			}
			if(document.getElementById('_ajaxloading'))
				accessCSS('_ajaxloading').visibility = "hidden";
		}
		else
		{
			alert('There was a problem with the request. Error code: ' + http_request.status + " " + http_request.statusText);
		}
	}
}

//=================================================   
function ajax(mdl, act, form_name, todiv, extra_get_vars)
{
	if(extra_get_vars==null) {
		extra_get_vars = "";
	}

	if(document.getElementById('_ajaxloading'))
		accessCSS('_ajaxloading').visibility = "visible";
	
	var strparams;
	var poststr;
	var i = 0;
	var tmps;
	var postvalue;
	
	div_recv = todiv;
	if(document.forms[form_name])
	{
		while(document.forms[form_name].elements[i]!=null)
		{
			//alert(document.forms[form_name].elements[i].name+' = '+document.forms[form_name].elements[i].value);

			tmps = document.forms[form_name].elements[i].name;

			if(document.forms[form_name].elements[i].type == "select-multiple")
			{
				var x = 0, s = 0;
				var len = document.forms[form_name].elements[i].options.length;
				var concat_sel = "";
				var num_sel;

				for(x=0; x<len; x++)
				{
					if(document.forms[form_name].elements[i].options[x].selected == true)
						s++;
				}

				for(x=0; x<len; x++)
				{
					if(document.forms[form_name].elements[i].options[x].selected == true)
					{
						concat_sel += document.forms[form_name].elements[i].name + "=" +
									document.forms[form_name].elements[i].options[x].value + "&";
					}
				}

				concat_sel = concat_sel.substring(0, concat_sel.length-1);

				postvalue = concat_sel;

				if(poststr == null)
					poststr = postvalue;
				else
					poststr += "&"+postvalue;
			}
			else if(document.forms[form_name].elements[i].type == "checkbox")
			{
				if(document.forms[form_name].elements[i].checked)
				{
					postvalue = encodeURI( document.forms[form_name].elements[i].value );

					if(poststr == null)
						poststr = tmps +"="+  postvalue;
					else
						poststr += "&" + tmps +"="+ postvalue;
				}
			}
			else if(document.forms[form_name].elements[i].type == "radio")
			{
				if(document.forms[form_name].elements[i].checked)
				{
					postvalue = encodeURI( document.forms[form_name].elements[i].value );

					if(poststr == null)
						poststr = tmps +"="+  postvalue;
					else
						poststr += "&" + tmps +"="+ postvalue;
				}
			}
			else
			{
				postvalue = encodeURI( document.forms[form_name].elements[i].value);

				if(poststr == null)
					poststr = tmps +"="+  postvalue;
				else
					poststr += "&" + tmps +"="+ postvalue;
			}

			i++;
		}
	}

	makePOSTRequest('?mdl='+mdl+'&action='+act+extra_get_vars, poststr);
}
