//function MM_findObj(n, d)  
//function MM_setTextOfTextfield(objName,x,newText)  
//function tmt_confirm(msg)
//function MM_openBrWindow(theURL,winName,features)  
//function YY_checkform() 
//function MM_showHideLayers() 
//function TM_UpperCase(strInput)
//function tmt_winOpen(u,id,f,df)
//function IsValidTime(obj,timeStr) 
//function leadingzero(val)
//function backzero(val)
//function createnewoption(formname,selboxname,addvalue)
//function putoptions(frm,obj,obj1nm){  only used in nurse registrations
//function putunits(frm,objget,objput,str){ used in admhospitalrates
//function checkcortime(shift,obj,typ)( called from cross tabulation
//function CheckDate(Obj,dtformat) {
//function Revalidatepassword(obj1,obj2){
//function catchEvent(){ 
//function TM_UpperCase(strInput){
//function textCounter(field, maxlimit,updn) {
//function Trim(X)
//function Mycompdate(X)
function checkname(obj)
{
	var val=obj.value;
	if(val.indexOf("!")>=0 || val.indexOf("@")>=0 || val.indexOf("/")>=0  || val.indexOf(";")>=0 || val.indexOf(">")>=0 || val.indexOf("<")>=0 || val.indexOf("?")>=0 || val.indexOf(":")>=0 || val.indexOf("`")>=0 || val.indexOf("#")>=0 || val.indexOf("$")>=0 || val.indexOf("%")>=0 || val.indexOf("^")>=0 || val.indexOf("*")>=0 || val.indexOf("(")>=0 || val.indexOf(")")>=0 || val.indexOf("[")>=0)
	{
		alert("The Following Characters Are Not Allowed\n ! @ / ; > < ? ~ : # $ % ^ * ( )");
		obj.focus();
	}
}

