﻿
var daysofmonth    = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var daysofmonthLY  = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);


function makeArray() {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}


function y2k(number) { return (number < 1000) ? number + 1900 : number; }


function padout(number) { return (number < 10) ? '0' + number : number; }


function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}


function isValidDate(year,month,day) {
// Month input value should be ranged from 1 to 12

    if ( (LeapYear(year) && (day > daysofmonthLY[month])) || (!LeapYear(year) && (day > daysofmonth[month])) )
        return false;
    else
        return true;
}

function isFilled(obj, fieldname)
{
    if (obj.value =="") {
        alert("注意: "+fieldname+" 未有輸入");
        obj.focus();
        return false;
    } else 
        return true;
}

function isSame(obj, obj2)
{
    if(obj.value != obj2.value) {
        alert("Attention: Passwords are not typed correctly for both trials. Please try again.");
        obj.focus();
        return false;
    } else
        return true;
 }

function isText(obj, fieldname) {
for (var i = 0; i < obj.value.length; i++){      
	var ch = obj.value.substring(i, i + 1);      
	if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' '){         
		alert("\nThe "+fieldname+ " only accepts letters & spaces.\n\nPlease re-enter.");  
                    obj.focus();
		return false;         
	}      
}   
return true; 

}

function isEmail(obj, fieldname) {
    a= obj.value.indexOf('@',0);
    b = obj.value.indexOf('.',0);
    if (a<1 || b<(a+2)||obj.value.length<5) {
      alert("注意:\n"+fieldname+"輸入不正確. 請重新輸入.");
      obj.focus();
      return false;
    }
    return true;
}

function isNumberString(s) {
    for (var i = 0; i < s.length;  i++) {
        var ch = s.substring(i,i+1);
        if ( (ch<"(") || (ch>">") ) {
            return false;
        }
    }
    return true;
}

function isNumber(obj, fieldname) {
    for (var i = 0; i < obj.value.length;  i++) {
        var ch = obj.value.substring(i,i+1);
        if ( (ch<"(") || (ch>">") ) {
			      alert("注意:\n"+fieldname+"輸入不正確. 請重新輸入.");
            obj.focus();
            return false;
        }
    }
    return true;
}

function correctDateFormat(obj, fieldname) {
	ret = true;
	if (obj.value=="") {
		ret = false;
	}
	if (ret) {
		ar = obj.value.split("/");
		if (ar.length!=3) {
			ret = false;
		} else {
			for (i=0; i<3; i++) {
				if (!isNumberString(ar[i])) {
					ret = false;
				}
			}
			if (!isValidDate(parseInt(ar[0]), parseInt(ar[1]), parseInt(ar[2]))) {
				ret = false;
			}
		}
	}
	if (!ret) {
	      alert("注意:\n"+fieldname+"輸入不正確. 請重新輸入.");
        obj.focus();
    }
	return ret;
}

function correctTimeFormat(obj, fieldname) {
	ret = true;

	if (obj.value=="")
		ret = false;
	if (ret) {
		ar = obj.value.split(":");
		if (ar.length!=2)
			ret = false;
		else {
			for (i=0; i<2; i++)
				if (!isNumberString(ar[i]))
					ret = false;
			if (parseInt(ar[0])<0 || parseInt(ar[0])>23)
				ret = false;
			if (parseInt(ar[1])<0 || parseInt(ar[1])>59)
				ret = false;
		}
	}
	if (!ret) {
	      alert("注意:\n"+fieldname+"輸入不正確. 請重新輸入.");
        obj.focus();
    }   
	return ret;
}

function datetimeLessThan(d1, t1, d2, t2) {
	var yy1, yy2;
	var m1, m2;
	var dd1, dd2;
	var hh1, hh2;
	var mm1, mm2;

	if (d1=="")
		return false;
	if (ret) {
		ar = d1.split("/");
		if (ar.length!=3) {
			return false;
		} else {
			for (i=0; i<3; i++)
				if (!isNumberString(ar[i]))
					return false;
			yy1=parseInt(ar[0]);
			m1=parseInt(ar[1]);
			dd1=parseInt(ar[2]);
		}
	}

	if (d2=="")
		return false;
	if (ret) {
		ar = d2.split("/");
		if (ar.length!=3) {
			return false;
		} else {
			for (i=0; i<3; i++)
				if (!isNumberString(ar[i]))
					return false;
			yy2=parseInt(ar[0]);
			m2=parseInt(ar[1]);
			dd2=parseInt(ar[2]);
		}
	}
	
	if (t1=="")
		return false;
	if (ret) {
		ar = t1.split(":");
		if (ar.length!=2)
			return false;
		else {
			for (i=0; i<2; i++)
				if (!isNumberString(ar[i]))
					return false;
			hh1=parseInt(ar[0]);
			mm1=parseInt(ar[1]);
		}
	}
	
	if (t2=="")
		return false;
	if (ret) {
		ar = t2.split(":");
		if (ar.length!=2)
			return false;
		else {
			for (i=0; i<2; i++)
				if (!isNumberString(ar[i]))
					return false;
			hh2=parseInt(ar[0]);
			mm2=parseInt(ar[1]);
		}
	}
	
	date1 = new Date(yy1, m1, dd1, hh1, mm1, 0, 0);
	date2 = new Date(yy2, m2, dd2, hh2, mm2, 0, 0);
	
	return (date1.getTime()<date2.getTime());
}