iQAjaxSend = function(sToPost){
	var CallbackHandler = this.CallbackHandler;
	var CallbackParams = this.CallbackParams;
	var ResponseFormat = this.ResponseFormat.toUpperCase();
	var ret = null;

	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		var xmlHttpReq = new XMLHttpRequest();
	// IE
	}else if(window.ActiveXObject) {
		var xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlHttpReq.open(this.HTTPMethod, this.URL, this.bSync);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.onreadystatechange = function() {
		if (xmlHttpReq.readyState == 4) {

			if(ResponseFormat == 'JSON'){
				ret = eval('(' + xmlHttpReq.responseText + ')');
			}else{
				ret = xmlHttpReq.responseText;
			}

			if(CallbackHandler != null){
				if(CallbackParams != null){
					var arrVals = CallbackParams.split(',');

					if(arrVals.length > 0){
						var tmp = ''
						for (i=0;i<arrVals.length;i++){
							if(tmp == ''){
								tmp = "'" + arrVals[i] + "'";
							}else{
								tmp = tmp + ",'" + arrVals[i] + "'";
							}
						}
						eval(CallbackHandler + '(ret,' + tmp + ')');
					}else{
						eval(CallbackHandler + '(ret,CallbackParams)');
					}
				}else{
					eval(CallbackHandler + '(ret)');
				}
			}else{
				return ret;	
			}
		}
	}

	if(this.CFCFunction != ''){
		sToPost += '&Method=' + this.CFCMethod;

		if(ResponseFormat != ''){
			sToPost += '&ReturnFormat=' + ResponseFormat;
		}
	}

	//var x = encodeURIComponent(sToPost);

	xmlHttpReq.send(sToPost);	
}

function iQAjax(){
	this.CFCMethod = null;
	this.ResponseFormat = 'JSON';
	this.URL = '';
	this.CallbackHandler = null
	this.CallbackParams = null
	this.HTTPMethod = 'POST';
	this.bSync = true;
	this.send = iQAjaxSend;
}

function jsonFieldUpdate(jsonData,sDescriptionField,sValueField,sFormName,sFormField){
	var getCol = new Object();
	
	//This creates a mapping to the Column name that points at its position
	//This makes it much easier to reference the column name
	for(var i = 0; i < jsonData.COLUMNS.length; i++) {
		getCol[jsonData.COLUMNS[i]] = i;      
	}

	//This clears the current options
	eval('document.' + sFormName + '.' + sFormField + '.options').length = 0;
	
	//Now Loop through the JSON data and create an option for each
	for(i=0;i<jsonData.DATA.length;i++){
		var option = new Option();
		option.text = jsonData.DATA[i][getCol[sDescriptionField.toUpperCase()]];
		option.value = jsonData.DATA[i][getCol[sValueField.toUpperCase()]];
		eval('document.' + sFormName + '.' + sFormField + '.options')[i] = option;
	}

	var tmpVals = eval('_' + sFormField);

	if(tmpVals){
		if(tmpVals.indexOf(',') > 0){
			var arrVals = tmpVals.split(",");
			
			for(i=0;i<arrVals.length;i++){
				var tmpVal = arrVals[i];
				for(j=0;j<eval('document.' + sFormName + '.' + sFormField + '.options').length;j++){
					if(eval('document.' + sFormName + '.' + sFormField + '.options')[j].value == tmpVal){
						eval('document.' + sFormName + '.' + sFormField + '.options')[j].selected = true;
						break;
					}
				}
			}
			//this just makes sure that if there is a , in the value that if we have a option that has that
			//exact value it gets selected
			for(j=0;j<eval('document.' + sFormName + '.' + sFormField + '.options').length;j++){
				if(eval('document.' + sFormName + '.' + sFormField + '.options')[j].value == tmpVals){
					eval('document.' + sFormName + '.' + sFormField + '.options')[j].selected = true;
					break;
				}
			}			
		}else{
			for(j=0;j<eval('document.' + sFormName + '.' + sFormField + '.options').length;j++){
				if(eval('document.' + sFormName + '.' + sFormField + '.options')[j].value == tmpVals){
					eval('document.' + sFormName + '.' + sFormField + '.options')[j].selected = true;
					break;
				}
			}
			
		}
	}
}