function fnputdefval(frm,objget,strnm,stridnm,editbtn){
// this fn put default values in another field called in hospital rates 
	var str1=eval("frm."+stridnm)
	genarr=new Array();
	if (MM_findObj(editbtn)!="null"){
		genarr=str1.value.split(",");
		for(var k=0;k<=((genarr.length)-1);k++){
		   	eval("frm."+strnm+genarr[k]+".value="+objget.value);
		}
		for (var i=0;i<=frm.elements.length-1;i++){
			if (frm.elements[i].type=="checkbox" && frm.elements[i].name==editbtn){
				for(var k=0;k<=((genarr.length)-1);k++){
					if (frm.elements[i].value==genarr[k]){
						eval("frm.elements["+i+"].checked=true");
					}
				}
			}
		}
	}
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function putzerovalue(obj,typ){	obj.value=parseFloat(obj.value);if (obj.value=="NaN"){if (typ!=''){obj.value=typ;} else {obj.value="0";} }  }
function MM_setTextOfTextfield(objName,x,newText) { var obj = MM_findObj(objName); if (obj) obj.value = newText;}
function tmt_confirm(msg){document.MM_returnValue=(confirm(unescape(msg)));}
function MM_openBrWindow(theURL,winName,features) { window.open(theURL,winName,features);}

function YY_checkform() { //v3.02
  var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;
  var myForm = MM_findObj(args[0]);
  for (var i=1; i<args.length;i=i+4){
    if (args[i+1].charAt(0)=='#'){var myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
	var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));//eval(myForm+'.'+args[i]);
    myV=myObj.value;
    if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){
		while(myObj.value.substring(0,1)==" ")
		   {myObj.value=myObj.value.substring(1,myObj.value.length);}
		while(myObj.value.substring(myObj.value.length-1,myObj.value.length)==" ")
		   {myObj.value=myObj.value.substring(0,myObj.value.length-1);}
      if (myReq&&myObj.value.length==0){addErr=true}
      if ((myV.length>0)&&(args[i+2]==1)){ //fromto
        if (isNaN(parseInt(myV,10))||myV<args[i+1].substring(0,args[i+1].indexOf('_'))/1||myV > args[i+1].substring(args[i+1].indexOf('_')+1)/1){addErr=true} else {myObj.value=parseFloat(myV)}
      }
      if ((myV.length>0)&&(args[i+2]==2)&&!myV.match("^[\\w\\.=-]+@[\\w\\.-]+\\.([A-Z]|[a-z]){2,4}$")){addErr=true}// email
      if ((myV.length>0)&&(args[i+2]==3)){ // date
        var myD=''; myM=''; myY=''; myYY=0; myDot=true;
        for(var j=0;j<args[i+1].length;j++){
          var myAt = args[i+1].charAt(j);
          if(myAt=='D')myD=myD.concat(myObj.value.charAt(j));
          if(myAt=='M')myM=myM.concat(myObj.value.charAt(j));
          if(myAt=='Y'){myY=myY.concat(myObj.value.charAt(j)); myYY++}
          if(myAt=='-'&&myObj.value.charAt(j)!='-')myDot=false;
          if(myAt=='.'&&myObj.value.charAt(j)!='.')myDot=false;
          if(myAt=='/'&&myObj.value.charAt(j)!='/')myDot=false;
        }
        if (isNaN(myD)||isNaN(myM)||isNaN(myY))myDot=false;
        if(parseInt(myD,10)<1||parseInt(myD,10)>31||parseInt(myM,10)<1||parseInt(myM,10)>12||myY.length!=myYY)myDot=false;
        if((parseInt(myM,10)==4||parseInt(myM,10)==6||parseInt(myM,10)==9||parseInt(myM,10)==11)&&(parseInt(myD,10)>30))myDot=false;
        if(parseInt(myY,10)%4!=0&&parseInt(myM,10)==2&&parseInt(myD,10)>28)myDot=false;
        if(parseInt(myY,10)%4==0&&parseInt(myM,10)==2&&parseInt(myD,10)>29)myDot=false;
        if(!myDot){addErr=true}
       }
      if ((myV.length>0)&&(args[i+2]==4)){ // time
        myDot=true;
        var myH = myObj.value.substr(0,myObj.value.indexOf(':'))/1;
        var myM = myObj.value.substr(myObj.value.indexOf(':')+1,2)/1;
        var myPold = myObj.value.substr(myObj.value.indexOf(':')+3,3);
		var myP = myPold.replace(" ","");
        if ((args[i+1])=="12:00pm"){if(myH<0||myH>12||myM<0||myM>59||(myP.toUpperCase()!="PM"&&myP.toUpperCase()!="AM")||myObj.value.length>8)myDot=false;}
        if ((args[i+1])=="12:00"){if(myH<0||myH>12||myM<0||myM>59||myObj.value.length>5)myDot=false;}
        if ((args[i+1])=="24:00"){if(myH<0||myH>23||myM<0||myM>59||myObj.value.length>5)myDot=false;}
        if(!myDot){addErr=true}
      }
      if (myV.length>0&&args[i+2]==5){
            var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
            if(!myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")].checked){addErr=true} // check this 2
          }
    }else
    if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
      if (args[i+2]==1&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
      if (args[i+2]==2){
        myDot=false;
        for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
        if(!myDot){myErr+='- ' +args[i+3]+'\n'}
      }
    }else
    if (myObj.type=='checkbox'){
      if(args[i+2]==1&&myObj.checked==false){addErr=true}
      if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
    }else
    if (myObj.type=='select-one'||myObj.type=='select-multiple'){
      if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}

    }else
    if (myObj.type=='textarea'){
      if(myV.length<args[i+1]){addErr=true}
    }
    if (addErr){myErr+='- '+args[i+3]+'\n'; addErr=false}
  }
  if (myErr!='')
  {
  alert('The required information is incomplete or contains errors:\t\n______________________________________________\n\n'+myErr+'______________________________________________\n Please re-enter and submit again')
  }
  document.MM_returnValue = (myErr=='');
}


function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function TM_UpperCase(strInput){
    var theString = strInput.value;
    var strOutput = "";// Our temporary string used to build the function's output
    var sp = " ";
    var small = false;
    var smallWords = new Array('the','an','a','in','of','to') //words that shouldn't be  capitalized
    theString = theString.replace(/(\s*)([^\s])/,"$2")//remove leading spaces
    theString = theString.toLowerCase();  
    var inputArray = theString.split(sp);
    strOutput = inputArray[0].slice(0,1).toUpperCase()+inputArray[0].slice(1);
    for (i = 1; i < inputArray.length; i++){ 
        small=false;
        for (ii=0;ii<smallWords.length-1;ii++){
           if(inputArray[i] == smallWords[ii]) small = true;
           }
        if(!small) inputArray[i] = inputArray[i].slice(0,1).toUpperCase()+inputArray[i].slice(1);
        strOutput = strOutput + sp + inputArray[i];  
        }
    strInput.value = strOutput;
}

function tmt_winOpen(u,id,f,df){
	if(eval(id)==null||eval(id+".closed")){
	eval(id+"=window.open('"+u+"','"+id+"','"+f+"')");eval(id+".focus()");}
	else if(df){eval(id+".focus()");}
	else{eval(id+"=window.open('"+u+"','"+id+"','"+f+"')");eval(id+".focus()");}
}

