//Function to Change Layers
function change(f,id){ 
 switch(f){
  case "a":
    var targetId="as"+id.toLowerCase(); 
    var tmp=(id=="Text")?"list":"text";
    var callerId="as"+tmp;
    GetElementRef(targetId).style.display = 'block'; 
    GetElementRef(callerId).style.display = 'none'; 
    break; 
   case "b":
    var targetId="as"+id.toLowerCase(); 
    var tmp=(id=="Order")?"date":"order";
    var callerId="as"+tmp;
    GetElementRef(targetId).style.display = 'block'; 
    GetElementRef(callerId).style.display = 'none'; 
    break;    
   case "c":
    var targetId="as"+id.toLowerCase(); 
    var tmp=(id=="Daily")?"weekly":"daily";
    var callerId="as"+tmp;
    GetElementRef(targetId).style.display = 'block'; 
    GetElementRef(callerId).style.display = 'none'; 
    break; 
   case "d":
    //called by checkbox	
	var targetId="s"+id;
	if(document.getElementById(id).checked==true){
	 GetElementRef(targetId).style.display = 'block'; 	  
	}
	else{
	 GetElementRef(targetId).style.display = 'none'; 
	}
    break;	
   case "e":	
	if(id=="abr"){
	  GetElementRef("sabr").style.display = 'block';
	  GetElementRef("sabg").style.display = 'none';	  
	}
	else if(id=="abg"){
	  GetElementRef("sabg").style.display = 'block';
	  GetElementRef("sabr").style.display = 'none';	   
	}		
    break;	  	     	
   case "f":    
    switch(document.getElementById(id).value){
	  case "Individual":
	   GetElementRef("ito").style.display = 'none'; 
	   break;
	  default:
	   GetElementRef("ito").style.display = 'block';
	   break; 
	}	
    break;	
   case "g":    
	if(id=="final_level"){
	  if(document.getElementById(id).options[document.getElementById(id).selectedIndex].text=="Yes"){
     	  GetElementRef("jna").style.display = 'none';
		  GetElementRef("nna").style.display = 'block';
	  }else{
	      GetElementRef("jna").style.display = 'block';
  		  GetElementRef("nna").style.display = 'none';
	  }
	}
    break;
   case "i":
    targetId=(id=="layerCH")?"layerOH":"layerCH";
    GetElementRef(targetId).style.display = 'block'; 
    GetElementRef(id).style.display       = 'none'; 
    break;
   case "j":
    
    break;			
  } 
}

//*******************************************************
function highlight(elem) 
{
   if (document.getElementById){
      var tr = document.getElementById(elem.value);
   }else{
      return;
   }
   if (tr.className){
      if (elem.checked){
         tr.className = "row-active";
      }else 
	  {
         tr.className = "";
      }
   }
}
//
function isEmpty(value){
  if(value.search(/\S/)==-1){
   return true;
  }  
  return false; 
}

//Function to check Element Balnk
function isBlank(object){
 //if(object.type=="text"){
  if(object.value.search(/\S/)==-1){
   return true;
  }
  
  return false;
 //}
}
//******************************************************
//Function to check Email Format
function isValidEmailFormat(value){
   if((/^[a-zA-Z0-9-._]+(@[a-zA-Z0-9]{1,}[a-zA-Z0-9_.-]+\.)+[a-zA-Z]{2,4}$/).exec(value)==null){
   	  return false;
   }
 return true;
}

//*****************************************************************************
//Function to check valid Number data
function isDataNumber(element){
 if(isNaN(element.value)){
  window.status="Number Required For This Field!";
  value=isNaN(parseInt(element.value))?"":parseInt(element.value);  
  element.value=value;
 }
 else{
  window.status="";
 } 
}


function OnlyMoney(element){
 if(isNaN(element.value)){
  window.status="Number Required For This Field!";
  value=isNaN(parseFloat(element.value))?"":parseFloat(element.value);  
  element.value=value;
 }
 else{
  window.status="";
 } 
}
//*************************************************************************************
//Function to Check Telephone Format
function isValidTel(object){
 value=object.value;
   if((/[0-9-()]+/).exec(value)!=null && (/[a-zA-Z]+/).exec(value)==null ){
   	  return true;
   }
  return false;
}


function isNumberInRange(object){
 value=object.value;
   if(((/[0-9]+/).exec(value)!=null || (/[*]/).exec(value)!=null) && (/[a-zA-Z]+/).exec(value)==null ){
   	 window.status="";
   }
   else{
    
	window.status="Invalid Value for Field!";
     value=isNaN(parseInt(object.value))?"":parseInt(object.value);  
     object.value=value;
   }
}



