/***********************************************************
Cornerstone Javascript Library
Author: Paul Yang
Create Date: 2008-04-10
Last Modify: 2009-03-10
***********************************************************/

//validate select & text fields id prefix with "req-" and title contains text
function validateForm(frm){
	var bValid = true;
	var iCnt = 0;
	var sMsg = "";
	for (var i=0; i<frm.length; i++){
		var fld = frm[i];
		if (isRequiredField(fld)){
			bValid = isBlank(fld) ? false : true;
			if (fld.type == "text"){
				if (!bValid){
					sMsg += "\n- Please enter your " + fld.title;
					highlightField(fld);
					if (iCnt == 0) fld.focus();
					iCnt++;
					continue;
				}

				var lbl = fld.title.toLowerCase();
				if (lbl.indexOf("email") >= 0){
					bValid = isEmail(fld);
				}
				else {
					if (lbl.indexOf("date") >= 0){
						bValid = isDate(fld);
					}
					else {
						if (lbl.indexOf("phone") >= 0){
							bValid = isPhone(fld);
						}
					}
				}

				if (!bValid){
					sMsg += "\n- Please enter a valid " + fld.title;
					if (iCnt == 0) fld.select();
					iCnt++;
				}
			} //end if fld.type=text
			else {
				if (fld.tagName=="SELECT"){
					if (!bValid || fld.value=="-"){
						sMsg += "\n- Please select a " + fld.title + " in the list";
						if (iCnt == 0) fld.focus();
						iCnt++;
					}
				}
			}
		} //end if isRequiredField()
	}

	if (iCnt > 0){
		alert(sMsg + "\n");
	}
	return bValid;
}

function highlightField(field){
	field.style.backgroundColor = "#ffd";
}

function isRequiredField(field){
	with (field){
		if (type){
			return (id.indexOf("req-")==0 && title.length>0);
		}
	}
}

function isBlank(field){
	with (field){
		value = RTrim(value);
		return (value.length == 0);
	}
}

function isEmail(field){
	with (field){
		var apos = value.indexOf("@");
		var dpos = value.lastIndexOf(".");
		if (apos<1 || dpos-apos<2 || value.length-dpos<3){
			return false;
		}
		else
			return true;
	}
}

function isNumber(field){
	var bValid = false;
	if (!isBlank(field) && isNumeric(field)){
		bValid = field.value.indexOf(".")<=0;
	}
	return bValid;
}

function isNumeric(field){
	var n;
	if (typeof(field) == "object")
		n = new Number(field.value);
	else
		n = new Number(field);

	if (isNaN(n))
		return false;
	else
		return true;
}

function isPhone(field){
	return isPhoneNumber(field.value);
}

function isPhoneNumber(phonenumber){
	var st = "1234567890-+( ).";
	var bValid = true;
	var i = 0;
	while (i<phonenumber.length && bValid){
		if (st.indexOf(phonenumber.charAt(i)) < 0){
			bValid = false;
		}
		i++;
	}
	return bValid;
}

function isDate(field){
	var aDate = new Array();
	var dDate = new Date();
	var bValid = false;
	var sDate = field.value;
	if (sDate.indexOf("/") > 0){
		aDate = sDate.split("/");
		// default data format dd/mm/yyyy
		sDate = aDate[1] + "/" + aDate[0] + "/" + aDate[2];
	}
	else {
		// SQL date format yyyy-mm-dd
		if (sDate.indexOf("-")>0 || sDate.indexOf(".")>0){
			aDate = sDate.split("-");
			sDate = aDate[1] + "/" + aDate[2] + "/" + aDate[0];
		}
	}
	// must be year, month & day 3 fields
	if (aDate.length == 3){
		var nMth = aDate[1];
		// test date format mm/dd/yyyy
		if (parseInt(nMth) > 12){
			nMth = aDate[0];
			sDate = nMth + "/" + aDate[1] + "/" + aDate[2];
		}
		// parse the date
		dDate = new Date(sDate);
		if (dDate.getMonth()+1 == nMth)
				bValid = true;
	}
	return bValid;
}

function Trim(str){
	var s = LTrim(str);
	return RTrim(s);
}

function LTrim(str){
	var wspace = " ";
	var s = new String(str);
	var iLen = s.length;	// Get length of string
	var i = 0;
	while (i<iLen && wspace.indexOf(s.charAt(i))>=0)
			i++;
	return s.substring(i, iLen);
}

function RTrim(str){
	var wspace = " ";
	var s = new String(str);
	var i = s.length - 1;	// Get last index
	while (i>=0 && wspace.indexOf(s.charAt(i))>=0)
			i--;
	return s.substring(0, i+1);
}

function SetCookie(Name, Value){
	document.cookie = Name + "=" + Value;
}

function GetCookie(Name){
	var aCookies = document.cookie.split("; ");
	var sVal = "";
	for (var i=0; i<aCookies.length; i++){
		var aCookie = aCookies[i].split("=");
		if (aCookie[0] == Name){
			sVal = aCookie[1];
			break;
		}
	}
	return sVal;
}
