/*-------------------------------------------------------------------------------
	* FileName ; $validate.js
	* Function : validative functions
	* CreatedDate : 01/02/2003
	* LastUpdate : 01/03/2003
-------------------------------------------------------------------------------*/

//------------------------------------------------
// Function Name : isEmpty 
// Actions : Check if string is Empty
//------------------------------------------------
function isEmpty(Str) {
	empty = (Str === "") ? true :  false;
	return empty;
}

//------------------------------------------------
// Function Name : isNumber
// Actions : retutn true if Digit is number, false if not 
//------------------------------------------------
function isNumber(Digit) {
	return /^\d+[\.\d*]?$/.test(Digit);
}

//------------------------------------------------
// Function Name : isAlphabet
// Actions : retutn true if Digit is number, false if not 
//------------------------------------------------
function isAlphabet(Digit) {
	return /^[a-zA-Z]$/.test(Digit);
}

//------------------------------------------------
// Function Name : isInteger
// Actions : retutn true if str is Integer, false if not 
//------------------------------------------------
function isInteger(Str) {
	return /^\d+$/.test(Str);
}

//------------------------------------------------
// Function Name : isFloat
// Actions : retutn true if str is Float, false if not 
//------------------------------------------------
function isFloat(Str) {
		return /^[+-]?\d+\.{1}\d*$/.test(Str);
}

//------------------------------------------------
// Function Name : isCurrency
// Actions : retutn true if str is Currency, false if not 
//------------------------------------------------
function isCurrency(Str) {
		return /^\d+[.]{0,1}[0-9]{1,}$/.test(Str);
}

//------------------------------------------------
// Function Name : isDate
// Actions : retutn true if str is Date, false if not - format : mm-dd-yyy OR mm/dd/yyyy
//------------------------------------------------
function isDate(Str) {
	var bool1=/^[0]?\d[\/|-][0-2]\d[\/|-]\d{4}$/.test(Str);		//0x month format 0X-2X date format
	var bool2=/^[1][0-2][\/|-][0-2]\d[\/|-]\d{4}$/.test(Str);	//1x month format 3X date format
	var bool3=/^[1][0-2][\/|-][3][0,1][\/|-]\d{4}$/.test(Str);	
	var bool4=/^[0]?\d[\/|-][3][0,1][\/|-]\d{4}$/.test(Str);
	return ((bool1)||(bool2)||(bool3)||(bool4));
}

//------------------------------------------------
// Function Name : isTime
// Actions : retutn true if str is Time, false if not - format : hh:mm:ss
//------------------------------------------------
function isTime(Str) {
		var bool1 = /^[0-1]?\d:[0-5]\d(:[0-5]\d)?$/.test(Str);
		var bool2 = /^[2][0-3]:[0-5]\d(:[0-5]\d)?$/.test(Str);
		return ((bool1)||(bool2));
}

//------------------------------------------------
// Function Name : isDateTime
// Actions : retutn true if str is Time, false if not - format :  mm-dd-yyy  hh:mm:ss OR mm/dd/yyyy hh:mm:ss
//------------------------------------------------
function isDateTime(Str) {
		var str = RemoveSpace(Str).split(' ');
		return isDate(str[0]) && isTime(str[1]);
}

//------------------------------------------------
// Function Name : isDomain
// Actions : retutn true if str is domain, false if not.
//------------------------------------------------
function isDomain (Str) {
	var specialChars="\\(\\)<>#\\$&\\*!`\\^\\?~|/@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var ipDomainPat=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
	var IPArray=Str.match(ipDomainPat);
	if (IPArray!=null) {
	 	 for (var i=1;i<=4;i++) {
	    		if (IPArray[i]>255) {
	 			return false
	   		 }
   		 }
	}
	var domainArray=Str.match(domainPat)
	if (domainArray==null) {
    		return false;
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=Str.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) {
		return false;
	}
	if (len<2) {
   		 return false;
	}
	return true;
}

//------------------------------------------------
// Function Name : isOpenDomain
// Actions : retutn true if str is open domain, false if not. (Ex : fpt.vn:82)
//------------------------------------------------
function isOpenDomain (Str) {
	var pos=Str.indexOf(':');
	if (pos==-1) {
		return (isDomain(Str))
	}
	else {
		domain=Str.substring(0,pos);
		openDomain = Str.substring(pos,Str.length);
	}
	return ((/^[\:]{1}\d+$/.test(openDomain))&&(isDomain(domain)));
}

