/**
 * ------------------------------------------------------
 * Form validate functions
 * ------------------------------------------------------
 */
 
/**
 * Check field in form not Null
 *
 * Add By Shaorui at 2010-06-07
 * @return Error message
 */
function form_field_check(Field_ID, MSG){
	var error_msg = '';	
	var field_value = $("#" + Field_ID).val();
	
	//trim
	field_value = trim_JS(field_value);
	
	//check not empty
	if( field_value == '' ){
		error_msg += MSG + ' must be provided.<br>';
		$("#" + Field_ID).addClass('error_field');
	}else{
		$("#" + Field_ID).removeClass('error_field');
	}
	
	return error_msg;
}


/**
 * Check radio in form is checked
 *
 * Add By Shaorui at 2010-07-27
 * @return Error message
 */
function form_field_radio_check(Field_Name, MSG){
	var state = false;
	var error_msg = '';	
	
	//radio object and length
	var radio_obj = document.getElementsByName(Field_Name);
	var radio_len = radio_obj.length;
	
	//loop
	for( var i=0; i<radio_len; i++ ){
		if( radio_obj[i].checked ){
			state = true;
		}
	}
	
	//check whether checked
	if( !state ){
		error_msg += MSG + ' must be provided.<br>';
	}
	
	return error_msg;
}


/**
 * Check checkbox in form is checked
 *
 * Add By Shaorui at 2010-08-03
 * @return Error message
 */
function form_field_checkbox_check(Field_Name, MSG){
	var state = false;
	var error_msg = '';	
	
	//checkbox object and length
	var checkbox_obj= document.getElementsByName(Field_Name);
	var checkbox_len = checkbox_obj.length;
	
	//loop
	for( var i=0; i<checkbox_len; i++ ){		
		if( checkbox_obj[i].checked ){
			state = true;
		}
	}
	
	//check whether checked
	if( !state ){
		error_msg += MSG + ' must be provided.<br>';
	}
	
	return error_msg;
}


/**
 * Check select in form is checked
 *
 * Add By Shaorui at 2010-11-11
 * @return Error message
 */
function form_field_select_check(Field_ID, MSG){
	var state = false;
	var error_msg = '';	
	
	//checkbox object and length
	var select_obj= document.getElementById(Field_ID);
	var select_val = select_obj.value;
	
	//check whether checked
	if( select_val=='' ){
		error_msg += MSG + ' must be provided.<br>';
	}
	
	return error_msg;
}


/**
 * Check email address not empty and whether a correct format
 *
 * Add By Shaorui at 2010-06-07
 * @return Error message
 */
function form_email_check(Field_ID, MSG){
	var error_msg = '';
	
	var email_value = $("#" + Field_ID).val();
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i	
	
	//trim
	email_value = trim_JS(email_value);
	
	//check not empty and is a correct format
	if( email_value == '' ){
		error_msg += MSG + ' must be provided.<br>';
	}else if( !filter.test(email_value) ){
		error_msg += MSG + ' is a wrong format.<br>';
	}
	
	//error field class
	if( error_msg =='' ){
		$("#" + Field_ID).removeClass('error_field');
	}else{
		$("#" + Field_ID).addClass('error_field');
	}
	
	return error_msg;
}


/**
 * Check email address whether a correct format
 *
 * Add By Shaorui at 2010-06-07
 * @return Error message
 */
function email_format_check(Field_ID, MSG){
	var error_msg = '';
	var email_value = $("#" + Field_ID).val();
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	
	//trim
	email_value = trim_JS(email_value);
	
	//check email format
	if (filter.test(email_value)){
		$("#" + Field_ID).removeClass('error_field');
	}else{
		error_msg += MSG + ' is a wrong format.<br>';
		$("#" + Field_ID).addClass('error_field');
	}
	
	return error_msg;
}


/**
 * Check upload file whether a correct format
 *
 * Add By Shaorui at 2010-06-07
 * @return Error message
 */
function file_type_check(Field_ID, Format_Array, MSG){
	var error_msg = '';
	var file_state = false;	
	var file_name = $("#" + Field_ID).val();
	
	//trim
	file_name = trim_JS(file_name);
	
	
	//toLowerCase
	file_name = file_name.toLowerCase();
	
	//check not empty and is a correct format
	if(  file_name == ''  ){
		error_msg += MSG + ' must be provided.<br>';
	}else if( isArray_JS(Format_Array) ){
		//check whether a correct format
		for(var i in Format_Array) {
			
			//format and toLowerCase 
			var format = Format_Array[i];
			format = Format_Array[i].toLowerCase();
			
			if( file_name.indexOf(format) != '-1' ){
				file_state = true;
			}
		}
		
		if( !file_state ){
			error_msg += MSG + ' is a wrong format.<br>';
		}
	}
	
	//error field class
	if( error_msg =='' ){
		$("#" + Field_ID).removeClass('error_field');
	}else{
		$("#" + Field_ID).addClass('error_field');
	}
	
	return error_msg;
}


