function rtrim(str)
{
    var l = str.length;
    for (i=l-1; i>=0; i--)
    {
        var c = str.substr(i,1);
        if (c != ' ')
           break;
    }
    return (str.substring(0,i+1));
};

function ltrim(str)
{
    var l = str.length;
    for (i=0; i<l; i++)
    {
        var c = str.substr(i,1);
        if (c != ' ')
           break;
    }
    return (str.substring(i));
};

function trim(str)
{ 
    return (ltrim(rtrim(str)));
};

function isblank(str)
{
    if (trim(str).length == 0)
       return true;
    else
       return false;
};

function is_valid_date(testdate)
{
    testdate = RemoveSpaces(testdate);
    if (! contain_only(testdate,"./-~d",0))
       return 'Invalid Characters In Date';
    
    testdate = replacestr(testdate,'.','/');
    testdate = replacestr(testdate,'-','/');
    
    if (occurs(testdate,'/') != 2)
       return 'Invalid Date Format, Should be dd/mm/yyyy';
       
    var cnt = 1;
    var p = 0;
    do 
    {
        var q = testdate.indexOf('/',p);
        if (q >= 0)
        {
           if (cnt == 1)
           {
              var dd = testdate.substring(0,q);
           }
           else if (cnt == 2)
           {  
              var mon = parseInt(testdate.substring(p,q));
              if (mon < 1 || mon > 12)
                 return 'Invalid Month';

              var yr = testdate.substr(q+1);
              if (yr.length != 4 || parseInt(yr) < 1900 || parseInt(yr) > 3000)
                 return 'Invalid Year, Not Of 4 Digits, or Out Of Range';

              var r = testdate.indexOf('/');
              if (! (checkDateDays(yr, mon, testdate.substring(0,r))))
                 return 'Invalid Days In Date';
           }
        }
        else
           break;
        
        cnt++;
        p = q+1;
    }
    while (q > -1)
    
    return (testdate);
}

function contain_only(src, mexp)
{
    cd = 'N';
    capad = 'N';
    smlad = 'N';
    
    if (mexp.indexOf('~d') >= 0)
    {
       cd = 'Y';
       mexp = replacestr(mexp,'~d', '');    
    }

    if (mexp.indexOf('~A') >= 0)
    {
       capad = 'Y';
       mexp = replacestr(mexp,'~A', '');    
    }

    if (mexp.indexOf('~a') >= 0)
    {
       smlad = 'Y';
       mexp = replacestr(mexp,'~a', '');    
    }

    var arr = "";
    for (i=0; i<mexp.length; i++)
    {
       arr = arr + mexp.substr(i,1);
    }
    if (cd == 'Y')
    {  
       for (j=0;j<=9;j++,i++)
       {
           arr = arr + j;
       }
    }
    if (capad == 'Y')
    {  
    	arr = arr + "ABCDEFGHIJKLMONPQRSTUVWXYZ";
    }
    
    if (smlad == 'Y')
    {  
    	arr = arr + "abcdefghijklmnopqrstuvwxyz";
    }
    for (i=0; i<src.length; i++)
    {
        var c = src.substr(i,1);
        if (arr.indexOf(c) < 0)
           return false;
    }
    return true;
};

function replacestr(org, fnd, rep)
{
    var p = -1;
    var s3 = "";
    do
    {
        var q = org.indexOf(fnd,p+1);
        if (q > 0)
        {
           s3 = s3 + org.substring(p+1,q) + rep;
           p = q + fnd.length-1;
        }
        else
        {
           s3 = s3 + org.substring(p+1);
           break;
        }
    }
    while (p > 0)
    return (s3);
};

function occurs(src, fnd)
{
    var p = 0;
    var cnt = 0;
    do
    {
        p = src.indexOf(fnd, p);
        if (p < 0)
           break;
        
        p++;
        cnt++;
    }
    while (p >= 0);
    return cnt;
}

function checkDateDays(yyyy, mm, dd)
{
    yyyy = parseInt(yyyy);
    mm = parseInt(mm);
    dd = parseInt(dd);
    
    var mondays = new Array('31','28','31','30','31','30','31','31','30','31','30','31');
    if (yyyy % 4 == 0)
        mondays[1] = 29;

    var mdays = mondays[mm-1];    
    if (dd < 1 || dd > mdays)
    {
       return false;
    }       
    return true;
}

function trimall(str)
{
    var ostr = trim(str);
    var newstr = "";
    for (i=0; i<ostr.length; i++)
    {
        var c = ostr.substr(i,1);
        if (i != 0)
        {
           if (c == ' ' && ostr.substr(i-1,1) == ' ')
              newstr = newstr;
           else
              newstr = newstr + c;
        }
        else
        {  newstr = newstr + c;}
    }
    return newstr;
}

function RemoveSpaces(str)
{
    var ostr = trim(str);
    var newstr = "";
    for (i=0; i<ostr.length; i++)
    {
        var c = ostr.substr(i,1);
        if (c != ' ')
           newstr = newstr + c;
    }
    return newstr;
}