//---taken from common.js
//open a new window,working...
function PopUp(url,full){   
  if(screen.availHeight && screen.availWidth){
    var ah=screen.availHeight-30;
    var aw=screen.availWidth-10;
  }else{
	var ah=708; 
	var aw=1014;	
  }  
  
		
  var xc = (aw - 500) / 2;
  var yc = (ah - 500) / 2;
  var winProp='toolbar=0, menubar=0, resizable=1, scrollbars=1, dependent=0, status=0,';
      winProp+=' width=700, height=600,left=' + xc + ', top=' + yc;
  if(full!=undefined && full==true){
    winProp='location=1,toolbar=1, menubar=1, resizable=1, scrollbars=1, dependent=0, status=1,';
    winProp+=' width='+aw-10+', height='+ah-50+',left=' + xc + ', top=' + yc;
  }	
    
  var new_window2 = window.open(url, 'new_window2', winProp);
  if(new_window2 && new_window2.focus){
    new_window2.focus();
  }
}

function PopUpSmall(url,height,width){   
  if(screen.availHeight && screen.availWidth){
    var ah=screen.availHeight-30;
    var aw=screen.availWidth-10;
  }else{
	var ah=708; 
	var aw=1014;	
  }  
  if(height==undefined){	
    height=600;
  }
  if(width==undefined){	
    width=700;
  }  
		
  var xc = (aw - 500) / 2;
  var yc = (ah - 500) / 2;
  
  var winProp='toolbar=0, menubar=0, resizable=1, scrollbars=1, dependent=0, status=0,';      
      winProp+=' width='+width+', height='+height+',left=' + xc + ', top=' + yc;
  	
    
  var new_window = window.open(url, 'new_window', winProp);
  if(new_window && new_window.focus){
    new_window.focus();
  }
}

//********************************
//Function to add new Select Options
function addNewOpt(objectSender,objectReceiver,multiple){
  var duplicate=false;
  if(isBlank(objectSender)){
    return;
  }
  
  var present_pos=objectReceiver.options.length;	  
   for (var i=0; i < present_pos; i++) {	    
     if(objectReceiver.options[i].text==objectSender.value){
       duplicate=true;
	   if(objectSender.value!="..."){
	     alert("Duplicate Option,Already in List. ");
	     objectSender.select();
	   }  
	   else{
		 objectSender.value="";
		 objectSender.focus();
	   }			 
	   break;
	 }
   }
	
   if(duplicate==false){
     var new_option = new Option(objectSender.value,objectSender.value,false,false);
     var next_pos=parseInt(present_pos);
     objectReceiver.options[next_pos]=new_option;
	 objectReceiver.selectedIndex=next_pos;
	 if(multiple){
	  id=objectReceiver.name+"_multiple";	  
	  objectList=document.getElementById(id);
	  objectList.value+=","+objectSender.value;
	 }
     objectSender.value="";
	 objectSender.focus();
   }	  
}
//********************************************************
//Form Submit handler 

 function frmSubmit(element,Key,frm){  
  form=(frm==undefined)?document.frm:frm;  
  if(typeof(element)=="object"){
   value=element.value;
  }else{
   value=element;
  }  
  switch(value){
   case "Save":
    form.key.value=Key;
    if(frmValidate(form)){
	  document.getElementById('op_action').value=document.getElementById('op_request').value;
	  element.disabled=true;	    	  
	  form.submit();
	}
    break;
   case "Cancel":
     form.key.value=Key;    
     document.getElementById('op_action').value="Cancel";
	 element.disabled=true;
 	 form.submit();
    break;
   case "Delete":
     form.key.value=Key;
     var chkCnt=isChecked('delete_keys[]');	 
     if(chkCnt>0){
      if(confirm(MSG_DEL_CONFIRM)){
       document.getElementById('op_action').value="Delete";
	   element.disabled=true;
 	   form.submit();   
	  }
	 }
	 else{
	  alert("None Checked for Delete!");
	  return; 
	 }  
    break;	
   case "Toggle":
     form.key.value=Key;
     if(confirm(MSG_TOGGLE_CONFIRM)){
      document.getElementById('op_action').value="Toggle";
 	  form.submit();   
	 } 
    break;			
   case "Edit":
     form.key.value=Key; 
	 document.getElementById('op_request').value="Edit";
	 form.submit();
    break;   
   case "View":
     form.key.value=Key; 
	 document.getElementById('op_request').value="View";
	 form.submit();
    break; 
   case "Print":
     printfor=form.printfor.value;	 
	 popUp("printreport.php?printfor="+printfor+"&key="+Key);
    break; 		
   case "Add":
     form.key.value=Key;
     document.getElementById('op_request').value="Add";
	 element.disabled=true;
 	 form.submit();   
    break;
   case "Search":
     form.key.value=Key;
     document.getElementById('op_action').value="Search";
	 element.disabled=true;
 	 form.submit();   
    break;
   case "New":
     form.key.value=Key; 
	 if(frmValidate2(form)){ 
       document.getElementById('op_action').value="AddOption";
	   element.disabled=true;
 	   form.submit();   
	 }
    break;
   case "Remove":
     form.ckey.value=Key;   	 
     if(confirm(MSG_SING_DEL_CONFIRM)){
      document.getElementById('op_action').value="DeleteOption";
	  element.disabled=true;
 	  form.submit();   
	 }        
    break;	 					
  }
 }