function doProcessing(sAction, cellID){

	//if this one does not exist create both
	var objFade = getBrowserObject('Fade');
	
	if(sAction == 'hide' && objFade == false){
		return;
	}
	
	if(objFade == false){
		writeProcessDivs();
	}	
	
	objFade = getBrowserObject('Fade');
	var objProcessing = getBrowserObject('Processing');
	var objColumn = getBrowserObject(cellID);

	if(sAction == 'show'){
		if (document.layers) {
			iWidth = objColumn.document.width;
			iHeight = objColumn.document.height;
		}else if(document.all){
			iWidth = objColumn.clientWidth;
			iHeight = objColumn.clientHeight;
		}else{
			iWidth = objColumn.clientWidth;
			iHeight = objColumn.clientHeight;
		}

		var iLeft = getLeft(objColumn);
		var iTop = getTop(objColumn);

		objFade.style.height = iHeight;
		objFade.style.width = iWidth;
		objFade.style.top = iTop;
		objFade.style.left = iLeft;
		objFade.style.visibility = 'visible';
		
		var iProcLeft = ((iWidth - 150) / 2) + getLeft(objColumn);
		var iProcTop = (300) + getTop(objColumn);

		objProcessing.style.top = iProcTop;
		objProcessing.style.left = iProcLeft;
		objProcessing.style.visibility = 'visible';			
	}else{
		objFade.style.visibility = 'hidden';
		objProcessing.style.visibility = 'hidden';
	}
}


function writeProcessDivs(){
	//fade div		
	var div = document.createElement('div');
	div.setAttribute('id', 'Fade');	

	document.getElementsByTagName('body').item(0).appendChild(div);
	div = getBrowserObject('Fade');
	
	div.style.visiblity='hidden';
	div.style.position='absolute';
	div.className = 'Results_Fade';
	div.style.zIndex = '15';		
	
	//proc div
	div = document.createElement('div');
	div.setAttribute('id', 'Processing');				
	
	document.getElementsByTagName('body').item(0).appendChild(div);
	div = getBrowserObject('Processing');
	
	div.className = 'Results_Loading';
	div.style.zIndex = '15';
	
	var html = '<table width="150" height="40" cellpadding="0" cellspacing="0" border="0">';
		html+= '<tr>';
			html+= '<td align="center" valign="middle" class="Results_Loading_Text">';
				html+= '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab##version=6,0,0,0" width="150" height="40" id="processing" align="center">';
					html+= '<param name=movie value="/flash/ProcessingData.swf">';
					html+= '<param name=quality value=high>';
					html+= '<param name=bgcolor value=#FFFFFF>'; 
					html+= '<embed src="/flash/ProcessingData.swf" width="150" height="40" quality="high" bgcolor="#FFFFFF" name="processing" align="center" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>';
				html+= '</object>';				
			html+= '</td>';
		html+= '</tr>';
	html+= '</table>';
				
	div.innerHTML = html;		
}



