/*
 * Trim String function
 */
String.prototype.trim = function() {
  return(this.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1'));
}
/*
 * Tests if the string is an integer number.
 * If the parameter s is defined the string could be and a negative integer.
 */
String.prototype.isInt = function(s)  {
  var digits="1234567890";
  var sign="+";
  if (s != undefined || s != null) sign="-+";
 
  //is already a non-empty string
  if(digits.indexOf(this.charAt(0)) == -1 && sign.indexOf(this.charAt(0)) == -1) {
      return false;
  }

  if (this.length == 1 && sign.indexOf(this.charAt(0)) != -1)  {
     return false;
  }

  for (var i=1; i < this.length; i++)  {
       if (digits.indexOf(this.charAt(i)) == -1) {
          return false;
       }
  }
  return true;
}

function clean(elem_name)
{
	 elem_name = elem_name.replace(/\_+/g, " ")
	 return elem_name.replace(/\[\]+/g, " ")
}

/***************************************/
function IsNumber(name,number)
{
	
		
		ret=(number.length>0 && number.trim().length>0 && number.isInt())
		if(!ret)alert('Not a number "'+clean(name)+'"');
		return ret;
	

}


function IsNotEmpty(elem_name,val)
{
	
	if(val.length==0)
	{
		
		 elem_name = elem_name.replace(/\_+/g, " ")
		 elem_name = elem_name.replace(/\[\]+/g, " ")
		 alert("Please insert "+elem_name+" !" );
		 return false;
	}
	return true;
}

function general_validate(frm,types)
{
	f=document.getElementById(frm);
		for(var j=0 ;j< f.elements.length;j++)
		{

			elemType='';
			for(i=0 ;i< types.length;i++)
			{
				var arr = types[i].split("=");
				elemName = arr[0];
				
				if(elemName==f.elements[j].name && elemName.length>0)
				{
					
					elemValue = f.elements[j].value;
					elemType = arr[1];
					ret=true;
					eval("ret="+elemType+"(elemName,elemValue);");

					if(!ret)
					{
						return false;
					}

				}
			}
		}
		return true;
}

function dosubmit(frm,arrp,arrv,types)
{
	
	
	//validation	
	if(types)
	{
		if(!general_validate(frm,types))
		return false;
	}
	
		
	str="";
	for(i=0;i<arrp.length;i++)
	{		
		addField(document.getElementById(frm),'hidden',arrp[i],arrv[i]);
		    	
	}
	
	//alert(str);
	document.getElementById(frm).submit();
	
}
function addField (form, fieldType, fieldName, fieldValue) {
  if (document.getElementById) {
    var input = document.createElement('INPUT');
      if (document.all) { // what follows should work
                          // with NN6 but doesn't in M14
        input.type = fieldType;
        input.name = fieldName;
        input.value = fieldValue;
      }
      else if (document.getElementById) { // so here is the
                                          // NN6 workaround
        input.setAttribute('type', fieldType);
        input.setAttribute('name', fieldName);
        input.setAttribute('value', fieldValue);
      }
    form.appendChild(input);
  }
}

function IsEmail(name,val)
{
	
	if(!is_email(val))
	{
		alert('Verify the email address format');
		return false;
	}
	return true;
}

function is_email(val)
{
	var at = val.indexOf("@")
	if(at == -1){
		return false
	}
	else
	{
		var at_parts = val.split("@")
		if(at_parts[0].length < 1){
			return false
		}
		else{
			point = at_parts[1].indexOf(".")
			if(point == -1) return false
			else{
				point_parts = at_parts[1].split(".")
				if((point_parts[1].length < 2) || (point_parts[1].length > 3)) return false
				else  return true
			}
		}
	}
}
function accept(str){
	acc="@_-!0123456789abcdefghijklmnoprstuvxzqywABCDEFGHIJKLMNOPRSTUVXZYQW"

	var ch
	var found = true

	if (str.length == 0)
	{
		return true
	}
	for (i = 0; i < str.length ;i++){
		ch = str.charAt(i)
		if(acc.indexOf(ch)==-1){
			found=false
		}
	}
	return found

}

function validate()
{
	f = document.frm
	isOK = true
			

	
	if (!accept(f.name.value))
	{
		alert("Invalid name")
		return false		
	}
	
	
	
	if(f.name.value.length < 3)
	{
		alert("Name too short")
		return false
	}
		if (!IsNumber("# of guests",f.guests.value))
	{	
		return false		
	}
	if(f.date_party.value.trim().length ==0)
	{
		alert("Please enter date party")
		return false
	}
	
	if(!is_email(f.email.value))
	{
		alert("Verify the email address format !")
		return false
	}
	if(f.special_request.value.trim().lenght==0)
	{
		alert('Complete all fields');
		return false;
	}
	if(f.guests.value.trim().lenght==0)
	{
		alert('Complete all fields');
		return false;
	}
	
	
	return true
}

function formSubmit()
{
		if(validate())
		{
			document.frm.submit();
		}				
}
function dummy()
{
	return true;
}

function validate_testim()
{
	tname=document.getElementById('tname').value;
	temail=document.getElementById('temail').value;
	tmessage=document.getElementById('tmessage').value;
	if(tname.length==0)
	{
		alert('Enter your name');		
		return false;
	}
	if(!is_email(temail))
	{
		alert('Enter a valid email address');
		return false;
	}
	if(tmessage.length==0)
	{
		alert('Enter your message');
		return false;
	}
	return true;
}