//*******************************************
//Form pager handler
function navigate(offset,move){ 
 form=document.frm;
 switch(move){
  case "Prev":
   break;
  case "Next":
   break;
  default:
   form.offset.value=offset;   
   break;  
 }
 form.submit(); 
}

/*+-------------------------------------------------+
   Function to display HTML Editor
   Status : Unused
  +-------------------------------------------------+*/
  function showEditor(table,field,keyFld,keyFldVal){
   var page="/activelife/tinymce/editor.php";
   var url=page+"?table="+table+"&";
      url+="field="+field+"&";
	  url+="keyFld="+keyFld+"&";
      url+="keyFldVal="+keyFldVal;
   var win=window.open(url,"newwin","scrollbars=no,menubar=no,resizable,toolbar=no,top=0,left=0,width=800,height=700");
  }
 /*--------------------------------------------------*/
 
 
 /*+-------------------------------------------------+
   Function to delete Select/Dropdown Option Cleanup
   Status : Used
  +-------------------------------------------------+*/
  function deleteAllElems(id){
   element=document.getElementById(id);
   for(var i=0;i<element.options.length;i++){
    element.options[i]=null;   
   }
   element.options.length=0; 
  }
 /*--------------------------------------------------*/
 
 
 
 /*+-------------------------------------------------+
   Function to Add Select/DropDown Options Adding
   Status : Used
  +-------------------------------------------------+*/
  function addElems(id,elems){ 
   element=document.getElementById(id);
   for(var i=0;i<elems.length;i++){
    index=element.options.length;
    n_text=elems[i];
    n_value=elems[i]; 
    var nOp=new Option(n_text,n_value,false,false);
    element.options[index]=nOp; 
   }  
  }
 /*--------------------------------------------------*/
 
 /*+-------------------------------------------------+
   Function to delete Select/Dropdown Option Cleanup
   Status : Used
  +-------------------------------------------------+*/
  function deleteElements(elementId,selectedOnly){
   element=document.getElementById(elementId);
   
   if(confirm(MSG_OPT_DEL_CONFIRM)){
     if(selectedOnly==true && element.selectedIndex!=-1){     
       element.options[element.selectedIndex]=null;   
     }else{
       for(var i=0;i<element.options.length;i++){	
	     element.options[i]=null;    
       }
       element.options.length=0; 
    }
   }
  }
 /*--------------------------------------------------*/

 /*+-------------------------------------------------+
   Function to Add Select/DropDown Options Adding
   Status : Used ,Rewrote Previous
  +-------------------------------------------------+*/
  function addElements(elementReciverId,elementSenderId,isSelectedOnly,isClear){ 
   var elementReceiver =document.getElementById(elementReciverId);
   var elementSender   =document.getElementById(elementSenderId);
   var elementDone     = new Array();
   // get the len before delete   
   for(var i=0;i<elementSender.options.length;i++){	 
      targetIndex    =elementReceiver.options.length;	 
	  // take the selected only
	  if(isSelectedOnly==true){
	   if(elementSender.options[i].selected==true){
	     nText  =elementSender.options[i].text;
         nValue =elementSender.options[i].value;
	     if(!inList(elementReceiver,nText)){        
		   var nOp =new Option(nText,nValue,false,false);
           elementReceiver.options[targetIndex]=nOp;
		   // do clear from old list
		   if(isClear){	
		    elementSender.options[i]=null;		
		    i--;		
		   }// end clear
	     }// end insert			 
	    }
	  }else{
		// insert all
		nText  =elementSender.options[i].text;
        nValue  =elementSender.options[i].value;
	    if(!inList(elementReceiver,nText)){        
		  var nOp =new Option(nText,nValue,false,false);
          elementReceiver.options[targetIndex]=nOp;  
	    }
	  }//end insert all 	  
    }     
  }
 /*--------------------------------------------------*/

 /*+-----------------------------------------------------+
   Function to Check Duplicate Entry in Select/DropDown 
   Status : Used ,Rewrote Previous
  +------------------------------------------------------+*/
  function inList(objectReceiver,selectedValue){   
   var present_pos=objectReceiver.options.length;	  
   for (var i=0; i < present_pos; i++) {	    
     if(objectReceiver.options[i].text==selectedValue){
       duplicate=true;	   			 
	   return duplicate;
	 }
   }
   return false;
  } 
  /*------------------------------------------------------*/
  
  
  
  /*------------------------------------------------------*/
 
 function reloadFromDB(object){
  form=document.frm;
  if(object.type=="checkbox"){
   if(object.checked==false){
    return ;
   } 
   //can use name if multiple calls made   
   if(document.getElementById('question_grp_id').value==0){
     alert("It is required that you choose one Group to get its values");
	 object.checked=false;
	 return ;
   }
   if(!confirm("Reload Values for This Group?")){
     return;
   }
    document.getElementById("ans_ids").value="";
  }
  
  form.op_action.value="reload";  
  form.submit();  
 }
 
 
 //function to select all checkbox 
 function CheckAll(object,func){
  form=object.form; 
  for(var i=0;i<form.elements.length;i++){
   if(form.elements[i].type=="checkbox" && form.elements[i].name==object.value){    
    form.elements[i].checked=object.checked;
	if(func){
	  func(form.elements[i]);
	}
   }
  }
 }
 
 
 function SelectAll(object){   
  form=object.form;  
  element=form.elements[object.value];    
  for(var i=0;i<element.options.length;i++){  
    element.options[i].selected=object.checked;	
  }
 }
 
 //function to check how many selected
 //send object as this or form.elements['name']
 function isChecked(object,frm){ 
  form=(frm==undefined)?document.frm:frm; 
  if(typeof(object)=="object"){
   value =object.value;
   type  =object.type;
   name  =object.name;
  }else{
   type  ="checkbox";
   name  =object;
  } 

  switch(type){
   case "checkbox": 
    for(var i=0;i<form.elements.length;i++){
     if(form.elements[i].name==name && form.elements[i].checked==true){    
      return true;	  
     }
    }    
    break;
   case "select-one":
   case "select-multiple":
    if(object.selectedIndex!=-1){   
      return true;
    }
    break;	
  }	   
  return false;   
 }
 
 function CountChecked(name,form){
  var cntchk=0;
  for(var i=0;i<form.elements.length;i++){
    if(form.elements[i].name==name && form.elements[i].checked==true){   
	  if(form.elements[i].disabled==false){
   	   cntchk++;
	  }
    }
  }  
  return cntchk;
 }
 
 
 //function to check Select selected or not
 function isSelected(object){ 
  if(object.selectedIndex==-1){   
   return false;
  }
  return true;
 }
 
 
 function reLocateMenuGroup(element,fetchElement){   
   var done=false;
   for(i=0;i<MGO.length;i++){
    if(MGO[i][1]==element.value){     
	 for(j=0;j<fetchElement.options.length;j++){
	  if(fetchElement.options[j].value==MGO[i][0]){
	   fetchElement.selectedIndex=j;
	   done=true;
	   break;
	  }	  
	 }
	}
   }
   
   //select max if no match found
   if(!done){
    for(j=0;j<fetchElement.options.length;j++){
	  if(fetchElement.options[j].value==MAX_MGO){
	   fetchElement.selectedIndex=j;
	   done=true;
	   break;
	  }	  
	 }    
   }
  }
  
  
  function SortList(Element){
    form=document.frm; 
    //if(Element.value!=""){	  
	  form.op_action.value="Sort";	  
	  form.submit();
	//}    
  }
  
  function strip_tags(value){ 
    var re= /&nbsp;<\S[^>]*>/g; 
    value = value.replace(re,""); 
    return value 
  } 


 String.prototype.trim = function(){   
  return this.replace(/^\s*|\s*$/g,"");
 } 


