var severalErrors = "There are fields which need to be corrected before placing an order";
var singleError = "There is a field which need to be corrected before placing an order";
var error = "Error: ";
var warning = "Warning:";
var accept = "You have to agree to our terms and conditions before placing an order";
var mailError = "The address is incorectly formatted.";
var requiredmsg = "This field is required";

addEvent(window,'load',init,false);

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
} 


function init() {
  addEvent(document.getElementById('typ'),'change',doChange,false);
  if(parseInt(document.forms.sendForm.language.value) == 1) {
    severalErrors = "Det finns flera fält som inte är korrekt ifylda, var god åtgärda dessa innan du placerar din order";
    singleError = "Det finns ett fält som inte är korrekt ifylt, var god åtgärda detta innan du placerar din order";
    error = "Fel: ";
    warning = "Varning: ";
    accept = "Du måste acceptera våra köpvilkor innan du placerar din order";
    requiredmsg = "Fältet är obligatoriskt";
    mailError = "Mailadressen är felformaterad";
    addEvent(document.getElementById('paymentType'),'change',updatePayment,false);
  }
}

function updatePayment() {

  
}
function doChange() {
  var myvalue = document.getElementById("typ").options[document.getElementById("typ").selectedIndex].value;
  if(parseInt(document.getElementById("typ").selectedIndex) != 0) {
    window.location = myvalue;
  }
}


// ----------------------------------------------------------------------
// Javascript form validation routines.
// Author: Stephen Poley
//
// Simple routines to quickly pick up obvious typos.
// All validation routines return true if executed by an older browser:
// in this case validation must be left to the server.
//
// Update Jun 2005: discovered that reason IE wasn't setting focus was
// due to an IE timing bug. Added 0.1 sec delay to fix.
//
// Update Oct 2005: minor tidy-up: unused parameter removed
//
// Update Jun 2006: minor improvements to variable names and layout
// ----------------------------------------------------------------------

var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

// --------------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// --------------------------------------------

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}


// --------------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// --------------------------------------------

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(valfield)
{
  // save valfield in global variable so value retained when routine exits
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}

// --------------------------------------------
//                  msg
// Display warn/error message in HTML element.
// commonCheck routine must have previously been called
// --------------------------------------------

function msg(fld,     // id of element to display message in
             msgtype, // class to give element ("warn" or "error")
             message) // string to display
{
  // setting an empty string can give problems if later set to a 
  // non-empty string, so ensure a space present. (For Mozilla and Opera one could 
  // simply use a space, but IE demands something more, like a non-breaking space.)
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;  
  
  elem.className = msgtype;   // set the CSS class to adjust appearance of message
}

// --------------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed), 
//         false (validation failed) or 
//         proceed (don't know yet)
// --------------------------------------------

var proceed = 2;  

function commonCheck    (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  if (!document.getElementById) 
    return true;  // not available on this browser - leave validation to the server
  var elem = document.getElementById(infofield);
  if (!elem.firstChild) return true;  // not available on this browser 
  if (elem.firstChild.nodeType != node_text) return true;  // infofield is wrong type of node  

  if (emptyString.test(valfield.value)) {
    if (required) {
      msg (infofield, "error", error+" " +requiredmsg);  
      setfocus(valfield);
      return false;
    }
    else {
      msg (infofield, "warn", "");   // OK
      return true;  
    }
  }
  return proceed;
}

// --------------------------------------------
//            validatePresent
// Validate if something has been entered
// Returns true if so 
// --------------------------------------------

function validatePresent(valfield,   // element to be validated
                         infofield ) // id of element to receive info/error msg
{
  var stat = commonCheck (valfield, infofield, true);
  if (stat != proceed) return stat;

  msg (infofield, "warn", "");  
  return true;
}

// --------------------------------------------
//               validateEmail
// Validate if e-mail address
// Returns true if so (and also if could not be executed because of old browser)
// --------------------------------------------

function validateEmail  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
  if (!email.test(tfld)) {
    msg (infofield, "error",error+" "+mailError);
    setfocus(valfield);
    return false;
  }
    return true;
}

function validateName  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
var stat = commonCheck(valfield,infofield,required);
if( stat != proceed) return stat;
return true;

}

function validateAddress  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
var stat = commonCheck(valfield,infofield,required);
if(stat != proceed) return stat;
return true;
}

function validatePhone  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  var stat = commonCheck(valfield,infofield,required);
  if(stat != proceed) return stat;
    return true;
}


function validateZipcity  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  var stat = commonCheck(valfield,infofield,required);
  if(stat != proceed) return stat;
    return true;
}

function nothingAdded() {
  if(parseInt(document.forms.sendForm.language.value) == 1) {
    alert("Det finns ingenting i din shopping bag, var god lägg till varor innan du går till kassan");
    return;
  } else {
    alert("You have no items in your shopping bag, please add items to your shopping bag before you check out.");
    return;
  }
}
// Only script specific to this form goes here.
// General-purpose routines are in a separate file.
  function validateOnSubmit() {
    var elem;
    var errs=0;
    // execute all element validations in reverse order, so focus gets
    // set to the first one in error.
    
    
    if (!validatePhone    (document.forms.sendForm.telephone,   'err_phone',  true)) errs += 1; 
    
    if (!validateAddress    (document.forms.sendForm.address,   'err_address',  true)) errs += 1; 
    
    if(parseInt(document.forms.sendForm.language.value) == 1) {
      //Sverige, kör rätt kollar.
    if (!validateName  (document.forms.sendForm.fname, 'err_fname', true)) errs += 1; 	
    if (!validateName  (document.forms.sendForm.lname, 'err_lname', true)) errs += 1; 	
    
    if (!validateName  (document.forms.sendForm.zip, 'err_zip', true)) errs += 1; 	
    if (!validateName  (document.forms.sendForm.city, 'err_city', true)) errs += 1; 	
    if(parseInt(document.forms.sendForm.paymentType.selectedIndex) > 0) {
      if (!validateName  (document.forms.sendForm.persnr, 'err_persnr', true)) errs += 1; 	
    }
    } else {
      if(!validateZipcity (document.forms.sendForm.zipcity, 'err_zipcity',true)) errs+=1;
      if (!validateName  (document.forms.sendForm.name, 'err_name', true)) errs += 1; 	
    }
    if (!validateEmail  (document.forms.sendForm.mail, 'err_mail', true)) errs += 1; 
	
    if (errs>1) { 
	  alert(severalErrors);
 	} else if(errs == 1) {	
      alert(singleError);
	}
    
    if(errs > 0) {
      return false;
    }
    
    if(parseInt(document.forms.sendForm.paymentType.selectedIndex) > 0)  {
      document.forms.sendForm.action = "faktureraMigBetalning.php";
    } else {
      document.forms.sendForm.action = "previewOrder.php";
    }
    
    if(document.forms.sendForm.accept.checked == false) {
  		alert(accept);  
      return false;
    }
	
	
	    
    return true;
  };
 
