var lastClicked = null;
var mrBlank = new Image();
var dubQuote = String.fromCharCode(34);
var sigQuote = String.fromCharCode(39);
mrBlank.src = "/images/blank.gif";

var ie5 = (document.getElementById && document.all); 
var ns6 = (document.getElementById && !document.all); 
var ua = navigator.userAgent.toLowerCase();
var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);

function ReSubmit_old(reloc) {
	if (document.all) {
		if (document.body.all.editbox) {
		  dataRep = document.body.all.pcontent;
	      dataRep.value = editbox.document.body.innerHTML;
		}
		if (document.body.all.pgupdform) {
			document.pgupdform.redir.value = reloc;
			window.status = pgupdform.epsubmit.value;
			//document.pgupdform.submit();
			self.setTimeout('document.pgupdform.submit()', 180);
		} else {
			window.location = reloc;
		}
		return true;
	} else {
		// for netscape and other - INCOMPLETE!!
		var ebHndl = document.getElementById("editbox");
		var dataRep = document.getElementById("pcontent");
		dataRep.value = ebHndl.innerHTML;
		if (document.getElementById("pgupdform")) {
			//document.getElementById("pgupdform")
		}
		//alert(ebHndl.innerHTML);
		//if (ebHndl && dataRep) dataRep.value = ebHndl.innerHTML;
	}
	return;
}

function ReSubmit(reloc) {

	dataRep = getCtrlHandle('pcontent');
	if (getCtrlHandle('editbox') && dataRep) {
		//alert(editbox.document.body.innerHTML);
      dataRep.value = editbox.document.body.innerHTML;
	}
	frmUpd = getCtrlHandle('pgupdform')
	if (frmUpd) {
		frmUpd.redir.value = reloc;
		window.status = frmUpd.epsubmit.value;
		//document.pgupdform.submit();
		self.setTimeout('frmUpd.submit()', 180);
	} else {
		window.location = reloc;
	}
	return true;

}

function CreatePopUp(pWnd_Width,pWnd_Height,pWnd_Hndl,pWnd_Loc) {
	var wHndl = window.open((pWnd_Loc ? pWnd_Loc : ""),pWnd_Hndl,"status=no,toolbar=no,directories=no,menubar=no,scrollbars=yes,width=" + pWnd_Width + ",height=" + pWnd_Height);

	if (self.name.indexOf("popup") > 0) {
		self.close();
	} else {
		self.name="parent_hWnd";
	}

	return wHndl;
}

function confirmDelete() {
	var cMsg = confirmDelete.arguments[0];
	var fURL = confirmDelete.arguments[1];

	if (confirm(cMsg)) window.location = fURL

	return;
}

/*
function getCtrlHandle() {
	var ctrlName = getCtrlHandle.arguments[0];

	// get handle of object
	if (document.all) {  // ie or similar
		var ctrlHndl = eval("document.all."+ctrlName);
	} else {  // other
		if (ctrlName.indexOf(".") > 0) {
			var ctrlHndl;
			while (ctrlName.indexOf(".") > 0) {
				tcName = ctrlName.substr(0, ctrlName.indexOf("."));
				ctrlHndl = document.getElementById(tcName);
				ctrlName = ctrlName.substr(ctrlName.indexOf(".")+1, ctrlName.length);
			}
			ctrlHndl = eval("ctrlHndl."+ctrlName);
		} else {
			var ctrlHndl = document.getElementById(ctrlName);
		}
	}
	
	if (ctrlHndl) {
		return ctrlHndl;
	} else {
		return;
	}
}
*/

// v1.2
function getCtrlHandle() {
	var ctrlName = getCtrlHandle.arguments[0];
	if (!ctrlName) return false;
	var ctrlHndl;

	// get handle of object
	if (document.all) {  // ie or similar
		var ctrlHndl = eval("document.all."+ctrlName);
	} else {  // other
		//alert(ctrlName);
		if (ctrlName.indexOf(".") > 0) {
			while (ctrlName.indexOf(".") > 0) {
				tcName = ctrlName.substr(0, ctrlName.indexOf("."));
				ctrlHndl = document.getElementById(tcName);
				ctrlName = ctrlName.substr(ctrlName.indexOf(".")+1, ctrlName.length);
			}
			ctrlHndl = eval("ctrlHndl."+ctrlName);
		} else {
			ctrlHndl = document.getElementById(ctrlName);
		}
	}
	
	return ctrlHndl;
}


