//cat khoang trang dau va cuoi chuoi
function trimString(string) {
	if (string==null || string.length<1) return '';
	var start; start=0;
	var end; end = string.length-1;
	while ((start<=end) && (string.charAt(start)==" " || string.charCodeAt(start)==13 || string.charCodeAt(start)==10)) start++;
	while ((end>start) && (string.charAt(end)==" " || string.charCodeAt(end)==13 || string.charCodeAt(end)==10)) end--;
	if (start>end) return '';
	return string.slice(start,end+1);
}
function myParseInt(value) {
	if (value==null || value=='') return parseInt('');
	var i; i=0;
	while (i<value.length) {
		if (value.substr(i,1)=='0') i++;
		else break;
	}
	if (i<value.length) return parseInt(value.substr(i));
	else return parseInt(value);
}

function validNumberFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9")|| (code == ".") || (code == "-" && i==0))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}
function validPriceFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9")|| (code == "."))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}
function validIntFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9") || (code == "-"))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}
//so nguyen duong :
function validIntPositiveFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9"))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}
//datatype : smallint, tinyint
function validDataType(datatype,value)
{
	var valid, code, i;
	valid=true;
	if(datatype=='tinyint')
	{
		if(value>255||value<=0)
			valid=false;
		for (i=0; i<value.length; i++) {
			code = value.charAt(i);
			if (!((code >= "0" && code <= "9"))) { 
				valid=false; 
				break; 
			}
		}
	}
	else if(datatype=='smallint')	
	{
		if(value>32767||value<=0)
			valid=false;
		for (i=0; i<value.length; i++) {
			code = value.charAt(i);
			if (!((code >= "0" && code <= "9"))) { 
				valid=false; 
				break; 
			}
		}
	}
	return valid;
	
}
function validInteger(value) {
	if(!validIntFormat(value))return false;
	if(isNaN(parseInt(value)))return false;
	return true;
}
function validNumber(value) {
	if (!validNumberFormat(value)) return false;
	if (isNaN(parseFloat(value))==true) return false;
	return true;
}

function validDate(s){
	var i = 0;
	var d, m, y;
	var separate = "/";
		m = s.substr(0,s.indexOf(separate));
		s = s.substr(s.indexOf(separate) + 1);
		d = s.substr(0,s.indexOf(separate));
		y = s.substr(s.indexOf(separate) + 1);
	if (!validIntFormat(m) || isNaN(parseInt(m)) || m<1 || m>12) {return false;} 		
	if (!validIntFormat(y) || isNaN(parseInt(y)) || y<1900 || y.length>9999) {return false;} 
	if (!validIntFormat(d) || isNaN(parseInt(d)) || d<1 || d>31) { return false;} 	
	if (((m == 4)||(m == 6)||(m == 9)||(m == 11))&&(d > 30)){return false;}
	if (m == 2){
			if (y%4 == 0){
				if ((y%100 != 0)||(y%400 == 0)) {	if (d > 29) {return false; }	}
				else if (d > 28){ return false;	}
			}
			else {	if (d > 28){ return false;	}	}
	}
	return true;
}


function validEmail(value) {
	/*
		Email Address's Format: username@subdomain.domain
		Email Address must be include 3 part:
			part 1: username
			part 2: @
			part 3: <domainname[.domainname,...]>.<domainname>
	*/
	if (value==null || value=="")	return true;
	if (value.indexOf(" ")>=0)		return false;

	var state, code, username, domain, amountOfDot, i;
	state = 1; username=''; domain=''; amountOfDot = 0;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (state==1) {
			if (	code == "<" || code == ">" 
					|| code == "(" || code == ")"	) return false;
			else if (	code == "@"	)
				if (username == '') return false;
				else state = 3;
			username += code;
		}
		else if (state==3) {
			if (	(code >= "0" && code <= "9")
					|| (code >= "A" && code <= "Z")
					|| (code >= "a" && code <= "z")
					|| code == "_"
					|| code == "-"
				) ;
			else if (code == ".")
				if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
				else amountOfDot++;
			else return false;
			domain += code;
		}
	}
	if (state != 3) return false;
	if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
	if (amountOfDot <1) return false;
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
// type=0: field allow null
// type=1: field not allow null 
function IsNull (field,fieldname){
	if (trimString(field.value)=='') {
		alert('Please enter value (Field ' + fieldname + ')');
		field.focus();
		return false;
	}
	return true;
}
function validComboBox(cb,fieldname) {
	if (cb.selectedIndex <= 0 ) 
		{
			if (!cb.disabled) 
				alert('Please enter value (Field ' + fieldname + ')');			
				cb.focus();
			return false;
		}
		return true;
	}
