function showdiv(layer_ref){
	var state = 'block';
	if (document.getElementById) { 
		hza = document.getElementById(layer_ref); 
		hza.style.display = state;
		return; 
	}
	if (document.all) { //IS IE 4 or 5 (or 6 beta) 
		eval( "document.all." + layer_ref + ".style.display = state"); 
	} 
	if (document.layers) { //IS NETSCAPE 4 or below 
		document.layers[layer_ref].display = state; 
	}  
}
function hidediv(layer_ref){
	var state = 'none';
	if (document.getElementById) { 
		hza = document.getElementById(layer_ref); 
		hza.style.display = state; 
		return;
	} 
	if (document.all) { //IS IE 4 or 5 (or 6 beta) 
		eval( "document.all." + layer_ref + ".style.display = state"); 
	} 
	if (document.layers) { //IS NETSCAPE 4 or below 
		document.layers[layer_ref].display = state; 
	} 
}
function show_loader(loaderdiv){
	if (document.getElementById(loaderdiv+'-img')){
		document.getElementById(loaderdiv+'-img').src = document.getElementById(loaderdiv+'-img').src;
	}
	showdiv(loaderdiv);	
}
function ajax_escape(str){
	str = str.replace(/\+/g, "%2B");
	str = escape(str);
	return str;
}
// ------------------------------------------------------------------------------------
// TinyMCE
// ------------------------------------------------------------------------------------
function load_editor_wysiwyg(id){
	if (!tinyMCE.get(id)){
		tinyMCE.execCommand('mceAddControl', false, id);
	}
}
function remove_editor_wysiwyg(id){
	if (tinyMCE.get(id)){
		tinyMCE.execCommand('mceRemoveControl', false, id);
	}
}
// ------------------------------------------------------------------------------------
// Tab Add/Edit Switching
// ------------------------------------------------------------------------------------
function start_editing(addeditdiv, linktab, edittext, loadingdiv, recordid, customjs){
	document.getElementById(linktab).innerHTML = edittext;
	if (addeditdiv.length > 0){
		document.getElementById(addeditdiv).innerHTML = '';
		ajax_loaddiv(addeditdiv, loadingdiv, '', '&id=' + recordid + '&recordid=' + recordid);
		addedittab = linktab.replace("linktab_", "tab_");
		change_tab(addedittab);
	}
}
function stop_editing(addeditdiv, linktab, addtext, listingtab){
	document.getElementById(linktab).innerHTML = addtext;
	if (listingtab.length > 0){ listingtab = listingtab.replace("linktab_", "tab_"); change_tab(listingtab); }
	if (addeditdiv.length > 0){ ajax_loaddiv(addeditdiv, '', '', ''); }
	remove_editor();
}
// ------------------------------------------------------------------------------------
// Format Functions
// ------------------------------------------------------------------------------------
function format_number(total){
	var tempnum = total.toString();
	tempnum = tempnum.replace("$", "");
	tempnum = tempnum.replace(",", "");
	tempnum = tempnum.replace(" ", "");
	var wd = "w"
	if (tempnum.length == 0){ return ""; }
	for (i=0;i<tempnum.length;i++){
		if (tempnum.charAt(i) == "."){ wd = "d"; break; }
	}
	if (wd=="w"){
		total = tempnum + ".00";
		return total;
	} else {
		if (tempnum.charAt(tempnum.length-1) == "."){
			total = tempnum + "00";
			return total;
		}
		if (tempnum.charAt(tempnum.length-2) == "."){
			total = tempnum + "0";
			return total;
		}
		if (tempnum.charAt(tempnum.length-3) == "."){
			return total;
		} 
		tempnum = Math.round(tempnum*100)/100;
		total = tempnum;
		return total;
	}
}
// ------------------------------------------------------------------------------------
// Ajax Silent Data Submit
// ------------------------------------------------------------------------------------
function ajax_silentsubmit(url, form_post){
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open('POST', url, true);
	xmlhttp.onreadystatechange = function(){
		if (xmlhttp.readyState == 4){
			if (xmlhttp.status == 200){
				// returned ok				
			} else {
				// error
				alert("Sorry, there was an error!  Please contact support.");
			}
		}
	}
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
	xmlhttp.send(form_post);
}
// ------------------------------------------------------------------------------------
// Ajax Post Form
// ------------------------------------------------------------------------------------
function ajax_postform(formname, loadingdiv, divreloads, customjs){
	var form_post = "";	
	var num_elements = document[formname].elements.length;
	for(c=0;c<num_elements;c++){
		var hasvalue = false;
		var element_name = document[formname].elements[c].name;
		var element_value = document[formname].elements[c].value;
		var element_type = document[formname].elements[c].type;
		//alert(element_type + " -- " + element_name + "=" + element_value);

		if (element_type == "radio" && document[formname].elements[c].checked == true){ hasvalue = true; }
		if (element_type == "text" && element_value.length > 0){ hasvalue = true; }
		if (element_type == "hidden" && element_value.length > 0){ hasvalue = true; }
		if (element_type == "select-one" && element_value.length > 0){ hasvalue = true; }
		if (element_type == "textarea" && element_value.length > 0){ hasvalue = true; }
		if (hasvalue == true){ form_post = form_post + "&" + element_name + "=" + ajax_escape(element_value); }
		if (element_type == "checkbox"){ 
			if (document[formname].elements[c].length > 1){
				for(var d=0;d<document[formname].elements[c].length;d++){
					if (document[formname].elements[c][d].checked == true){
						form_post = form_post + "&" + element_name + "=" + ajax_escape(document[formname].elements[c][d].value);
					}
				}
			} else {
				if (document[formname].elements[c].checked == true){ form_post = form_post + "&" + element_name + "=" + ajax_escape(document[formname].elements[c].value); }
			}
		}
		
		if (element_type == "select-multiple"){ 
			for(var d=0;d<document[formname].elements[c].length;d++){
				if (document[formname].elements[c][d].selected == true){
					form_post = form_post + "&" + element_name + "=" + ajax_escape(document[formname].elements[c][d].value);
				}
			}
		}
	}
	
	// add in a flag that this is a AJAX form post
	form_post = form_post + "&ajax_post=1";
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open('POST', 'index.php', true);
	xmlhttp.onreadystatechange = function(){
		if (xmlhttp.readyState == 4){
			if (xmlhttp.status == 200){
				// returned ok
				if (loadingdiv.length > 0){ hidediv(loadingdiv); }
				
				var response = xmlhttp.responseText;

				// look for errors
				if (response.indexOf("lert: ") > 0 || response.indexOf("val: ") > 0){
					
					// search for "Eval: "
					if (response.indexOf("val: ") > 0){
						var startpos = response.indexOf("Eval: ");
						var response_eval = response.substring(startpos);
						response_eval = response_eval.replace("Eval: ", "");
						response = response.substring(0, startpos);
						eval(response_eval);
					}	
					
					// search for "Alert: "
					if (response.indexOf("lert: ") > 0){
						response = response.replace("Alert: ", "");			
						alert(response);
					}
					
				} else {
			
					// reload divs as specified
					if (divreloads.length > 0){
						var reloaddivs = new Array();
						reloaddivs = divreloads.split(',');	
						for(c=0;c<reloaddivs.length;c++){
							ajax_loaddiv(reloaddivs[c], loadingdiv, '', '')
						}
					}
					
					if (customjs.length > 0){ eval(customjs); }
					//scroll(0,0);
				}
				
				
			} else {
				// error
				if (loadingdiv.length > 0){ hidediv(loadingdiv); }
				alert("Sorry, there was an error posting your form!  Please contact support.");
			}
		}
	}
	if (loadingdiv.length > 0){ show_loader(loadingdiv); }
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');	
	xmlhttp.send(form_post);
	//alert(form_post);
}
// ------------------------------------------------------------------------------------
// Ajax Load Div
// ------------------------------------------------------------------------------------
function ajax_loaddiv(divname, loadingdiv, customvars, customjs){
	var query_string = "?ajax=" + divname;
	
	if (customvars.length > 0){ query_string = query_string + customvars; }
	
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open('GET', 'index.php' + query_string, true);
	xmlhttp.onreadystatechange = function(){
		if (xmlhttp.readyState == 4){
			if (xmlhttp.status == 200){
				// returned ok
				if (loadingdiv.length > 0){ hidediv(loadingdiv); }
				ajax_loaddiv_results(xmlhttp.responseText, divname);
				if (customjs.length > 0){ eval(customjs); }
			} else {
				// error
				if (loadingdiv.length > 0){ hidediv(loadingdiv); }
				alert("Sorry, there was an error loading '"+divname+"'");
			}
		}
	}
	
	if (loadingdiv.length > 0){ 
		show_loader(loadingdiv);
	}
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(null);
}
function ajax_loaddiv_results(responseText, divname){
	document.getElementById(divname).innerHTML = responseText;
	showdiv(divname);
	// parse out the javascript and eval it.
	strToParse = responseText;
	strToParse2 = strToParse
	var intCursor = 0;
	var intStart = 1;
	var intStart_script = 1;
	var intEnd = 1;
	while(intCursor < strToParse.length && intStart > 0 && intEnd > 0){
		intStart = strToParse.indexOf('<scr', intCursor);
		intStart_script = intStart;
		intEnd = strToParse.indexOf('</scr', intCursor);
		if(intEnd >= intStart && intEnd > -1){
			//alert('intStart = ' + intStart);
			//alert('intEnd = ' + intEnd);
			if(intStart > -1){
				result = strToParse.substring(intStart, intEnd);
				intStart = result.indexOf('>') + 1;
				result = result.substring(intStart);
				//alert('length: ' + result.length);
				if(result.length == 0){
					// This is a script tag with a src value.  It needs to be put outside of the reloaded div
					intSrcStart = strToParse.indexOf('src="', intStart_script);
					intSrcStart = intSrcStart + 5;
					intSrcEnd = strToParse.indexOf('"', intSrcStart);
					//alert('substring: ' + strToParse.substring(intSrcStart, intSrcEnd));
					fragment_url = strToParse.substring(intSrcStart, intSrcEnd);
					//add dir if reloads
					alert(fragment_url + " needs to be outside of the div: " + divname);
				}
				result = result.replace('<!--', '');
				result = result.replace('-->', '');
				//alert(result);
				eval(result);
			}
			intCursor = intEnd + 1;
		}
	}
}
// ------------------------------------------------------------------------------------
// Checkbox Select Functions
// ------------------------------------------------------------------------------------
function select_all(formname, checkname){
	var checkboxes = document[formname][checkname + '[]'];
	var num_checkboxes = checkboxes.length;
	if (!checkboxes.length){ checkboxes.checked = true; }
	for(c=0;c<num_checkboxes;c++){
		if (checkboxes[c].disabled == false){
			checkboxes[c].checked = true;
		}
	}
}
function deselect_all(formname, checkname){
	var checkboxes = document[formname][checkname + '[]'];
	var num_checkboxes = checkboxes.length;
	if (!checkboxes.length){ checkboxes.checked = false; }
	for(c=0;c<num_checkboxes;c++){
		if (checkboxes[c].disabled == false){
			checkboxes[c].checked = false;
		}
	}
}

function batch_checked(formname, checkname){
	var checkboxes = document[formname][checkname + '[]'];
	if (!checkboxes.length && checkboxes.checked == true){ return true; }
	for(var i=0; i<checkboxes.length; i++){
		if (checkboxes[i].checked == true){
			return true;
		}
	}
	return false;
}
