function positionTitle() {
	var hText = document.getElementById("titleText");
	var MC = document.getElementById("mainContent");
	var screenWidth = screen.width;
	var windowWidth = document.body.clientWidth;
	var contentOffset = (windowWidth - parseInt(MC.width)) / 2;
	hText.style.left = contentOffset + 1;
	hText.style.top = 111;
	hText.style.display = "block";
}

function about() {
	fadeBody();
	var about = document.getElementById("about");
	var MC = document.getElementById("mainContent");
	var screenWidth = screen.width;
	var windowWidth = document.body.clientWidth;
	var contentOffset = (windowWidth - parseInt(MC.width)) / 2;
	about.style.left = contentOffset + (parseInt(MC.width) / 2) - 170;
	about.style.top = 120;
	about.filters.blendTrans.Apply();
	about.filters.blendTrans.play();
	about.className = "alert_h";
}

function closeAbout() {
	deFadeBody();
	var about = document.getElementById("about");
	about.className = "alert";
}

function fadeBody() {
	document.getElementById("totalContent").className = "bfaded";
}

function deFadeBody() {
	document.getElementById("totalContent").className = "";
}

var store_order = "";

function retrieveData(page, ovr_s, ovr_t, ovr_fld, ovr_order) {
	
	var s = 0;
	var t = 0;
	var fld = "";
	var order = "";
	
	if (ovr_s) {
		s = ovr_s;
		t = ovr_t;
		fld = ovr_fld;
		order = ovr_order;
	}
	
	if (document.sorting.submitted) {
		fld = document.sorting.fld.options[document.sorting.fld.selectedIndex].value;
		order = document.sorting.order.options[document.sorting.order.selectedIndex].value;
	}
	
	if (document.getElementById("last_config").value == 1) {
		s = store_s;
		t = store_t;
		fld = store_fld;
		order = store_order;
	}
	
	store_s = s;
	store_t = t;
	store_fld = fld;
	store_order = order;

	var element = document.getElementById('data_container'); 
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	
	loading();
	// get DATA
	xmlhttp.open("GET", page + "?to_get=DATA&s="+s+"&t="+t+"&fld="+fld+"&order="+order); 
	xmlhttp.onreadystatechange = function() { 
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	   		element.innerHTML = xmlhttp.responseText; 
	    } 
	} 
	xmlhttp.send(null);
	setTimeout("doneLoading()",200);
}

function retrievePaginate(page, ovr_s, ovr_t, ovr_fld, ovr_order) {

	var s = 0;
	var t = 0;
	var fld = "";
	var order = "";
	
	if (ovr_s) {
		s = ovr_s;
		t = ovr_t;
		fld = ovr_fld;
		order = ovr_order;
	}
	
	if (document.sorting.submitted) {
		fld = document.sorting.fld.options[document.sorting.fld.selectedIndex].value;
		order = document.sorting.order.options[document.sorting.order.selectedIndex].value;
	}
	
	if (document.getElementById("last_config").value == 1) {
		s = store_s;
		t = store_t;
		fld = store_fld;
		order = store_order;
	}
	
	store_s = s;
	store_t = t;
	store_fld = fld;
	store_order = order;

	var element = document.getElementById('paginate_container'); 
	xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP"); 
	// get DATA
	xmlhttp2.open("GET", page + "?to_get=PAGINATE&s="+s+"&t="+t+"&fld="+fld+"&order="+order); 
	xmlhttp2.onreadystatechange = function() { 
	    if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
	   		element.innerHTML = xmlhttp2.responseText; 
	    } 
	} 
	xmlhttp2.send(null); 
}

function loading() {
	if (document.getElementById("loading_timer")) {
		var loading = document.getElementById("loading_timer");
		var screenWidth = screen.width;
		
		var mainContent = document.getElementById("mainContent");
		
		var screenWidth = screen.width;
		var windowOffset = window.screenLeft;
		var windowWidth = document.body.clientWidth;
		var contentOffset = (windowWidth - parseInt(mainContent.width)) / 2;
		var leftPos = contentOffset + 540;
		
		if (document.body.scrollTop < 120) {
			var topPos = 120;
		} else {
			var topPos = document.body.scrollTop + 5;
		}
		loading.style.left = leftPos;
		loading.style.top = topPos;
		loading.style.display = "block";
	}
}

