/* DOM & DHTML helper functions */
/* Version 0.9.3, 19 Jun 2005, Adamv.com */

// Looks up the given node by ID if a string is passed in,
// otherwise returns the given object.
// This lets functions work either with a node ID to look up
// or an already retreived node.

// Don't pass in anything other than strings or nodes.
function $(o) {
	if (typeof(o) == "string")
		return document.getElementById(o)
	else
		return o;
}

DOM = {
	// Remove all the children of the given node
	nuke: function(id){
		var o=$(id); if (!o) return;
//		while(0 < o.childNodes.length)
//			o.removeChild(o.childNodes[0]);
		while(o.hasChildNodes())
			o.removeChild(o.firstChild);
	},
	
	before: function(id, node, nodeType){
		var o=$(id); if (!o) return;
		if (typeof(node) == "string"){
			var newNode = document.createElement(nodeType || "div")
			newNode.innerHTML = node
			node = newNode
		}
		o.parentNode.insertBefore(node, o)
	},
	
	after: function(id, node, nodeType){
		var o=$(id); if (!o) return;
		if (typeof(node) == "string"){
			var newNode = document.createElement(nodeType || "div")
			newNode.innerHTML = node
			node = newNode
		}
		o.parentNode.insertBefore(node, o.nextSibling)
	},
	
	// Sets the visibility of the given node
	set_visible: function(id,visible){
		if (visible) Display.show(id); else Display.hide(id)
	},
	
	// Hides the given node by setting CSS display: none
	hide: function(id){Display.show(id, "none")},
	// Displays the given node by clearing the CSS display property
	// This resets display: to the default value for that element type
	show: function(id, style){
		var o=$(id); if (!o) return;
		o.style.display = style || "";
	},
		
	// Toggle the visibility of the given node
	toggle: function(id){
		var o=$(id); if (!o) return;
		(o.style.display == "none") ? Display.show(o) : Display.hide(o)
	},
	
	// Enables the given node (useful for form elements.)
	enable: function(id){
		var o=$(id); if (!o) return;
		o.disabled="";
	},
		
	// Disables the given node (useful for form elements.)
	disable: function(id){
		var o=$(id); if (!o) return;
		o.disabled="disabled";
	},
	
	background: function(id, color){
		var o=$(id); if (!o) return;
		o.style.background=color
	}
}

/////////////////////////////////////////////////////////////////
// AJAX request for user administration panel
/////////////////////////////////////////////////////////////////
var xmlreqs = new Array();

function CXMLReq(freed) 
{ 
	this.freed = freed; 
	this.xmlhttp = false; 
	if(window.XMLHttpRequest) 
		this.xmlhttp = new XMLHttpRequest(); 
	else if(window.ActiveXObject) 
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

function ajaxRequest(url, params, div_id, uid, tbcl, opt) 
{ 
	var pos = -1; 
	for(var i=0; i<xmlreqs.length; i++) 
	{ 
		if(xmlreqs[i].freed == 1)  
			pos = i; break; 
	} 
	if(pos == -1) 
		pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); 
	if(xmlreqs[pos].xmlhttp) 
	{ 
		xmlreqs[pos].freed = 0; 
		xmlreqs[pos].xmlhttp.open('POST',url,true); 
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    xmlreqs[pos].xmlhttp.setRequestHeader("Content-length", params.length);
	    xmlreqs[pos].xmlhttp.setRequestHeader("Connection", "close");				
		xmlreqs[pos].xmlhttp.onreadystatechange = function() { 
			if(typeof(req_change) != 'undefined') 
				req_change(pos, div_id, uid, tbcl, opt); 
		}
	
		if(window.XMLHttpRequest) 
			xmlreqs[pos].xmlhttp.send(params); 
		else if(window.ActiveXObject) 
			xmlreqs[pos].xmlhttp.send(params); 
	}
}