/**
 * Check upload file whether a correct format
 *
 * Add By Shaorui at 2011-07-22
 * @return Error message
 */
function file_type_check_new(Field_ID, Format_Array, MSG){
	var error_msg = '';
	var file_state = false;	
	var file_name = $("#" + Field_ID).val();
	
	//trim
	file_name = trim_JS(file_name);
	
	
	//toLowerCase
	file_name = file_name.toLowerCase();
	
	//check not empty and is a correct format
	if(  file_name == ''  ){
		//error_msg += MSG + ' must be provided.<br>';
	}else if( isArray_JS(Format_Array) ){
		//check whether a correct format
		for(var i in Format_Array) {
			
			//format and toLowerCase 
			var format = Format_Array[i];
			format = Format_Array[i].toLowerCase();
			
			if( file_name.indexOf(format) != '-1' ){
				file_state = true;
			}
		}
		
		if( !file_state ){
			error_msg += MSG + ' is a wrong format.<br>';
		}
	}
	
	//error field class
	if( error_msg =='' ){
		$("#" + Field_ID).removeClass('error_field');
	}else{
		$("#" + Field_ID).addClass('error_field');
	}
	
	return error_msg;
}

/**
 * ------------------------------------------------------
 * Public functions in JS
 * ------------------------------------------------------
 */

/**
 * Trim a string
 *
 * Add By Shaorui at 2010-06-07
 * @return string
 */
function trim_JS(string){   
	//trim left space
	while( (string.length>0) && (string.charAt(0)==' ') ){
		string = string.substring(1, string.length); 
	}
	
	//trim right space
	while( (string.length>0) && (string.charAt(string.length-1)==' ') ){
		string = string.substring(0, string.length-1);
	}
	   
	return string;   
}


/**
 * Check whether array
 * 
 * Add By Shaorui at 2010-06-07
 * @param object
 */
function isArray_JS(object){
	return object != null && typeof object == "object" && 'splice' in object && 'join' in object;
}


/**
 * Check whether in array
 * 
 * Add By Shaorui at 2010-06-07
 * @param needle
 * @param haystack
 */
function in_array_JS(needle, haystack) {
	//check needle
	if(typeof needle == "string" || typeof needle == "number") {
		//check in array
		for(var i in haystack) {
			if(haystack[i] == needle) {
				return true;
			}
		}
	}else{
		return false;
	}
}


/**
 * Check whether number only  -- int
 * 
 * Add By Shaorui at 2010-08-11
 * @param Field_ID
 * @param MSG
 */
function form_field_number_check(Field_ID, MSG){
	var error_msg = '';	
	var field_value = $("#" + Field_ID).val();
	
	//trim
	field_value = trim_JS(field_value);
	
	//check not empty
	if( field_value == '' ){
		error_msg += MSG + ' must be provided.<br>';
		$("#" + Field_ID).addClass('error_field');
	}else{
		var filter = /^[0-9]*$/i;
		if ( filter.test(field_value) )
			$("#" + Field_ID).removeClass('error_field');
		else{
			error_msg += MSG + ' must be a number.<br>';
			$("#" + Field_ID).addClass('error_field');
		}
		
	}
	
	return error_msg;
}


/**
 * Check whether number only  -- float
 * 
 * Add By Shaorui at 2010-09-01
 * @param Field_ID
 * @param MSG
 */
function form_field_float_check(Field_ID, MSG){
	var error_msg = '';	
	var field_value = $("#" + Field_ID).val();
	
	//trim
	field_value = trim_JS(field_value);
	
	//check not empty
	if( field_value == '' ){
		error_msg += MSG + ' must be provided.<br>';
		$("#" + Field_ID).addClass('error_field');
	}else{
		var filter = /^[0-9]*$/i;
		//var filter_2 = /^[0-9]+(.[0-9]{2})?$/i;
		var filter_2 = /^[0-9]+(.[0-9]*)?$/i;
		if ( filter.test(field_value) || filter_2.test(field_value) )
			$("#" + Field_ID).removeClass('error_field');
		else{
			error_msg += MSG + ' must be a number.<br>';
			$("#" + Field_ID).addClass('error_field');
		}
		
	}
	
	return error_msg;
}

/**
 * Change 'Y-m-d' to timestamp
 *
 * Add By Shaorui at 2010-08-24
 * @return Timestamp
 */
function getJSTimestamp(date){
	var arr = times.split("-");
    var datum = new Date(Date.UTC(arr[0],arr[1],arr[2],0,0,0));
	var timeint=datum.getTime()/1000;
	return timeint;
}


/**
 * Change date to timestamp
 *
 * Add By Shaorui at 2010-08-24
 * @return Timestamp
 */
function getJSTimestampAll(date){
	var JS_date =new Date(date.replace(/-/g,"/"));
	var timestamp = JS_date.getTime()/1000;
	return timestamp;
}
