// Dwr Method to load Counties for the selected state 
function loadCounties(elementId,imgsrc,moveTop,moveLeft){	
	var stateCode = DWRUtil.getValue('stateSelect');
	if(stateCode != 'Select') {	
	if(elementId){
		//useLoadingMessage("Loading counties.....Please wait.",elementId);
		useLoadingImage(elementId,'/images/common/'+imgsrc,moveTop,moveLeft);
	}else{
		//DWRUtil.useLoadingMessage("Loading counties.....Please wait.");
		useLoadingImage(elementId,'/images/common/'+imgsrc,moveTop,moveLeft);
	}   	
		LookupService.getCounties(stateCode,populateCounties);
	}else
		DWRUtil.removeAllOptions('countySelect');
		DWRUtil.addOptions('countySelect',["Select"]);	
}

// Callback method for loadCounties() dwr method, that populates the county combo with county list
function populateCounties(counties){	
	if(counties!=null && counties.length>0 ) {      	  	
    	DWRUtil.removeAllOptions('countySelect');    		 
		DWRUtil.addOptions('countySelect',["Select"]);
		DWRUtil.addOptions('countySelect',counties,'countyId','countyName');  					 	
    }
}
//Method to show a custom Loading message

function useLoadingMessage(message,elementId,moveTop,moveLeft) {
  var elementIdObj=$(elementId);
  var loadingMessage;
  if (message) loadingMessage = message;
  else loadingMessage = "Loading";
  DWREngine.setPreHook(function() {
    var disabledZone = $('disabledZone');
    if (!disabledZone) {
      disabledZone = document.createElement('div');
      disabledZone.setAttribute('id', 'disabledZone');
      disabledZone.style.position = "absolute";
      disabledZone.style.zIndex = "1000";     
      disabledZone.style.left = "0px";
      disabledZone.style.top = "0px";
      disabledZone.style.width = "100%";
      disabledZone.style.height = "100%";
      document.body.appendChild(disabledZone);
      var messageZone = document.createElement('div');
      messageZone.setAttribute('id', 'messageZone');
      messageZone.style.position = "absolute";
      var cordinates=elementIdObj.cumulativeOffset();
      imageZone.style.left =cordinates[0]+moveLeft+'px';
      imageZone.style.top = cordinates[1]+moveTop+'px';	      
      messageZone.style.background = "#0066FF";
      messageZone.style.background = "red";
      messageZone.style.color = "white";
      messageZone.style.fontFamily = "Verdana,Arial,Helvetica,sans-serif";
      messageZone.style.fontSize="13px"
      messageZone.style.padding = "2px";
      disabledZone.appendChild(messageZone);
      var text = document.createTextNode(loadingMessage);
      messageZone.appendChild(text);
    }
    else {
      $('messageZone').innerHTML = loadingMessage;
      disabledZone.style.visibility = 'visible';
    }
  });

  DWREngine.setPostHook(function() {
    $('disabledZone').style.visibility = 'hidden';
  });
}


function useLoadingImage(elementId,imageSrc,moveTop,moveLeft) {	
	var elementIdObj=$(elementId);
	var cordinates=elementIdObj.cumulativeOffset();
	  var loadingImage;
	  if (imageSrc) loadingImage = imageSrc;
	  else loadingImage = "ajax-loader.gif";
	  dwr.engine.setPreHook(function() {
	    var disabledImageZone = $('disabledImageZone');
	    if (!disabledImageZone) {
	      disabledImageZone = document.createElement('div');
	      disabledImageZone.setAttribute('id', 'disabledImageZone');
	      disabledImageZone.style.position = "absolute";
	      disabledImageZone.style.zIndex = "1000";
	      disabledImageZone.style.left = "0px";
	      disabledImageZone.style.top = "0px";
	      disabledImageZone.style.width = "100%";
	      disabledImageZone.style.height = "100%";
	      var imageZone = document.createElement('img');
	      imageZone.setAttribute('id','imageZone');
	      imageZone.setAttribute('src',imageSrc);
	      imageZone.style.position = "absolute";
	      imageZone.style.width = "20px";
	      imageZone.style.height = "20px";
	      //imageZone.style.top = "0px";
	      //imageZone.style.right = "0px";	      
	      imageZone.style.left =cordinates[0]+moveLeft+'px';
	      imageZone.style.top = cordinates[1]+moveTop+'px';	      
	      disabledImageZone.appendChild(imageZone);
	      document.body.appendChild(disabledImageZone);
	    }
	    else {	      
	    	$('imageZone').style.left =cordinates[0]+moveLeft+'px';
		      $('imageZone').style.top = cordinates[1]+moveTop+'px';	
		      $('imageZone').src = imageSrc;
		      disabledImageZone.style.visibility = 'visible';
	    }
	  });
	  dwr.engine.setPostHook(function() {
	    $('disabledImageZone').style.visibility = 'hidden';
	  });
	}


