
/****

Name 		: Validations.ja
Description	: This File is used for Client-End Validations.
Author		: Event Tracker Development Team
Dated		: Monday, July 02, 2001
Reviewed on	: Tuesday, July 03, 2001
Reviewed by	: Brij B S Rauthan
CopyRight	: Differential Technologies Limited.
***/


var whitespace = " \t\n\r"
var decimalPointDelimiter = "."
slength 	= 9;
var daysInMonth = new Array();
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
daysInMonth[0] = 0;
daysInMonth[1] = 31;
daysInMonth[2] = 29;
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

function getRandomNum(lbound, ubound)
{
	return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}

function getFirstRandomChar()
{
	var charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	return charSet.charAt(getRandomNum(0,26));
}


function getRandomChar()
{
	var charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	return charSet.charAt(getRandomNum(0, 36));
}

function getPassword()
{
	var rc = getFirstRandomChar();
	for (var idx = 1; idx < slength; ++idx)
		rc = rc + getRandomChar();
	return rc;
}
function isDateIndian(day, month, year)
{
	if((year+"").length<4)return false;
	if((year*1) < 1000)return false;
	if(!isInteger(year)) return false;
	if(!isInteger(month)) return false;
	if(!isInteger(day)) return false;
	if((day > 31)||(day<1)) return false;
	if((month >12)||(month<1))return false;
	if (day > daysInMonth[month]) return false;

    if ((month == 2) && (day > daysInFebruary(year))) return false;
    return true;
}

function isDate (year, month, day)
{
	alert(year);
	alert(month);
	alert(day);
	if((year+"").length<4)return false;
	if((year*1) < 1000)return false;
	if(!isInteger(year)) return false;
	if(!isInteger(month)) return false;
	if(!isInteger(day)) return false;
	if((day > 31)||(day<1)) return false;
	if((month >12)||(month<1))return false;
	if (day > daysInMonth[month]) return false;

    if ((month == 2) && (day > daysInFebruary(year))) return false;
    return true;
}
function daysInFebruary (year)
{
     return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}

function isEmpty(s)
{
	var str=s;
	str=stripInitialWhitespace(str);
	return ((str == null) || (str.length == 0))
}

function isWhitespace (s)
{
    var i;
    if (isEmpty(s))
		return true;
    for (i = 0; i < s.length; i++)
    {
		var ch = s.charAt(i);
        if (whitespace.indexOf(ch) == -1)
		return false;
    }
    return true;
}

function isInteger(s)
{
    var i;
    if (isEmpty(s))
		return false;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (!isDigit(c))
	return false;
    }
    return true;
}

function isLetter (c)
{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c)
{
	return ((c >= "0") && (c <= "9"))
}


function isLetterOrDigit (c)
{
	return (isLetter(c) || isDigit(c))
}


function isEmail (s)
{
    var i = s.indexOf("@");
    if ( i < 1 )
		return false;
	var j = s.indexOf(".",i);
	if ( j == -1 || j == (s.length - 1) )
		return false;
	i = s.indexOf("@",i+1);
    if ( i != -1 )
		return false;

	var emailtext = s;
	if	(( emailtext.indexOf("\/",0) !=-1) ||
		( emailtext.indexOf("\\",0) !=-1) ||
		( emailtext.indexOf("#",0) !=-1)  ||
		( emailtext.indexOf("&",0) !=-1)  ||
		( emailtext.indexOf("*",0) !=-1)  ||
		( emailtext.indexOf("\'",0) !=-1) ||
		( emailtext.indexOf("\"",0) !=-1) ||
		( emailtext.indexOf("?",0) !=-1)  ||
		(emailtext.indexOf("$",0) !=-1)	  ||
		(emailtext.indexOf(" ",0) !=-1))
	return false;
	return true;
}

function isUrl(s)
{
	var i = s.indexOf(".");
	if ( i < 1 )
		return false;
	i = s.lastIndexOf(".");
	if ( i == (s.length -1))
		return false;
	return true;
}


function stripInitialWhitespace (s)
{
    var i = 0;
    while ((i < s.length) && s.charAt(i) == " ")
       i++;
    return s.substring (i, s.length);
}

function stripLastWhitespace (s)
{
    var i = s.length ;
    while (i > 0 && s.charAt(i-1) == " " )
    	i--;
    return s.substring(0,i);
}

function isAlphaNumeric(s)
{
    var i;
    if (isEmpty(s))
       return false;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }
    return true;
}