function launchVirtualTour(Wnd_Loc) {

	if (self.name != 'virtour') {
		phndl = window.open('','virtour',"status=no,toolbar=no,directories=no,menubar=no,scrollbars=no,width=480,height=400");
		phndl.window.location = "/vt/tour.cfm";
	}

	if (Wnd_Loc == null || Wnd_Loc == '') {
		Wnd_Loc = "http://www.siterocket.net/";		
	}
	
	self.location = Wnd_Loc;
	
	return;
}

function changeView () {
	var args = changeView.arguments;
	var showTab = args[0];
	var htList = args[1] + ",";
	var hideTab;
	
	// needs updates for netscape 6+

	var stHndl = eval("document.all." + showTab);
	stHndl.style.display = "";
	
	do {
		hideTab = htList.substring(0, htList.indexOf(","));
		if (hideTab.length > 0) {
			//alert(hideTab + " // '"+htList+"' ("+hideTab.length+")");	// debug
			htList = htList.substring(hideTab.length + 1, htList.length);
			var htHndl = eval("document.all." + hideTab);
			if (htHndl.style.display != "none") { htHndl.style.display = "none"; }
		}
	} while (htList.indexOf(",") > -1);
	
	return;
}

function setFieldFocus() {
	var args = setFieldFocus.arguments;
	var f, e, fldsHndl, focusSet;
	var frmsHndl = document.forms;
	focusSet = 0;

	for (f=0; f < frmsHndl.length && focusSet == 0; f++) {
		fldsHndl = document.forms[f];
		for (e=0; e < fldsHndl.elements.length && focusSet == 0; e++) {
			if (fldsHndl.elements[e].type.indexOf("text") >= 0 || fldsHndl.elements[e].type.indexOf("select") >= 0) {
				fldsHndl.elements[e].focus();
				focusSet = 1;
			}
		}
	}

	return;
}

function chooseTemplate(preSelc) {
	if (self.name.indexOf("popup") > 0) {
		self.close(); }
	else {
		self.name = "parent_hWnd"; }
	chTmpl = window.open("","cthWnd","status=no,toolbar=no,directories=no,menubar=no,scrollbars=no,width=560,height=280");
	chTmpl.focus();
	//lastClicked = eval("cthWnd.document.sp_" + preSelc);
}

var syncComplete = false;
function updateSyncStatus() {
	var args = updateSyncStatus.arguments;
	
	//while (!syncComplete) {
		setTimeout("submitXMLRequest('publish.cfm?sync=status','setSyncStatus(\""+args[0]+"\")')",1000);
	//}
	
	return;
}

function setSyncStatus() {
	var args = setSyncStatus.arguments;
	
	//if () {
		
	//}
	
	return;
}

function displaySQReferers() {
	var args = displaySQReferers.arguments;
	var meth		= args[0]; // required (pre,success,error)
	var hxHndl		= args[1]; // required for simpleXMLRequest
	var dispLayer	= args[2];

	if (meth == "pre") {
		if (dispLayer) {
			toggleDisplay(dispLayer, "show");
			getCtrlHandle(dispLayer).innerHTML = "Fetching Data...";
		}
		return true;
	} else if (meth == "error") {
		// reset the form/display

		return true;
	} else {
		try {
			trc = dispLayer.substr(2,dispLayer.length);
			if (hxHndl && dispLayer) {
				rxHndl = hxHndl.responseXML;
				divHndl = getCtrlHandle(dispLayer);
				divHndl.innerHTML = "";
				//divHndl = (eval(args[0]) ? eval(args[0]) : document.getElementbyID(args[0]));
				// display the results
				var nTable = createDOMTable(divHndl, new Array("width","100%","border","0","cellspacing","1","cellpadding","2","id","gt"));
				for (x=0;x<rxHndl.getElementsByTagName("item").length;x++) {
					r = rxHndl.getElementsByTagName("item")[x];
					dom = getElementTextNS("", "domain", r, 0);
					// format referer url & link
					ref = getElementTextNS("", "referer", r, 0);
					dref = (ref.indexOf("https") > -1 ? ref.substr(8+dom.length,ref.length) : ref.substr(7+dom.length,ref.length));
					if (dref.length > 55) dref = "..."+dref.substr(dref.length-55,dref.length);
					refcc = "<a href='"+ref+"' title='"+ref+"' target='_blank'>"+dref+"</a>";
					// format date/time
					
					addTableCols(nTable, nTable.rows.length, new Array('&nbsp;',refcc,getElementTextNS("", "datetime", r, 0)));
				}
				toggleDisplay(dispLayer,"show");
				// switch images	
				toggleDisplay('xhide'+trc,"show");
				toggleDisplay('xshow'+trc);
				return true;
			}
		}
		catch(e) {
			var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
			//alert("An error occured while retriving results:\n" + msg);
			if (dispLayer) {
				getCtrlHandle(dispLayer).innerHTML = msg + "<br><br>" + hxHndl.responseText;
				toggleDisplay(dispLayer, "show");
			}
			return false;
		}
	}

return false;
}

