var tpair = new Object;
tpair = new Array;
var oXML;
var g_href;
var clock24=null;
var mdyformat=null;

function DoPostback(postvars,href)
{
	var x,pos,buf=new Array(2),parms='',passvars;
	passvars=postvars;

	if(navigator.userAgent.toLowerCase().indexOf('msie')>-1)
	{
		try
		{
			oXML = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e)
		{
			try
			{
				oXML = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (E)
			{
				oXML = false;
			}
		}
	}
	else
	{
		oXML=new XMLHttpRequest();
	}

	for(x=0;x<passvars.length;x++)
	{
		if((pos=passvars[x].toString().indexOf('='))!=-1)
		{
			buf[0]=passvars[x].substr(0,pos);
			buf[1]=passvars[x].substr(pos+1);
//			buf=passvars[x].split('=');
			if(parms!='') parms+='&';

			switch(buf[1].substring(0,1))
			{
			//getElementById() variables
			case ':':
				buf[1]=buf[1].substring(1);
				if((pos=buf[1].toString().lastIndexOf('.'))!=-1)
				{
					var idinfo=new Array(2);
					idinfo[0]=buf[1].substr(0,pos);
					idinfo[1]=buf[1].substr(pos+1);
					parms+=escape(buf[0])+'='+escape(eval('document.getElementById(\''+idinfo[0]+'\').'+idinfo[1])).replace(/\+/g,'%2B');
				}
				break;

			//Javascript variables
			case '~':
				buf[1]=buf[1].substring(1);
				parms+=escape(buf[0])+'='+escape(eval(buf[1])).replace(/\+/g,'%2B');
				break;

			//static text variables
			default:
				parms+=escape(buf[0])+'='+escape(buf[1]).replace(/\+/g,'%2B');
				break;
			}
		}
	}

	href+='&pcr-id='+pcr_id;
	g_href=href;

	if(parms=='')
	{
		oXML.open('GET',href);
                oXML.onreadystatechange=eval_func;
		oXML.send(null);
	}
	else
	{
		oXML.open('POST',href);
                oXML.onreadystatechange=eval_func;
		oXML.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		oXML.setRequestHeader('Content-Length',parms.length);
		oXML.send(parms);
	}
}

//async eval, called from onreadystatechange
function eval_func()
{
	if(oXML.readyState==4)
	{
		if(oXML.status==200)
		{
			try
			{
//				alert(oXML.responseText);
				eval(oXML.responseText);
			}
			catch(e)
			{
				if(oXML.responseText.indexOf('automatically logged out')==-1)
				{
					alert('Error Sending To '+g_href+'\r\n'+e.message+'\r\n'+oXML.responseText);
				}
			}
		}
	}
}

//NOTICE: provided for BASIC callback capability. 
//use callback.js for anything more complicated (alternate for above)
function post_xml(href,urldata,method)
{
	try
	{
		oXML = (window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (e)
	{
		oXML = false;
	}
	if(method=='POST'||urldata.length>2048)
	{
		oXML.open('POST',href,false);
		oXML.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		oXML.setRequestHeader('Content-Length',urldata.length);
		oXML.send(urldata);
	}
	else
	{
		if(href.indexOf('?')==-1) {var geturl=href+'?'+urldata;}else{var geturl=href;}
		oXML.open('GET',geturl,false);
		oXML.send(null);
	}
	
	try
	{
		//alert(href+'?'+urldata);
		//alert(oXML.responseText);
		eval(oXML.responseText);
	}
	catch(e)
	{
		alert('Error Sending To '+href+'\r\n'+e.message+'\r\n'+oXML.responseText);
	}
}

//submits form
function openurl(baseurl,method)
{
	var oper='';var urldata='';for(var i=1;i<tpair.length;i++){try{urldata=urldata+oper+tpair[i].name+'='+tpair[i].value;oper='&'}catch(e){}};post_xml(baseurl,urldata,method)
}

//initializes first [n] pairs
function initpair(num)
{
	for(var i=0;i<num;i++){var pair=new Object;pair.name='i'+i;pair.value='';tpair[i]=pair;}
}

//sets POST or GET pairvalues
function setpair(pname,pvalue,pnum)
{
	var pair=new Object;pair.name=urlencode(pname);pair.value=urlencode(pvalue);tpair[pnum]=pair;
}

//replacement for escape includes (+) symbol
function urlencode(arg)
{
	var urldata=escape(arg).replace(/\+/g,'%2B');return urldata;
}

//callback calendar functions
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function attachcal(inputx,tm)
{	
	inputx.onfocus=function(){if(g('caldiv_'+inputx.id)!=null){return};newdiv=document.createElement('div');
	newdiv.id='caldiv_'+inputx.id;inputx.parentNode.appendChild(newdiv);incrdate(inputx.value,'caldiv_'+inputx.id,tm)};
}
    
function formattime(arg)
{
	var dt=arg;hr=dt.getHours();mn=dt.getMinutes();if(clock24=='24'){if(mn<10){mn='0'+mn} return hr+':'+mn}if(hr>=12){ap='PM'}else{ap='AM'}
	if(hr>12){hr=hr-12}if(mn<10){mn='0'+mn}if(hr==0){hr=12} return hr+':'+mn+' '+ap
}

function setdate(id,celldate)
{
	var dt=new Date();   
	var tm=0;	
	var yr=g('calyear_caldiv_'+id).value;
	var dy=celldate;
	try{var mn=g('calmin_caldiv_'+id).value}catch(e){}
	try{var mt=g('calmonth_caldiv_'+id).value}catch(e){}	
	
	if(g('calhour_caldiv_'+id)){
		if(g('calampm_caldiv_'+id)){
			tm=g('calhour_caldiv_'+id).value	
			var ampm=' '+g('calampm_caldiv_'+id).value;
		}
		else
		{
			tm=g('calhour_caldiv_'+id).value
			var ampm='';
		}
	}
	else
	{
		mdyformat=mdyformat.replace(' h:nn [ampm]','')
	}
	var hr=tm;
	g(id).value=mdyformat.replace('yyyy',yr).replace('m',mt).replace('d',dy).replace('h',hr).replace('nn',mn).replace(' [ampm]',ampm);	
	hidecal(id);
}

function hidecal(id)
{
	try{document.onmousedown=null;par=g('caldiv_'+id).parentNode;par.removeChild(g('caldiv_'+id))}catch(e){};
}

function incrdate(dt,id,tm)
{
	var inpid=id.replace('caldiv_','');if(!tm){tm='';}initpair(10);setpair('id',id,2);setpair('action','GENERIC-CAL',3);setpair('dt',dt,4);setpair('tm',tm,5);
	setpair('tm2',clock24,7);setpair('ct',currenttime(),8);setpair('pcr-id','',9);openurl('/pcrbin/dropdown.exe');document.currcal=inpid;
	document.onmousedown=function (e){if(!e){t=event.srcElement}else{t=e.target};if(!isChild(g(inpid).parentNode,t)){hidecal(inpid);}};
	g(inpid).onkeydown=function (e){if(!e){t=event.keyCode}else{t=event.which};if(t==9){hidecal(inpid)};}
}

function currenttime(){
	var d = new Date();var mn=d.getMinutes()+'';if(mn.length==1){mn='0'+mn} return d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate()+' '+d.getHours()+':'+mn
}

function isChild(nparent,nchild){
  do
  {
	if(!nchild){break;}
	nchild=nchild.parentNode;
	if(!nchild){break;}
	if(nparent==nchild){return true;}
  }
  while (nchild!=null);return false
}