function isAlpha(s)
{
    var i;
    if (isEmpty(s))
       return false;
    for (i=0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if ( !isLetter(c) && c != ' ' )
          return false;
    }
    return true;
}


function ReplaceQuote(stringName)
{
	var str=stringName;
	str=stripInitialWhitespace(str);
	str=stripLastWhitespace(str);
	var newString, changeString;
	changeString = /'/g;
	newString = str.replace(changeString, "''");
	return(newString);
}

function isFloat(s)
{
    var i;
    var seenDecimalPoint = false;
    if ( s == decimalPointDelimiter ) return false;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if ((c == decimalPointDelimiter) && !seenDecimalPoint)
        	seenDecimalPoint = true;
        else if (!isDigit(c))
        	return false;
    }
    return true;
}

function ReplaceComma(stringName)
{
	var newString, changeString;
	stringName = stringName+"";
	changeString = /,/g;
	newString = stringName.replace(changeString, " ");
	return(newString);
}

function doKey(xx) {
    var whichASC = event.keyCode*1;
    if((whichASC>=47)&&(whichASC<=57)){
	var boxValue=xx.value;
	var length=(boxValue.length)*1;
	if(length==2 || length==5)
	{
	    var ff=boxValue+"/";
	    xx.value=ff;
	}
	if(whichASC==47){
	   xx.value=ff.substring(0,(ff.length-1));
	}

    }
}
function valdate(xx){
	var boxValue=xx.value;
	if(boxValue==""){
	}else if(!isDateIndian(boxValue.substring(0,2),boxValue.substring(3,5),boxValue.substring(6,10)))
	  {
		alert("Invalid Date");
		xx.value="";
		xx.focus();
		return false;
	}
}

function getOldDate(anyDate, n)
{

   //-- Returns the date that is n days behind from any date object.

   var newDate = new Date()
   newDate.setTime(anyDate.getTime()-(n*1000*60*60*24))
 var dateold = ""+(newDate.getMonth()+1)+"-"+newDate.getDate()+"-"+newDate.getFullYear();
   return dateold;
}


function getNewDate(anyDate1, n)
{

   //-- Returns the date that is n days away from any date object.

   var newDate1 = new Date()
   newDate1.setTime(anyDate1.getTime()+(n*1000*60*60*24))
  var datenew = ""+(newDate1.getMonth()+1)+"-"+newDate1.getDate()+"-"+newDate1.getFullYear();
   return datenew;
}

function lastDay(anyDate, n)
{

   //-- Returns the date that is n days behind any date object.

   var newDate = new Date()
   newDate.setTime(anyDate.getTime()-(n*1000*60*60*24))
   var dateold = newDate.getDate();
   return dateold;
}

function getAheadDate(anyDate, n)
{

   //-- Returns the date that is n days ahead of any date object.

   var newDate = new Date()
   newDate.setTime(anyDate.getTime()+(n*1000*60*60*24))
   var dateold = newDate.getDate();
   return dateold;
}

function getNextDate(anyDate, n)
{

   //-- Returns the date that is n days ahead of any date object.

   var newDate = new Date()
   newDate.setTime(anyDate.getTime()+(n*1000*60*60*24))
   return newDate;
}

function sendDate(sentDate)
{
// Returns monday and sunday for a date
var day = sentDate.getDay();
var dateold1;
var dateold2;
//Response.write("Date whose monday is to be searched is "+sentDate.getDate()+","+(sentDate.getMonth()+1)+","+sentDate.getFullYear()+"<br>");
//Response.write("Case is "+day+"<br>");

	switch(day)
	{
	case 0:
		dateold1= getOldDate(sentDate,6);
		dateold2= getNewDate(sentDate,0);
		break;
	case 1:
		dateold1= getOldDate(sentDate,0);
		dateold2= getNewDate(sentDate,6);
		break;
	case 2:
		dateold1= getOldDate(sentDate,1);
		dateold2= getNewDate(sentDate,5);
		break;
	case 3:
		dateold1= getOldDate(sentDate,2);
		dateold2= getNewDate(sentDate,4);
		break;
	case 4:
		dateold1= getOldDate(sentDate,3);
		dateold2= getNewDate(sentDate,3);
		break;
	case 5:
		dateold1= getOldDate(sentDate,4);
		dateold2= getNewDate(sentDate,2);
		break;
	case 6:
		dateold1= getOldDate(sentDate,5);
		dateold2= getNewDate(sentDate,1);
		break;
		}

monday=dateold1;
sunday=dateold2;

//Response.write("Monday's date is "+dateold1+"<br>");
//Response.write("Sunday's date for same week is "+dateold2+"");

}