// may not be used
function displayXMLResponse() {
	var args = displayXMLResponse.arguments;
	var hxHndl		= args[0];
	var dispLayer	= args[1];

	alert('hi');
	if (hxHndl && dispLayer) {
		rxHndl = hxHndl.responseXML;
		divHndl = getCtrlHandle(dispLayer);
		divHndl.innerHTML = "";
		//divHndl = (eval(args[0]) ? eval(args[0]) : document.getElementbyID(args[0]));

		// display the results
		var nTable = createDOMTable(divHndl, new Array("width","100%","border","0","cellspacing","1","cellpadding","2","id","gt"));
		for (x=0;x<rxHndl.getElementsByTagName("item").length;x++) {
			r = rxHndl.getElementsByTagName("item")[x];
			//content = "<b>"+getElementTextNS("", "title", r, 0)+"</b><br />";
			//content += "<span class='comment'>"+getElementTextNS("content", "encoded", r, 0)+"</span>";//getElementTextNS("", "content", r, 0).substr(0,200)+(getElementTextNS("", "content", r, 0).length > 200?"...":"")+"<br />";
			//addTableCols(nTable, nTable.rows.length, new Array(content));
			addTableCols(nTable, nTable.rows.length, new Array(getElementTextNS("", "referer", r, 0),getElementTextNS("", "datetime", r, 0)));
		}

		return true;
	}

	return false;
}

function updatePreview(tName,iColor) {
	var daImage = new Image();
	var pointERR = new Image();

	daImage.src = "/templates/" + tName + "/_large.jpg";
	pointERR.src = "/images/" + iColor + "-arrow_small.gif";

	document.tplprev.src = daImage.src;
	selcPnt = eval("document.sp_" + tName);
	if (lastClicked != null) lastClicked.src = mrBlank.src;
	selcPnt.src = pointERR.src;
	lastClicked = selcPnt;
	
	document.tplch_frm.templdir.value = tName;
}

function closeTemplChooser() {
	lastClicked = null;
	self.close();
	window.opener.location.reload();
}

function closePop_Refresh() {
	lastClicked = null;
	self.close();
	window.opener.location.reload();
}

function showXContent(ContentID) {
	if (document.all) {
		document.all("sd" + ContentID).style.display = "";
		document.all("xshow" + ContentID).style.display = "none";
		document.all("xhide" + ContentID).style.display = "";
	} else {
		document.getElementById("sd" + ContentID).style.display = "";
		document.getElementById("xshow" + ContentID).style.display = "none";
		document.getElementById("xhide" + ContentID).style.display = "";
	}
}

function hideXContent(ContentID) {
	if (document.all) {
		document.all("sd" + ContentID).style.display = "none";
		document.all("xshow" + ContentID).style.display = "";
		document.all("xhide" + ContentID).style.display = "none";
	} else {
		document.getElementById("sd" + ContentID).style.display = "none";
		document.getElementById("xshow" + ContentID).style.display = "";
		document.getElementById("xhide" + ContentID).style.display = "none";
	}
}

function numbersOnly() {
	if (!( event.keyCode > 47 && event.keyCode < 58 )) event.returnValue = false;
}
function lettersOnly() {
	if (!( (event.keyCode > 64 && event.keyCode < 91) || (event.keyCode > 96 && event.keyCode < 123) || (event.keyCode == 32) )) event.returnValue = false;
}
function nospecialChars() {
	if (!( (event.keyCode > 64 && event.keyCode < 91) || (event.keyCode > 96 && event.keyCode < 123) || (event.keyCode == 32) || (event.keyCode > 47 && event.keyCode < 58) )) event.returnValue = false;
}
function nospaces() {
	
}