function ShowErrorConsole(sContents){

	var obj = getBrowserObject('div_ErrorConsole');
			
	if(obj == false){
		writeConsoleDiv();
	}	

	var formWidth = 500;
	var formHeight = 400;

	var screenWidth = 0, screenHeight = 0;

	if( typeof( window.innerWidth ) == 'number' ) {
		screenWidth = window.innerWidth; screenHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {
		screenWidth = document.documentElement.clientWidth; screenHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		screenWidth = document.body.clientWidth; screenHeight = document.body.clientHeight;
	}

	var scrollWidth = 0, scrollHeight = 0;
	
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrollHeight = window.pageYOffset; scrollWidth = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrollHeight = document.body.scrollTop; scrollWidth = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrollHeight = document.documentElement.scrollTop; scrollWidth = document.documentElement.scrollLeft;
	}
	
	var objErrorMessage = document.getElementById('div_ErrorMessage');
	objErrorMessage.innerHTML = sContents;
		
	var objConsoleDIV = document.getElementById('div_ErrorConsole');
	var objConsoleIFRAME = document.getElementById('iframe_ErrorConsole');

	var sLeft = (scrollWidth - (formWidth / 2)) + (screenWidth / 2)
	var sTop = (scrollHeight - (formHeight / 2)) + (screenHeight / 2);

	objConsoleDIV.style.left = sLeft;
	objConsoleDIV.style.top = sTop;
	objConsoleDIV.style.visibility = 'visible';
	objConsoleDIV.style.display = 'block';

	objConsoleIFRAME.style.left =  sLeft;
	objConsoleIFRAME.style.top = sTop;
	objConsoleIFRAME.style.visibility = 'visible';
	objConsoleIFRAME.style.display = 'block';
}

function HideErrorConsole(){
	var formWidth = 500;
	var formHeight = 400;	

	var objErrorMessage = document.getElementById('div_ErrorMessage');
	objErrorMessage.innerHTML = '&nbsp;';

	var objConsoleDIV = document.getElementById('div_ErrorConsole');
	var objConsoleIFRAME = document.getElementById('iframe_ErrorConsole');

	objConsoleDIV.style.left = -1000;
	objConsoleDIV.style.top = -1000;
	objConsoleDIV.style.visibility = 'hidden';
	objConsoleDIV.style.display = 'none';		

	objConsoleIFRAME.style.left = 1000;
	objConsoleIFRAME.style.top = -1000;
	objConsoleIFRAME.style.visibility = 'hidden';
	objConsoleIFRAME.style.display = 'none';
}

		
function writeConsoleDiv(){
		
	
	//iframe			
	var frm = document.createElement('iframe');
	frm.setAttribute('id', 'iframe_ErrorConsole');
	frm.setAttribute('src', 'about:blank');
	frm.setAttribute('frameborder','0');
	frm.setAttribute('scrolling','no');
	
	document.getElementsByTagName('body').item(0).appendChild(frm);

	frm = getBrowserObject('iframe_ErrorConsole');
	frm.style.display='none';
	frm.style.visiblity='hidden';
	frm.style.position='absolute';
	frm.style.left='-1000';
	frm.style.top='-1000';
	
		
	//div
	var div = document.createElement('div');
	div.setAttribute('id', 'div_ErrorConsole');

	document.getElementsByTagName('body').item(0).appendChild(div);

	div = getBrowserObject('div_ErrorConsole');

	div.style.display='none';
	div.style.visiblity='hidden';
	div.style.position='absolute';
	div.style.left='-1000';
	div.style.top='-1000';
	div.style.zIndex = '15';
		
	var html = '';
		html+= '<table border="0" cellpadding="0" cellspacing="0" width="500" height="400" style="border:1px solid #672020; background-color: #FFFFFF;">';
			html+= '<tr>';
				html+= '<td valign="top" width="100%" align="center" height="20">';
					html+= '<table border="0" cellpadding="0" cellspacing="0" width="100%" class="Header_Dark_Red">';
						html+= '<tr>';
							html+= '<td align="left" style="padding-left: 5px">Error Message</td>';
							html+= '<td align="right">';
								html+= '<table border="0" cellpadding="0" cellspacing="0">';
									html+= '<tr>';
										html+= '<td width="16"><a class="Header_Menu" href="javascript:HideErrorConsole();"><img src="/images/icon/ICON.Close.gif" border="0" alt="Close"></a></td>';
										html+= '<td align="left" valign="middle"><a href="javascript:HideErrorConsole();" class="Header_Menu">Close</a></td>';									
									html+= '</tr>';
								html+= '</table>';
							html+= '</td>';
							html+= '<td align="center" width="5"><img src="/images/spacer.gif" border="0"></td>';							
						html+= '</tr>';
					html+= '</table>';
				html+= '</td>';
			html+= '</tr>';
			html+= '<tr>';
				html+= '<td valign="top" class="ErrorConsole_Text">';
					html+= '<div id="div_ErrorMessage" style="overflow: auto; width:100%; height:100%">';
						html+= '&nbsp;';
					html+= '</div>';
				html+= '</td>';
			html+= '</tr>';
		html+= '</table>';	

	div.innerHTML = html;
}

