// JavaScript Document
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}
function isNumeric(StrChkVal)
{
	RetVal = true
        NumberOfPoints = 0
	for (i = 0 ; i < StrChkVal.length ; i++)
	{
                if (mid(StrChkVal, i + 1, 1) == ".")
                {
                        if (NumberOfPoints == 0)
                        {
                                NumberOfPoints = 1
                        }
                        else
                        {
                                RetVal = false
                        }
                }
                else
                {
                        if (isNaN(parseInt(mid(StrChkVal, i + 1, 1), 10)))
                        {
                                RetVal = false
                        }
                }
	}

	return RetVal
}

function StrTrim(StrVar)
{
// ***** Function to trim a string sent and return the resultant string ***
        for (I = 0 ; I < StrVar.length ; I++)
        {
                if ((StrVar.substring(0,1)) == " ")
                {
                        StrVar = StrVar.substring(1,StrVar.length)
                        I = I - 1
                }
        }

        for (I = 0 ; I < StrVar.length ; I++)
        {
                if ((StrVar.substring(StrVar.length - 1,StrVar.length - 0)) == " ")
                {
                        StrVar = StrVar.substring(0,StrVar.length - 1)
                        I = I - 1
                }
        }
        return StrVar
}

function mid(str,start,n)
{	//returns a substring of str starting at 'start' that's n characters long.
	strlen = str.length
	var jj = str.substring(start-1,strlen)
	jj = jj.substring(0,n)
	return jj
}

function SelTheOption(SelName, OptionValue)
{
        OptLen = eval("document.Catelog." + SelName + ".length")
        for (i = 0 ; i < OptLen; i++)
        {
                OptSel = eval("document.forms[0]." + SelName + ".options[i].value")
                if (OptSel == OptionValue)
                {
                        eval("document.forms[0]." + SelName + ".options[i].selected=true")
                        eval("document.forms[0]." + SelName + ".options[i].defaultSelected=true")
                        break
                }
        }
}


function mid(str,start,n)
{	//returns a substring of str starting at 'start' that's n characters long.
	strlen = str.length
	var jj = str.substring(start-1,strlen)
	jj = jj.substring(0,n)
	return jj
}


function CheckEmail(emailStr)
{
	if (StrTrim(emailStr) != "" && emailStr != null)
	{
		if ((emailStr.indexOf('@') == -1) || (emailStr.indexOf('.') == -1))
		{
			return -1;
		}
		else
		{
			return 0;
		}
	}
	return 0;
}
function CalculateTot(FirstVal, SecondVal)
{
	/*FirstVald = DateObj(FirstVal)
	SecondVald = DateObj(SecondVal)*/
	
	FirstVald = new Date(FirstVal)
	SecondVald = new Date(SecondVal)
	
    RetVar = daysBetween(FirstVald, SecondVald) 
    retDays = RetVar.toString()
    return retDays
}

function Checkdate(datestr)
{
	flag = false
	if ((datestr.length >= 6) && (datestr.length <= 10))  	
	{
		firstsl = datestr.indexOf("/")
		secondsl = datestr.indexOf("/", firstsl + 1)
        var mm = (mid(datestr, firstsl + 2, secondsl - (firstsl + 1))).valueOf()
        var dd = (mid(datestr, 1 , firstsl)).valueOf()
        var yy = (mid(datestr, secondsl + 2, datestr.length - secondsl)).valueOf()
		alert(mm + " " + dd + " " + yy)
		if ((firstsl != -1) && (secondsl != -1))
		 {

			if ((firstsl == 2) || (firstsl == 1))
		   	{

				if ((secondsl == 4) || (secondsl == 5) || (secondsl ==3) && ((secondsl - firstsl) > 1))
				{

				 	if (((datestr.length - secondsl) == 3) || ((datestr.length - secondsl) == 5))	
					{	

                        if (!(isNumeric(mm) && isNumeric(dd) && isNumeric(yy)))
                        {
                          return flag
                        }
                        else
                        {
                            if (parseInt(mm, 10) < 1 || parseInt(mm, 10) > 12)
                            {
                                mm = Number.NaN
                                return flag
                            }
                            if (parseInt(dd, 10) < 1 || (parseInt(dd, 10) > getDays((parseInt(mm, 10) - 1 ),parseInt(yy, 10))))
                            {
                                dd = Number.NaN
                                return flag
                            }
                            flag = true
                            return flag
                        }
                    }
                }
		 	}
		}
	}
	else
	{
       alert("Invalid Date.")
	}
	return flag
}