// marks rows in a table with a specified class
function highlightTableRows() {
	var args = highlightTableRows.arguments;
	var rn;
	var tblHndl = args[0];
	var hCtrlHndl = getCtrlHandle(args[1]);
	
	if (tblHndl && hCtrlHndl) {
		// loop through table rows, if rownum eq to hvals -> set class = to args[2]
		var hvals = hCtrlHndl.value;
		for (i=1;i<=listLen(hvals,",");i++) {
			rn = parseInt(listGetAt(hvals,i,","))-1;
			// get tr handle of 'rn' and set tr class = args[2]
			for (c=0;c<tblHndl.rows[rn].cells.length;c++) tblHndl.rows[rn].cells[c].style.color = args[2];//"#CC0000";
			//ele = tblHndl.rows[rn].innerHTML.replace(/<[^>]+>/g,"");
		}
		return i;
	}

	return false;

}

//appendFiles('impFrm', new Array('#photoUplist#'));
function appendFiles() {
	var args = appendFiles.arguments;
	var rn;
	var frmHndl = getCtrlHandle(args[0]);
	var ptImport = args[1];

	if (frmHndl.action && ptImport.length > 0) {
		// make sure the form is set to upload files
		if (frmHndl.enctype) frmHndl.enctype = 'multipart/form-data';
		if (frmHndl.enctype.indexOf("multipart") > -1) {
			for (x=0;x<ptImport.length;x++) {
				// create an upload field
				createDOMInput(frmHndl,"upload","pphoto"+x,ptImport[x]);
			}
		}
	}

	return false;
}

// tooltip style popup
//<div id="overpop" style="display:none;" class="boxstyle" onmouseout="setTimeout(killPop(),2000);"></div>
function overPop() {
	var args = overPop.arguments;
	var pl;
	var loc = args[1] || window.event;
	var msg = args[0];

	pl = getCtrlHandle('overpop');

	// create the new layer
	/*
	if (document.body) {
		pl = createDOMLayer(document.body,"overpop","style.display","none","class",class);
	} else {
		document.write("<div ID=\"overpop\" style=\"display:none;\" class=\""+class+"\"></div>");
	}
	*/
	
	if (pl && loc) {
		// write content to layer
		pl.innerHTML = msg;

		// set layer top/left = to mouse pos
		pl.style.top = ((loc.pageY)?(loc.pageY+20):loc.y+20).toString()+'px';
		pl.style.left = ((loc.pageX)?loc.pageX:loc.x).toString()+'px';
	
		// display the layer
		pl.style.display = "block";
	} else {
		return false;
	}

	return true;
}

function killPop() {

	var pl = getCtrlHandle('overpop');
	if (pl) {
		pl.innerHTML = "";
		pl.top = -1000;
		pl.style.display = "none";
	}

}

/*
***********************************************
	List Functions
***********************************************
*/

// removes a given value from the given list
function listDelete() {
       var list = listDelete.arguments[0];
       var val = listDelete.arguments[1];
       var delim = listDelete.arguments[2];

       var tl = list.split(delim);
       for (c=0;c<=(tl.length-1);c++) list = (c == 0 ? "" : list) + (tl[c] == val ? "" : tl[c] + (c == (tl.length-1) ? "" : delim) );
       if (list.lastIndexOf(delim) == list.length-1) list = list.substr(0,list.length - 1);

       return list;
}

// adds item from the given list
function listAppend() {
       var list = listAppend.arguments[0];
       var val = listAppend.arguments[1];
       var delim = listAppend.arguments[2];

       if (list.length == 0) return val;

       if ((list.lastIndexOf(delim)+1) == list.length) {
               list = list + val;
       } else {
               list = list + delim + val;
       }

       return list;
}

function listGetAt() {
       var list = listGetAt.arguments[0];
       var pos = listGetAt.arguments[1];
       var delim = listGetAt.arguments[2];
       var val = "";

       return (list.length > 0 ? list.split(delim)[pos-1] : "");
}

function listLen(list,delim) {
       return (list.length > 0 ? list.split(delim).length : 0);
}