function BuildAjaxParamList(formid)
{
	var frm = getBrowserObject(formid);				
	
	var rtn = ''
	
	var inputs = frm.getElementsByTagName('input'); 
	for (var i = 0; i < inputs.length; i++) {
		
		if(i > 0 && inputs[i].name == inputs[i-1].name) continue;
	
		rtn += '~';
		rtn += inputs[i].name; 
		rtn += '=';
		rtn += getFieldValue(inputs[i].id,formid);		 
	}
	
	var inputs = frm.getElementsByTagName('select'); 
	for (var i = 0; i < inputs.length; i++) {		
		rtn += '~';
		rtn += inputs[i].name; 
		rtn += '=';
		rtn += getFieldValue(inputs[i].id,formid);		 
	}
	
	var inputs = frm.getElementsByTagName('select-multiple'); 
	for (var i = 0; i < inputs.length; i++) {
	
		rtn += '~';
		rtn += inputs[i].name; 
		rtn += '=';
		rtn += getFieldValue(inputs[i].id,formid);		 
	}
	
	var inputs = frm.getElementsByTagName('textarea'); 
	for (var i = 0; i < inputs.length; i++) {
		
		rtn += '~';
		rtn += inputs[i].name; 
		rtn += '=';
		rtn += getFieldValue(inputs[i].id,formid);		 
	}

	return encodeURIComponent(rtn);
}

function ShowMessageDiv(msg){

	try{
		var obj = getBrowserObject('div_Message_Text');
		obj.innerHTML = msg;
		
		var obj = getBrowserObject('div_Message');
		obj.style.display = 'block';
		
		setTimeout("HideMessageDiv()",'10000');	
	}
	catch(e){
	
	}
}

function HideMessageDiv(){
	var obj = getBrowserObject('div_Message');
	obj.style.display = 'none';	
}
	