function getMonthValue(monthnum)
{
var mymonth=monthnum*1;

var Months=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var str=Months[(mymonth-1)]+"";

return str;
}

function getWeekDayValue(daynum)
{
var myday=daynum*1;

var Days= new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

var str=Days[myday]+"";

return str;
}

//DateObj = new Date(2001, 4, 3);
//sendDate(DateObj);
function getRealTime(time){
	var hour=time.substring(0,2)*1;
	if(hour<12){
		return time+" A.M";
	}else{
		if(hour==12){
		}else{
			hour=hour-12;
		}

		var min=time.substring(3,5);
		time=hour+":"+min+" P.M";
		return time;
	}
}

function getWeekDayValue(daynum)
{
var myday=daynum*1;

var Days= new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

var str=Days[myday]+"";

return str;
}
function isDate (date_hms)
{ 	var day, month,year;
	i=date_hms.indexOf("/");
	day=date_hms.substring(0,i);
	j=date_hms.indexOf("/",i+1);
	month=date_hms.substring(i+1,j);
	year=date_hms.substring((j+1),(date_hms+"").length);
	if((year+"").length<4){
		alert("The year should have 4 digits");
		return false;
		}
	if((year*1) < 1000){
		alert("The wrong  value of year");
		return false;
		}
	if(!isInteger(year)) {
		alert("Enter a Numeric value of year");
		return false;
		}
	if(!isInteger(month)){
		alert("Enter a Numeric value of Month");
		 return false;
	 }
	if(!isInteger(day)){
		alert("Enter a Numeric value of Day");
		return false;
		}
	if((day > 31)||(day<1)){
		alert("The day does not exists");
		 return false;
		 }
	if((month >12)||(month<1)){
		alert("The month should be between 1 to 12");
		return false;
		}
	if (day > daysInMonth[month]){
		alert("The month is not valid ");
		return false;
		}
    	if ((month == 2) && (day > daysInFebruary(year))){
		alert("The wrong  Date");
		return false;
		}
    	return true;
}

function isMoney(obj)
	{
	if(!isEmpty(obj.value))
		{
		var i=obj.value.indexOf(".")*1
		if(obj.value.length>13)
			{
			return false;
			}

		if(i==-1)
			{
			if(!isInteger(obj.value))
				{
				alert("Only Integers Allowed")
				obj.value="";
				obj.focus();
				return false;
				}
			if(obj.value.length>10)
				{
				obj.value=obj.value.substring(0,10);
				}

			if(obj.value.length==10)
				{
				obj.value=obj.value+"."
				}
			}
		else
			{
			var beforeDec = obj.value.substring(0,i);
			if(!isEmpty(beforeDec))
				{
				if(!isInteger(beforeDec))
					{
					alert("Only Integers Allowed")
					obj.value="";
					obj.focus();
					return false;
					}
				}
  				if(obj.value.length>i)
					{
					var afterDec = obj.value.substring(i+1,obj.value.length);
					if(!isEmpty(afterDec))
						{
						if(afterDec.length >2)
							{
							var wasteLen=afterDec.length-2
							obj.value=obj.value.substring(0,obj.value.length-wasteLen)
							}
							if(!isInteger(afterDec))
								{
								alert("Only Integers Allowed")
								obj.value="";
								obj.focus();
								return false;
								}
						}

					}

			}

		}
		return true;
	}
function open_calculator(hms_control,hms_decimal)
{	
	var mm_str,hms_value,hms_control,hms_name
	hms_control=hms_control;
	hms_value=eval("document.form."+hms_control).value;		
	mm_str=hms_control +"/"+ hms_value +"/"+ hms_decimal+"";
	WinObj=window.open("../common/calculator.asp?hms_name="+mm_str,"win3","scrollbars=yes,toolbar=no,menubar=no,statusbar=no width=200,height=198,ScreenX=15,ScreenY=10,top=200,left=250");

}

