function ValidateAll() {
	var e = document.getElementsByTagName("input");
	var allok = true;
	for(var i=0;i<e.length;i++){
		v = Validate(e[i]);
		if(!v) {
			e[i].style.backgroundColor = '#fcc';
			allok = false;
		} else {
			e[i].style.backgroundColor = '#fff';
		}
	}
	
	return allok;	
}

function Validate(f) {
	switch(f.className) {
		case "input_htmltext":
			r = ValidateHtmlText(f.value);
			break;
		case "input_email":
			r = ValidateEmail(f);
			break;
		default:
			r = true;
	}
	return r;
}

function ValidateHtmlText(v) {
	return true;
}

function ValidateEmail(theinput)
{
	var s=theinput;
	if(s.search)
	{
		var moo = s.search(new RegExp('^([-!#$%&\'*+./0-9=?A-Z^_`a-z{|}~'+unescape('%7F')+'])+@([-!#$%&\'*+/0-9=?A-Z^_`a-z{|}~'+unescape('%7F')+']+\\.)+[a-zA-Z]{2,6}$','gi'))>=0; 
		return moo;
	}
	if(s.indexOf)
	{
		var at_character=s.indexOf('@')
		if(at_character<=0 || at_character+4>s.length) {
			return false;
		}
	}
	if(s.length<6) {
		return false;
	} else {
		return true;
	}
}
function ValidateCreditCard(theinput,cardtype)
{
	var first, second, third, val=theinput.value
	var len=val.length
	for(var position=0; position<len; )
	{
		if(val.charAt(position)==' ' || val.charAt(position)=='.' || val.charAt(position)=='-')
		{

			val=val.substring(0,position)+val.substring(position+1,len)
			len=len-1
		}
		else
			position++
	}
	if(len<13)
		return false
	if(cardtype!='unknown')
	{
		if(isNaN(first=parseInt(val.charAt(0),10)))
			return false
		if(isNaN(second=parseInt(val.charAt(1),10)))
			return false
		if(isNaN(third=parseInt(val.charAt(2),10)))
			return false
		if((cardtype=='mastercard') && (len!=16 || first!=5 || second<1 || second>5))
			return false
		if((cardtype=='visa') && ((len!=16 && len!=13) || first!=4))
			return false
		if((cardtype=='amex') && (len!=15 || first!=3 || (second!=4 && second!=7)))
			return false
		if((cardtype=='dinersclub' || cardtype=='carteblanche') && (len!=14 || first!=3 || ((second!=0 || third<0 || third>5) && second!=6 && second!=8)))
			return false
		if((cardtype=='discover') && (len!=16 || ((first!=5 || second<1 || second>5) && val.substring(0,4)!='6011')))
			return false
		if((cardtype=='enroute') && (len!=15 || (val.substring(0,4)!='2014' && val.substring(0,4)!='2149')))
			return false
		if((cardtype=='jcb') && ((len!=16 || first!=3) && (len!=15 || (val.substring(0,4)!='2031' && val.substring(0,4)!='1800'))))
			return false
	}
	for(var check=0,position=1;position<=len;position++)
	{
		if(isNaN(digit=parseInt(val.charAt(len-position),10)))
			return false
		if(!(position % 2))
			var digit=parseInt('0246813579'.charAt(digit),10)
		check+=digit
	}
	return((check % 10)==0)
}

function ValidatePhone(v)
{
	var allowed = "0123456789-/#+ ";
          var check = true;
          var value = v; //get characters
          //check that all characters are digits, ., -, or ""
          for(var i=0;i < value.length; ++i)
          {
               var new_key = value.charAt(i); //cycle through characters
               if(allowed.indexOf(new_key) == -1)
               {
                    check = false;
                    break;
               }
          }
          //apply appropriate colour based on value
          if(!check)
          {
               return false;
          }
          else
          {
               return true;
          }
}
