
function emailCheck (emailStr) {


var checkTLD=1;



var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;


var emailPat=/^(.+)@(.+)$/;


var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";


var validChars="\[^\\s" + specialChars + "\]";


var quotedUser="(\"[^\"]*\")";


var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;



var atom=validChars + '+';


var word="(" + atom + "|" + quotedUser + ")";



var userPat=new RegExp("^" + word + "(\\." + word + ")*$");


var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {


alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];



for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Ths domain name contains invalid characters.");
return false;
   }
}

if (user.match(userPat)==null) {

alert("The username doesn't seem to be valid.");
return false;
}

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("The domain name does not seem to be valid.");
return false;
   }
}

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

if (len<2) {
alert("This address is missing a hostname!");
return false;
}


return true;
}





function MM_openBrWindow(theURL,winName,features) { 
  window.open(theURL,winName,features);
}



function validRequired(formField,fieldLabel)
{
  var result = true;
  
  if (formField.value == "")
  {
    alert('Please enter a value for the "' + fieldLabel +'" field.');
    formField.focus();
    result = false;
  }
  
  return result;
}


function allDigits(str)
{
  return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
  var result = true;
  
  for (var i=0;i<str.length;i++)
    if (charset.indexOf(str.substr(i,1))<0)
    {
      result = false;
      break;
    }
  
  return result;
}

function isValidExpDate(formField,fieldLabel,required)
{
  var result = true;
  var formValue = formField.value;

  if (required && !validRequired(formField,fieldLabel))
    result = false;
  
   if (result && (formField.value.length>0))
   {
     var elems = formValue.split("/");
     
     result = (elems.length == 2); // should be two components
     var expired = false;
     
     if (result)
     {
       var month = parseInt(elems[0],10);
       var year = parseInt(elems[1],10);
       
       if (elems[1].length == 2)
         year += 2000;
       
       var now = new Date();
       
       var nowMonth = now.getMonth() + 1;
       var nowYear = now.getFullYear();
       
       expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month));
       
      result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
           allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4));
     }
     
      if (!result)
     {
       alert('Please enter a date in the format MM/YY for the "' + fieldLabel +'" field.');
      //formField.focus();
    }
    else if (expired)
    {
       result = false;
       alert('The date for "' + fieldLabel +'" has expired.');
      //formField.focus();
    }
  } 
  
  return result;
}

function isValidCreditCardNumber(formField,ccType,fieldLabel,required)
{
  var result = true;
   var ccNum = formField.value;

  if (required && !validRequired(formField,fieldLabel))
    result = false;
 
    if (result && (formField.value.length>0))
   { 
     if (!allDigits(ccNum))
     {
       alert('Please enter only numbers (no dashes or spaces) for the "' + fieldLabel +'" field.');
      formField.focus();
      result = false;
    }  

    if (result)
     { 
       
       if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))
       {
         alert('Please enter a valid card number for the "' + fieldLabel +'" field.');
        formField.focus();
        result = false;
      }  
    } 

  } 
  
  return result;
}

function LuhnCheck(str) 
{
  var result = true;

  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  
  for (i = 0; i < strLen; i++) 
  {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
  if ((sum % 10) != 0)
    result = false;
    
  return result;
}



function GetRadioValue(rArray)
{
  for (var i=0;i<rArray.length;i++)
  {
    if (rArray[i].checked)
      return rArray[i].value;
  }
  
  return null;
}


function validateCCNum(cardType,cardNum)
{
  var result = false;
  cardType = cardType.toUpperCase();
  
  var cardLen = cardNum.length;
  var firstdig = cardNum.substring(0,1);
  var seconddig = cardNum.substring(1,2);
  var first4digs = cardNum.substring(0,4);

  switch (cardType)
  {
    case "VISA":
      result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
      break;
    /*
    case "AMEX":
      var validNums = "47";
      result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
      break;
    */
    case "MASTERCARD":
      var validNums = "12345";
      result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
      break;
    case "Switch":
      result = true;
      break;
    case "Solo":
      result = true;
      break;
    case "Visa Electron":
      result = true;
      break;
    /*
    case "DISCOVER":
      result = (cardLen == 16) && (first4digs == "6011");
      break;
    case "DINERS":
      var validNums = "068";
      result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
      break;
    */
  }
  return result;
}

function validCCForm(ccTypeField,ccNumField,ccExpField)
{
  if(ccTypeField.value=="Switch" || ccTypeField.value=="Solo" || ccTypeField.value=="Visa Electron"){
    var result = true && isValidExpDate(ccExpField,"Expiration Date",true);
  }else{
    var result = isValidCreditCardNumber(ccNumField,ccTypeField.value,"Credit Card Number",true) && isValidExpDate(ccExpField,"Expiration Date",true);
  }
  return result;
}







function checkinfo(){
      if (orderform.checkbox.checked==true){
      
      orderform.txtdevadd1.value = orderform.txtadd1.value
      orderform.txtdevadd2.value = orderform.txtadd2.value
      orderform.txtdevcity.value = orderform.txtcity.value
      orderform.txtdevpostcode.value = orderform.txtpostcode.value
      orderform.txtdevphone.value = orderform.txtphone.value
  }
    }


 /////////////////////////////
function check_cardform() {

document.cardform.cardexp.value = document.cardform.exmonth.value+"/"+document.cardform.exyear.value;
result = validCCForm(document.cardform.cardtype,document.cardform.cardno,document.cardform.cardexp);
if(result){
}else{
  //missinginfo += "\n     -  Credit card valid = " + result;

  return false;
}

 return true;
 }