function IsValidTime(obj,timeStr) {
	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm|aM|Am|Pm|pM))?$/;
	var matchArray=timeStr.match(timePat);
	if (matchArray==null) {alert("Time is not in a valid format. e.g 04:00AM");obj.focus();return false;}
	hour=matchArray[1];minute=matchArray[2];second=matchArray[4];ampm=matchArray[6];
	if (second=="") { second = null; }
	if (ampm=="") { ampm = null }
	if (ampm == null) {	alert("You must specify AM or PM.");obj.focus();return false;}
	if (hour < 0  || hour > 23) {alert("Hour must be between 0 and 12.");obj.focus();return false;}
	if (hour <= 12 && ampm == null) {alert("You must specify AM or PM.");obj.focus();return false;}
	if (hour > 12 && ampm != null) {alert("Hours are between 0 - 12 only");obj.focus();return false;}
	if (minute<0 || minute > 59) {alert ("Minute must be between 0 and 59.");obj.focus();return false;}
	//if (second != null) {alert ("Seconds not Allowed");	obj.focus();return false;}
    obj.value=leadingzero(hour)+":"+leadingzero(minute)+""+ampm.toUpperCase();
    return true;
}

function leadingzero(val){
	var temp=""+val;
	while (temp.length<2){	temp="0"+temp;	}
	return temp;
}

function backzero(val){
	var temp=""+val;
	while (temp.length<2){	temp=temp+"0";	}
	return temp;
}

function createnewoption(formname,selboxname,addvalue,addtext){
	addvalue=""+addvalue;
	addtext=""+addtext;
	if(eval("document."+formname+"."+selboxname)=="[object]"){
	    var lenofsel = eval("document."+formname+"."+selboxname+".options.length");//got options length
		for(var i=0;i<lenofsel;i++){
		    if(eval("document."+formname+"."+selboxname+".options["+i+"].value=='"+addvalue+"'"))
			{ 
			  alert(addvalue+" already exists in the select box. Enter different content.");
			  return false;																			 				  	         
			}	
		}			
		eval("document."+formname+"."+selboxname+".options.length="+(lenofsel));
        eval("document."+formname+"."+selboxname+".options["+lenofsel+"]= new Option(addtext,addvalue,true,true)");		
		return true;
	}
}

function putoptions(frm,obj,obj1nm){
	var i=0;
    for (i=eval("document."+frm+"."+obj1nm+".options.length");i>0;i--)
		eval("document."+frm+"."+obj1nm+".options["+i+"]="+null);
    for(i=1;i<obj.options.length;i++){
        if (obj.options.selectedIndex != i){
           createnewoption(frm,obj1nm,obj.options[i].value,obj.options[i].text);
        }
    }
	eval("document."+frm+"."+obj1nm+".options[0].selected="+true);
	if (obj1nm=="speciality2"){
        for (i=eval("document."+frm+"."+"speciality3"+".options.length");i>0;i--)
		    eval("document."+frm+"."+"speciality3"+".options["+i+"]="+null);
	}
}

function putunits(frm,objget,objput,str){
	Hospidarray=new Array();Hospnmarray=new Array();Unitsidarray=new Array();Unitsnmarray=new Array();
	genarr=new Array();temparr=new Array();
	genarr=str.split("||");
	for(z=objput.length-1;z>0;z--)
	   eval("frm."+objput+".options["+z+"]=null");
	for(k=0;k<=((genarr.length)-1);k++){
		temparr=genarr[k].split("::");
		Hospidarray[k]=temparr[0];Hospnmarray[k]=temparr[1];Unitsidarray[k]=temparr[2];Unitsnmarray[k]=temparr[3];
		if (Unitsnmarray[k]==""){Unitsnmarray[k]="No Units"}
	}// for end 
    eval("frm."+objput+".options[0].value=''");
	eval("frm."+objput+".options[0].text='---Select---'");
	myarray=new Array();n=1;
	for(s=0;s<=(Hospidarray.length);s++){
		if(objget.options[objget.selectedIndex].value != ''){	
			if(objget.options[objget.selectedIndex].value == Hospidarray[s]){
			   	myarray[n]=new Option(Unitsnmarray[s],Unitsidarray[s]);
			   	eval("frm."+objput+".options["+n+"]=myarray["+n+"]");
			   	eval("frm."+objput+".options[0].selected=true");
				n=n+1;
			}
		}
	}
	if(objget.options[objget.selectedIndex].value == ''){
	   n=0;
	   myarray[n]=new Option('select','');
	   eval("frm."+objput+".options["+n+"]=myarray["+n+"]");
	   eval("frm."+objput+".options[0].selected=true");
    }	
}