function report(mode){
 form = document.frm;
 form.op_action.value=mode;
 form.submit(); 
}


//used in iAbida//

 function ReloadFromServer(elem,Id){   
   Id=(Id!=undefined)?Id:"PAId";   
   if(document.getElementById(Id)){
     if(elem.name=="ListBy"){  
     //when list changed set it to List All  	 
	 document.getElementById(Id).value="";
	 document.frm.ListId.selectedIndex=parseInt(document.frm.ListId.options.length)-1;     
     }   
     if(elem.name=="ListId" && elem.value==0){
       document.getElementById(Id).value="";
     }
   }   
   document.frm.submit();
 } 
//Used in iAbida//

function FormSubmit(req,act,key){
  form=document.frm;   
  form.op_request.value=(req!=null)?req:"";
  form.op_action.value=(act!=null)?act:"";
  form.key.value=(key!=null)?key:""; 
  
  if(act!=null){
    switch(act){
     case "WelcomeEmail":
	  if(!isChecked("delete_keys[]")){
		alert("Alert : Please select a user to send welcome email");
		return;
	  }
	  if(!confirm("Alert : Are you sure you want to resend welcome email to the selected users?")){
        return;
	  }
	  break; 
	 case "TrialReminderEmail":
	  if(!isChecked("delete_keys[]")){
		alert("Alert : Please select a user to send reminder email");
		return;
	  }
	  if(!confirm("Alert : Are you sure you want to resend welcome email to the selected users?")){
        return;
	  }
	  break;  
	 case "Toggle":
	  if(key!=null && key!=""){
	   if(!confirm("Alert : Are you sure to change status for this record?")){
	       return;
	   }
	  }else{
	    if(!isChecked("delete_keys[]")){
		  alert("Alert : Please select a record to change status");
		  return;
	    }
		if(!confirm("Alert : Are you sure you want to change status for the selected records?")){
          return;
	    }
	  }	  
	  break; 
	 case "ConvertPaid":
	  /*
	  if(key!=null && key!=""){
	   if(!confirm("Alert : Are you sure to convert this subject to paid subject?")){
	       return;
	   }
	  }else{
	    if(!isChecked("delete_keys[]")){
		  alert("Alert : Please select a subject to convert");
		  return;
	    }
		if(!confirm("Alert : Are you sure you want to convert the selected subjects to paid subjects?")){
          return;
	    }
	  }*/
	  break;
	 case "ConvertFree": 
	  if(key!=null && key!=""){
	   if(!confirm("Alert : Are you sure to convert this subject to free subject?")){
	       return;
	   }
	  }else{
	    if(!isChecked("delete_keys[]")){
		  alert("Alert : Please select a subject to convert");
		  return;
	    }
		if(!confirm("Alert : Are you sure you want to convert the selected subjects to free subjects?")){
          return;
	    }
	  }
	  break; 
	 case "PeriodExtend": 
	  if(key!=null && key!=""){
	   if(!confirm("Alert : Are you sure to convert this subject to paid subject?")){
	       return;
	   }
	  }else{
	    if(!isChecked("delete_keys[]")){
		  alert("Alert : Please select a record to convert");
		  return;
	    }
		if(!confirm("Alert : Are you sure you want to convert the selected subjects to paid subjects?")){
          return;
	    }
	  }
	  break; 
    }
   DoUniq(form);	
  }  
  
  form.submit();  
}