//Method to Check Email Address Format
/**
 * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
 * http://javascript.internet.com
 */
function checkEmail(emailStr) {
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}


/*
	used with Phone field display using 3 text boxes
	Changes the focus on key press to the next text box when the current one is full.	
*/
function changeFocusPhoneField(maxLength,fieldValue,nextFieldId){
	if(fieldValue.length == maxLength)
	document.getElementById(nextFieldId).focus();
}

	
// Change css class of an element	
function changeCSSClass (element, newClass) {	
	element.setAttribute("class", newClass); //For Most Browsers
	element.setAttribute("className", newClass); //For IE; harmless to other browsers.
}


/*Checks whether element is empty
* if empty returns error="Required fields are empty"
* else error="" 
*/

function elementIsEmpty(element){		
	var error = "";	
	if(element.type=='select-one'){		
		if (element.selectedIndex==0){	
			changeCSSClass(element,"error");	  
			error = "All information marked by * are required. <br/>"; 
		} else {
			element.style.background = 'White';
		}		
	}	
	if(element.type=='text'){
		element.value=trim(element.value);
		if (element.value.length == 0) {			
			changeCSSClass(element,"error");	      
	    	error = "All information marked by * are required. <br/>";        
		} else {
			element.style.background = 'White';
		}
	}	
	if(element.type=='textarea'){	
		element.value=trim(element.value);
		if (element.value.length == 0) {			
			changeCSSClass(element,"error");	      
	    	error = "All information marked by * are required. <br/>";        
		} else {
			element.style.background = 'White';
		}
	}
	if(element.type=='password'){	
		element.value=trim(element.value);
		if (element.value.length == 0) {			
			changeCSSClass(element,"error");	      
	    	error = "All information marked by * are required. <br/>";        
		} else {
			element.style.background = 'White';
		}
	}
	return error;  	
}

function trim(str){
	var trimmed = str.replace(/^\s+|\s+$/g, '') ;
	return trimmed;
}

function validateZip(strValue) {	
	if(strValue=="00000"){
		return false;
	}else{
		var objRegExp  = /(^\d{5}\d*$)/;	  
		return objRegExp.test(strValue);
	}
}

function refreshCaptchaImage(){
		var captchaImageObj=document.getElementById("captchaImgId");
		captchaImageObj.src=captchaImageObj.src+'?' + (new Date()).getTime();  
}

function isCreditCardExpired(year,month) {	
	today = new Date();
	expiry = new Date(year, month);
	if (today.getTime() > expiry.getTime())
	return true;
	else
	return false;
}

/*
 * function for checking the date.
 * if the from date is greater than to date, then alert messag.
 * 
 */

function validateDate(fromDate,toDate){
	dt1=getDateObject(fromDate,"-","fromDate");
	dt2=getDateObject(toDate,"-","toDate");	
	if(dt1>dt2){
		return false;
	}
}
function getDateObject(dateString,dateSeperator,val){
	/*This function return a date object after accepting 
	a date string ans dateseparator as arguments
	*/
	var curValue=dateString;	
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;
	//extract day portion
	curPos=dateString.indexOf(sepChar);
	cYear=dateString.substring(0,curPos);	
	//extract month portion				
	endPos=dateString.indexOf(sepChar,curPos+1);
	cMonth=dateString.substring(curPos+1,endPos);	
	//extract year portion				
	curPos=endPos;
	endPos=curPos+5;			
	cDate=curValue.substring(curPos+1,endPos);	
	//Create Date Object
	if(val=="yesterday"){	
		dtObject=new Date(cYear,cMonth-1,cDate-1);
		}else{
		dtObject=new Date(cYear,cMonth-1,cDate);	
		}	
	return dtObject;
}
/*
 * checking the date fields.
 * IF the fromdate is empty and the todate is selected then 
 * an alert message Select From Date is shown
 * This is used in almost all admin functionalities. 
 */
function checkFileds(){	
	if(document.getElementById("fromDate").value=="" && document.getElementById("toDate").value!= ""){
		alert("Select From Date ");
		return false;
		
	}
	if(document.getElementById("fromDate").value!="" && document.getElementById("toDate").value != ""){			
		if(validateDate(document.getElementById("fromDate").value,document.getElementById("toDate").value)==false){
			alert("Select a date greater than the From Date");
			return false;
		}	
	}
}
 
function blockEnterkeyPress(evt){
		var k=evt.keyCode||evt.which;
		return k!=13;
} 

/*
 * Usage :-To restrict text fields  to accept only digits  
 * apply:- onkeydown 
 * params:-event
 */

function digitsOnly(event){
	var key = window.event ? event.keyCode : event.which;	
	if(!( (key > 36 && key < 41)|| (key > 47 && key < 58) || (key > 95 && key < 106)  || key==45||key==46 || key==8 || key==9 || key==13)){
		if (window.event) //if IE
			event.returnValue=false;		
		if (event.preventDefault)
		      event.preventDefault();			
		return false;
	}
}



