/*-------------------------------------------------------------------------------------
Date: 17/08/2006
Author: ThangVQ
File: checkImage.js
Purpose: check all text field in the form
Change: first create
-------------------------------------------------------------------------------------*/
function checklength(value,maxlength){
	if (value.length > maxlength){
		return false;
	}else {
		return true;
	}
}
function checkvalue(value,maxvalue){
	if (value>maxvalue){
		return false;
	}else{
		return true;
	}
}
function isNull(value){
	if (value == ""){
		return true;
	}else{
		return false;
	}
}
function checkchar(value){
	var illegalChars= /[\(\)\<\>\,\!\#\$\%\^|&\*\;\:\ \\\"\'\?\`\~\[\]\]]/;
	if (value.match(illegalChars)){
		return false;
	}else{
		return true;
	}
}
function isEmail(value){
	if (isNull(value)){
		return "null";
	}else if(!checkchar(value)||value.indexOf('@')<1||value.indexOf('.')<1||value.lastIndexOf('@')>value.lastIndexOf('.')||value.indexOf('.')==value.length-1){
		return false;	
	}else {
		return true;
	}
}
function isText(value,maxlength){
	var illegalChars=/[\(\)\<\>\#\$\%\^\&\*\;\:\\\`\~\[\]\]]/;
	if (isNull(value)){
		return "null";
	}else if (!checklength(value,maxlength)){
		return "long";
	}else if (value.match(illegalChars)){
		return false;
	}else {
		return true;
	}
}
function isPhone(value){
	var stripped = value.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
	if (isNull(value)){
		return "null";
	}else if (isNaN(stripped)){
		return false;
	}else {
		return true;
	}
}
function isNumber(value,maxvalue){
	if(isNull(value)){
		return "null";
	}else if (isNaN(value)||!checkvalue(value,maxvalue)){
		return false;
	}else {
		return true;
	}
}
function isDate(value){
	var cur_date = new Date();
	var current = cur_date.getYear()*10000+(cur_date.getMonth()+1)*100+cur_date.getDate();
	
	var year = value.substr(0,4);
	var month = value.substr(5,2);
	var day = value.substr(8,2);
	var date = new Date(year,month,day);
	var date_num = date.getYear()*10000+(date.getMonth())*100+date.getDate();
	
	if (isNull(value)){
		return "null";
	}else if (value.length != 10||isNaN(date_num)){
		return false;	
	}else if (date_num > current){
		return "bigger";		
	}else if (date_num == current){
		return "equal";	
	}else {
		return "smaller";
	}
}
function isFile(value){
	if (isNull(value))	{
		return "null";
	}else if (value.substring(value.length-4,value.length) != ".jpg"){
		return "notjpg";	
	}else if (value.substring(value.length-4,value.length) != ".gif"){
		return "notgif";
	}else {
		return true;	
	}
}
/*--------------------------------------------------------------------------------------------
Date: 17/08/2066
Author: ThangVQ
Function: checkText()
Input: three array: arr_field contains text_field_name in the form
					field_type contains text_field_type. They're: text, phone, email, number
					field_attr contains text_field_attribute. They're: maxlength or maxvalue (for
					number field).
Output: one array: arr_result contains boolean values or a String value "null" if this field is null.
"long" if too long.
Purpose: check all text fields in the form.
---------------------------------------------------------------------------------------------*/
function checkText(arr_field,field_type,field_attr){
	var i = 0;
	var arr_result = new Array();
	for (i=0;i<arr_field.length;i++){
		switch(field_type[i]){
			case "text":
				arr_result[i]=isText(arr_field[i].value,field_attr[i]);
				break;
			case "phone":
				arr_result[i]=isPhone(arr_field[i].value);
				break;
			case "email":
				arr_result[i]=isEmail(arr_field[i].value);
				break;
			case "number":
				arr_result[i]=isNumber(arr_field[i].value,field_attr[i]);
				break;
			case "date":
				arr_result[i]=isDate(arr_field[i].value);
				break;
			case "file":
				arr_result[i]=isFile(arr_field[i].value);
				break;
			default: arr_result[i]=true;
		}
	}
	return arr_result;
}