/*-----------------------------------*/
/* Code by: infiniteLoop			 */
/*-----------------------------------*/

/*-----------------------------------*/
/* Requires: Prototype 1.5 or higher */
/*-----------------------------------*/


//////////////////////////////////////////////////
//////////////// VALIDATE STRING /////////////////
//////////////////////////////////////////////////

function validateString(field, len, msg, allowNull){
	
	if(field==undefined){alert('** Hey Developer: No field reference passed!! ** \n Function: `validateString`');} /* DEBUG */
	if(allowNull==undefined){allowNull='NO';}
	if(len==''||len==undefined){len=3;}
	if(msg==''||msg==undefined){msg='Invalid text. Please check it';}

	if(allowNull=='NO'){
		if(field.value.length < len || field.value == null || /^\s+$/.test(field.value)){
			field.addClassName('errorInput');
			field.activate();
			alert(msg);
			return false;
		}else{
			field.removeClassName('errorInput');
			return true;
		}	
	}
}

//////////////////////////////////////////////////
//////////////// VALIDATE NUMERIC /////////////////
//////////////////////////////////////////////////

function validateNumeric(field, len, msg, allowNull){
	if(field==undefined){alert('** Hey Developer: No field reference passed!! ** \n Function: `validateNumeric`');} /* DEBUG */
	if(allowNull==undefined){allowNull='NO';}
	if(msg==''||msg==undefined){msg='Just numbers allowed. Please check it';}
	if(len==''||len==undefined){len = 0}
		
	if(allowNull=='NO'){
		var regex = /^\d+$/;
		if(field.value.length < len){
			field.addClassName('errorInput');
			field.activate();
			alert('You must type at least '+ len +' numbers');
			return false;
		}else{
			if(regex.test(field.value)==false){
				field.addClassName('errorInput');
				field.activate();
				alert(msg);
				return false;
			}else{
				field.removeClassName('errorInput');
				return true;
			}

		}
		
	}
}

//////////////////////////////////////////////////
//////////////// VALIDATE EMAIL //////////////////
//////////////////////////////////////////////////

function validateEmail(field, msg, allowNull){
	if(field==undefined){alert('** Hey Developer: No field reference passed!! ** \n Function: `validateEmail`');} /* DEBUG */ 
	if(allowNull==undefined){allowNull='NO';}
	if(msg==''||msg==undefined){msg='Invalid email address. Please check it.';}

	if(allowNull=='NO'){
		if (field.value.length < 1){
			field.addClassName('errorInput');
			field.activate();
			alert('Please type the email address');
			return false;
		}
		var regex = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var address = field.value;	
		if(regex.test(address) == false){
			field.addClassName('errorInput');
			field.activate();
			alert(msg);
			return false;
		}else{
			field.removeClassName('errorInput');
			return true;
		}	
	}
}

//////////////////////////////////////////////////
////////////// VALIDATE SAME VALUE ///////////////
//////////////////////////////////////////////////

function validateSameValue(fieldA, fieldB, msg){
	if(fieldA==undefined){alert('** Hey Developer: No `fieldA` reference passed!! ** \n Function: `validateSameValue`');} /* DEBUG */ 
	if(fieldB==undefined){alert('** Hey Developer: No `fieldB` reference passed!! ** \n Function: `validateSameValue`');} /* DEBUG */
	if(msg==''||msg==undefined){msg='Both fields must match. Please check it';}

	if(Nfield.value != Rfield.value){
		fieldA.addClassName('errorInput');
		fieldB.addClassName('errorInput');
	    fieldB.activate();
	    alert(msg);		  
        return false;	
	}else{
	    field.removeClassName('errorInput');
	    return true;
	}
}


//////////////////////////////////////////////////
//////////////// VALIDATE MIN SIZE ///////////////
//////////////////////////////////////////////////

function validateMinSize(field, minSize, msg, allowNull) {
  if(field==undefined){alert('** Hey Developer: No field reference passed!! ** \n Function: `validateMinSize`');} /* DEBUG */
	if(allowNull==undefined){allowNull='NO';}
	if(minSize==undefined){minSize=3;}
	if(msg==''||msg==undefined){msg='Invalid text. Please check it';}
	
	if(allowNull=='NO'){
  	if(field.value.length < minSize){
			field.addClassName('errorInput');
			field.activate();
			alert(msg);
			return false;
		}else{
			field.removeClassName('errorInput');
			return true;
		}
	}
}


//////////////////////////////////////////////////
///////////////// VALIDATE COMBOS ////////////////
//////////////////////////////////////////////////

function validateCombo(field, msg) {
	if(field==undefined){alert('** Hey Developer: No field reference passed!! ** \n Function: `validateCombos`');} /* DEBUG */
	if(msg==''||msg==undefined){msg='Please select an option';}

	if ((field.value=='(-)') || (field.value == '')) {
		field.addClassName('requiredInput');
		field.activate();
		alert(msg);
		return false;
	}else{
	    field.removeClassName('requiredInput');
	    return true;
	}
}