function DoUniq(form){ 
  if(form.uniqkey==undefined){
    CreateFormElement(form,"uniqkey");  
  }   
  key=Math.round(Math.random()*100);  
  form.uniqkey.value=new Date().getTime() + "" +key;   
}

function CreateFormElement(Form,Ename){
 formInput = null;
 formInput = document.createElement('input');
 formInput.setAttribute('type', 'hidden');
 formInput.setAttribute('name', Ename);
 formInput.setAttribute('id', Ename);
 formInput.setAttribute('value', '');
 Form.appendChild(formInput);
}

function SortColumn(col,form){
	form=(form==undefined)?document.frm:form;	
	if(form.SortByFld==undefined) {alert("Sort Setup incomplete"); return;}
	
	if(form.SortOrd.value=="asc"){
      form.SortOrd.value="desc";
	}else{
      form.SortOrd.value="asc";	 
	}
	
	if(form.SortByFld.value!=col){
      form.SortOrd.value="asc";		  
	}
	
	form.SortByFld.value=col;
	form.submit();
  }
   
  
  function GoSearch(root,frm){    
	if(frm==undefined){
	 form=document.frm; 
	}else{
     form =frm;	
	}
	if(root==null){
	  root="./User";
	}
	if(form.searchfield){
	 url= root+"/SiteSearch.php?searchfield="+form.searchfield.value; 		
     s=window.open(url,"s","");
	}
 }
 
 function Cancel(elem){
	form=elem.form;									
	form.op_action.value="Cancel";
	form.op_request.value="Cancel";				
	form.submit();
  }
  
  
  function generic_hide(id){
	  
    var bs=new BrowserSniffer();
    if(bs.isSafari()){
	    GetElementRef(id).style.position="absolute";
		GetElementRef(id).style.left="-100000px";	
	}else{	        
	    GetElementRef(id).style.display="none";
		
	}      
	
  }
  
  function generic_hiden(id){
	  
    var bs=new BrowserSniffer();
    if(bs.isSafari()){
	    GetElementRef(id).style.position="absolute";
		GetElementRef(id).style.left="-100000px";	
	}else{	        
	    GetElementRef(id).style.visibility="hidden";		
	}    	
  }
  
  function DetectScreen(scrwid){
	var screenwidth=(screen.availWidth!=undefined)?screen.availWidth:680;		
	try{
	  if(scrwid!=screenwidth){
		var url=window.location.href;
		if(url.search(/^Screen=\d$/)!=-1){
		  url.replace(/^Screen=\d$/,"Screen="+screenwidth);
		}else{
		  url+=(url.indexOf("?")!=-1)?"&Screen="+screenwidth:"?Screen="+screenwidth;
		}				
		window.location.href=url;
	  }
	}catch(x){}	
  }
  
  
