var fromDate;
var toDate;
// utilities functions
function daysInMonth(m, y){
    // calculate count of days in the month
    var lDay = 30;
    switch(m){
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            lDay = 31;
            break;
        case 2:
            var vv = Math.ceil(y/4);
            if((vv*4) == y) lDay = 29;
            else lDay = 28;
            break;
        default:
            break;
    }
    return lDay;
}
function setOptObject(selObj, valArr, optArr, selIndex){
    selObj.length = 0;
    for(i=0; i<valArr.length; i++){
        // lets create new options list
        if(i == selIndex)
            selObj.options[i] = new Option(optArr[i], valArr[i], true, true);
        else
            selObj.options[i] = new Option(optArr[i], valArr[i]);
    }
}
// class definition
function DateControl(y, m, d, oRef, oName, yN, mN, dN){
    // this is an object constructor
    this.ownName = oName;
    this.objRef = oRef;
    this.year = y;
    this.month = m;
    this.day = d;
    this.yName = yN;
    this.mName = mN;
    this.dName = dN;
    // methods
    this.setDayVal = setDayVal;
    this.setMonthVal = setMonthVal;
    this.setYearVal = setYearVal;
    this.getDateObj = getDateObj;
    this.cDay = setDayFromControl;
    this.cMonth = setMonthFromControl;
    this.cYear = setYearFromControl;
    // lets format the controls for date
    this.setYearVal();
    this.setMonthVal();
    this.setDayVal();
}
function setDayFromControl(){
//    this.day = parseInt(this.objRef.all(this.dName).value);
    this.day = parseInt(document.getElementById(this.dName).value);
}
function setMonthFromControl(){
//    var newM = parseInt(this.objRef.all(this.mName).value);
    var newM = parseInt(document.getElementById(this.mName).value);
    if((newM !=this.month) || (this.month==2)){
        // we should change days intreval for month
        this.month = newM;
        this.setDayVal();
//        var cnt = this.objRef.all(this.dName).options.length;
        var cnt = document.getElementById(this.dName).options.length;
        if (cnt<this.day) {
            this.day = cnt;
//            this.objRef.all(this.dName).value = cnt;
            document.getElementById(this.dName).value = cnt;
        }
        else
//            this.objRef.all(this.dName).value = this.day;
            document.getElementById(this.dName).value = this.day;
    }
}
function setYearFromControl(){
//    this.year = parseInt(this.objRef.all(this.yName).value);
    this.year = parseInt(document.getElementById(this.yName).value);
    if (this.month==2) this.cMonth();
}
function setYearVal(){
    // lets make the day options +-5 years
    var yvA = new Array();
    var yoA = new Array();
    j=0;
    for(i=this.year;i<this.year+2;i++){
        yvA[j] = i;
        yoA[j] = i;
        j++;
    }
    setOptObject(document.getElementById(this.yName),yvA,yoA,0);
}
function setMonthVal(){
    // lets make the day options
    var mvA = new Array();
    var moA = new Array();
    j=0;
    for(i=0;i<=11;i++){
/*
        var vDate = new Date(this.year, i-1, 1);
        var strDate = vDate.toLocaleString();
        var vA = new Array();
        vA = strDate.split(" ");
        if (isNaN(parseInt(vA))){
            // name of day
            var vM = vA[2];
        } else {
            // day of month
            var vM = vA[1];
        }
        mvA[j] = i;
        moA[j] = vM;
*/
        mvA[j] = i+1;
        moA[j] = i+1;
        j++;
    }
    setOptObject(document.getElementById(this.mName),mvA,moA,this.month-1);
}
function setDayVal(){
    // lets make the day options
    var lastDay = daysInMonth(this.month, this.year);
    var dvA = new Array();
    var doA = new Array();
    j=0;
    for (i=1; i<=lastDay; i++){
        dvA[j] = i;
        doA[j] = i;
        j++;
    }
    setOptObject(document.getElementById(this.dName),dvA,doA,this.day-1);
}
function getDateObj(){
    return new Date(this.year, this.month, this.day);
}
// end of class definition DateControl
function checkDat(objFrom, objTo){
//    if (objFrom.getDateObj().valueOf()>objTo.getDateObj().valueOf()){
    if (objFrom.getDateObj()>=objTo.getDateObj()){
        alert(sMess1);
        return false;
    }
    return true;
}