function doneLoading() {
	if (document.getElementById("loading_timer")) {
		document.getElementById("loading_timer").style.display = "none";
	}
}

var lastScrollTop = "";

function createNewRecord(page,edit,id_name,id) {
	var element = document.getElementById("new_record_cell"); 
	var mainContent = document.getElementById("mainContent");
	
	lastScrollTop = window.scrolltop;
	
	var ext_link = "?popUp=1";
	if (edit) {
		ext_link = ext_link + "&edit=1&"+id_name+"="+id;
	}
	
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	// get DATA
	loading();
	xmlhttp.open("GET", page+ext_link); 
	xmlhttp.onreadystatechange = function() { 
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	   		element.innerHTML = xmlhttp.responseText; 
	    } 
	}
	
	var windowOffset = window.screenLeft;
	var windowWidth = document.body.clientWidth;
	var contentOffset = (windowWidth - parseInt(mainContent.width)) / 2;
	
	var dialogLeft = contentOffset + 7;
	var dialogTop = 113;
	
	fadeBody();
	element.style.top = dialogTop;
	element.style.left = dialogLeft;
	element.filters.blendTrans.Apply();
	element.filters.blendTrans.play();
	element.className = "alert_h";
	
	setTimeout("doneLoading()", 1000);
	xmlhttp.send(null);
}

function reLocateTimer() {
	// relocate loading timer to correct spot
	var timer = document.getElementById("loading_timer");
	var MC = document.getElementById("MainContent");
	var screenWidth = screen.width;
	var windowOffset = window.screenLeft;
	var windowWidth = screenWidth - windowOffset;
	var contentOffset = (windowWidth - parseInt(MC.width)) / 2;
	var leftMenuPos = contentOffset + 750;
	timer.style.left = leftMenuPos;
	timer.style.top = 160;
}

function closeNewRecord(gr_page) {
	deFadeBody();
	var dashpos = gr_page.indexOf("_");
	var this_vp = gr_page.substring(0,dashpos)+".php";
	var window_loc = window.location.href.split("/");
	var current_page = window_loc[(window_loc.length - 1)];
	var element = document.getElementById("new_record_cell");
	element.filters.blendTrans.Apply();
	element.filters.blendTrans.play();
	element.className = "alert";
	element.innerHTML = "";
	window.scrollTop = lastScrollTop;
	if (gr_page) {
		if (document.getElementById("data_container") && (this_vp == current_page)) {
			document.getElementById("last_config").value = 1;
			retrieveData(gr_page, 0,0,0,0);
			retrievePaginate(gr_page, 0,0,0,0);
			document.getElementById("last_config").value = 0;
		}
	}
}

