function CValidate(){
	this.m_Exists = m_Exists;
	this.m_isEquality = m_isEquality;
	this.m_isNumber = m_isNumber;
	this.m_isInteger = m_isInteger;	
	this.m_isSpecChar = m_isSpecChar;
	this.m_isFormatDate = m_isFormatDate;
	this.m_isFormatEmail = m_isFormatEmail;
	this.m_isFormatZip = m_isFormatZip;
	this.m_isFormatIdentNo = m_isFormatIdentNo;	
	this.m_isRangeLength = m_isRangeLength;
	this.m_isRangeNumber = m_isRangeNumber;
	this.m_isRangeDate = m_isRangeDate;
	this.m_modTrim = m_modTrim;
	this.m_Alert_x = m_Alert_x;
	}

function m_Exists(varVariant){
	if ((varVariant == "") || (varVariant == null) || (varVariant == 0) || (varVariant == false)){
		return false;
		}
	else{
		return true;
		}
	}

function m_isEquality(varFirst, varSecond){
	if (eval(varFirst) == eval(varSecond)){
		return true;
		}
	else{
		return false;
		}
	}

function m_isNumber(varVariant, varDigAfterDec, varOnlyPlusVal){	
	var intStart = 0;
	var intPoints = 0;
	var intDigits = 0;
	var intCurrentPos = 0;
	varVariant = varVariant + "";
	if ((varVariant.charAt(0) == "-") && !(varOnlyPlusVal)){
		intStart++;
	}
	for (l = intStart; l < varVariant.length; l++){
		intCurrentPos = varVariant.charAt(l);
		if (!(intPoints == "0")){
			intDigits++;
		}
		if (!((intCurrentPos >= "0") && (intCurrentPos <= "9")) && !(intCurrentPos == ".")){
			return false;
		}
		else if (intCurrentPos == "."){
			intPoints++;
		}
	}
	if (intPoints == "0"){
		return true;
	}
	else if (intPoints == "1"){
		if (intDigits <= varDigAfterDec){
			return true;
		}
		else{
			return false;
		}
	}
	else{
		return false;
	}	
}

function m_isInteger(varVariant){
	var intStart = 0;
	var intCurrentPos = 0;
	varVariant = varVariant + "";
	if (varVariant.charAt(0) == "-"){
		intStart++;
	}
	for (l = intStart; l < varVariant.length; l++){
		intCurrentPos = varVariant.charAt(l);
		if (!((intCurrentPos >= "0") && (intCurrentPos <= "9"))){
			return false;
		}
	}
	return true;
}

function m_isSpecChar(strText, strBadString){
	var arrBadString = new Array();
	strText = strText + "";
	if (!strBadString){
		arrBadString[0] = "\'";
		arrBadString[1] = "\<";
		arrBadString[2] = "\>";
		arrBadString[3] = "\\";
		arrBadString[4] = "\/";
		arrBadString[5] = "\;";	
		arrBadString[6] = "\:";
		arrBadString[7] = "\{";
		arrBadString[8] = "\}";
		arrBadString[9] = "\$";
		arrBadString[10] = "\%";
		arrBadString[11] = "\&";
		arrBadString[12] = "\!";
		arrBadString[13] = "\#";
		/*
		arrBadString[0] = "\|";
		arrBadString[1] = "\'";
		arrBadString[2] = "\"";
		arrBadString[3] = "\\";
		arrBadString[4] = "\/";
		arrBadString[5] = "\<";
		arrBadString[6] = "\>";
		arrBadString[7] = "\+";
		arrBadString[8] = "\=";
		arrBadString[9] = "\&";
		arrBadString[10] = "\^";
		arrBadString[11] = "\~";
		arrBadString[12] = "\@";
		arrBadString[13] = "\%";
		arrBadString[14] = "\#";
		arrBadString[15] = "\*";
		arrBadString[16] = "\$";
		arrBadString[17] = "\;";				
		arrBadString[18] = "\?";
		arrBadString[19] = "\!";
		arrBadString[20] = "\{";
		arrBadString[21] = "\}";
		arrBadString[22] = "\(";
		arrBadString[23] = "\)";
		arrBadString[24] = "\[";
		arrBadString[25] = "\]";
		*/
	}
	else{
		arrBadString[0] = strBadString;
	}

	for (l = 0; l < arrBadString.length; l++){
		if (strText.indexOf(arrBadString[l]) >= 0){
			return false;
		}
	}

	return true;
}

function m_isFormatDate(strDate, charDelim){
	var intMaxDays;
	var arrDateSet = strDate.split(charDelim);		
	var intMonth = 1;
	var intDay = 0;
				
	if (arrDateSet.length != 3){
		return false;
	}
	else if ((arrDateSet[2].length != 4) || (!m_isInteger(arrDateSet[2]))){		
		return false;
	}
		
	switch(parseInt(arrDateSet[intMonth])){		
		case 2:
			var boolLeap = m_isInteger(eval(arrDateSet[2] / 4));
			var boolMill = m_isInteger(eval(arrDateSet[2] / 1000));
			if ((boolLeap) && (boolMill)){
				intMaxDays = 29;
				}
			else{
				intMaxDays = 28;
				}
			break
		case 4:
			intMaxDays = 30;
			break
		case 6:
			intMaxDays = 30;
			break				
		case 9:
			intMaxDays = 30;
			break	
		case 11:
			intMaxDays = 30;
			break
		default:
			intMaxDays = 31;
			break
		}
	
	if ((arrDateSet[intMonth] > 12) || (arrDateSet[intMonth] < 1) || (!m_isInteger(arrDateSet[intMonth])) || 
		(arrDateSet[intDay] > intMaxDays) || (arrDateSet[intDay] < 1)  || (!m_isInteger(arrDateSet[intDay]))){
		return false;
		}
	return true;
	}