function ShowOtherMails(element){  
  if(element.checked){   
    //GetElementRef(element.value).style.display="block";
  }else{    
	//generic_hide(element.value);
  }
}

function ShowMailAlert(element,check){  
  if(!element.checked){   
    //GetElementRef(element.value).style.display="block";	
  }else{    
	//generic_hide(element.value);
  }
  
  form=element.form; 
  for(i=0;i<form.elements.length;i++){     
	 if(form.elements[i].name==check){
	    form.elements[i].checked=element.checked;	
		SelectStyle(form.elements[i]);		   
	 }
  } 
}
function SelectStyle(elem,parent){
 if(elem.checked){
  elem.parentNode.className='list-selected';  
 }else{
  elem.parentNode.className='list-plain';
  if(parent){
     form=elem.form;
     form.elements[parent].checked=false;
  }  
 } 
}


//Function to trap Layer Object
function GetElementRef(e,f){ 
 if(document.layers){
  f=(f)?f:self;
   if(f.document.layers[e]) {
    return f.document.layers[e];
   }
   for(W=0;i<f.document.layers.length;W++) {
    return(GetElementRef(e,f.document.layers[W]));
   }
 }
 if(document.all) {
   return document.all[e];
 }
 return document.getElementById(e);
}


 function WebSite(page){
   win=window.open(page,'win','');
 }
////////Wreck

function fncValidateDate(field,caption,ret_field)
{
if(ret_field==null)
ret_field=field;
	var inputstr=field.value;

	var len=inputstr.length;

	if(len==0)

	return true;

	var d1=-1;

	var d2=-1;

	for(i=0;i<len;i++)

	{

		var c=inputstr.substr(i,1);

		if((c!="/")&&(c!="-")&&(c!=" "))

		{

			if(isNaN(c))

			{

				alert(caption+" contains non numeric values");

				ret_field.focus();

				ret_field.select();

				return false;

			}

		}



	}





	if(len<=10)

	{

		d1=inputstr.indexOf("-");

		d2=inputstr.lastIndexOf("-");

	

		if(d1==-1 && d1==d2)

		{

			d1=inputstr.indexOf("-");

			d2=inputstr.lastIndexOf("-");

		

			if(d1==-1 && d1==d2)

			{

				d1=inputstr.indexOf(" ");

				d2=inputstr.lastIndexOf(" ");

			

				if(d1==-1 && d1==d2)

				{

					if(len==8)

					{

						var dd=parseInt(inputstr.substring(0,2),10);

						var mm=parseInt(inputstr.substring(2,4),10);

						var yyyy=parseInt(inputstr.substring(4,inputstr.length),10);

						//alert(dd+" day "+mm+" of "+yyyy);

					}	

					else

					{

						alert(caption+" should be of the Format dd/mm/yyyy");

						ret_field.focus();

						//ret_field.select();

						return false;

					}

				}

			}

		}

	}

	else

	{

		alert(caption+" should be of the format dd/mm/yyyy");

		ret_field.focus();

		//ret_field.select();

		return false;

	}

	

	if(d1!=-1)

	{

		var dd=parseInt(inputstr.substring(0,d1),10);

		var mm=parseInt(inputstr.substring(d1+1,d2),10);

		var yyyy=parseInt(inputstr.substring(d2+1,inputstr.length),10);

		//alert(dd+" day "+mm+" of "+yyyy);

	}

	

	if(isNaN(dd)||isNaN(mm)||isNaN(yyyy))

	{

		alert(caption+" contains non numeric values");

		ret_field.focus();

		//ret_field.select();

		return false;

	}

	if(mm<1||mm>12)

	{

		alert(caption+" - Months must be between 01(January) and 12 (December)");

		ret_field.focus();

		//ret_field.select();

		return false;

	}

	else

	{

		if(mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12)

		{

			if(dd<1||dd>31)

			{

				alert(caption+" - Days must be between 01 and 31");

				ret_field.focus();

			//	ret_field.select();

				return false;

			}

		}

		else if(mm==4||mm==6||mm==9||mm==11)

		{

			if(dd<1||dd>30)

			{

				alert(caption+" - Days must be between 01 and 30");

				ret_field.focus();

			//	ret_field.select();

				return false;

			}

		}

		else if(mm==2)

		{

			if(yyyy%100==0)

			{

				if(dd<1||dd>29)

				{

					alert(caption+" - Days must be between 01 and 29");

					ret_field.focus();

				//	ret_field.select();

					return false;

				}	

			}

		else if(yyyy%4==0)

		{

			if(dd<1||dd>29)

			{

				alert(caption+" - Days must be between 01 and 29");

				ret_field.focus();

				//ret_field.select();

				return false;

			}

		}

		else if(yyyy%4!=0)

		{

			if(dd<1||dd>28)

			{

				alert(caption+" - Days must be between 01 and 28");

				ret_field.focus();

				//ret_field.select();

				return false;

			}

		}

	}

}

	

	if(yyyy<100||yyyy>9999)

	{

		alert(caption+" - Year is not valid");

		ret_field.focus();

		//ret_field.select();

		return false;

	}

	if(dd<10&&mm<10)

	{

		field.value=yyyy+"/0"+mm+"/"+"0"+dd;

	}

	else if(mm<10)

	{

		field.value=yyyy+"/0"+mm+"/"+dd;

	}

	else if(dd<10)

	{

		field.value=yyyy+"/"+mm+"/"+"0"+dd;

	}

	else 

	{

		field.value=yyyy+"/"+mm+"/"+dd;

	}

	return true;

}