// ************* END *****************************

// Return a boolean value telling whether // the first argument is an Array object. 
function isArray() {
	if (typeof arguments[0] == 'object') {
		var criterion = arguments[0].constructor.toString().match(/array/i);
		return (criterion != null);
	}
	return false;
}

var nmtCount = -1;
function addEditMTValue() {
	var args = addEditMTValue.arguments;
	var tblHndl, newRowHndl, newRowPos, curRowID;
	var fldName = (args[6] ? args[6] + "_" : "");
	
	tblHndl = getCtrlHandle(args[0]);
	if (tblHndl) {
		newRowPos = tblHndl.rows.length;
		if (args[2] && args[3]) {
			tblHndl.deleteRow(args[5]);
			newRowHndl = addTableCols(tblHndl, args[5], new Array("<input type='text' name='umt_name"+args[2]+"' value='"+args[3]+"' size='14' maxlength=28>", "<textarea name='umt_cont"+args[2]+"' cols='22' rows=2 class='textbox_sm'>"+args[4]+"</textarea>", "<input type='button' name='upd_"+args[5]+"' value='Update' onclick="+dubQuote+"saveOpValue('"+args[0]+"',"+args[5]+",'"+fldName+args[2]+"','"+args[1]+"','','umt_name"+args[2]+"','umt_cont"+args[2]+"');"+dubQuote+" class='button_sm'>","<input type='button' value='Cancel' onClick=\"cancelEdit('"+args[0]+"','"+args[1]+"',"+args[2]+","+args[5]+",'umt_name','umt_cont','"+args[3]+"','"+args[4]+"');\" class='button_sm'>"));
		} else {
			nmtCount++;
			newRowHndl = addTableCols(tblHndl, newRowPos, new Array("<input type='text' name='amt_name"+nmtCount+"' value='' size='14' maxlength=28>", "<textarea name='amt_cont"+nmtCount+"' value='' cols='22' rows=2 class='textbox_sm'>", "<input type='button' name='sav_"+newRowPos+"' value='Save' onclick="+dubQuote+"saveOpValue('"+args[0]+"',"+newRowPos+",'"+fldName+"0','"+args[1]+"','','amt_name"+nmtCount+"','amt_cont"+nmtCount+"');"+dubQuote+" class='button_sm'>","<input type='button' value='Cancel' onClick=\"getCtrlHandle('"+args[0]+"').deleteRow("+newRowPos+");\" class='button_sm'>"));
		}
	}

	return newRowHndl;
}

// array to store settings for each DOM form
// (table_name, form_name, number_of_fields, new Array(field_type, ...), field_prefix)

var dom_forms = new Array('mtags', 'eas', 2, new Array('text', 'textarea'), '',
						  'opvalues', 'epo', 2, new Array('text', 'text'), '',
						  'cdentry', 'eas', 2, new Array('text', 'createPageSelect'), 'cef');

var novCount = -1;
function addEditOpValue() {
	var args = addEditOpValue.arguments;
	var tblHndl, newRowHndl, newRowPos, curRowID;
	var fldPrefix = (args[6] ? args[6] : "opv");
	
	tblHndl = getCtrlHandle(args[0]);
	if (tblHndl) {
		newRowPos = tblHndl.rows.length;
		if (args[2] && args[3]) {
			tblHndl.deleteRow(args[5]);
			newRowHndl = addTableCols(tblHndl, args[5], new Array("<input type='text' name='"+fldPrefix+"_key"+args[2]+"' value='"+args[3]+"' onkeydown='nospecialChars();'>", "<input type='text' name='"+fldPrefix+"_value"+args[2]+"' value='"+args[4]+"'>", "<input type='button' name='upd_"+args[5]+"' value='Update' onclick=\"saveOpValue('"+args[0]+"',"+args[5]+",'"+args[2]+"','"+args[1]+"','"+(fldPrefix == "opv" ? "" : fldPrefix)+"','"+fldPrefix+"_key"+args[2]+"','"+fldPrefix+"_value"+args[2]+"');\">","<input type='button' value='Cancel' onClick=\"cancelEdit('"+args[0]+"','"+args[1]+"',"+args[2]+","+args[5]+",'"+fldPrefix+"_key','"+fldPrefix+"_value','"+args[3]+"','"+args[4]+"');\">")); //cancelEdit('"+args[0]+"','"+args[1]+"',"+args[2]+","+args[5]+",'uov_label','uov_sku','"+args[3]+"','"+args[4]+"');
		} else {
			novCount++;
			newRowHndl = addTableCols(tblHndl, newRowPos, new Array("<input type='text' name='"+fldPrefix+"_key"+novCount+"' value='' onkeydown='nospecialChars();'>", "<input type='text' name='"+fldPrefix+"_value"+novCount+"' value=''>", "<input type='button' name='sav_"+newRowPos+"' value='Save' onclick=\"saveOpValue('"+args[0]+"',"+newRowPos+",'0','"+args[1]+"','"+(fldPrefix == "opv" ? "" : fldPrefix)+"','"+fldPrefix+"_key"+novCount+"','"+fldPrefix+"_value"+novCount+"');\">","<input type='button' value='Cancel' onClick=\"cancelEdit('"+args[0]+"','"+args[1]+"',0,"+newRowPos+");\">"));
		}
	}

	return newRowHndl;
}