function ValidDateFromTo(From,To) {
	var fd, fm, fy, td, tm, ty;
	var fs=From,ts=To;
	var separate = "/";
	//parse FromDate
	fm = fs.substr(0,fs.indexOf(separate));
	fs = fs.substr(fs.indexOf(separate) + 1);
	fd = fs.substr(0,fs.indexOf(separate));
	fy = fs.substr(fs.indexOf(separate) + 1);
	//parse ToDate 
	tm = ts.substr(0,ts.indexOf(separate));
	ts = ts.substr(ts.indexOf(separate) + 1);
	td = ts.substr(0,ts.indexOf(separate));
	ty = ts.substr(ts.indexOf(separate) + 1);
	//alert(fm+'/'+fd+'/'+fy +'__'+tm+'/'+td+'/'+ty) ;
	if (fy > ty) return false; //year
	if (fy == ty) {
	if (fm>tm) return false;
	if (fm==tm && fd > td) return false;
	}
	return true; 
}	
	//kiem tra du lieu tra`n:
function isDataType(datatype,field, fieldname)
{
	if(datatype=='smallint')
	{
		if(field.value<=0 || field.value >32767)
		{
			alert('Overflow DataType (From 1 To 32767) (Field ' + fieldname + ')');
			field.focus();
			return false;
		}
	}
	if(datatype=='tinyint')
	{
		if(field.value<=0 || field.value >255)
		{
			alert('Overflow DataType (From 1 To 255)(Field ' + fieldname + ')');
			field.focus();
			return false;
		}
	}
	return true;
}
function IsPositiveInt(type,field,fieldname) {
	var fieldVal ;
	fieldVal = trimString(field.value);
	if (type==0) 
		if (fieldVal!='') 
			if (!validIntPositiveFormat(fieldVal) || isNaN(parseInt(fieldVal))) {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validIntPositiveFormat(fieldVal) || isNaN(parseInt(fieldVal)) || fieldVal=='') {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
// Price 
function IsPrice(type,field,fieldname) {
	var fieldVal ;
	fieldVal = trimString(field.value);
	if (type==0) 
		if (fieldVal!='') 
			if (!validPriceFormat(fieldVal) || isNaN(parseInt(fieldVal))) {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validPriceFormat(fieldVal) || isNaN(parseInt(fieldVal)) || trimString(fieldVal)=='') {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}	

function IsNumber(type,field,fieldname) {
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validIntFormat(field.value) || isNaN(parseInt(field.value))) {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validIntFormat(field.value) || isNaN(parseInt(field.value)) || trimString(field.value)=='') {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
function IsPhoneNumber(type,field,fieldname) {
	if (field.value.charAt(0)<0 || field.value.charAt(0)>9) return false;
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validIntFormat(field.value) || isNaN(parseInt(field.value))) {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validIntFormat(field.value) || isNaN(parseInt(field.value)) || trimString(field.value)=='') {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
function IsNumeric(type,field,fieldname) {
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validNumberFormat(field.value) || isNaN(parseFloat(field.value))) {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validNumberFormat(field.value) || isNaN(parseFloat(field.value)) || trimString(field.value)=='') {
				alert('Please enter Number (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
function IsPIN(field,fieldname,minlength,maxlength) {
		var s = trimString(field.value);
		if (s.length<minlength || s.length>maxlength) {
			alert('Please enter PIN with ' + minlength + ' to ' + maxlength + ' digits (Field ' + fieldname + ')');
			field.focus();
			return false;
		}
		if (field.value.charAt(0)<0 || field.value.charAt(0)>9) return false;
		if (!validIntFormat(field.value) || isNaN(parseInt(field.value)) || trimString(field.value)=='') {
				alert('Please enter PIN with number only (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
function IsOCNumber(field,fieldname,length) {
		var s = trimString(field.value);
		if (s.length != length) {
			alert('Please enter OC Number with ' + length + ' digits (Field ' + fieldname + ')');
			field.focus();
			return false;
		}
		if (field.value.charAt(0)<0 || field.value.charAt(0)>9) return false;
		if (!validIntFormat(field.value) || isNaN(parseInt(field.value)) || trimString(field.value)=='') {
				alert('Please enter PIN with number only (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
function IsEmail(type,field,fieldname) {
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validEmail(field.value)) {
				alert('Please enter valid email address(Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validEmail(field.value) || trimString(field.value)=='') {
				alert('Please enter valid email address (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
//check format mm/dd/yyyy
function IsDate(type,field,fieldname) {
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validDate(field.value)) {
				alert('Please enter valid date with format mm/dd/yyyy (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validDate(field.value) || trimString(field.value)=='') {
				alert('Please enter valid date with format mm/dd/yyyy (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}
//check IP with format 'xxx.xxx.xxx.xxx'
function validIP(IP) {
	if (IP==null || IP.value=="") return false;
	if (IP.value.length<7 || IP.value.length>15) return false;
	arr = IP.value.split('.');
	if (arr.length!=4) return false;
	arr[0] = myParseInt(arr[0]); arr[1] = myParseInt(arr[1]); arr[2] = myParseInt(arr[2]);arr[3] = myParseInt(arr[3]);
	if (isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])|| isNaN(arr[3])) return false;
	if  ((arr[0]<1 || arr[0]>255) || (arr[1]<0 || arr[1]>255) ||(arr[2]<0 || arr[2]>255) ||(arr[3]<0 || arr[3]>255)) return false;
	return true;
}
function IsIPAddress(type,field,fieldname) {
	if (type==0) 
		if (trimString(field.value)!='') 
			if (!validIP(field)) {
				alert('Please enter Valid IP Address (Field ' + fieldname + ')');
				field.focus();
				return false;
			}
	if (type==1)
		if (!validIP(field) || trimString(field.value)=='') {
				alert('Please enter Valid IP Address (Field ' + fieldname + ')');
				field.focus();
				return false;
		}	
	return true;	
}

function displayWindow(url, name, width, height) {
	var _left, _top;
	var newWin, feature;
	if (document.all) {
		_left = (screen.width - width)/2;
		_top = (screen.height - height)/2;
	} else {
		_left = (800 - width)/2;
		_top = (600 - height)/2;
	}
	feature = 'width=' + width + ',height=' + height + ',left=' + _left + ',top=' + _top;
	if (width >= 500 && height >= 300) feature += ',resizable=yes, location=no, menubar=no, scrollbars=yes,status=no, toolbar=no';
	else feature += ',resizable=no, location=no, menubar=no, scrollbars=yes, status=no, toolbar=no';
	newWin = window.open(url, name, feature);
	if (newWin) {
		newWin.focus();
		return newWin;
	}
	else return null;
}

//goto page :
function gotoPage(pageGo)
{
	if(pageGo>0)
		document.main.page.value=pageGo;
	document.main.submit();	
}
// sort with 
function doOrderBy(orderBy){
	var frm;
	frm = document.main;
	if (frm.SortOrderBy.value == orderBy) {
		if (frm.OrderDirection.value == 'asc')
			frm.OrderDirection.value = 'desc';
		else
			frm.OrderDirection.value = 'asc';
	}
	else
		frm.SortOrderBy.value = orderBy;
//	alert(frm.OrderDirection.value);	
	frm.submit();
}
/* CheckAll or UncheckAll row
   chackName : ten checkbox
   val : bool 
*/
function SetChecked(val) {
	var  i,len,dm;
	dm=document.main;
	len = dm.elements.length;
	for(i=0 ; i<len; i++)
		if (dm.elements[i].name=='deleteMark') dm.elements[i].checked=val;
}
/* 
   Xac nhan Xoa nhung row checked
   CheckName : ten checkbox
   deleteRecordIDs :name text ghi nhan cac value RecorID
*/
function ConfirmDelete(){
	var dm, len, i, haveChecked, RecordIDs;
	dm = document.main;
	len = dm.elements.length;
	haveChecked = false;
	RecordIDs = "";
	for(i=0 ; i<len ; i++) {
		if ((dm.elements[i].name=='deleteMark') && (dm.elements[i].checked)) {
			haveChecked = true;
			RecordIDs += "," + dm.elements[i].value;
		}
	}
	if (haveChecked==false) {
		alert('Please select at least one record!');
		return false;
	}
	if (window.confirm('Do you want to delete these selected entry ?')) {
		dm.deletedRecordIDs.value = RecordIDs.substr(1);
		return true;
	}
			
	return false;
	
}

function ReturnURL(url){
	var frm;
	var s;
	frm = document.main;
	s = frm.action;
	for(i=0;i<frm.elements.length; i++){
		if(i==0 )s+="&" + frm.elements[i].name + "=" + frm.elements[i].value;
		else s+="&" + frm.elements[i].name + "=" + frm.elements[i].value ;
	}	
	document.main.action = url + "&returnURL=" + escape(s);
	document.main.submit();	
}

