/*
Functions
-------------


*/
function calendarPicker(url,strField)
	{
	    var obj=document.getElementById(strField);
	    
	    var curleft = curtop = 0;
        if (obj.offsetParent) {

	    do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
            } while (obj = obj.offsetParent);
            }
	   
	    
	    var width=250;
        var height=170;
	    //var top=(screen.height-height)/2;
	    var top=curtop + height + 25;
	    
	   
        //var left=(screen.width-width)/2;
        var left=curleft ;
       
	    var features='top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',scrollbars=no,resizable=no';
		var handle=window.open(url + '?field=' + strField,'calendarPopup',features);
		handle.focus();
	}
			
function openWindow(url,name,width,height)
{
var top=(screen.height-height)/2;
var left=(screen.width-width)/2;
var features='top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',scrollbars=yes';

var handle=window.open(url,name,features);
handle.focus();
}

function openResizableWindow(url,name,width,height)
{
var top=(screen.height-height)/2;
var left=(screen.width-width)/2;
var features='top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',scrollbars=yes,resizable=yes';

var handle=window.open(url,name,features);
handle.focus();
}
function openSimpleWindow(url,name,width,height)
{
var top=(screen.height-height)/2;
var left=(screen.width-width)/2;
var features='top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',scrollbars=no,resizable=no';

var handle=window.open(url,name,features);
handle.focus();
}


function roundF(value, decimals)  
 {
	return (Math.round (value * Math.pow (10, decimals)) / Math.pow (10, decimals));		
 } 


function fnFormatCurrency(anynum) {
   //-- Returns passed number as string in $xxx,xxx.xx format.
   anynum=eval(anynum)
   var workNum=0
   workNum=Math.abs((Math.round(anynum*100)/100));
   workStr=""+workNum
   if (workStr.indexOf(".")==-1)
   {
		workStr+=".00"
   }
   dStr=workStr.substr(0,workStr.indexOf("."));
   dNum=dStr-0
   pStr=workStr.substr(workStr.indexOf("."))
   while (pStr.length<3){pStr+="0"}

   //--- Adds comma in thousands place.
   if (dNum>=1000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
   }

   //-- Adds comma in millions place.
   if (dNum>=1000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
   }
   retval = dStr + pStr 
   //-- Put numbers in parentheses if negative.
   if (anynum<0) {retval="("+retval+")"}
   return retval
}


function trimLR(strToTrim)
{
	return trimRight(trimLeft(strToTrim))
}

function trimLeft(strToLTrim)
{
	strObj=new String(strToLTrim);
	regExp=/^\s+/g
	strObj=strObj.replace(regExp,'')
	return strObj.toString();
}

function trimRight(strToRTrim)
{
	strObj=new String(strToRTrim);
	regExp=/\s+$/g
	strObj=strObj.replace(regExp,'')
	return strObj.toString();
}

function fnStripCommas(strNumber)
{

	strObj=new String(strNumber);
	regExp=/[,]/g
	strObj=strObj.replace(regExp,'')
	return strObj.toString();
}
function fnStripChar(strNumber, chrToStrip)
{

	var strString=""
	for(var i=0; i<strNumber.length; i++)
	{
		if(strNumber.charAt(i) != "-" )
		{
			strString += strNumber.charAt(i)
		}
	}
	return strString
}