function saveOpValue() {
	var args = saveOpValue.arguments;
	var tblHndl, frmHndl, rowHndl, curRowID;
	var valArray, alignArray, classArray;
	var iName, iVal, fieldName, fieldHndl;

	valArray = new Array();
	alignArray = new Array();

	tblHndl = getCtrlHandle(args[0]);
	frmHndl = getCtrlHandle(args[3]);
	fldPrefix = (args[4] > '') ? args[4] + "_" : "";
	lblPrefix = fldPrefix + "ovl_";
	valPrefix = fldPrefix + "ovs_";
	// verify given values
	if (args.length > 5 && frmHndl) {
		// add new values to an array, with hidden values
		for (i=5; i < args.length; i++) {
			fieldName = args[i];
			fieldHndl = frmHndl[fieldName];
			if (fieldName.indexOf("_label") > 0 || fieldName.indexOf("_name") > 0 || fieldName.indexOf("_key") > 0  ) {
				iName = (args.length > 7) ? args[i+2] : fieldHndl.value;
				valArray[i-5] = "<input type='hidden' name='"+lblPrefix+args[2]+"' value='"+iName+"'><span class=middark>"+iName+"</span>";
			} else {
				//iVal = fieldHndl.value;
				iVal = (args.length > 7) ? args[i+2] : fieldHndl.value;
				valArray[i-5] = "<input type='hidden' name='"+valPrefix+args[2]+"' value='"+iVal+"'><span class=middark>"+iVal+"</span>";
			}
			alignArray[i-5] = "left";
		}
		
		if (iName.length == 0 || iVal.length == 0) {
			alert("You must fill in all fields!");
			return false;
		}

		//<a href=\"#\" onclick=\"addEditMTValue('"+args[0]+"', '"+args[3]+"', '"+args[2]+"', '"+iName+"', '"+iVal+"', "+valArray.length+");\" class='middark'>
		valArray[valArray.length] = "<span class=middark><a href=\"#\" onclick=\"addEditMTValue('"+args[0]+"', '"+args[3]+"', '"+args[2]+"', '"+iName+"', '"+iVal+"', "+args[1]+");\" class='middark'>Edit</a></span>";
		alignArray[alignArray.length] = "center";
		valArray[valArray.length] = (args[2] > 0) ? "<a href=\"javascript:confirmDelete('Are you sure you want to delete \\'"+iName+"\\'?','updatesettings.cfm?rmt="+args[2]+"');\" class=middark>Remove</a>" : "<a href='#' class=middark onclick=\"cancelEdit('"+args[0]+"','"+args[3]+"',"+args[2]+","+args[1]+")\">Remove</a>";
		alignArray[alignArray.length] = "center";
		// delete 'edit row'
		tblHndl.deleteRow(args[1]);
		// add row with new values
		rowHndl = addTableCols(tblHndl, args[1], valArray, alignArray, "middark");
	}

	return;
}

function cancelEdit() {
	var args = cancelEdit.arguments;
	var iFormHndl = args[1];
	var iID = args[2];
	var iPos = args[3];

	// doesn't know how to edit new-saved values
	if (args[2] == 0) {
		
		getCtrlHandle(args[0]).deleteRow(iPos);
	} else {
		// keep existing values in field
		saveOpValue(args[0],iPos,iID,iFormHndl,(args[4].substr(0,3) == "opv" ? "" : args[4].substr(0,3)),args[4]+iID,args[5]+iID,args[6],args[7]);
	}

}