function m_isFormatEmail(strEmail){	
	var arrEmail = strEmail.split("@");
	if ((arrEmail.length != 2) || (!m_isSpecChar(arrEmail[0])) || 
		(arrEmail[1].indexOf(".") <= 0) ||	(arrEmail[1].indexOf(".") == arrEmail[1].length - 1) || (!m_isSpecChar(arrEmail[1]))){
		return false;
	}
	return true;
}

function m_isFormatZip(strValue){
	strValue = strValue + "";	
	if ((strValue.length == 4) && (m_isInteger(strValue))){
		return true;
	}
	return false;	
}

function m_isFormatIdentNo(varIdentNo, varType){
	varIdentNo = varIdentNo + "";
	if (varType == 1){
		return ((varIdentNo.length == 9 || varIdentNo.length == 13) && (m_isInteger(varIdentNo.substr(0, 9))));
	}
	else{
		return ((varIdentNo.length == 10) && (m_isInteger(varIdentNo.substr(0, 10))));
	}
}

function m_isRangeLength(strText, intMax, intMin){
	strText = strText + "";
	if (!m_Exists(intMin)){
		if (strText.length <= intMax){
			return true;
		}
	}
	else{
		if ((strText.length <= intMax) && (strText.length >= intMin)){
			return true;
		}
	}
	return false;
}

function m_isRangeNumber(intNumber, intMax, intMin)
{	
	if (isNaN(intNumber)){
		return false;
	}
	else if (!m_Exists(intMin)){
		if (intNumber <= intMax){
			return true;
		}			
	}
	else{
		if ((intNumber <= intMax) && (intNumber >= intMin)){
			return true;
		}			
	}
	return false;			
}

function m_isRangeDate(strDate, charDelim, strType, strBefore, strAfter){
	var arrDateSet = strDate.split(charDelim);	
	if (strType == "EU"){
		var intMonth = 1;
		var intDay = 0;
		}		
	else{
		var intMonth = 0;
		var intDay = 1;
		}
		
	if (!m_Exists(strBefore)){
		var dateToday = new Date();
		arrBeforeCheck[0] = dateToday.getMonth() + 1;
		arrBeforeCheck[1] = dateToday.getDay();
		arrBeforeCheck[2] = dateToday.getYear() - 18;
		}
	else{
		var arrBeforeSet = strBefore.split(charDelim);
		arrBeforeCheck[0] = parseInt(arrBeforeSet[intMonth]);
		arrBeforeCheck[1] = parseInt(arrBeforeSet[intDay]);
		arrBeforeCheck[2] = parseInt(arrBeforeSet[2]);
		}
	
	if (arrDateSet[2] > arrBeforeCheck[2]){
		return false;
		}
	else if (arrDateSet[2] == arrBeforeCheck[2]){
		if (arrDateSet[intMonth] > arrBeforeCheck[0]){
			return false;
			}
		else if (arrDateSet[intMonth] == arrBeforeCheck[0]){
			if (arrDateSet[intDay] > arrBeforeCheck[1]){
				return false;
				}
			}
		}
	
	if (m_Exists(strAfter)){
		var arrAfterCheck = new Array();
		var arrAfterSet = strAfter.split(charDelim);
		arrAfterCheck[0] = parseInt(arrAfterSet[intMonth]);
		arrAfterCheck[1] = parseInt(arrAfterSet[intDay]);
		arrAfterCheck[2] = parseInt(arrAfterSet[2]);

		if (arrDateSet[2] < arrAfterCheck[2]){
			return false;
			}
		else if (arrDateSet[2] == arrAfterCheck[2]){
			if (arrDateSet[intMonth] < arrAfterCheck[0]){
				return false;
			}
			else if (arrDateSet[intMonth] == arrAfterCheck[0]){
				if (arrDateSet[intDay] < arrAfterCheck[1]){
					return false;
					}
				}
			}
		}
		
	return true;
	}

function m_modTrim(strText){
	var arrWhiteSpace = new Array();	
	arrWhiteSpace[0] = " ";
	arrWhiteSpace[1] = "\r";
	arrWhiteSpace[2] = "\t";
	arrWhiteSpace[3] = "\n";
	
	var y = 0;
	var lTrim = 0;
	var rTrim = 0;
	var l = strText.length;
	
	while ((y <= (l - 1)) && ((strText.charAt(y) == arrWhiteSpace[0]) || (strText.charAt(y) == arrWhiteSpace[1]) || (strText.charAt(y) == arrWhiteSpace[2]) || (strText.charAt(y) == arrWhiteSpace[3]))){
			y = y + 1;
			lTrim = lTrim + 1;
	}
	
	y = l -1;
	while ((y >= 0) && ((strText.charAt(y) == arrWhiteSpace[0]) || (strText.charAt(y) == arrWhiteSpace[1]) || (strText.charAt(y) == arrWhiteSpace[2]) || (strText.charAt(y) == arrWhiteSpace[3]))){
			y = y - 1;
			rTrim = rTrim + 1;
	}
	
	if (lTrim > 0){
		strText = strText.substr(lTrim, strText.length - lTrim);
	}
	if (rTrim > 0){
		strText = strText.substr(0, strText.length - rTrim);
	}
	
	return strText;
}
	
function m_Alert_x(strAlert, objFormElement){
	window.alert(strAlert);
	if (m_Exists(objFormElement)){
		objFormElement.focus();
		}
	}		