function timediff(st,et,tm) {
	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm|aM|Am|Pm|pM))?$/;
	var marray1 = st.match(timePat);var h1 = marray1[1];var m1 = marray1[2];var s1 = marray1[4];var a1 = marray1[6];
	var marray2 = et.match(timePat);var h2 = marray2[1];var m2 = marray2[2];var s2 = marray2[4];var a2 = marray2[6];
	var newst=parseFloat(h1+"."+m1);	var newet=parseFloat(h2+"."+m2);
	if (a1=="PM"){
		if (parseFloat(h1)!=12)  {newst=newst+12;h1=parseInt(h1,10)+12;}
    }
	if (a2=="PM"){
		if (parseFloat(h2)!=12)  {newet=newet+12;h2=parseInt(h2,10)+12;}
	}
	if (a1=="AM"){
		if (parseFloat(h1)==12)  {newst=newst+12;h1=parseInt(h1,10)+12;}
    }
	if (a2=="AM"){
		if (parseFloat(h2)==12)  {newet=newet+12;h2=parseInt(h2,10)+12;}
	}


	h1=h1-1;h2=h2-1;
	d1= new Date('26 Apr 1926 '+":"+h1+":"+m1);
	if(newet-newst>=0) {
	   d2=new Date('26 Apr 1926 '+":"+h2+":"+m2);
	}
	else {
	   d2=new Date('27 Apr 1926 '+":"+h2+":"+m2);
	}
	var a=d2-d1;
	var b=60*60*1000;
	tm.value=Math.round(a/b,-2);
	var v=Math.ceil((Math.floor(((a/b)-parseInt(a/b,10))*100)*60)/100);
	// the above is in minutes now I am converting this to time
	v=Math.floor(v*100/60);
    tm.value=parseInt(a/b,10)+"."+v;
}


function checkcortime(frm,nurseid,shift,obj,typ){
    var xstdate="";
    var xenddate=""; 
	if (shift=="d")	        { xstdate=new Date(2001,1,1,7,0) ; xenddate=new Date(2001,1,1,15,0);}
	else if	(shift == "e")	{ xstdate=new Date(2001,1,1,15,0); xenddate=new Date(2001,1,1,23,0);}
	else if	(shift == "n")  { xstdate=new Date(2001,1,1,23,0); xenddate=new Date(2001,1,2,7,0) ;}
	else if	(shift == "D")	{ xstdate=new Date(2001,1,1,7,0) ; xenddate=new Date(2001,1,1,19,0);}
	else if (shift == "N")	{ xstdate=new Date(2001,1,1,19,0); xenddate=new Date(2001,1,2,7,0) ;}
	if (xstdate!="" && xenddate!=""){
	    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm|aM|Am|Pm|pM))?$/;
		var matchArray=obj.value.match(timePat);
		if (matchArray==null) {alert("Time is not in a valid format. e.g 04:00AM");obj.focus();return false;}
		hour=matchArray[1];minute=matchArray[2];second=matchArray[4];ampm=matchArray[6];
		if (second=="") { second = null; }
		if (ampm=="") { ampm = null }
		if (ampm == null) {	alert("You must specify AM or PM.");obj.focus();return false;}
		if (hour < 1  || hour > 23) {alert("Hour must be between 1 and 12.");obj.focus();return false;}
		if (hour <= 12 && ampm == null) {alert("You must specify AM or PM.");obj.focus();return false;}
		if (hour > 12 && ampm != null) {alert("Hours are between 0 - 12 only");obj.focus();return false;}
		if (minute<0 || minute > 59) {alert ("Minute must be between 0 and 59.");obj.focus();return false;}
        if (ampm=="PM"){hour=parseFloat(hour)+12;}
	    var xchkdate=new Date(2001,1,1,hour,minute)
	    if (xchkdate<xstdate || xchkdate>xenddate){alert("!!!Warning!!!\nYou are Exceeding the Shift Timmings.\nSplitting of Shifts is done ONLY in Nurse Schedule");}
	}
}

