// JavaScript Document

/* Add method trim() into string object*/
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function getallelement(f){
	for(e=0;e<f.elements.length;e++){
		var fe=f.elements[e];
		msg+="- "+e+"("+fe.id+") : "+fe.type+" = "+fe.value+'\n';
	}
	alert(msg);//return false;	
}

function selectAll(elem){
	elem.focus();
	elem.select();
}

//check / uncheck  for checkbox list
function checkAll(name,set_to){
// name is Name of Target elements
// set_to is TRUE or FALSE 
	var checks = document.getElementsByName(name);
	var boxLength = checks.length;
	for ( i=0; i < boxLength; i++ ) {
        checks[i].checked = set_to;
    }
}

//set value to hiden field and submit form
function makeMode(value){
	rs=confirm("Are you sure for "+value+" Selected item.");
	if(rs==true){
		var elem=document.getElementById('mode');
		elem.value=value;
		elem.form.submit();
		return true;
	}else return false;
}

//set form method
function form_set_method(frm,method_str){
	frm.method=method_str;
}
//set form mode , use for action to php function
function form_set_elem_value(elem,value){
	elem.value=value;
}
/**--------------------------------------------------------------
Begin Function for AJAX
*/

function startLoading() {
  // First we want to show the loading window then hide the content are we are loading into.
  //alert(document.getElementById('rs_ajax').value);
  Element.show("mainAreaLoading");
  Element.hide("mainAreaInternal");
}

function finishLoading() {
  setTimeout("Effect.toggle('mainAreaLoading');", 500);
}

function loadContent(frm) {
  // We make use of the Ajax.Updater function to load the external data from our file.
  // Start the loading window first by calling the function we made previously.
  //alert(document.getElementById('rs_ajax').value);
  startLoading();
new Ajax.Updater('mainAreaInternal', 'ajax_chk_back_link.php', {asynchronous:true, parameters:Form.serialize(frm),onComplete: succesRetourAjax});
}

function succesRetourAjax (t)
{
 	finishLoading();
	//alert(t.responseText);
 	document.getElementById('rs_ajax').value=t.responseText;
	document.getElementById('frm').submit();		
  // alert(t.responseText);
}

//show or hide input field for make new cateogires
function otherCat(val){
	if(val=='other') Element.show("other_cat");
	else Element.hide("other_cat");
}

//plus click statistic when click on the link with ajax
function lclick(id,url){
	new Ajax.Updater('clk'+id, url, {method: "post", postBody:"id="+id});
}
//update how many click with return value from ajax lclick();


/**----------------------------------------------------------------
Begin Function for Validatae Form
*/

// If the element's string matches the regular expression it is all numbers
function isNumeric(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var numericExpression = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	if(sign==true)	
	    numericExpression = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{

		return false;
	}
}

// If the element's string matches the regular expression it is all integer
// secound agrument. if true the allowed -,+ in front
function isInt(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var intExpression =	/^\d+$/;
	if(sign==true)	
	    intExpression =	/^(\+|-)?\d+$/
	if(elem.value.match(intExpression)){
		return true;
	}else{

		return false;
	}
}