function select(field)

{

	field.focus();

	field.select();

}



	

function fncValidateBlank(field,caption)

{

	ctr=0;

	str=field.value;

	var l=str.length;

//		alert("Actual Length="+l);

	for(i=l-1;i>=0;i--)

	{

		if((str.charCodeAt(i)==32))

		{ 

			l=l-1;

//			alert("Within for loop:"+l);

		}

		else

		{

		break;

		}

	}

//		alert("Outside Loop1="+l);

	if(l == 0||str==null)

	{

		alert(MSG_LEFT_BLANK+" "+caption);

		field.focus();

		return false;

	}

	else if(l >0)	

	{

		for(i=0;i<=l-1;i++)

		{

			if((str.charCodeAt(i)==32))

			{

				ctr=1;			

//				alert("Ctr="+ctr);

			}

			else

			{

				ctr=0;

	//			alert("Ctr="+ctr);

				break;	

					

			}

			



		}

	}//end of else-if

		

//	alert("Value of Ctr="+ctr);

	

	if(ctr==1)

	{

		alert(MSG_LEFT_BLANK+" "+caption);		

		return false;		

	}

	else

	{

//		alert("Form Submitted");

		return true;

	}

}



	



function fncValidate2Dates(field1,caption1,field2,caption2,opr,e_msg)

{



	var v1=0;

	var v=0;

	var y=0;

	var mon=new Array(31,0,31,30,31,30,31,31,30,31,30,31);

	var inputstr=field1;



	d1=inputstr.indexOf("-");

	d2=inputstr.lastIndexOf("-");	

	if(d1!=-1)

	{

		var mm=parseInt(inputstr.substring(0,d1),10);

		var dd=parseInt(inputstr.substring(d1+1,d2),10);

		var yyyy=parseInt(inputstr.substring(d2+1,inputstr.length),10);

		//alert(dd+" day "+mm+" of "+yyyy);

	}

	if(yyyy%100==0)

	{

		mon[1]=29;

	}

	else if(yyyy%4==0)

	{

		mon[1]=29;

	}

	else if(yyyy%4!=0)

	{

		mon[1]=28;

	}

	y=(yyyy-1900)*365;

	var y2=parseInt((yyyy-1900)/4);

	var m=0;

	y=y+y2;

//	alert(y2);

	for(i=0;i<mm-1;i++)

	{

		m=m+mon[i];

	}	

	v=y+m+dd;

	v1=v;

	var v2=0;



	y=0;

	

	var mon=new Array(31,0,31,30,31,30,31,31,30,31,30,31);

	var inputstr=field2;



	d1=inputstr.indexOf("-");

	d2=inputstr.lastIndexOf("-");

	if(d1!=-1)

	{

		 mm=parseInt(inputstr.substring(0,d1),10);

		 dd=parseInt(inputstr.substring(d1+1,d2),10);

		 yyyy=parseInt(inputstr.substring(d2+1,inputstr.length),10);

		//alert(dd+" day "+mm+" of "+yyyy);

	}

	if(yyyy%100==0)

	{

		mon[1]=29;

	}

	else if(yyyy%4==0)

	{

		mon[1]=29;

	}

	else if(yyyy%4!=0)

	{

		mon[1]=28;

	}

	y=(yyyy-1900)*365;

	y2=parseInt((yyyy-1900)/4);

	m=0;

	y=y+y2;

	for(i=0;i<mm-1;i++)

	{

		m=m+mon[i];

	}	

	v=y+m+dd;





	v2=v;

//	alert(v1+" "+v2);

//	alert(opr);

	var diff=parseInt(v2)-parseInt(v1);	

	if(opr=="GE")

	{

		if(parseInt(v1)<parseInt(v2))

		{

			alert(caption1+" should be greater than equal to "+caption2);

			return false;

		}

		else

		{

			return true;

		}



		

	}

	

	else if(opr=="GT")

	{



		if(parseInt(v1)<parseInt(v2))

		{

			if(e_msg!=undefined){
				e_msg+="\n Alert : "+caption1+" should be greater than "+caption2;				
			}else{
				alert(caption1+" should be greater than "+caption2);				
			}

			return false;

		}

		else

		{

			return true;

		}



	}

	else if(opr=="LT")

	{

		if(parseInt(v1)>=parseInt(v2))

		{

			alert(caption1+" should be less than "+caption2);

			return false;

		}

		else

		{

			return true;

		}



	}

	else if(opr=="LE")

	{

		if(parseInt(v1)>parseInt(v2))

		{

			alert(caption1+" should be less than equal to "+caption2);

			return false;			

		}

		else

		{

			return true;

		}



	}

	else if(opr=="EQ")

	{

		if(parseInt(v1)!=parseInt(v2))

		{

			alert(caption1+" should be equal to "+caption2);

			return false;

		}

		else

		{

			return true;

		}



	}

	else if(opr=="NE")

	{

		if(parseInt(v1)==parseInt(v2))

		{

			alert(caption1+" should be not equal to "+caption2);

			return false;

		}

		else

		{

			return true;

		}

	}

	else

	{

		return true;

	}

}