function CheckDate(Obj,dtformat) {
	var myfnvar=true;
	if ((Obj.value.length>0)&&(dtformat.length>0)){ 
	  var myD=''; myM=''; myY=''; myYY=0; 
	  for(var j=0;j<dtformat.length;j++){
	    var myAt = dtformat.charAt(j);
	    if(myAt=='D')myD=myD.concat(Obj.value.charAt(j));
	    if(myAt=='M')myM=myM.concat(Obj.value.charAt(j));
	    if(myAt=='Y'){myY=myY.concat(Obj.value.charAt(j)); myYY++}
	    if(myAt=='-'&&Obj.value.charAt(j)!='-')myfnvar=false;
	    if(myAt=='.'&&Obj.value.charAt(j)!='.')myfnvar=false;
	    if(myAt=='/'&&Obj.value.charAt(j)!='/')myfnvar=false;
	  }
	  if (isNaN(myD)||isNaN(myM)||isNaN(myY))myfnvar=false;
	  if(parseInt(myD,10)<1||parseInt(myD,10)>31||parseInt(myM,10)<1||parseInt(myM,10)>12||myY.length!=myYY)myfnvar=false;
	  if((parseInt(myM,10)==4||parseInt(myM,10)==6||parseInt(myM,10)==9||parseInt(myM,10)==11)&&(parseInt(myD,10)>30))myfnvar=false;
	  if(parseInt(myY,10)%4!=0&&parseInt(myM,10)==2&&parseInt(myD,10)>28)myfnvar=false;
	  if(parseInt(myY,10)%4==0&&parseInt(myM,10)==2&&parseInt(myD,10)>29)myfnvar=false;
	 }
     if(myfnvar){return true} else {alert("Invalid Date"+"\n"+"Please enter date in MM/DD/YYYY format");Obj.focus();return false}
}

function Revalidatepassword(obj1,obj2){
	if (obj1.value != obj2.value) {
		alert("Passwords do not match\nPlease Retype your Passwords");
		obj1.focus();return false;
	}	
}

function TM_UpperCase(strInput){
    var theString = strInput.value;
    strInput.value = theString.toUpperCase();  
}

function textCounter(field, maxlimit,updn) {
    if (window.event.keyCode!=35 && window.event.keyCode!=36 && window.event.keyCode!=37 && window.event.keyCode!=38 && window.event.keyCode!=39 && window.event.keyCode!=40)  {
		if (field.value.length > maxlimit)	{
			// if too long...trim it!
			field.value = field.value.substring(0, maxlimit);
		}
		if (updn==1 && field.value.length >= maxlimit){ 
			alert('The text entered has exceeded the maximum number of characters ie ' +maxlimit+' chars.');
		}
    }
}

function RemoveGurantee(statusobj,guraobj){
  if (statusobj.options[statusobj.selectedIndex].value!="C") {guraobj.checked=false;}
}

function ChkGurantee(statusobj,guraobj){
  if (guraobj.checked==true){
	 if (statusobj.options[statusobj.selectedIndex].value!="C") {
	    alert("Only Confirmed shifts can be Guranteed.");guraobj.checked=false;
	 }
  }	 
}

function generateoptions(objput,str) {
	//alert(objput.name + " " + str);
	var val=objput.options[objput.selectedIndex].value;
	idarray=new Array();nmarray=new Array();
	genarr=new Array();temparr=new Array();
	genarr=str.split("||");
	for(z=objput.length-1;z>0;z--)
	   eval("objput.options["+z+"]=null");
	for(k=0;k<=((genarr.length)-1);k++){
		temparr=genarr[k].split("::");
		idarray[k]=temparr[0];nmarray[k]=temparr[1];
	}// for end 
    eval("objput.options[0].value=''");
	eval("objput.options[0].text='---Select---'");
	eval("objput.options[0].selected=true");
	myarray=new Array();n=1;
	for(s=0;s<=(idarray.length)-1;s++){
		myarray[n]=new Option(nmarray[s],idarray[s]);
		eval("objput.options["+n+"]=myarray["+n+"]");
		if (idarray[s]==val) {eval("objput.options["+n+"].selected=true"); } 
		n=n+1;
	}
}

function mycompdate(fdate,sdate,comptype,msg){
//pass whether fdate should be greater,equal or less then second date. 
	var dt1 = new Date(fdate);
	var dt2 = new Date(sdate);
	var rtnval = false
	rtnval=false; //assume their is an error
	master:
	switch(comptype){
		case "G" :	if(dt1>dt2)
					rtnval=true;
					break master;	
		case "L" :  if(dt1<dt2)
					rtnval=true;
					break master;
		case "GE":  if(dt1>=dt2)
					rtnval=true;
					break master;
		case "LE":  if(dt1<=dt2)
					rtnval=true;
					break master;
		}
   if(!rtnval&&msg!=""){alert(msg);}  		
   return rtnval; 	 
}


function trim(x){
    var tempword=x;
	if(tempword==""||tempword==null){tempword="";}
	if (tempword==""){return tempword;}
	while(tempword.substring(0,1)==" "){ tempword=tempword.substring(1,tempword.length);}
	while(tempword.substring(tempword.length-1,tempword.length)==" "){tempword=tempword.substring(0,tempword.length-1);}   
	return tempword;

}
	