function processNewRecord(form,page,edit,id_name,id,valRet,redir_timeout,gr_page,close_win) {

	page = page.split("/");
	var to_page = page[(page.length - 1)];
	var urlStr = "?page="+escape(to_page);
	var cb = 0;
	var cc = 0;
	var ai = 0;
	var cbfield = new Array();
	var field_data = new Array();
	var a_id = new Array();
	
	for (var i = 0; i < form.elements.length; i++) {
		var ex = "&";
		field = form.elements[i];
		if (field.htmltype == "textbox") {
			urlStr += ex+field.name+"="+encodeHTML(field.value);
		} else if (field.htmltype == "textarea") {
			urlStr += ex+field.name+"="+encodeHTML(field.innerHTML);
		} else if (field.htmltype == "radio") {
			urlStr += ex+field.name+"="+encodeHTML(field.value);
		} else if (field.htmltype == "checkbox") {
			var pos = field.name.indexOf("[");
			if (pos > 0) {
				var fieldName = field.name.substring(0,pos);
				var no_put = 0;
				for (var n = 0; n < cbfield.length; n++) {
					if (cbfield[n] == fieldName) {
						no_put = 1;
					}
				}
				
				if (no_put == 0) {
					cbfield[cb] = fieldName;
					field_data[fieldName] = new Array();
					cb++;
					cc = 0;
				}
				
				if (field.checked) {
					field_data[fieldName][cc] = encodeHTML(field.value);
					cc++;
				}
			} else {
				if (field.checked) {
					urlStr += ex+field.name+"=1";
				}
			}
		} else if (field.htmltype == "select") {
			urlStr += ex+field.name+"="+encodeHTML(field.options[field.selectedIndex].value);
		} else if (field.type == "hidden") {
			urlStr += ex+field.name+"="+encodeHTML(field.value);
		}
	}
	
	for (var m = 0; m < cbfield.length; m++) {
		urlStr += "&"+cbfield[m]+"="+field_data[cbfield[m]];
	}
	
	var this_page = window.location;
	
	if (valRet) {
		// valRet is the value returned from form validator, required for submission
		var element2 = document.getElementById("new_record_cell");  
		xmlhttp5 = new ActiveXObject("Microsoft.XMLHTTP");
		// get DATA
		document.body.scrollTop = 0;
		loading();
		xmlhttp5.open("GET", "pp_form_curl.php"+urlStr); 
		xmlhttp5.onreadystatechange = function() { 
		    if (xmlhttp5.readyState == 4 && xmlhttp5.status == 200) {
		   		element2.innerHTML = xmlhttp5.responseText; 
		    } 
		}
		element2.className = "alert_h";
		setTimeout("doneLoading()", 1000);
		if (close_win == 0) {
			setTimeout("closeNewRecord('')", redir_timeout);
			setTimeout("createNewRecord('"+to_page+"',"+edit+",'"+id_name+"','"+id+"')", redir_timeout+100);
		} else {
			setTimeout("closeNewRecord('"+gr_page+"')", redir_timeout);
		}
		xmlhttp5.send(null);
	}
	
	//unescape(string.replace(/\+/g,  " "));
}

function formatPhone(field) {
	field.value = field.value.replace('-', '');
	field.value = field.value.replace(' ', ''); 
	field.value = field.value.replace('(', ''); 
	field.value = field.value.replace(')', '');
	
	if (field.value.length == 10) {
		var str = "(" + field.value.substring(0, 3) + ") " + field.value.substring(3,6) + "-" + field.value.substring(6,10);
		field.value = str;
	}
}