//------------------------------------------------
// Function Name :  isUser 
// Actions : retutn true if str is valid user name for email address, false if not.
//------------------------------------------------
function isUser (Str) {
	var specialChars="\\(\\)<>#\\$&\\*!`\\^\\?~|/@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	if (Str.match(userPat)==null) {
    		return false ;
	}
	return true;
}

//------------------------------------------------
// Function Name :  isURL
// Actions : retutn true if str is valid URL, false if not. (not include http://)
//------------------------------------------------
function isURL(Str) {
	var pos=Str.indexOf('/');
	var domain = (pos==-1)?Str:Str.substring(0,pos);
	var subURL = (pos==-1)?'':Str.substring(pos,Str.length);
	if (!isOpenDomain(domain)) {
		return false;
	}
	if ((subURL=='')||(subURL.length==1)) {
		return true;
	}
	var subPat = /^\/[^\/\\]+\.?[^\/\\]+(\/[^\/\\]*\.{0,1}[^\/\\]*)*$/;
	var ArrayURL=subURL.match(subPat);
	if (ArrayURL==null) {
		return false;
	}
	return true;
}

//------------------------------------------------
// Function Name :  isEmail
// Actions : retutn true if str is valid Email, false if not.
//------------------------------------------------
function isEmail (emailStr) {
	var emailPat=/^(.+)@(.+)$/ ;
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	if (!isUser(user)) {
   		 return false ;
	}
	if (!isDomain(domain)) {
   		return false;
	}
	return true;
}

//------------------------------------------------
// Function Name :  isPhoneNumber
// Actions : retutn true if str is phone number, false if not.
//------------------------------------------------
function isPhone(strPhone) {
	return  /^(\d{6,15})$/.test(strPhone);
}

//------------------------------------------------
// Function Name :  isIE_6
// Actions : retutn true if your browse is IE6, false if not.
//------------------------------------------------
function isIE_6() {
	var sTmp = window.navigator.userAgent;
	if (sTmp.indexOf('MSIE 6.') !=-1) {
		return true;	
	}
	return false;
}

//------------------------------------------------
// Function Name :  checkNumRange
// Actions : retutn true if your your value in (nMin,nMax)
//------------------------------------------------
function checkNumRange (value, nMin,nMax){
	if (!isInteger(value)) return false;
	if (value <nMin || value > nMax ) return false;
	return true;
}

//------------------------------------------------
// Function Name :  isFlash
// Actions : retutn true if fileName is Flash file
//------------------------------------------------
function isFlash(fileName) {
  	if (fileName=='') {
   		return false;   	
  	}
  	var ext = getExtension(fileName).toLowerCase();
  	var e;
	for(e in arrFlashFiles){
		if(arrFlashFiles[e]==ext) return true;
	}
	return false;
}

//------------------------------------------------
// Function Name :  isPix
// Actions : retutn true if fileName is image file
//------------------------------------------------
function isPix(fileName) {
  	if (fileName=='') {
   		return false;   	
  	}
  	var ext = getExtension(fileName).toLowerCase();
  	var e;
	for(e in arrPixFiles){
		if(arrPixFiles[e]==ext) return true;
	}
	return false;
}

//------------------------------------------------
// Function Name :  isMovie
// Actions : retutn true if fileName is Movie file
//------------------------------------------------
function isMovie(fileName) {
  	if (fileName=='') {
   		return false;   	
  	}
  	var ext = getExtension(fileName).toLowerCase();
  	var e;
	for(e in arrMovieFiles){
		if(arrMovieFiles[e]==ext) return true;
	}
	return false;
}

//------------------------------------------------
// Function Name :  isDoc
// Actions : retutn true if fileName is Document file
//------------------------------------------------
function isDoc(fileName) {
  	if (fileName=='') {
   		return false;   	
  	}
  	var ext = getExtension(fileName).toLowerCase();
  	var e;
	for(e in arrDocFiles){
		if(arrDocFiles[e]==ext) return true;
	}
	return false;
}