function TOTDAYS(FirstVal, SecondVal)
{
    retDays ="False" 
	if (Checkdate(FirstVal) == true && Checkdate(SecondVal) == true)
	{
		alert("inside")
		FirstVald = DateObj(FirstVal)
		SecondVald = DateObj(SecondVal)
        RetVar = daysBetween(FirstVald, SecondVald) 
        retDays = RetVar.toString()
	}
    return retDays
}

function daysBetween(date1, date2) 
{	//returns the number of days between two date objects.
	millisecs = date1.getTime() - date2.getTime() 
	////alert("millisecs   " + millisecs)
   	return Math.round(millisecs/(1000*60*60*24)-0.5)
}

function DateObj(datestr)
{

	firstsl  = datestr.indexOf("/")
	secondsl = datestr.indexOf("/", firstsl + 1)
    var dd = mid(datestr, 1 , firstsl)
    var mm = mid(datestr, firstsl + 2, secondsl - (firstsl + 1))
	var yy = mid(datestr, secondsl + 2, datestr.length - secondsl)
    mnth = getmonth1(mm)
    try1 = mnth + " " + dd + ", " + yy
    date1 = new Date (try1)
    return date1 
}

function getmonth1(mmstr)
{
//returns monthname from string
	xx = mmstr
 	nm=null
        if (xx==1){nm="January"}if (xx==2){nm="February"}if (xx==3){nm="March"}
        if (xx==4){nm="April"}if (xx==5){nm="May"}if (xx==6){nm="June"}
        if (xx==7){nm="July"}if (xx==8){nm="August"}if (xx==9){nm="September"}
        if (xx==10){nm="October"}if (xx==11){nm="November"}if (xx==12){nm="December"}
        return nm
}



function leapyear(year)
{
        Retval = false
        if (year % 4 == 0)
        {
                Retval = true
        }
        return Retval
}


function getDays(month,year)
{
        var ar = new Array(12)
        ar[0]=31
        ar[1]=(leapyear(year))?29:28
        ar[2]=31
        ar[3]=30
        ar[4]=31
        ar[5]=30
        ar[6]=31
        ar[7]=31
        ar[8]=30
        ar[9]=31
        ar[10]=30
        ar[11]=31
        return ar[month]
}
function CheckNumber(intNum)
{
	var valid="0123456789";
	var string=intNum;
	var leng=string.length;
	for (var i=0;i<=leng ;i++)
	{
		var substring=string.substr(i,1);
		if (valid.indexOf(substring)== -1)
			{
			return false;
			}
	}
	return true;
}
function roundIt(a) 
	{
		//alert(a)
		aa=a.toString()
		//var len = a.length;
		b = aa.indexOf('.');
		//alert(b)
		if (b != -1)
		{
		//alert(aa.substring(0, b+3))
		ret=aa.substring(0, b+3);
		}
		else
		{
		ret=a;
		}
		//alert(parseFloat(ret))
		return parseFloat(ret) 
	}

function EnCode(s)
	{
		t=""
		for(i=0; i<s.length;++i){
			ch=s.charAt(i)
			switch(ch)
			{				
				case "\n" : t+=""; break;
				case "\r" : t+=""; break;
				case "\t" : t+=""; break;
				case "\b" : alert("enter") ;
					t+=""; break;
			  default : t+=ch; break;
			}
		}
		return t
	}



