/*
This is for form validation
*/
function test_check(){
	var a=new Array();
	a=document.getElementsByName("meals[]");
	var p=0;
	for(i=0;i<a.length;i++){
		if(a[i].checked){
			p=1;
			break;
		}
	}
	if (p==0){
		alert ( "You must select ingredients to delete first." );
		return false;
	}
	return true;
}

function test_date(){
	var sdate=document.getElementById("fr").value;
	var edate=document.getElementById("to").value;
var ret='';

	if (sdate>edate) {
		ret="<li>From date can't be after to date.</li>";
	}
	
	//Check to see if there were errors
	if (ret!=''){
		document.getElementById("selDate_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
		return false;   //stop form from submitting
	} else {
		return true;    //Allow form to submit
    	}
}
			
			
//Validate the ingredient form
function valid_Note(strURL) {
    var ret='';
   
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('val1'), "Please enter a note");
	
    //Check to see if there were errors
    if (ret!=''){
	document.getElementById("addNote_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
	return false;   //stop form from submitting
    } else {
	return true;    //Allow form to submit
    }
}



function valid_Contact_Us(strURL) {
    var ret='';
   
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('subject'), "Please enter a summary");
    ret=ret + reqField(document.getElementById('os'), "Please enter your operating system (windows xp)");
    ret=ret + reqField(document.getElementById('browser'), "Please enter your browser (Internet Explorer 6)");
    ret=ret + reqField(document.getElementById('message'), "Please enter a message for us");
	
    //Check to see if there were errors
    if (ret!=''){
	document.getElementById("ContactUs_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
	return false;   //stop form from submitting
    } else {
	return true;    //Allow form to submit
    }
}


function valid_Email_Friend(strURL) {
    var ret='';
   
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('name'), "Please enter your name");
	ret=ret + reqField(document.getElementById('friend'), "Please enter your friends name");
	ret=ret + TestEmail(document.getElementById('email'), "Please enter your friends email");
	ret=ret + reqField(document.getElementById('message'), "Please enter a message for your friend");

	
    //Check to see if there were errors
    if (ret!=''){
	document.getElementById("addRecipe_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
	return false;   //stop form from submitting
    } else {
	return true;    //Allow form to submit
    }
}


function valid_SaveList(strURL) {
    var ret='';
   
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('name'), "Please enter a name");
    
//alert(ret);
    //Check to see if there were errors
    if (ret!=''){
	document.getElementById("addRecipe_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
	return false;   //stop form from submitting
    } else {
	return true;    //Allow form to submit
    }
}

//Validate the ingredient form
function valid_Ingridman(strURL) {
    var ret='';
   
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('amount'), "Please enter an amount");
    if (ret=='') {
	ret=ret + DOF(document.getElementById('amount'));
    }
    
    //Check drop downs for not value 0
    ret=ret + DSelect(document.getElementById('measurement_group'),0,"Please select a category");
    ret=ret + DSelect(document.getElementById('measurement'),0,"Please select a measurement");
    
    //Check ingredients for value
    ret=ret + reqField(document.getElementById('ingredient'), "Please select an ingredient");
    
    //Check for errors
    if (ret!=''){
		document.getElementById("myform_errorloc").innerHTML='<ul>' + ret + '</ul>';
    } else {
        sendRequest(strURL);  //There were no errors so get a list of current ingredients
        clearIngrid();  //Clear the ingredients form
    }
}

function valid_ListIngred() {
    var ret='';
 
    //Test amount for required and decimal or fraction
    ret=ret + reqField(document.getElementById('amount'), "Please enter an amount");
    if (ret=='') {
	ret=ret + DOF(document.getElementById('amount'));
    }
    
    //Check drop downs for not value 0
    ret=ret + DSelect(document.getElementById('measurement_group'),0,"Please select a category");
    ret=ret + DSelect(document.getElementById('measurement'),0,"Please select a measurement");
    
    //Check ingredients for value
    ret=ret + reqField(document.getElementById('ingredient'), "Please select an ingredient");
    
    //Check for errors
    if (ret!=''){
	document.getElementById("addItem_errorloc").innerHTML='<ul>' + ret + '</ul>';
	return false;
    } else {
	document.getElementById("addItem_errorloc").innerHTML='';
	return true;
    }
}