// ********************************************
// more DOM Functions
// ********************************************


function checkall() {
	var frmObj, frmHndl, objName, chkOpt;
	var args = checkall.arguments;
	
	frmHndl = eval(args[0]);
	objName = args[1];
	chkOpt	= args[2];

	if (!frmHndl) frmHndl = document.getElementbyID(args[0]);
	if (frmHndl) {
		for (x=0;x<=frmHndl.length;x++) {
			frmObj = frmHndl.elements[x];
			 if (frmObj && frmObj.name.indexOf(objName) >= 0 && frmObj.disabled != true) frmObj.checked = chkOpt;
		}
	}

	return;
}

function setSelected() {
	var frmHndl, objName, frmObj, tgtFormObj;
	var selcdItems = '';
	var args = setSelected.arguments;
	
	frmHndl = eval(args[0]);
	objName	= args[1];
	tgtFormObj = eval(args[2] + "." + args[3]);

	if (!frmHndl) frmHndl = document.getElementbyID(args[0]);
	if (frmHndl) {
		for (x=0;x<=frmHndl.length;x++) {
			frmObj = frmHndl.elements[x];
			if (frmObj && frmObj.name.indexOf(objName) >= 0 && frmObj.checked == true) selcdItems += frmObj.name.substr(frmObj.name.indexOf(objName)+objName.length, frmObj.name.length-objName.length) + ","; //;frmObj.disabled != true) frmObj.checked = chkOpt;
		}
		// set field value
		if (!tgtFormObj) tgtFormObj = document.getElementbyID(args[2]).eval(args[3]);
		if (tgtFormObj) {
			tgtFormObj.value = selcdItems.substr(0,selcdItems.length-1);
			//alert(tgtFormObj.value);  //debug
		}
	}

	return;
}

function autoCheck() {
	var frmHndl, objName, frmObj;
	var args = autoCheck.arguments;
	
	frmHndl = eval(args[0]);
	objName = args[1];

	if (!frmHndl) frmHndl = document.getElementbyID(args[0]);
	if (frmHndl) {
		for (x=0;x<=frmHndl.length;x++) {
			frmObj = frmHndl.elements[x];
			if (frmObj && frmObj.name == objName && frmObj.checked != true) frmObj.checked = true;
		}
	}

	return;
}


function toggleDisplay() {
	var args = toggleDisplay.arguments;
	var divHndl = args[0];
	
	if (typeof divHndl != 'object') var divHndl = getCtrlHandle(args[0]);
	divHndl.style.display = args[1] ? (args[1] == "show" ? "" : args[1]) : (divHndl.style.display == "" ? "none" : "");

	return true;
}

var histDivName;

function displayHistory() {
	var args = displayHistory.arguments;
	var divHndl;
	
	histDivName = args[0];
	//divHndl = (eval(args[0]) ? eval(args[0]) : document.getElementbyID(args[0]));

	toggleDisplay(histDivName);	
	try {
        loadXMLDoc(args[1]);
	}
	catch(e) {
	    var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
	    alert("Error Retrivint History - Unable to get XML data:\n" + msg);
	    return;
	}
	
	return;
}

/*
	***********************************************

	AJAX Functions

	***********************************************
*/

var htreq;

function getXMLRequestHndl() {

	if (window.XMLHttpRequest)
		return http = new XMLHttpRequest();
	else if (window.ActiveXObject)
		return http = new ActiveXObject("Microsoft.XMLHTTP");

}