function req_change(pos, div_id, uid, tbcl, opt) 
{
	if(typeof(xmlreqs[pos]) != 'undefined' && 
		xmlreqs[pos].xmlhttp.readyState == 1) 
	{
		if(div_id == "data_util_mod")
		{
			var disp = document.getElementById("de_textarea");
			//disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;
			disp.innerHTML = "running...";
		}
	}

	if(typeof(xmlreqs[pos]) != 'undefined' && 
		xmlreqs[pos].xmlhttp.readyState == 2) 
	{
		if(div_id == "data_util_mod")
		{
			var disp = document.getElementById("de_textarea");
			//disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;
			disp.innerHTML = "still running...";
		}
	}
	
	if(typeof(xmlreqs[pos]) != 'undefined' && 
		xmlreqs[pos].xmlhttp.readyState == 3) 
	{
		if(div_id == "data_util_mod")
		{
			var disp = document.getElementById("de_textarea");
			//disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;
			disp.innerHTML = "almost done...";
		}
	}
	
	if(typeof(xmlreqs[pos]) != 'undefined' && 
		xmlreqs[pos].freed == 0 && 
		xmlreqs[pos].xmlhttp.readyState == 4) 
	{	
		if(xmlreqs[pos].xmlhttp.status == 200 || 
			xmlreqs[pos].xmlhttp.status == 304)
		{
			if(div_id == "login_msg")
			{
				var res = xmlreqs[pos].xmlhttp.responseText;
				var msg = document.getElementById(div_id);
				var dis = document.getElementById(div_id + "_dis");
				var ok = document.getElementById(div_id + "_ok");
				
				if(res == "")
				{
					DOM.show(dis, "none");
					DOM.show(msg, "block");
				}
				else if(res == -1)
				{
					DOM.show(msg, "none");
					DOM.show(dis, "block");
				}
				else
				{
					DOM.show(msg, "none");
					DOM.show(dis, "none");
					DOM.show(ok, "block");
					window.location="terms.php";
				}
			}
			else if(div_id == "forgot_msg")
			{
				var res = xmlreqs[pos].xmlhttp.responseText;
				var msg = document.getElementById(div_id);
				var ok = document.getElementById(div_id + "_ok");
				var fg_submit = document.getElementById("fg_submit");
				var fg_sent = document.getElementById("fg_sent");
				
				if(res.match("password"))
				{
					DOM.show(msg, "none");
					DOM.show(ok, "block");
					DOM.show(fg_submit, "none");
					DOM.show(fg_sent, "block");
					ok.innerHTML = res;
				}
				else
				{
					DOM.show(msg, "block");
					msg.innerHTML = res;
				}
			}
			else if(div_id == "default_make")
			{
				var dfmk = document.getElementById(div_id);
				var mdw = document.getElementById("model_wait");
				var mkw = document.getElementById("make_wait");
				
				dfmk.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(dfmk,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
			}
			else if(div_id == "default_make_rl")
			{
				var dfmk = document.getElementById("default_make");
				var mdw = document.getElementById("model_wait");
				var mkw = document.getElementById("make_wait");
				
				dfmk.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(dfmk,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
				
				// tbcl is actually a string passed through
				filldd_all("make", tbcl[0], tbcl[1], tbcl[2], uid);
			}
			else if(div_id == "model_options")
			{
				var mo = document.getElementById(div_id);
				var mdw = document.getElementById("model_wait");
				var mkw = document.getElementById("make_wait");
				
				mo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(mo,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
			}
			else if(div_id == "model_options_all")
			{
				var mo = document.getElementById("model_options");
				var mdw = document.getElementById("model_wait");
				var mkw = document.getElementById("make_wait");
				
				mo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(mo,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
				
				// pull up model
				var model = document.getElementById("model");
				for(i = 0; i < model.length; i++)
					if(model.options[i].value == tbcl)
						model.options[i].selected = true;	
				
				// tbcl is really model, opt is really year
				filldd_all("model", undefined, tbcl, opt, uid);
			}
			else if(div_id == "year_options")
			{
				var yo = document.getElementById(div_id);
				var yw = document.getElementById("year_wait");
				
				yo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(yo,"block");
				DOM.show(yw,"none"); // disable the spinning wait wheel
			}
			else if(div_id == "year_options_all")
			{
				var yo = document.getElementById("year_options");
				var yw = document.getElementById("year_wait");
				
				yo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(yo,"block");
				DOM.show(yw,"none"); // disable the spinning wait wheel
				
				// pull up year
				var year = document.getElementById("year");
				for(i = 0; i < year.length; i++)
					if(year.options[i].text == tbcl)
						year.options[i].selected = true;
						
				submitform(uid, "**", 1, 2);
			}
			else if(div_id == "suggest")
			{
				var sug = document.getElementById(div_id);
				var sugtx = document.getElementById(div_id + "_tx");
				var sugtx2 = document.getElementById(div_id + "_tx2");
				
				sug.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				
				if(sug.innerHTML != "")
				{
					DOM.show(sug, "block");
					
					if(xmlreqs[pos].xmlhttp.responseText.match("href"))
						DOM.show(sugtx, "block");
					else
						DOM.show(sugtx2, "block");
				}
			}
			else if((div_id == "cmex") || (div_id == "cmmr") ||	
					(div_id == "cmmt") || (div_id == "cmri") ||
					(div_id == "rcex") || (div_id == "rcmr") ||
					(div_id == "rcmt") || (div_id == "rcri") ||
					(div_id == "ivex") || (div_id == "ivmr") ||
					(div_id == "ivmt") || (div_id == "ivri") ||
					(div_id == "ctex") || (div_id == "ctmr") ||
					(div_id == "ctmt") || (div_id == "ctri") ||
					(div_id == "rcfr"))
			{
				var output = document.getElementById(div_id);
				var sl = document.getElementById("sloading");
				var bresults = document.getElementById("bsearch_results");

				tabchange(uid,div_id,tbcl);
				output.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(output,"block");
				DOM.show(bresults,"block"); // show the results div
				DOM.show(sl,"none"); // disable the spinning wait wheel
				refresh_hsty(uid);
			}
			else if((div_id == "tabsnav") || (div_id == "es_main_tabsnav") ||
					(div_id == "escmve_sub_tabsnav") || (div_id == "escmch_sub_tabsnav") ||
					(div_id == "escmti_sub_tabsnav") || (div_id == "escmeq_sub_tabsnav") ||
					(div_id == "esrcve_sub_tabsnav") || (div_id == "esrcch_sub_tabsnav") ||
					(div_id == "esrcti_sub_tabsnav") || (div_id == "esrceq_sub_tabsnav") ||
					(div_id == "esivve_sub_tabsnav") || (div_id == "esivch_sub_tabsnav") ||
					(div_id == "esivti_sub_tabsnav") || (div_id == "esiveq_sub_tabsnav") ||
					(div_id == "esctve_sub_tabsnav") || (div_id == "esctch_sub_tabsnav") ||
					(div_id == "escteq_sub_tabsnav") || (div_id == "dataedit_tabsnav") ||
					(div_id == "acct_tabsnav") || (div_id == "bs_export") ||
					(div_id == "escmvediv_export") || (div_id == "esrcvediv_export") ||
					(div_id == "esivvediv_export") || (div_id == "esctvediv_export") ||
					(div_id == "escmchdiv_export") || (div_id == "esrcchdiv_export") ||
					(div_id == "esivchdiv_export") || (div_id == "esctchdiv_export") ||
					(div_id == "escmtidiv_export") || (div_id == "esrctidiv_export") ||
					(div_id == "esivtidiv_export") || (div_id == "escttidiv_export") ||
					(div_id == "escmeqdiv_export") || (div_id == "esrceqdiv_export") ||
					(div_id == "esiveqdiv_export") || (div_id == "escteqdiv_export"))
			{
				var tn = document.getElementById(div_id);
				tn.innerHTML = xmlreqs[pos].xmlhttp.responseText;
			}
/*			else if((div_id == "escm_make") || (div_id == "esrc_make") ||
					(div_id == "esiv_make") || (div_id == "esct_make"))
			{
				if(div_id == "escm_make") eshd = "escm";
				else if(div_id == "esrc_make") eshd = "esrc";
				else if(div_id == "esiv_make") eshd = "esiv";
				else if(div_id == "esct_make") eshd = "esct";
			
				var dfmk = document.getElementById(div_id);			
				var mdw = document.getElementById(eshd + "_mdwait");
				var mkw = document.getElementById(eshd + "_mkwait");	
				
				dfmk.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(dfmk,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
			}
			else if((div_id == "escm_model") || (div_id == "esrc_model") ||
					(div_id == "esiv_model") || (div_id == "esct_model"))
			{
				if(div_id == "escm_model") eshd = "escm";
				else if(div_id == "esrc_model") eshd = "esrc";
				else if(div_id == "esiv_model") eshd = "esiv";
				else if(div_id == "esct_model") eshd = "esct";
			
				var mo = document.getElementById(div_id);
				var mdw = document.getElementById(eshd + "_mdwait");
				var mkw = document.getElementById(eshd + "_mkwait");	
								
				mo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(mo,"block");
				DOM.show(mdw,"none"); // disable the spinning wait wheel
				DOM.show(mkw,"none"); // disable the spinning wait wheel
			}
			else if((div_id == "escm_year") || (div_id == "esrc_year") ||
					(div_id == "esiv_year") || (div_id == "esct_year"))
			{
				if(div_id == "escm_year") eshd = "escm";
				else if(div_id == "esrc_year") eshd = "esrc";
				else if(div_id == "esiv_year") eshd = "esiv";
				else if(div_id == "esct_year") eshd = "esct";
			
				var yo = document.getElementById(div_id);
				var yw = document.getElementById(eshd + "_yrwait");
				
				yo.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(yo,"block");
				DOM.show(yw,"none"); // disable the spinning wait wheel
			}
*/
			else if((div_id == "acct_new_msg") || 
					(div_id == "set_msg") ||
					(div_id == "ref_info_div") ||
					(div_id == "acct_cedit_new_msg"))
			{
				var msg = document.getElementById(div_id);
				msg.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(div_id,"block");
				
				// reset all values to original format
				if(div_id == "acct_new_msg")
				{
					document.acct_addform.reset();
					acct_clear_validations();
				}
				else
					set_clear_validations();
			}
			else if(div_id == "acct_save")
			{
				var u_chg = readCookie("acct_u_chg");
				var reply = xmlreqs[pos].xmlhttp.responseText;
				if(reply == "|!|")
					alert("That username is already taken.");
				else
					acct_foldup(uid); // uid is actually id of another user
			}
			else if(div_id == "acct_pullup_comp")
			{
				var reply = xmlreqs[pos].xmlhttp.responseText;
				var info = explode("::", reply);
				
				document.getElementById("acct_new_comp_add1").value = info[0];
				document.getElementById("acct_new_comp_add2").value = info[1];
				document.getElementById("acct_new_comp_city").value = info[2];
				document.getElementById("acct_new_comp_state").value = info[3];
				document.getElementById("acct_new_comp_zip").value = info[4];
				document.getElementById("acct_new_comp_country").value = info[5];
				document.getElementById("acct_new_comp_phone").value = info[6];
				document.getElementById("acct_new_bustype").value = info[7];
				document.getElementById("acct_new_pri_name1").value = info[8];
				document.getElementById("acct_new_pri_name2").value = info[9];
				document.getElementById("acct_new_pri_email").value = info[10];
				document.getElementById("acct_new_pri_phone").value = info[11];
			}
			else if(div_id == "acct_pullup_comp_cedit")
			{
				var reply = xmlreqs[pos].xmlhttp.responseText;
				var info = explode("::", reply);
				
				document.getElementById("acct_cedit_comp_add1").value = info[0];
				document.getElementById("acct_cedit_comp_add2").value = info[1];
				document.getElementById("acct_cedit_comp_city").value = info[2];
				document.getElementById("acct_cedit_comp_state").value = info[3];
				document.getElementById("acct_cedit_comp_zip").value = info[4];
				document.getElementById("acct_cedit_comp_country").value = info[5];
				document.getElementById("acct_cedit_comp_phone").value = info[6];
				document.getElementById("acct_cedit_bustype").value = info[7];
				document.getElementById("acct_cedit_pri_name1").value = info[8];
				document.getElementById("acct_cedit_pri_name2").value = info[9];
				document.getElementById("acct_cedit_pri_email").value = info[10];
				document.getElementById("acct_cedit_pri_phone").value = info[11];
			}
			else if((div_id == "acct_disable") || (div_id == "acct_enable") ||
					(div_id == "favs_save") || (div_id == "bs_export_file") ||
					(div_id == "es_export_file") || (div_id == "vid_download") ||
					(div_id == "bs_detail") || (div_id == "es_detail") || 
					(div_id == "doc_click") || (div_id == "acct_export_file") ||
					(div_id == "data_util_mod") || (div_id == "data_export_file") ||
					(div_id == "data_util_copytable_cm") || (div_id == "data_util_copytable_rc") ||
					(div_id == "data_util_copytable_iv") || (div_id == "data_util_copytable_ct") ||
					(div_id == "data_util_copytable_ve") || (div_id == "data_util_copytable_ch") ||
					(div_id == "data_util_copytable_ti") || (div_id == "data_util_copytable_eq") ||
					(div_id == "data_util_copytable_mt")) 
			{
				if((div_id == "bs_export_file") || (div_id == "es_export_file"))
				{
					if(div_id == "bs_export_file")
						hx = "bs";
					else if(div_id == "es_export_file")
						hx = tbcl;
					
					if(BrowserDetect.browser == "Firefox")
						dopopup("csvoutput.php");
					else
						doiframe("csvoutput.php");
					
					/*if(navigator.appName == "Microsoft Internet Explorer")
						doiframe();
					else
						dopopup();
					*/	
					var exp = document.getElementById(hx + "_export");
					var expwait = document.getElementById(hx + "_export_wait");
					DOM.show(exp, "block");
					DOM.show(expwait, "none");
				}
				
				if(div_id == "acct_export_file")
				{
					if(BrowserDetect.browser == "Firefox")
						dopopup("csvoutput.php");
					else
						doiframe("csvoutput.php");
					
					var acctexp = document.getElementById("acct_export");
					var acctexpwait = document.getElementById("acct_export_wait");
					DOM.show(acctexp, "block");
					DOM.show(acctexpwait, "none");
				}
				
				if(div_id == "data_export_file")
				{
					if(BrowserDetect.browser == "Firefox")
						dopopup("csvoutput.php");
					else
						doiframe("csvoutput.php");
					
					var dataexp = document.getElementById("data_export");
					var dataexpwait = document.getElementById("data_export_wait");
					DOM.show(dataexp, "block");
					DOM.show(dataexpwait, "none");
				}
				
				if(div_id == "vid_download")
				{
					if(BrowserDetect.browser == "Firefox")
						dopopup("vid_download.php?id=" + uid + "&rnd=" + tbcl);
					else
						doiframe("vid_download.php?id=" + uid + "&rnd=" + tbcl);
						
					var exp = document.getElementById("vid_export");
					var expwait = document.getElementById("vid_export_wait");
					DOM.show(exp, "block");
					DOM.show(expwait, "none");
				}
					
				if(div_id == "data_util_mod")
				{	
					var disp = document.getElementById("de_textarea");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				}
				
				if(div_id == "data_util_copytable_cm")
				{
					var disp = document.getElementById("de_textarea_ct_cm");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_rc")
				{
					var disp = document.getElementById("de_textarea_ct_rc");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_iv")
				{
					var disp = document.getElementById("de_textarea_ct_iv");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_ct")
				{
					var disp = document.getElementById("de_textarea_ct_ct");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_ve")
				{
					var disp = document.getElementById("de_textarea_ct_ve");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_ch")
				{
					var disp = document.getElementById("de_textarea_ct_ch");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_ti")
				{
					var disp = document.getElementById("de_textarea_ct_ti");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_eq")
				{
					var disp = document.getElementById("de_textarea_ct_eq");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
				
				if(div_id == "data_util_copytable_cm_mt")
				{
					var disp = document.getElementById("de_textarea_ct_mt");
					disp.innerHTML = xmlreqs[pos].xmlhttp.responseText;					
				}
			}
			else if((div_id == "bsearch_form") || (div_id == "acct_list") ||
					(div_id == "hsty_wrapper") || (div_id == "favs_list") ||
					(div_id == "favs_wrapper") || (div_id == "access_list") ||
					(div_id == "bs_chdiv_manf") || (div_id == "bs_tidiv_manf") ||
					(div_id == "bs_eqdiv_manf") || (div_id == "bs_tidiv_make") ||
					(div_id == "bs_eqdiv_make") || (div_id == "bs_vediv_manf") ||
					(div_id == "escmvediv_make") || (div_id == "esrcvediv_make") ||
					(div_id == "esivvediv_make") || (div_id == "esctvediv_make") ||
					(div_id == "escmtidiv_make") || (div_id == "esrctidiv_make") ||
					(div_id == "esivtidiv_make") || (div_id == "escttidiv_make") ||
					(div_id == "escmeqdiv_make") || (div_id == "esrceqdiv_make") ||
					(div_id == "esiveqdiv_make") || (div_id == "escteqdiv_make") ||
					(div_id == "escmvediv_model") || (div_id == "esrcvediv_model") ||
					(div_id == "esivvediv_model") || (div_id == "esctvediv_model") ||
					(div_id == "escmeqdiv_model") || (div_id == "esrceqdiv_model") ||
					(div_id == "esiveqdiv_model") || (div_id == "escteqdiv_model") ||
					(div_id == "escmvediv_year") || (div_id == "esrcvediv_year") ||
					(div_id == "esivvediv_year") || (div_id == "esctvediv_year") ||
					(div_id == "escmvediv_comp") || (div_id == "esrcvediv_comp") ||
					(div_id == "esivvediv_comp") || (div_id == "escmchdiv_comp") ||
					(div_id == "esrcchdiv_comp") || (div_id == "esivchdiv_comp") ||
					(div_id == "escmtidiv_comp") || (div_id == "esrctidiv_comp") ||
					(div_id == "esivtidiv_comp") || (div_id == "escmeqdiv_comp") ||
					(div_id == "esrceqdiv_comp") || (div_id == "esiveqdiv_comp") ||
					(div_id == "escmvediv_manf") || (div_id == "esrcvediv_manf") || 
					(div_id == "esivvediv_manf") || (div_id == "esctvediv_manf") ||
					(div_id == "escmchdiv_manf") || (div_id == "esrcchdiv_manf") || 
					(div_id == "esivchdiv_manf") || (div_id == "esctchdiv_manf") ||
					(div_id == "escmtidiv_manf") || (div_id == "esrctidiv_manf") || 
					(div_id == "esivtidiv_manf") || (div_id == "escttidiv_manf") ||
					(div_id == "escmeqdiv_manf") || (div_id == "esrceqdiv_manf") || 
					(div_id == "esiveqdiv_manf") || (div_id == "escteqdiv_manf") ||
					(div_id == "esctvediv_testtype") || (div_id == "esctchdiv_testtype") ||
					(div_id == "escttidiv_testtype") || (div_id == "escteqdiv_testtype") ||
					(div_id == "esctvediv_testconfig") || (div_id == "esctchdiv_testconfig") ||
					(div_id == "escttidiv_testconfig") || (div_id == "escteqdiv_testconfig") ||
					(div_id == "esrcvediv_rpno") || (div_id == "esrcchdiv_rpno") ||
					(div_id == "esrctidiv_rpno") || (div_id == "esrceqdiv_rpno") ||
					(div_id == "de_cm") || (div_id == "de_rc") || (div_id == "de_iv") ||
					(div_id == "de_ct") || (div_id == "de_ve") || (div_id == "de_ch") ||
					(div_id == "de_ti") || (div_id == "de_eq") || (div_id == "de_mt"))
			{
				var list = document.getElementById(div_id);
				DOM.nuke(list);
				list.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				
				splitinfo = div_id.split("_");
				prefix = div_id.substr(0,2);
				
				if(div_id == "bsearch_form") reset_dfmake();
				if(splitinfo[1] == "model")
				{
					if((splitinfo[0] == "escmvediv") || (splitinfo[0] == "esrcvediv") ||
					   (splitinfo[0] == "esivvediv") || (splitinfo[0] == "esctvediv"))
						showyears(splitinfo[0]);
				}
				//if(splitinfo[1] == "year") alert(div_id);
			}
			else if((div_id == "escmvediv_comp2") || (div_id == "escmchdiv_comp2") ||
					(div_id == "escmtidiv_comp2") || (div_id == "escmeqdiv_comp2") ||
					(div_id == "esrcvediv_comp2") || (div_id == "esrcchdiv_comp2") ||
					(div_id == "esrctidiv_comp2") || (div_id == "esrceqdiv_comp2") ||
					(div_id == "esivvediv_comp2") || (div_id == "esivchdiv_comp2") ||
					(div_id == "esivtidiv_comp2") || (div_id == "esiveqdiv_comp2"))
			{
				var output = document.getElementById(div_id);
				DOM.nuke(output);
				DOM.show(output,"block");
				
				result = xmlreqs[pos].xmlhttp.responseText;
				
				if(result != -1)				
					output.innerHTML = result;
			}
			else if((div_id == "escmveexdiv") || (div_id == "escmvemrdiv") ||
			 		(div_id == "escmvemtdiv") || (div_id == "escmveridiv") ||
					(div_id == "escmchexdiv") || (div_id == "escmchmrdiv") || 
					(div_id == "escmchmtdiv") || (div_id == "escmchridiv") ||
					(div_id == "escmtiexdiv") || (div_id == "escmtimrdiv") || 
					(div_id == "escmtimtdiv") || (div_id == "escmtiridiv") ||
					(div_id == "escmeqexdiv") || (div_id == "escmeqmrdiv") || 
					(div_id == "escmeqmtdiv") || (div_id == "escmeqridiv") ||
					(div_id == "esrcveexdiv") || (div_id == "esrcvemrdiv") || 
					(div_id == "esrcvefrdiv") || (div_id == "esrcvemtdiv") || 
					(div_id == "esrcveridiv") ||
					(div_id == "esrcchexdiv") || (div_id == "esrcchmrdiv") || 
					(div_id == "esrcchfrdiv") || (div_id == "esrcchmtdiv") || 
					(div_id == "esrcchridiv") ||
					(div_id == "esrctiexdiv") || (div_id == "esrctimrdiv") || 
					(div_id == "esrctifrdiv") || (div_id == "esrctimtdiv") || 
					(div_id == "esrctiridiv") ||
					(div_id == "esrceqexdiv") || (div_id == "esrceqmrdiv") || 
					(div_id == "esrceqfrdiv") || (div_id == "esrceqmtdiv") || 
					(div_id == "esrceqridiv") ||
					(div_id == "esivveexdiv") || (div_id == "esivvemtdiv") || 
					(div_id == "esivvemrdiv") || (div_id == "esivveridiv") ||
					(div_id == "esivchexdiv") || (div_id == "esivchmtdiv") || 
					(div_id == "esivchmrdiv") || (div_id == "esivchridiv") ||
					(div_id == "esivtiexdiv") || (div_id == "esivtimrdiv") || 
					(div_id == "esivtimtdiv") || (div_id == "esivtiridiv") ||
					(div_id == "esiveqexdiv") || (div_id == "esiveqmrdiv") || 
					(div_id == "esiveqmtdiv") || (div_id == "esiveqridiv") ||
					(div_id == "esctveexdiv") || (div_id == "esctvemrdiv") || 
					(div_id == "esctvemtdiv") || (div_id == "esctveridiv") ||
					(div_id == "esctchexdiv") || (div_id == "esctchmrdiv") || 
					(div_id == "esctchmtdiv") || (div_id == "esctchridiv") ||
					(div_id == "escteqexdiv") || (div_id == "escteqmrdiv") || 
					(div_id == "escteqmtdiv") || (div_id == "escteqridiv"))
			{
				var main = div_id.substr(0,4);
				var sl = document.getElementById("esloading");
				
				es_subtabchg(uid, div_id, tbcl[0], tbcl[1], 
								 tbcl[2], tbcl[3], tbcl[4], 
								 tbcl[6], tbcl[7], tbcl[8]);
				
				var output = document.getElementById(div_id);
				DOM.show(output,"block");
				output.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				DOM.show(sl,"none"); // disable the spinning wait wheel
				//refresh_hsty(uid);
				jumpScroll();
			}
			else if((div_id == "escm") || (div_id == "esrc") ||
					 (div_id == "esiv") || (div_id == "esct"))
			{
				var list = div_id + "ex";
				DOM.nuke(list);
				list.innerHTML = xmlreqs[pos].xmlhttp.responseText;
			}
			else if(div_id == "hsty_load_module")
			{				
				var tab = uid[2];
				var csel = uid[3];
				
				if(tab == "esrc") var preload_target = 18;
				else var preload_target = 14;
				
				if(tab == "escm") var _comp2 = uid[17];
				else if(tab == "esrc") var _comp2 = uid[16];
				else if(tab == "esiv") var _comp2 = uid[14];
				else var _comp2 = "";
				
				// preload based on tab
				if(tab == "escm")
				{
					var preload_enh = document.getElementById("preload_enh");
					if(preload_enh.value == 0)
					{
						reset_enh('escm_all');
						preload_enh.value = 1;
					}
				}
				else if(tab == "esrc")
				{
					var preload_enh = document.getElementById("preload_enh_rc");
					if(preload_enh.value == 0)
					{
						reset_enh('esrc_all');
						preload_enh.value = 1;
					}
				}
				else if(tab == "esiv")
				{
					var preload_enh = document.getElementById("preload_enh_iv");
					if(preload_enh.value == 0)
					{
						reset_enh('esiv_all');
						preload_enh.value = 1;
					}
				}
				else if(tab == "esct")
				{
					var preload_enh = document.getElementById("preload_enh_ct");
					if(preload_enh.value == 0)
					{
						reset_enh('esct_all');
						preload_enh.value = 1;
					}
				}		
				
				// pause for 1 second so that AJAX functions can finish loading
				setTimeout(function(){finish_preload(tab,csel,_comp2,uid);},1500);
			}
			else if(div_id == "hsty_load_all")
			{
				hsty_reload_e2(uid);
			}
			else
			{
				var valid = div_id + "_v";
				var invalid = div_id + "_i";
				var identify = document.getElementById(invalid);
				identify.innerHTML = xmlreqs[pos].xmlhttp.responseText;
				
				if(xmlreqs[pos].xmlhttp.responseText.match("-99"))
				{
					DOM.show(valid,"block");
					DOM.show(invalid,"none");
				}
				else
				{
					DOM.show(invalid,"block");
					DOM.show(valid,"none");
				}
			}
		}
		
		xmlreqs[pos].freed = 1; 
	}
}

// page scrolling for enhanced search
function jumpScroll() 
{
   	window.scroll(0,500); // horizontal and vertical scroll targets
}

// show iframe for IE only
function doiframe(filename)
{
	downloadDiv = document.createElement("div");
	document.getElementsByTagName("body")[0].appendChild(downloadDiv);
	downloadDiv.style.width = "0px";
	downloadDiv.style.height = "0px";
	downloadDiv.id = "downloadDiv";
	
	downloadFrame = document.createElement("iframe");
	downloadFrame.id = "downloadFrame";
	downloadFrame.src = filename;
	downloadFrame.scrolling = "no";
	downloadFrame.style.width = "0px";
	downloadFrame.style.height = "0px";
	downloadDiv.innerHTML = downloadFrame.outerHTML;
}

// show popup for firefox
function dopopup(filename)
{
	window.open(filename);
}

// php's trim function
function trim (str, charlist) 
{ 
    var whitespace, l = 0, i = 0;
    str += '';
    
    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    }
    
    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    
    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// download videos
function download_vids(id)
{
	// show the wait message
	var exp = document.getElementById("vid_export");
	var expwait = document.getElementById("vid_export_wait");
	DOM.show(exp, "none");
	DOM.show(expwait, "block");
		
	// this prevents caching of the URL; IE bug fix!
	var rndint = new Date().getTime();
	rndint = Math.random() * rndint;

	var url = "vid_download.php"; 
	var params = "rnd=" + rndint;
	ajaxRequest(url, params, "vid_download", id, rndint);
}

function finish_preload(tab,csel,_comp2,uid)
{
	// sub component
	if(_comp2 != "") showsubcomp(tab + csel + "div");

	var url = "history.php?x=0";
	var params = "y=0";
	ajaxRequest(url, params, "hsty_load_all", uid);
}

function explode (delimiter, string, limit) 
{ 
    var emptyArray = { 0: '' };
    
    // third argument is not required
    if ( arguments.length < 2 ||
        typeof arguments[0] == 'undefined' ||
        typeof arguments[1] == 'undefined' )
    {
        return null;
    }
 
    if ( delimiter === '' ||
        delimiter === false ||
        delimiter === null )
    {
        return false;
    }
 
    if ( typeof delimiter == 'function' ||
        typeof delimiter == 'object' ||
        typeof string == 'function' ||
        typeof string == 'object' )
    {
        return emptyArray;
    }
 
    if ( delimiter === true ) {
        delimiter = '1';
    }
    
    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}