function isValidFileName(strChars)
{	

	strChars = trimLR(strChars);
	var arrFileName = new Array()
	var strFileName
	var strRegExp =/[!`\\%#\(\)\^\?\|<>@~\$\*&\/":]+/;
	
	arrFileName = strChars.split("\\")
	strFileName = arrFileName[arrFileName.length-1]
	return!(strRegExp.test(strFileName))
}
	
function isNumber(strNumber)
{
	if(fnStripCommas(trimLR(strNumber))=="")
		return false
	else
		return(!isNaN(fnStripCommas(strNumber)))
	
}
function isPositiveInteger(strNumber)
{	
	regExp_In=/^[0-9+]+$/
	strNumber=trimLR(strNumber);
	return(regExp_In.test(strNumber) && isNumber(strNumber ))
	
}
function isInitialSSN(strNumber)
{	
	
	regExp1=/^[0-9]{3}-[0-9]{2}-[0-9]{4}$/
	regExp2= /^[0-9]{2}-[0-9]{7}$/
	strNumber=trimLR(strNumber);
	return(regExp1.test(strNumber) || regExp2.test(strNumber))
}
function isSSN(val)
{
	
	if (isInitialSSN(val))
	{
		//alert("1");
		return true;
	}
	else
	{//a
		if (isNaN(val))
		{
			return false;	
		}
		else
		{
			val=val.replace("/-/g","")			
			if(val.length!=9)
			{
				
				return false;
			}
			else
			{
				return true;
			}
		
		}			
	}
}


function isInteger(strNumber)
{	
	regExp_In=/^[0-9-+]+$/
	strNumber=trimLR(strNumber);
	return(regExp_In.test(strNumber) && isNumber(strNumber ))
	
}
function isTax(strNumber)
{
	regexp=/^\d{9}|\d{11}|\d{3}-\d{2}-\d{4}|\d{2}-\d{9}$/
	strNumber=trimLR(strNumber);
	return(regexp.test(strNumber))
}

function isEmail(strEMail)
{
	strEMail=trimLR(strEMail);
	
	//Idea : (something.)* (something)+ @ (something.)+ (a-zA-Z)(2,3)

	var regex1=/^([\w-_]+\.)*[\w-_]+\@([\w-_]+\.)+[a-zA-Z]{2,3}$/
	if (regex1.test(strEMail))
	{
		return true;
	}
	else
	{
		return false;
	}

}
function isValidChars(strChars)
{
	strChars=trimLR(strChars);
	regExp=/^[0-9A-Za-z\s-_\']+$/
	return(regExp.test(strChars))	
}
function isValidCharsWithAmpersand(strChars)
{
	strChars=trimLR(strChars);
	regExp=/^[0-9A-Za-z\s-_\'&\\/]+$/
	return(regExp.test(strChars))	
}

function isValidName(strChars)
{
	strChars=trimLR(strChars);
	regExp=/^[\w\s\w\'\"|\s\d-,.#&%]{1,}$/
	return(regExp.test(strChars))
	
}

function isValidNameWithBlankSpace(strChars)
{
	strChars=trimLR(strChars);
	regExp=/^[\w\s\w\'\"|\s\d-,.#&%]{1,}$/
	
	if(strChars==''){
		return true;
	}	
	else{
		return(regExp.test(strChars))
	}
	
}

function isValidString(strChars)
{
	strChars=trimLR(strChars);
	regExp=/^[\w\s\w\'\"|\s\d-,:.\/\)\(#&%\\]{1,}$/
	return(regExp.test(strChars))	
}


function isNegativeZip(strChars)
{
	if (isNumber(strChars))
	{
		if (fnStripCommas(strChars) * 1 < 0)
			return true;
		else
			return false;
	}
	else
	{
		return false;
	}
}


function isPassword(strChars)
{
	pwd = trimLR(strChars);
	// must have atleast two type of characters, numeric, alpha and/or special except space
	var re1 = /(?=\S*\d)/;		
	var re2 = /(?=\S*[A-Za-z])/;
	var re3 = /(?=\S*[^A-Za-z\d])/;
		
	var pass = 0;
		
	if (re1.test(pwd))
		pass++;
	if (re2.test(pwd))
		pass++;
	if (re3.test(pwd))
		pass++;
		
	if (pwd.length < 6 || pwd.length > 25)
		pass = 0	// failed
		
	for (i=2; i<pwd.length; i++)	// no more than two consequetive identical characters
	{
		if(pwd.substr(i,1) == pwd.substr(i-1,1) && pwd.substr(i,1) == pwd.substr(i-2,1))
		{
			pass = 0;	// failed
			break;
		}
	}
	
	if (pwd.indexOf(" ") >= 0)
	{
		pass = 0;
	}
	return (pass >= 2);	
}

function isCurrency(strCurrency)
{
	strCurrency = trimLR(strCurrency)
	regExp=/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$/
	if(regExp.test(strCurrency))
		return true
	else
		return false
}
function isDigits(strDigits)
{
	strChars=trimLR(strDigits);
	regExp=/^[0-9]+$/
	return(regExp.test(strDigits))	
}



function truncateNumber(val,pricision)
{
	val = fnStripCommas(val)
	val=new String(val);
	if(isNumber(val))
	{
		pricision  = Number(pricision)
		if(val.indexOf(".") >= 0)
		{
			inputArray = val.split(".")
			for(i=0;i<=pricision;i++)
			{
				inputArray[1] = inputArray[1] + "0";
			}
				val = inputArray[0] + "." + inputArray[1].substr(0,pricision);
		}
		else if(pricision > 0)
		{
			val = val + "."
			for(i=0;i<=pricision;i++)
			{
				val = val +  "0";
			}
			//inputArray = val.split(".");
		}  
		//return inputArray[0] + '.' + inputArray[1].substr(0,2);
	}
	
		return val
}

function formatNumber(number,precision)
{
	number = fnStripCommas(number)
	if(isNumber(number))
	{
		number=String(Math.round(number*Math.pow(10,precision))/Math.pow(10,precision));
		
		if(precision >1)
			return fillDecimal(number,precision)
		else
			return(number)
	}
	else
	{
		return(number)
	}
	
}

function fillDecimal(number,precision)
{
	if(number.indexOf(".")>=0)
	{
		numberArr=number.split(".")
		precision=precision-numberArr[1].length
	}
	else
	{
		number=number+"."
	}
	for(i=1;i<=precision;i++)
			number= number+"0"
	return number
}

function formatCurrency(number,precision) 
{
    number = new String(number)
	//number = number.replace(/,/g,"")
	strNegative=""
    if(isNumber(number))
    {
		number=formatNumber(number,precision)
		if(number*1 < 0)
		{
			number = String(formatNumber(number *(-1),precision))
			strNegative = "-"
		}
    }
    else
		return number;
	
	blnNumeral=false	
	if(number.indexOf(".")>0)
	{	
		blnNumeral=true
		numberArr=number.split(".")
		number=numberArr[0]
	}
	
    
    if (number.length > 3) 
    {
        var mod = number.length%3;
        var output = (mod > 0 ? (number.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(number.length/3) ; i++) 
        {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        number=output;
    }
    
    
    if(blnNumeral)
		return strNegative + number + "." + numberArr[1]
    else
		return strNegative + number
}



function isURL(strURL)
{
	strURL=trimLR(strURL);
	regExp=re=/^(http:\/\/)?(www\.){1,1}[a-z1-2_\.\/-]+/i
	return(regExp.test(strURL))	
}

function isPhone(strPhone)
{
	strPhone=trimLR(strPhone);
	//regExp=/^(\d{10}|\d{3}-\d{3}-\d{4}|\d{3}-\d{7}|\(\d{3}\)\s?\d{7}|\(\d{3}\)\s?\d{3}-\d{4})$/g
	//regExp= /^[\da-zA-Z\s\(\)-]{2,15}$/;
	regExp = /^(\d{10}|\d{3}-\d{3}-\d{4}|\d{3}-\d{7}|\(\d{3}\)\s?\d{7}|\(\d{3}\)\s?\d{3}-\d{4})$/g;
	return(regExp.test(strPhone))	
}


function isYesterDate(chkDate,Today)
{
	if(isDate(chkDate))
	{
		chkDate=new String(chkDate)
		chkDate=chkDate.split("/")
		if(chkDate[2].length==2)
		{
			chkDate[2]="20" + chkDate[2]
		}
		objChkDate=new Date(chkDate[2],chkDate[0]-1,chkDate[1])
		
		strDate=new String(Today)
		strDate=strDate.split("/")
		objToday=new Date(strDate[2],strDate[0]-1,strDate[1])
		
		if(objChkDate < objToday)
		{
			return true
		}
		else
			return false
	}
	else
		return false
}

function getYear(d) 
{ 
	 return (Math.abs(d) < 1000) ? d + 1900 : d;
}


function isDate(strDate) 
{
	regExp=/^[0-9\/]+$/
	
	if(strDate.split("/").length==3 && regExp.test(strDate))
	{
		dateArr=strDate.split("/");
		month=dateArr[0];
		day=dateArr[1];
		year=dateArr[2];
		month = month - 1; 
		var tempDate = new Date(year,month,day);
		
		if ((getYear(tempDate.getYear()) == year) && getYear(tempDate.getYear()) > 1899 &&
		   (month == tempDate.getMonth()) &&
		   (day == tempDate.getDate()))
		    return true;
		else
		   return false
	}
	return false
}


function isZip(strZip,kntryCode)
{	
	
		regExp=/^(([0-9]{9})|([0-9]{5})|([0-9]{5}[-]{0,1}[0-9]{4})|([0-9]{5}[\s]{0,1}[0-9]{4}))$/;
		
	return regExp.test(strZip);
}



function formatDate(strDate)
{	
	if(strDate!="")
	{	
		regExp=/(\.|-|\\)/g
		regExp1=/[0-9\/]{1,2}/
		regExp2=/[0-9\/]{2,4}/
		strDate1=strDate.replace(regExp,"/")
		
		if(strDate1.split("/").length ==3)
		{
			strDateArr=strDate1.split("/")
			if(regExp1.test(strDateArr[0]) && strDateArr[0].length==1)
				strDateArr[0]=strDateArr[0]="0"+strDateArr[0]
				
			if(regExp1.test(strDateArr[1]) && strDateArr[1].length==1)
				strDateArr[1]=strDateArr[1]="0"+strDateArr[1]
			
			if(regExp2.test(strDateArr[2]) && strDateArr[2].length==2)
				strDateArr[2]=((parseInt(strDateArr[2])>20)? 19 : 20 ) + strDateArr[2]
			if(strDateArr[2].length>4)
				strDateArr[2]=strDateArr[2].substring(0,4)
			
			return strDateArr[0]+"/"+strDateArr[1]+"/"+strDateArr[2]
		}
		else
			return strDate
		
	}
	else
		return strDate
}

function fnValidateDateRange(txtDtFrom,txtDtTo,Msg)
{
	
	dateArr=txtDtFrom.value.split("/");
	month=dateArr[0];
	day=dateArr[1];
	year=dateArr[2];
	month = month - 1; 
	var fromDate = new Date(year,month,day);
					
	dateArr=txtDtTo.value.split("/");
	month=dateArr[0];
	day=dateArr[1];
	year=dateArr[2];
	month = month - 1; 
	var toDate = new Date(year,month,day);
						
	if(!(fromDate < toDate)){
		alert(Msg);
			return false;
		}
	return true;
}	

function ValidateEmail(objEmail,blnMandatory)
	{
		objEmail.value = trimLR(objEmail.value);

		if (blnMandatory==true && objEmail.value == '')
				{
					alert(" Please enter a  e-mail address.");
					objEmail.select();
					objEmail.focus();
					return false;
		}

		if (objEmail.value != '' && !isEmail(objEmail.value))
		{
			alert(" Please enter a valid e-mail address. \nExample:  john@hotmail.com");
			objEmail.select();
			objEmail.focus();
			return false;
		}
		return true;
	}
	
function ValidateDate(objValid,Today,blnMandatory, blnAgeBar)
{
	objValid.value = trimLR(objValid.value);

	if (objValid.value == ""){
		if (blnMandatory == true){
			return -1;
		}
	}
	else{

		if (!isYesterDate(objValid.value,Today)){
			return -2;
		}

		if (blnAgeBar==true){
			if (parseInt(CalculateAge(objValid.value)) < 18){
				return -3;
			}
		}
		var dateArr = objValid.value.split("/");
		var month	= dateArr[0];
		var day		= dateArr[1];
		var year	= dateArr[2];
		var month	= month - 1;
		var fromDate = new Date(year,month,day);

		if(fromDate.getFullYear() < 1900)
		{
			return -4;
		}
	}
	return 0;
}

function fnFormatdate(val)
{
	var tempdate
	tempdate=trimLR(val.value);

	if (trimLR(tempdate)!=""){
		val.value=formatDate(tempdate);
	}

}

function CalculateAge(strAge,Today)
{

	if (strAge == '')
	{
		return 0;
	}
	else
	{
	var adultVerifyDays = 6574 //((365*14)+(366*4))
	var birthdate =  strAge
	var age;
	var birthMonth=0
	var birthYear=0
	var birthDay=0
	birthMonth = birthdate.substring(0,birthdate.indexOf("/"))
	birthDay = birthdate.substring(birthdate.indexOf("/")+1, birthdate.lastIndexOf("/"))
	birthYear = birthdate.substring(birthdate.lastIndexOf("/")+1)

	var currentDays = daysBetween(birthYear,birthMonth,birthDay,Today)

	 if (currentDays >= adultVerifyDays)
		return 18;
	 else
		return 0
	}

}

function daysBetween(yr, mo, dy, Today) {
	var SECOND = 1000; // the number of milliseconds in a second
	var MINUTE = SECOND * 60; // the number of milliseconds in a minute
	var HOUR = MINUTE * 60; // the number of milliseconds in an hour
	var DAY = HOUR * 24; // the number of milliseconds in a day
	var WEEK = DAY * 7; // the number of milliseconds in a week
	var nDate = new Date(Today)// current date (local)
	var nTime = nDate.getTime(); // current time (UTC)
	var dTime = Date.UTC(yr, mo - 1, dy); // specified time (UTC)
	var bTime = Math.abs(nTime - dTime)  // time difference
	return Math.round(bTime / DAY);
}