function simpleXMLRequest() {
	var args = simpleXMLRequest.arguments;
	var reqURL = args[0];
	var metho = args[1];
	var addlFuncArgs = new Array();
	for (x=2;x<=args.length;x++) { addlFuncArgs[x-2] = args[x]; }

	// pre-submit operations
	if (!eval(metho+"('pre',null,'"+addlFuncArgs.join("','")+"')")) return;

	// branch for native XMLHttpRequest object
	var htreq = getXMLRequestHndl();

	if (htreq && args.length > 1) {
		// set request action
		htreq.onreadystatechange = function () {
			if (htreq.parseError && htreq.parseError != 0) {
				alert("Parse Error line " + htreq.parseError.line + ", character " + htreq.parseError.linePos + '\n' + htreq.parseError.srcText);
			}
			// only if req ready
			if (htreq.readyState == 4) {
				// load if "OK"
				if (htreq.status == 200) {
					// do the stuff
					//alert(metho+"('success','"+frmHndl.name+"',htreq,'"+addlFuncArgs.join("','")+"')");
					if (!eval(metho+"('success',htreq,'"+addlFuncArgs.join("','")+"')")) alert(metho+" failed on execution");
				} else {
					if (!eval(metho+"('error',htreq,'"+addlFuncArgs.join("','")+"')")) {
						alert("There was a problem retrieving the XML data:\n" + htreq.statusText + " (" + htreq.status + ")");
					}
				}
			}
		};
		
		htreq.open("GET", reqURL, true);
		if (window.ActiveXObject)
			htreq.send(null);
		else
			htreq.send(null);

	}

	return;
}

function submitXMLRequest() {
	var args = submitXMLRequest.arguments;
	var frmHndl = getCtrlHandle(args[0]);
	var metho = args[1];
	var addlFuncArgs = new Array();
	for (x=2;x<=args.length;x++) { addlFuncArgs[x-2] = args[x]; }
	
	// pre-submit operations
	if (!eval(metho+"('pre','"+frmHndl.name+"',null,'"+addlFuncArgs.join("','")+"')")) return;

    // branch for native XMLHttpRequest object
	var htreq = getXMLRequestHndl();

	if (htreq && frmHndl) {
		// set request action
		htreq.onreadystatechange = function () {
			if (htreq.parseError && htreq.parseError != 0) {
				alert("Parse Error line " + htreq.parseError.line + ", character " + htreq.parseError.linePos + '\n' + htreq.parseError.srcText);
			}
			// only if req ready
			if (htreq.readyState == 4) {
				// load if "OK"
				if (htreq.status == 200) {
					// do the stuff
					//alert(metho+"('success','"+frmHndl.name+"',htreq,'"+addlFuncArgs.join("','")+"')");
					if (!eval(metho+"('success','"+frmHndl.name+"',htreq,'"+addlFuncArgs.join("','")+"')")) alert(metho+" failed on execution");
				} else {
					if (!eval(metho+"('error','"+frmHndl.name+"',htreq,'"+addlFuncArgs.join("','")+"')")) {
						alert("There was a problem retrieving the XML data:\n" + htreq.statusText + " (" + htreq.status + ")");
					}
				}
			}
		};
		
		// prep data
		var strFormData = compileFormData(frmHndl.name);
		
		if (frmHndl.method.toUpperCase() == "POST") {
			htreq.open(frmHndl.method, frmHndl.action, true);
			htreq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			htreq.setRequestHeader("Content-length",strFormData.length);
			htreq.setRequestHeader("Connection", "close");
			htreq.send(strFormData);
		} else {
			htreq.open(frmHndl.method, frmHndl.action+(frmHndl.action.indexOf("?")>-1?"&":"?")+strFormData, true);
			if (window.ActiveXObject) {
				htreq.send();
			} else {
				htreq.send(null);
			}
		}

	}

	return;
}

function compileFormData() {
	var args = compileFormData.arguments;

	var da = new Array();

	var dac = 0;
	var frmfields = getCtrlHndlbyTagName(args[0],"form").elements;//  document.getElementsByName(args[0]);
	for (c=0;c<frmfields.length;c++) {
		var fTagName = frmfields.item(c).tagName.toLowerCase();
		//alert(fTagName.indexOf("input")+"-"+frmfields.item(c).name+"/"+frmfields.item(c).value);
		if (fTagName.indexOf("input") > -1 && frmfields.item(c).name.substr(0,args[1].length) == args[1]) {
			// build array
			da[dac] = frmfields.item(c).name;
			da[dac+1] = frmfields.item(c).value;
			dac = dac + 2;
			// build url encoded string
			strPostData += escape(formdata[i])+"="+escape(formdata[i+1])+"&";
			//debugPostData += escape(formdata[i])+"="+escape(formdata[i+1])+", ";
		}
	}
	strPostData = strPostData.substr(0,strPostData.length-1);
	
	return (args[1] == "array" ? da : strPostData);

}

// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}