//Validate te recipe form
function valid_Recipeman() {
    var name=reqField(document.getElementById('name'), "Please enter a name");
    var catIds=reqField(document.getElementById('catIds'), "Please enter some categories");
    //var preptime=reqField(document.getElementById('preptimeHr'), "Please enter prepartaion time");
    var preptime=req1inSeries('preptimeHr,preptimeMin', "Please enter prepartaion time hr and/or min");
    if (preptime=='') {
	var obj =document.getElementById('preptimeHr')
	var preptimeHr=TInputType(obj,"[^0-9]","Please enter a numeric value in prepartaion time hour",obj.name+": Only digits allowed ")
	var obj =document.getElementById('preptimeMin')
	var preptimeMin=TInputType(obj,"[^0-9]","Please enter a numeric value in prepartaion time minute",obj.name+": Only digits allowed ")
	var preptime=preptimeHr+preptimeMin;
    }
	if (preptime=='') {
	 var preptime=reqSeriesGT('preptimeHr,preptimeMin',0 ,"Please enter prepartaion time greater than 0");	
	}
	
	
	
   
    //var cooktime=reqField(document.getElementById('cooktime'), "Please enter cook time");
    var cooktime=req1inSeries('cooktimeHr,cooktimeMin', "Please enter cook time hr and/or min");
    if (cooktime=='') {
	var obj =document.getElementById('cooktimeHr')
	var cooktimeHr=TInputType(obj,"[^0-9]","Please enter a numeric value in cook time hour",obj.name+": Only digits allowed ")
    	var obj =document.getElementById('cooktimeMin')
	var cooktimeMin=TInputType(obj,"[^0-9]","Please enter a numeric value in cook time minute",obj.name+": Only digits allowed ")
	var cooktime=cooktimeHr+cooktimeMin;
    }
	
   
    var servings=reqField(document.getElementById('servings'), "Please enter servings");
    if (servings=='') {
	var obj =document.getElementById('servings')
	var servings=TInputType(obj,"[^0-9]","Please enter a numeric value in servings",obj.name+": Only digits allowed ")
    }
	if (servings=='') {
	 var servings=reqSeriesGT('servings',0 ,"Please enter servings greater than 0");	
	}
    var instructions=reqField(document.getElementById('instructions'), "Please enter some instructions");
    
    //Put all error strings together
    var ret=name+catIds+preptime+cooktime+servings+instructions;

    //Check to see if there were errors
    if (ret!=''){
	document.getElementById("addRecipe_errorloc").innerHTML='<ul>' + ret + '</ul>'; //Show errors
	return false;   //stop form from submitting
    } else {
	return true;    //Allow form to submit
    }
}


/*
These are the actual tests for the form fields
*/
//Test input against reg exp
function TInputType(obj,strRegExp,strError,strDefaultError)
{
   var ret = '';

    var charpos = obj.value.search(strRegExp); 
    if(obj.value.length > 0 &&  charpos >= 0) 
    { 
     if(!strError || strError.length ==0) 
      { 
        strError = strDefaultError;
      }//if 
      ret=strError; 
     
    }//if
    
    if (ret == ''){
       return '';
    }else{
      return "<li>" + ret + "</li>"; 
    }
}

//REquire a slection besides a specific index (typically 0)
function DSelect(obj,dont_sel_index,strError) {
    var ret = '';
    //alert(obj);
    if(obj.selectedIndex == null) 
    { 
      ret="ERROR: dontselect command for non-select Item"; 
      
    } 
    if(obj.selectedIndex == eval(dont_sel_index)) 
    { 
     if(!strError || strError.length ==0) { 
      strError = obj.name+": Please Select one option "; 
      }                                                              
      ret=strError;                   
     }
     
    if (ret == ''){
      return '';
    }else{
      return "<li>" + ret + "</li>"; 
    }
}

//Require a value
function reqField(obj,strError) {
    var ret = '';
    var val = obj.value;
    val = val.replace(/^\s+|\s+$/g,"");
    if(eval(val.length) == 0) 
    { 
       if(!strError || strError.length ==0) 
       { 
         strError =obj.name + " : Required Field"; 
       }
       ret=strError; 
    }
    
    if (ret == ''){
      return '';
    }else{
      return "<li>" + ret + "</li>"; 
    } 
}

//Test for a value in a series of obj
function req1inSeries(objstr,strError) {
    
    var ret = '';
    var er='';
    var arrObj =objstr.split(",");			//split obj string into an array
   
   //loop through an array and ceck is vales
    for (var i=0; i < arrObj.length; i++) {
	//alert (arrObj[i]);
	var obj =document.getElementById(arrObj[i]);	//Get the object
	var er=reqField(obj, "1");			//Check that it has a value
	//If there is a value
	//alert(er);
	if (er==''){
	    
	   return '';
	}
    }
    if(!strError || strError.length ==0) { 
	strError = "<li>" + obj.name + " : Required Field</li>"; 
    }
    ret=strError;
    return "<li>" + ret + "</li>"; 
}