function formatDecimal(bq_str,bq_no){

 bq_div=10
 for(i=1;i<bq_no*1;i++)
 {
  bq_div=10*bq_div
 }
 
 
 if(!isEmpty(bq_str))
 {
  bq_str=Math.round(bq_str*bq_div)
  bq_str=bq_str/bq_div
  var bq_tmm=bq_str+""
  var bq_tmmd=bq_div+""
 
  if(bq_tmm.indexOf(".")==-1)
  {
   bq_tmmd=bq_tmmd.replace("1",".")
   bq_str=bq_str+bq_tmmd
  }
 }
 
 return bq_str

}
function dateDiff(datestr2,datestr1){
	var matchArray1 = datestr1.match(datePat);	
	var matchArray2 = datestr2.match(datePat);
	var todate = new Date(matchArray1[4],matchArray1[3],matchArray1[1])
	var fromdate = new Date(matchArray2[4],matchArray2[3],matchArray2[1])
	return (fromdate - todate)
}
function hms_adjust2Deci(hms_control)
{	
	var hms_value
	hms_value=eval("document.form."+hms_control).value;			
	hms_decipart=hms_value.split(".")	
		if(hms_decipart.length>"1"){			
				if(hms_decipart[1].length>"2"){				
				hms_decipart[1]=hms_decipart[1].substring("0","2")				
				}//fi 2			
			eval("document.form."+hms_control).value=hms_decipart[0]+"."+hms_decipart[1]		
		}//fi 1
	//return true;
}//function ends here
function hms_adjust_percentage(Rate,unit,amount,percentage,total){
	hms_adjust2Deci(amount);
	hms_unit=stripInitialWhitespace(eval("document.form."+unit).value); 
	hms_amount=parseFloat(eval("document.form."+amount).value);
	//alert("hms_amount"+hms_amount);
	if(hms_amount+""=="NaN"){
	eval("document.form."+percentage).value="";
		if(! total==""){		
		eval("document.form."+total).value="";
		}
	//alert("iNSIDE");
	return;
	}
	else{
	//alert("ELSE***");
		if(hms_unit==""){
			alert("The unit cannot be left blank");
			eval("document.form."+percentage).value="";
			eval("document.form."+amount).value="";
				if(! total==""){		
				eval("document.form."+total).value="";
				}
			eval("document.form."+unit).focus();
			return;
		}else{
			set_per=formatDecimal(((hms_amount*100)/(hms_unit*1*Rate))+"","2");
			//alert("PER" +set_per);
				if(set_per > 100 ){
					alert("The Percentage cannot be greater than 100");
					eval("document.form."+amount).value="";
					eval("document.form."+amount).focus();			
					return;	
				}
	//			alert("set_per"+set_per)
			eval("document.form."+percentage).value=set_per;
			if(! total==""){
			//	alert("Setting Total");
				eval("document.form."+total).value=formatDecimal(((Rate*hms_unit)-hms_amount)+"","2");
			 }//if
		}//ELSE 2 PART ENDS HERE
	 }//ELSE 1 PART ENDS HERE
}//function ends here
function hms_adjust_amount(Rate,unit,amount,percentage,total){
var set_amount;
set_amount=0;
//alert("total***********"+total)
hms_adjust2Deci(percentage);
hms_unit=stripInitialWhitespace(eval("document.form."+unit).value); 
hms_percentage=parseFloat(eval("document.form."+percentage).value);
	//alert("hms_percentage"+hms_percentage)
	if(hms_percentage+""=="NaN"){
		eval("document.form."+amount).value="";
		if(! total==""){		
			eval("document.form."+total).value="";
		}
		
	//	alert("iNSIDE_per");
		return;
		}
	else{
		if(hms_percentage >=100){
		alert("The Percentage cannot be greater than 100");
			if(! total==""){		
			eval("document.form."+total).value="";
			}
			eval("document.form."+percentage).focus();			
			return;	
		  	
		}else{
			if(hms_unit==""){
				alert("The unit cannot be left blank");
				eval("document.form."+amount).value="";
				if(! total==""){		
				eval("document.form."+total).value="";
				}
				eval("document.form."+unit).focus();
				return;
				}
			set_amount=formatDecimal(((hms_percentage*hms_unit*Rate)/100)+"","2");
			//alert("set_amount"+  set_amount);
			//alert("amount"+amount);
			eval("document.form."+amount).value=set_amount;
			//alert("After");
				if(! total==""){
			//	alert("Setting Total");
				eval("document.form."+total).value=formatDecimal(((Rate*hms_unit)-set_amount)+"","2");
			 }//if
		}//else
	}//else
}//function

function bq_check_integer(hms_obj){
	if(!isInteger(eval("document.form."+hms_obj).value)){
	alert("The No is not a valid integer");
	eval("document.form."+hms_obj).focus();
	return;
	}
}

function trim(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function