function encodeHTML(encodedHtml) {
	encodedHtml = xReplace(encodedHtml,"\n",":br:");
	encodedHtml = xReplace(encodedHtml,/\//g,"%2F");
	encodedHtml = xReplace(encodedHtml,/\?/g,"%3F");
	encodedHtml = xReplace(encodedHtml,/=/g,"%3D");
	encodedHtml = xReplace(encodedHtml,/&/g,"%26");
	encodedHtml = xReplace(encodedHtml,/@/g,"%40");
	return encodedHtml;
} 

function validateData(form) {
	var error_objs = new Array();
	var error_msgs = new Array();
	var c = 0;
	
	for (var i = 0; i < form.elements.length; i++) {
		var field = form.elements[i];
		if (field.name == "email" && field.reqd) {
			if (!isValidEmail(field.value)) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a valid e-mail address";
				c++;
			}
		} else if (field.name == "state" && field.reqd) {
			if (field.value.length != 2) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a valid 2 character state";
				c++;
			}
		} else if ((field.name == "phone1" || field.name == "phone2" || field.name == "phone") && (field.reqd)) {
			if (field.value.length < 10) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a valid phone number";
				c++;
			}
		} else if ((field.name == "fax1" || field.name == "fax2" || field.name == "fax") && (field.reqd)) {
			if (field.value.length < 10) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a valid fax number";
				c++;
			}
		} else if (field.name == "zip" && field.reqd) {
			if (field.value.length < 5 || !isNumeric(field.value)) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter at least 5 digits in the zip code field";
				c++;
			}
		} else if (field.htmltype == "checkbox" && field.reqd) {
			var one_checked = 0;
			var rpos = field.name.indexOf("[");
			var fieldName = field.name.substring(0,rpos);
			var thisName = "";
			for (var n = 0; n < form.elements.length; n++) {
				thisName = form.elements[n].name.substring(0,rpos);
				if (thisName == fieldName) {
					if (form.elements[n].checked == true) {
						one_checked = 1;
					}
				}
			}
			if (one_checked == 0) {
				error_objs[c] = field;
				error_msgs[c] = "Please select at least one value for this field";
				c++;
			}
		} else if (field.htmltype == "radio" && field.reqd) {
			var other_boxes = document.getElementById(field.name);
		} else if (field.htmltype == "select" && field.reqd) {
			if (field.selectedIndex == 0) {
				error_objs[c] = field;
				error_msgs[c] = "Please select a value for the " + field.name + " field";
				c++;
			}
		} else if (field.htmltype == "textbox" && field.reqd) {
			if (field.value.length < 1) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a value in the " + field.name + " field";
				c++;
			} else if (field.value == "mm/dd/yyyy" || field.value == "mm/dd") {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a value in the " + field.name + " field";
				c++;
			}
		} else if (field.reqd) {
			if (field.value.length < 1) {
				error_objs[c] = field;
				error_msgs[c] = "Please enter a value in the " + field.name + " field";
				c++;
			}
		}
	}
	
	if (error_objs.length == 0) { // no errors
		return true;
	} else {
		// reset all field properties
		
		var strLoc = window.location.toString();
		if (strLoc.indexOf("admin") > 0) {
			var ex_img = "../";
		} else {
			var ex_img = "";
		}
		
		for (var i = 0; i < form.elements.length; i++) {
			var ic = form.elements[i].name + "_c";
			var field = form.elements[i];
			if (form.elements[i].name == "submitted") { continue; }
			if (document.getElementById(ic)) {
				var img_cell = document.getElementById(ic);
				img_cell.innerHTML = "<img src=\""+ex_img+"images/right.gif\">";
			} else {
				// no error details cell, color input
				field.style.backgroundColor = "#FFFFFF";
			}
		}
		
		// set error fields
		for (var i = 0; i < error_objs.length; i++) {
			var field = error_objs[i];
			var ic = field.name + "_c";
			if (form.elements[i].name == "submitted") { continue; }
			if (error_objs[i].htmltype == "textarea" || error_objs[i].htmltype == "radio" || error_objs[i].htmltype == "checkbox") {
				var spacer = "&nbsp;";
			} else {
				var spacer = "<br>";
			}
			if (document.getElementById(ic)) {
				var img_cell = document.getElementById(ic);
				img_cell.innerHTML = "<img src=\""+ex_img+"images/wrong.gif\">" + spacer + error_msgs[i];
			} else {
				// no error details cell, color input
				field.style.backgroundColor = "#EF8787";
			}
		}
		
		return false;
	}
}