//Require a series of ojectes to be > some value
function reqSeriesGT(objstr,intVal,strError) {
    
    var ret = '';
    var er='';
    var arrObj =objstr.split(",");			//split obj string into an array
   var run=0;
   
   //loop through an array and ceck is vales
    for (var i=0; i < arrObj.length; i++) {
		//alert (arrObj[i]);
		var obj =document.getElementById(arrObj[i]);	//Get the object
		//var er=reqField(obj, "1");			//Check that it has a value
		//If there is a value
		//alert(obj.value);
		
		if (obj.value!=''){
			//alert("here");
		  run +=obj.value;
		 // alert(run);
		  if (run>intVal) {
			 break;
		  }
		  
		}
    }
	//alert(run);
	if (run <=intVal) {
	 if(!strError || strError.length ==0) 
       { 
         strError =obj.name + " : Required Field"; 
       }
       ret=strError; 
	}

    if (ret == ''){
      return '';
    }else{
      return "<li>" + ret + "</li>"; 
    } 
}

//Decimal or fraction text box
function DOF(obj) {
  var ret = '';								//Initial return is true
  var inpu=obj.value;							//Get form value

  if(inpu.indexOf(".")>=0) {							//If there is a .
    if (inpu.split(" ").length-1 > 0) {						//Make sure its a number
      ret="Please remove any spaces from amount"; 
    } else if (inpu<=0) {							//Make sure its >0
      ret="You must have a number greater than 0 in amount"; 
    } else if (isNaN(inpu)) {							//Make sure its a number
      ret="You must have a valid number in amount"; 								
    } else if (inpu.substring(inpu.indexOf(".")+1)=='') {			//Make sure there is a value after .
      ret="Please have a value after . in amount"; 
    }
  } else if (inpu.indexOf("/")>=0) {						//If there is a /
    var substrO =inpu.indexOf("/");						//Get the first occurence
    var substrP =inpu.substring(substrO+1);					//Get the string (plus) side of /
    var substrM =inpu.substring(inpu.indexOf(" "),substrO);			//Get string from space (if one) to /
    var substrB =inpu.substring(0,inpu.indexOf(" "));				//Get begining of string to first space
    var len =inpu.length;
      
    if (inpu.substring(0,1)==' ' || inpu.substring(len-1,len)==' ') {		//Make sure the space isnt the first or last character
      var m="Please remove spaces at begining and end of amount";
      ret=m; 
    } else if (inpu.split(" ").length-1 > 1) {					//Make sure there is only one space
      var m="Single space between whole numbers and fractions only in amount";
      ret=m; 
    } else if (inpu.split("/").length-1 > 1) {					//Make sure there is only one /
      ret="Please have only one / in amount"; 
    } else if (substrP=='' || substrP==' ' || isNaN(substrP)) {			//Make sure there is a number after /
      ret="You must have a valid number after /"; 
    } else if (substrM=='' || substrM==' ' || isNaN(substrM)) {			//Make sure there is a number before /
      ret="You must have a valid number before /"; 
    } else if ( isNaN(substrB)) {						//Make sure the number before the space is a number
      ret="You must have a valid number before the space in amount"; 
    } else if (substrP<=0 || substrM<=0) {							//Make sure numbers are >0
      ret="You must have a number greater than 0 in amount"; 
    } else if (substrB!='' && substrB<=0) {
      ret="You must have a number greater than 0 in amount"; 
    }
  } else {//For all other values
    if (inpu.split(" ").length-1 > 0) {						//Make sure there are no spaces			
      ret="Please remove any spaces from amount"; 
    } else if (inpu<=0) {							//Make sure its >0
      ret="You must have a number greater than 0 in amount"; 
    } else if (isNaN(inpu)) {							//Make sure its a number
      ret="You must have a valid number in amount"; 
    }
  }
  
  if (ret == ''){
    return '';
  }else{
    return "<li>" + ret + "</li>"; 
  }
 }
 
 



function TestEmail(obj,strError) {
 var ret = '';								//Initial return is true
  var inpu=obj.value;							//Get form value
  
     if(inpu.length > 0 && !validateEmail(inpu)	 ) { 
       if(!strError || strError.length ==0) { 
         strError = "<li>" + obj.name + " : Enter a valid Email address</li>"; 
		  
       }

	   ret=strError;
	 }else if (inpu.length == 0){
	
		if(!strError || strError.length ==0) { 
         strError = "<li>" + obj.name + " : Enter a Email address</li>"; 
		  
       }
		ret=strError;
     }
	 

    if (ret == ''){
      return '';
    }else{
      return "<li>" + ret + "</li>"; 
    } 
}

function validateEmail(email)
{
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}