function doAjaxResultPaging(startpage,totalrows,maxrows,nextpagefunction,pagingdivid){
	var intTotalPages = Math.ceil(totalrows / maxrows);
	var intStartLoop = null;
	var intEndLoop = null;
			
	if(intTotalPages <= 4){
		intStartLoop = 1;
		intEndLoop = intTotalPages;
	}else{
		if(startpage <= 2){
			intStartLoop = 1;
		}else{
			intStartLoop = startpage - 2;
		}

		intEndLoop = intStartLoop + 4;

		if(intEndLoop >= intTotalPages){
			intStartLoop = intTotalPages - 4;
			intEndLoop = intTotalPages;
		}
	}

	var theData = '<table align="center" height="20" cellspacing="5" cellpadding="0" border="0">';
		theData += '<tr>';
			if(startpage > 1 ){
				theData += '<td class="Pageing" align="center" width="50" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(1);">First</td>';
				theData += '<td class="Pageing" align="center" width="50" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + eval(startpage - 1) + ');">Prev</td>';
			}else{
				theData += '<td class="Pageing_None" align="center" width="50" height="20">First</td>';
				theData += '<td class="Pageing_None" align="center" width="50" height="20">Prev</td>';
			}

			theData += '<td width="15">&nbsp;</td>';

			for(i=intStartLoop; i <= intEndLoop;  i++){
				if(i == startpage){
					theData += '<td class="Pageing_Current" align="center" width="25" height="20">' + startpage + '</td>';
				}else{
					theData += '<td class="Pageing" align="center" width="25" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + i + ');">' + i + '</td>';
				}
			}

			if(intTotalPages - 1 > i){
				theData += '<td>...</td>';
				theData += '<td class="Pageing" align="center" width="25" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + eval(intTotalPages - 1) + ');">' + eval(intTotalPages - 1) + '</td>';
				theData += '<td class="Pageing" align="center" width="25" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + intTotalPages + ');">' + intTotalPages + '</td>';
			}
	
			theData += '<td width="15">&nbsp;</td>';
			
			if(startpage < intTotalPages){
				theData += '<td class="Pageing" align="center" width="50" height="20"  onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + eval(parseInt(startpage,10) + 1) + ');">Next</td>';
				theData += '<td class="Pageing" align="center" width="50" height="20" onMouseOver="this.className=\'Pageing_Over\';" onMouseOut="this.className=\'Pageing\';" onClick="' + nextpagefunction + '(' + intTotalPages + ');">Last</td>';
			}else{
				theData += '<td class="Pageing_None" align="center" width="50" height="20">Next</td>';
				theData += '<td class="Pageing_None" align="center" width="50" height="20">Last</td>';
			}
		theData += '</tr>';
	theData += '</table>';

	var objPagingDiv = getBrowserObject(pagingdivid);
	objPagingDiv.innerHTML = theData;
	objPagingDiv.style.display = 'block';
}

function ShowAjaxSearch(div_Search,iframe_Search){
	var dvSearchID = div_Search;
	var ifSearchID = iframe_Search;

	var formWidth = 500;
	var formHeight = 70;

	var screenWidth = 0, screenHeight = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) {
		screenWidth = window.innerWidth; screenHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {
		screenWidth = document.documentElement.clientWidth; screenHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		screenWidth = document.body.clientWidth; screenHeight = document.body.clientHeight;
	}

	var scrollWidth = 0, scrollHeight = 0;
	
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrollHeight = window.pageYOffset; scrollWidth = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrollHeight = document.body.scrollTop; scrollWidth = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrollHeight = document.documentElement.scrollTop; scrollWidth = document.documentElement.scrollLeft;
	}
	
	var elmSearchDIV = document.getElementById(dvSearchID);
	var elmSearchIFRAME = document.getElementById(ifSearchID);

	var sLeft = (scrollWidth - (formWidth / 2)) + (screenWidth / 2)
	var sTop = (scrollHeight - (formHeight / 2)) + (screenHeight / 2);

	elmSearchDIV.style.left = sLeft;
	elmSearchDIV.style.top = sTop;
	elmSearchDIV.style.visibility = 'visible';
	elmSearchDIV.style.display = 'block';

	elmSearchIFRAME.style.left =  sLeft;
	elmSearchIFRAME.style.top = sTop;
	elmSearchIFRAME.style.visibility = 'visible';
	elmSearchIFRAME.style.display = 'block';
}

function HideAjaxSearch(div_Search,iframe_Search){
	var dvSearchID = div_Search;
	var ifSearchID = iframe_Search;

	var formWidth = 500;
	var formHeight = 70;

	var elmSearchDIV = document.getElementById(dvSearchID);
	var elmSearchIFRAME = document.getElementById(ifSearchID);

	elmSearchDIV.style.left = -1000;
	elmSearchDIV.style.top = -1000;
	elmSearchDIV.style.visibility = 'hidden';
	elmSearchDIV.style.display = 'none';		

	elmSearchIFRAME.style.left = 1000;
	elmSearchIFRAME.style.top = -1000;
	elmSearchIFRAME.style.visibility = 'hidden';
	elmSearchIFRAME.style.display = 'none';		
}