function isNumeric(sText) {
   var ValidChars = "0123456789";
   var IsNumber = true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function isValidEmail(email) {
	if (email.indexOf("@") <= 0 || email.indexOf(".") <= 0) {
		return false;
	}
	return true;
}

function selectRow(num) {
	var other = document.getElementsByTagName('td');
	var othertds = new Array();
	var c = 0;
	
	for (var i = 0; i < other.length; i++) {
		if (other[i].row == num) {
			othertds[c] = other[i];
			c++;
		} else {
			// not row cell, do not include
		}
	}
	
	for (i = 0; i < othertds.length; i++) {
		if (othertds[i].style.backgroundColor == "#ebe95e") {
			// do nothing
		} else {
			othertds[i].style.backgroundColor = "#A1BAD6";
			othertds[i].style.cursor = "hand";
		}
	}
}

function deSelectRow(num) {
	var other = document.getElementsByTagName('td');
	var othertds = new Array();
	var c = 0;
	
	for (var i = 0; i < other.length; i++) {
		if (other[i].row == num) {
			othertds[c] = other[i];
			c++;
		} else {
			// not row cell, do not include
		}
	}
	
	if (num % 2 == 0) {
		var bgcolor = "#E8E5E5";
	} else {
		var bgcolor = "#FFFFFF";
	}
	
	for (i = 0; i < othertds.length; i++) {
		if (othertds[i].style.backgroundColor == "#ebe95e") {
			// do nothing
		} else {
			othertds[i].style.backgroundColor = bgcolor;
			othertds[i].style.cursor = "";
		}
	}
}

function showHideOptions(which) {
	closeOptionBox();
	var func_table = document.getElementById(which+"_table");
	func_table.style.display = "block";
}

function highlightOptTrig(which) {
	var func_trig = document.getElementById(which+"_trig");
	func_trig.className = "funcs_h";
}

function closeOptionBox() {
	// run loop to close all other "func_cell" tables
	var tables = document.getElementsByTagName("table");
	for (var i = 0; i < tables.length; i++) {
		if (tables[i].className == "func_cell") {
			tables[i].style.display = "none";
			var opt_name = tables[i].id.substring(0,(tables[i].id.indexOf("_")));
			var func_trig = document.getElementById(opt_name+"_trig");
			func_trig.className = "funcs";
		}
	}
}

function createImages(num,img_type) {
	var element = document.getElementById("images_container"); 
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	// get DATA
	loading();
	xmlhttp.open("GET", "create_imgfields.php?num_imgs="+num+"&img_type="+img_type); 
	xmlhttp.onreadystatechange = function() { 
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	   		element.innerHTML = xmlhttp.responseText; 
	    } 
	} 
	setTimeout("doneLoading()", 1000);
	xmlhttp.send(null);
}

function srConfirmYes(page,id_name,id) {
	xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
	// get DATA
	//loading();
	var pos = page.indexOf(".");
	var gr_page = page.substring(0,pos)+"_getrecs.php";
	xmlhttp3.open("GET", page+"?del=1&final=1&"+id_name+"="+id); 
	xmlhttp3.onreadystatechange = function() { 
	    if (xmlhttp3.readyState == 4 && xmlhttp3.status == 200) {
		} 
	}
	xmlhttp3.send(null);
	closeConfirm();
	if (document.getElementById("data_container")) {
		document.getElementById("last_config").value = 1;
		setTimeout("retrieveData('"+gr_page+"', 0,0,0,0)",600);
		setTimeout("retrievePaginate('"+gr_page+"', 0,0,0,0)",600);
		document.getElementById("last_config").value = 0;
	}
}

function srConfirm(text,page,id_name,id) {
	var screenWidth = screen.width;
	var screenHeight = screen.height;
	var windowOffset = window.screenLeft;
	var windowOffsetTop = window.screenTop;
	var windowWidth = document.body.clientWidth;
	var windowHeight = document.body.clientHeight;
	var dialogLeft = (windowWidth / 2) - 135;
	var dialogTop = (windowHeight / 2) - 50;
	
	text = xReplace(text,"\n","<br>");
	
	var element = document.getElementById("alert_container");
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	// get DATA
	//loading();
	xmlhttp.open("GET", "../includes/confirm.php?text="+escape(text)+"&page="+page+"&"+id_name+"="+id+"&id_name="+id_name); 
	xmlhttp.onreadystatechange = function() { 
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	   		element.innerHTML = xmlhttp.responseText; 
	    } 
	}
	element.style.top = dialogTop;
	element.style.left = dialogLeft;
	element.filters.blendTrans.Apply();
	element.filters.blendTrans.play();
	element.className = "alert_h";
	//setTimeout("doneLoading()", 1000);
	xmlhttp.send(null);
}

function closeConfirm() {
	var element = document.getElementById("alert_container");
	element.filters.blendTrans.Apply();
	element.filters.blendTrans.play();
	element.className = "alert";
	element.innerHTML = "";
}

function xReplace(checkMe,toberep,repwith){
	var temp = checkMe;
	var i = temp.indexOf(toberep);
	while(i > -1) {
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep, i + repwith.length + 1);
	}
	return temp;
}