// If the element's string matches the regular expression it is all float
function isFloat(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var floatExpression = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	if(sign==true)	
	    floatExpression = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/;
	if(elem.value.match(floatExpression)){
		return true;
	}else{

		return false;
	}
}
// If the element's string matches the regular expression it is all letters
function isAlphabet(elem){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression it is numbers and letters
function isAlphanumeric(elem){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression for zip code 
//it is numbers and letters and space
function isZip(elem){
	var alphaExp = /^[0-9a-zA-Z-+\s]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression for telephone number
//it is numbers and letters and space
function isTel(elem){
	var alphaExp = /^[0-9-+\s]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// check length of element value
function isLength(elem, lmin, lmax){
	var uInput = elem.value;
	if(uInput.length >= lmin && uInput.length <= lmax){ //correct
		return true;
	}else{//incorrect

		return false;
	}
}

//check Checked Checkbox
function isChecked(elem){
	var len= elem.length;
	var c=false;
	for(var i=0; i<len; i++){
		if(elem[i].checked==true){
			c=true; break;
		}
	}
	if(c==true){
		return true;
	}else{
		return false;
	}
}

//check selected listbox
function isSelected(elem){
	if(elem.value == "" || elem.value=='undefined'){ //empty selected value
		return false;
	}else if(elem.selectedIndex==0){//first option be selected
		//The most form is no value for first option
		return false;
	}else{
		return true;
	}
}

//check email pattern
function isEmail(elem){
	var emailExp = /^[a-zA-Z_]+[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	elem.value=elem.value.trim();
	if(elem.value.match(emailExp)){

		return true;
	}else{

		return false;
	}
}

//check URL pattern
function isURL(elem){
	var urlExp=/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z0-9]{1,6}((:[0-9]{1,5})?\/.*)?$/i;
	elem.value=elem.value.trim();
	if(elem.value.match(urlExp)){		return true;
	}else{		return false;	}
}

//check HTML TAG pattern
function isTag(elem){
	var tagExp = /[<>]/;
	elem.value=elem.value.trim();
	if(elem.value.match(tagExp)){		return true;
	}else{		return false;	}
}

//check empty field  . if empty return true
function isEmpty(elem) {
	elem.value=elem.value.trim();
   	if ((elem.value.length==0) || (elem.value=="") || (elem.value==null))  
		return true;  //empty field return true
   	else { 
   	  	return false; //not empty return false
   	}
}	

/*Function for comparetion date
  option '=' : d1==d2
  		 '>' : d1>d2
		 '<' : d1<d2
  Return true when pasted input date form today
*/
function dateCompare(d1,d2,opt){
	var rs=false;
		Date1=new Date(); 
		var temp = new Array(); // create array object
		temp = d1.split('-'); 
		Date1.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		Date2=new Date(); 
		var temp = new Array(); // create array object
		temp = d2.split('-'); 
		Date2.setFullYear(temp[2],(temp[1]-1),temp[0]);
		
		if(opt==null) opt='=';
		switch(opt){
			case '=' : 
					if(Date1==Date2) rs=true;
					break;
			case '>' :  
					if(Date1>Date2)	rs=true;
					break;
			case '<' : 
					if(Date1<Date2)	rs=true;
					break;
			default : rs=false;
					break;
		}
	return rs;

}

/*Function for check date is the past date or not
  Return true when pasted input date form today
*/
function isPastDate(elem){
	if(!isEmpty(elem)){
		curDate=new Date(); // get today date
		myDate = new Date(); // create date object
		
		uDate=elem.value;
		var temp = new Array(); // create array object
		temp = uDate.split('-'); 
		myDate.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		if(myDate<curDate){
		
			return true;
		}else {
		
			return false;
			
		}
	}else 	{
		
		return false;
		}
}

function isFutureDate(elem){
	if(!isEmpty(elem)){
		curDate=new Date(); // get today date
		myDate = new Date(); // create date object
		
		uDate=elem.value;
		var temp = new Array(); // create array object
		temp = uDate.split('-'); 
		myDate.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		if(myDate>=curDate){
		
			return true;
		}else {
		
			return false;
		}
	}else{ 	
		
		return false;
	}
}

function isUsername(elem){
	var usExp =  /^[a-zA-Z0-9_-]{3,20}$/;
	elem.value=elem.value.trim();
	if(elem.value.match(usExp))	
		return true;
	else
		return false;
}

/**-----------------------------------------------------------------
form validate function
*/
function chk_equiptment_num(elem){
	if(!isEmpty(elem) && !isInt(elem)){
		elem.value="";
		alert("Please use Numbers only.");	
		elem.focus();
	}
}

/*	check change password form */
function chk_change_password_frm(f){
	var msg="";
	if(isEmpty(f.cpasswd)){
		msg+="Please enter Current password. \n";	
		selectAll(f.cpasswd);
	}
	if(isEmpty(f.passwd)){
		msg+="Please enter New password. \n";	
		selectAll(f.passwd);
	}else if(!isLength(f.passwd, 4, 16)){// too short or too long
		msg+="Password lenght is 4-16 letters.\n";
		selectAll(f.passwd);
	}else if(f.passwd.value!=f.passwd2.value){ //both password not same
		msg+="Both Password is not same. \n";	
		selectAll(f.passwd2);
	}
	if(isEmpty(f.passwd2)){
		msg+="Please enter Re-enter password. \n";	
		selectAll(f.passwd2);
	}
	if(isEmpty(f.captcha)){
		msg+="Please enter Security code. \n";	
		selectAll(f.captcha);
	}
	if(msg!=""){ //have some error
		alert(msg); return false;
	}else return true; //no error
	
}