function findDate(dstr)
{
   var dt = 0;
   var p = dstr.indexOf('/');
   if (p >= 0)
   {
      dt = parseInt(dstr.substr(0,p));
      return dt;
   }
   else
      return 0;
}

function findMonth(dstr)
{
   var dt = 0;
   var p = dstr.indexOf('/');
   var q = dstr.indexOf('/',p+1);
   if (q >= 0 && p >= 0)
   {
      dt = parseInt(dstr.substring(p+1,q));
      return dt;
   }
   else
      return 0;
}

function findYear(dstr)
{
   var dt = 0;
   var p = dstr.lastIndexOf('/');
   if (p >= 0)
   {
      dt = parseInt(dstr.substring(p+1));
      return dt;
   }
   else
      return 0;
}

function convDateToStr(sdt)
{
    var str = "";
    var mon = sdt.getMonth() + 1;
    str = str + sdt.getDate() + "/" + mon + "/" + sdt.getFullYear();
    return str;
}

function lastDateOfMonth(yyyy,mm,dors)
{
    var mondays = new Array('31','28','31','30','31','30','31','31','30','31','30','31');
    if (yyyy % 4 == 0)
       mondays[1] = 29;

    var lstexdt = new Date(yyyy, mm-1, mondays[mm-1]);
    if(dors.toUpperCase() == "D")	
    	return lstexdt;
    else
    	return convDateToStr(lstexdt);
}

function getDate(d)
{
   if(d.toUpperCase()=="TODAY")
   {
        var d1 = new Date();
        var vd = convDateToStr(d1);
   }
   else
   {
        var vd = is_valid_date(d);
        if(vd.indexOf("Invalid")>=0)
        {
        	alert("Check Date-"+vd);
        	return -100;
        }
   }
   return vd;
}

function getDateTime(d)
{
   if(d.toUpperCase()=="TODAY")
   {
        var d1 = new Date();
        var vdtm = d1.getTime();
   }
   else
   {
        var vd = is_valid_date(d);
        if(vd.indexOf("Invalid")>=0)
        {
        	alert("Check Date-"+vd);
        	return -100;
        }
        var vdt = new Date(findYear(vd),findMonth(vd),findDate(vd));  
        var vdtm = vdt.getTime();
   }
   return vdtm;
}

function compareDate(d1,d2)
{
    var vdtm1 = getDateTime(d1);
    var vdtm2 = getDateTime(d2);
	
    if(vdtm1 > vdtm2)
	return 1;
    else if(vdtm1 = vdtm2)
 	return 0;
    else
	return -1;
}

function daysBetween(d1,d2)
{
    var vdtm1 = getDateTime(d1);
    var vdtm2 = getDateTime(d2);

    return (vdtm2-vdtm1)/(1000*60*60*24);
}

function ageBetween(gd1,gd2)
{
	
    var d1 = getDate(gd1);
    var d2 = getDate(gd2);
    
    
    var m1 = findMonth(d1);
    var m2 = findMonth(d2);
    
    var y1 = findYear(d1);
    var y2 = findYear(d2);

    var dt1 = findDate(d1);
    var dt2 = findDate(d2);

    var mts;
    var yrs;
    var dys;	
    
/*    if((m1 == m2) && (dt1 < dt2))
    {
    	dys = dt2 - dt1;
    	mts = 0;
    	yrs = y2 - y1;	
    }
    else if((m1 < m2) && (dt1 < dt2)) 
    {
    	dys=dt2 - dt1;
    	mts=m2 - m1;
    	yrs = y2 - y1;	
    }
    else if((m1 > m2) && (dt1 < dt2))
    {
    	dys=dt2 - dt1;
    	mts=(12 - m1) + m2;
       	yrs = (y2 - y1) - 1;	
    }
    else if((m1 == m2) && (dt1 > dt2))
    {
    	dys = (findDate(lastDateOfMonth(y2,(m1-1),"s")) - dt1) + dt2;
    	mts = 11;
    	yrs = (y2 - y1) - 1;	
    }
    else if((m1 < m2) && (dt1 > dt2)) 
    {
    	dys=(findDate(lastDateOfMonth(y2,m1,"s")) - dt1) + dt2;
    	mts=(m2 - m1)-1;
    	yrs = y2 - y1;	
    }
    else if((m1 > m2) && (dt1 > dt2))
    {
    	dys=(findDate(lastDateOfMonth((y2-1),m1,"s")) - dt1) + dt2;
    	mts=((12 - m1) + m2)-1;
       	yrs = (y2 - y1) - 1;	
    }
    	
    var str = "Years - "+yrs+"  Months - "+mts+"  Days - "+dys;	
*/  var str = "M1--"+dt1+"-M2--"+dt2;    return str;
}

function setIfSelOptByValue(selid,val)
{
	//var ol = selid.options;
	var indx;
	var s=0;
	for(s=0;s<selid.length;s++)
	{
		if(selid.options[s].value == val)
		{
			indx = s;	
			break;
		}
	}
	selid.options[indx].selected=true;					
}