function fncValidateEmail(field,caption){
if((/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z]{2,5}$/).exec(field.value)==null)
	{
		alert(EMAIL_INVALID+caption);
		field.focus();
		field.select();
		return false;
	}
	else
	 return true;
}

//date validation ends here

/********************************************/
// Tab menu show hide
function TabHide(hide){
 if(hide==undefined){
   hide=GetJSCookie("menuhide");	
   if(hide==undefined){
	  return; 
   }
 } 
 

 if(hide==true){   
  generic_hide("TabMenu");
  generic_hide("TabOff");
  GetElementRef("TabOn").style.display="block";	
  WriteJSCookie("menuhide",1);
  
 }else{  
  generic_hide("TabOn");
  GetElementRef("TabMenu").style.display="block";	
  GetElementRef("TabOff").style.display="block";   
  WriteJSCookie("menuhide",0);  
 }
 
 // and synchronize fuction call for event layers
 //if(Synchronize){
  //Synchronize(hide);	 
 //}
}

// cookies
function WriteJSCookie(name,value){
 if(document.cookie){
  document.cookie=name+"="+value;	  
 }	 
}
function GetJSCookie(name){
 var value="";	
 if(document.cookie){   
   cVal=document.cookie;
   cValSpl=cVal.toString().split(";");   
   for(i=0;i<cValSpl.length;i++){
	 temp=cValSpl[i] ;
	 cValOne=temp.toString().split("=");
	 if(cValOne[0]==name){
	   value=cValOne[1];
	   return value;
	 }
   }   
 }
 
 return value;	
}

function LoadACTab(CallObjId,DataObjId){ 
  DataObjId=DataObjId || 'OthEmailStr';  
  obj=actb(document.getElementById(CallObjId),customarray); 
  try{
   EmailStr=document.getElementById(DataObjId).value.toString();						  		  
   obj.actb_keywords = EmailStr.split(',');
  }catch(ex){}  
  return obj;
}


function DeselectChecked(name,form){
  var cnt=CountChecked(name,form);	
  if(cnt>0){
    for(i=0;i<form.elements.length;i++){
     if(form.elements[i].type=="checkbox" && form.elements[i].name==name){
	   form.elements[i].checked=false;	   
     }
    }
  }
}
//function LoadACTab


function openwin(url,w,h,scrollyes){
	var top = (screen.height-h)/2;
	var left = (screen.width-w)/2;
	var customize = "toolbar=no,menubar=no,resizable=yes,scrollbars="+scrollyes+",width="+w+",height="+h+",top="+top+",left="+left;
	window.open(url,'_blank',customize)
}


function isArray(obj) {
   	
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}
/*
Array.prototype.InArray = function (value)
// Returns true if the passed value is found in the
// array.  Returns false if it is not.
{
    var i;
    for (i=0; i < this.length; i++) {
        // Matches identical (===), not just similar (==).
        if (this[i] === value) {
            return true;
        }
    }
    return false;
};
*/
function in_array(needle, haystack){
 for (h in haystack) {
   if (haystack[h] === needle) {
    return true;
   }
 }
 return false;
} 

function Locked(Form,Mode,Elm){
   // form, mode of page,extratc elements	 
   // create element
   if(Form.op_action==undefined){
	 CreateFormElement(Form,"op_action"); 	  
   }
   // set value if not 
   if(Form.op_action.value==""){
     Form.op_action.value=Mode;
   }
   
   // get value
   if(Form.op_action.value==Mode){	 
     return true;
   }	
   
   return false;
}