/*

dd for Date of the month
MM for month
yy or yyyy for Year
hh for hours
mm for minutes
ss for seconds

e.g. dd/MM/yy hh:mm:ss

formatDate(DateObject, FormatString)


*/


  function addZero(vNumber){
    return ((vNumber < 10) ? "0" : "") + vNumber
  }

  function formatDate(vDate, vFormat){
    var vDay              = addZero(vDate.getDate());
    var vMonth            = addZero(vDate.getMonth()+1);
    var vYearLong         = addZero(vDate.getFullYear());
    var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4));
    var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort)
    var vHour             = addZero(vDate.getHours());
    var vMinute           = addZero(vDate.getMinutes());
    var vSecond           = addZero(vDate.getSeconds());
    var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear)
    vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond)
    return vDateString
  }

// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=2006;
var maxYear=2200;

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
}

var cstDATEVALID = 0
var cstFORMATNOTVALID = 1 //The date format should be : dd/mm/yyyy
var cstMONTHNOTVALID = 2 //Please enter a valid month
var cstDAYNOTVALID = 3 //Please enter a valid day
var cstYEARNOTVALID = 4 //Please enter a valid 4 digit year
var cstCHARNOTVALID = 5 //Please enter a valid date

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=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){
		return cstFORMATNOTVALID
	}
	if (strMonth.length<1 || month<1 || month>12){
		return cstMONTHNOTVALID
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return cstDAYNOTVALID
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return cstYEARNOTVALID
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return cstCHARNOTVALID
	}
	return cstDATEVALID
}

function getDateType(dtStart)
{
	var pos1=dtStart.indexOf(dtCh)
	var pos2=dtStart.indexOf(dtCh,pos1+1)
	var strDay=dtStart.substring(0,pos1)
	var strMonth=dtStart.substring(pos1+1,pos2)
	var strYear=dtStart.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)


	var dtBegin = new Date(year,month-1,day,0,0,0,0);
	return dtBegin;
}

function isEqualsOrGreatherThan(dtStart,dtEnd)
{
	var start = getDateType(dtStart);
	var end = getDateType(dtEnd);

	if (start>=end)
		return true;
	else
		return false;


}

function isGreatherThan(dtStart,dtEnd)
{
	var start = getDateType(dtStart);
	var end = getDateType(dtEnd);

	return (start > end);
}

function isEqualsOrGreatherThanToday(dtStart)
{
	var start = getDateType(dtStart);
	var now = new Date();
	var onlydate = new Date(now.getFullYear(),now.getMonth(),now.getDate(),0,0,0,0);
	if (start>=onlydate)
		return true;
	else
		return false;
}

function isValidDate(dateToTest) {
  var data=/^([\d\d])+[\/||\-]+([\d\d])+[\/||\-]+([\d\d\d\d]){4,4}$/i;
  return(data.test(dateToTest));
}
//alert(isEqualsOrGreatherThan("01/01/2005","31/12/2004"));
//alert(isEqualsOrGreatherThanToday("01/01/2005"));


