// CarSpider - Orderform
// © 2008 by Spider Tec

// Routines
function CutStr(Str, len)
{
  if (Str.length > len) 
  {
    return Str.substr(0, len) + "...";
  } else {
    return Str;
  }
}

// Check E-Mail
function CheckEmail(str) {
  // Vars
  var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
  
  // Check
  if (filter.test(str)) {
    return true;
  } else {
    return false;
  }
}

// Mark 
function Mark(el, Unmark)
{
  // Vars
  var el = document.getElementById(el);
  
  // Mark ?
  if (!Unmark)
  {
    // Mark
    el.style.color = "red";
  } else {
    // Unmark
    el.style.color = "black";
  }
}

// Reset All
function ResetAll()
{
  document.forms['orderform'].reset();
}

// Reset Mark
function ResetMark()
{
  // Reset
  Mark('mark1', true);
  Mark('mark2a', true);
  Mark('mark2b', true);
  Mark('mark3', true);
  Mark('mark4', true);
  Mark('mark5', true);
  Mark('mark6', true);
  Mark('mark6b', true);
  Mark('mark6c', true);    
  Mark('mark7', true);
  Mark('mark8', true);
  Mark('mark9', true);
  Mark('mark10', true);
  Mark('mark11', true);
  Mark('mark12', true);
}

// On Load
function DoOnLoad()
{
  // Reset All
  ResetAll(); 
  
  // License
  ValidateLicenseCount();
  
  // Disable Send
  getElementById('send').disabled = true;
}

// Get Selected Payment Method
function GetSelectedPaymentMethod()
{
  // Vars
  var el1 = document.forms['orderform'].elements['paymentmethod'];
  
  // Show
  for (var i = 0; i < el1.length; i++) {
		if (el1[i].checked) {
		  return el1[i].value;
		}
	}
	
	// Nothing Checked
	return 0;
}

// Set View Method
function SetViewMethod(value)
{
  // Vars
  var el1 = document.getElementById('bdb');
  var el2 = document.forms['orderform'].elements['bd'];
  
  // Check Value
  switch (value)
  {
    // 1 - Only Automatic Debit
    case 1:
      if (document.layers)
   	  {
   	    el1.visibility = 'hide';
   	    el1.display    = 'none';
    	}
    	else if (document.all)
    	{
    	  el1.style.visibility = 'hidden';
    	  el1.style.display    = 'none';
    	}
    	else if (document.getElementById)
    	{    
    	  el1.style.visibility = 'hidden';
    	  el1.style.display    = 'none';
    	}
    	// Set Checked
    	el2[1].checked = true;
      break;
      
    // 2 - All
    case 2:
      if (document.layers)
   	  {
   	    el1.visibility = 'show';
   	    el1.display    = 'block';
    	}
    	else if (document.all)
    	{
    	  el1.style.visibility = 'visible';
    	  el1.style.display    = 'block';
    	}
    	else if (document.getElementById)
    	{    
    	  el1.style.visibility = 'visible';
    	  el1.style.display    = 'block';
    	}    
    	// Set Checked
    	el2[1].checked = false;    	
      break;
  }
  
  // Hide or Show Banking Details
  ShowHideBankingDetails();
}

// Show or Hide Banking Details
function ShowHideBankingDetails()
{
  // Vars
  var el1 = document.forms['orderform'].elements['bd'];
  var el2 = document.getElementById("bddetails");
  var el3 = document.getElementById('bdb'); 
  var value = "0";
  var bcont = true;
  
  // Get Selection
  for (var i = 0; i < el1.length; i++) {
		if (el1[i].checked) {
		  value = el1[i].value;
		}
	}
 
  // Check if Bill is Visible
  if (document.layers)
  {
    if (el3.visibiliy != 'show')
      bcont = false;
	}
	else if (document.all)
	{
	  if (el3.style.visibility != 'visible')
	    bcont = false;
	}
	else if (document.getElementById)
	{    
	  if (el3.style.visibility != 'visible')
	    bcont = false;
	}

  // Show or Hide
  if (bcont)
  {
    switch (value)
    {
      // Nothing
      case "0":
        if (document.layers)
     	  {
     	    el2.visibility = 'show';
     	    el2.display    = 'block';
      	}
      	else if (document.all)
      	{
      	  el2.style.visibility = 'visible';
      	  el2.style.display    = 'block';
      	}
      	else if (document.getElementById)
      	{    
      	  el2.style.visibility = 'visible';
      	  el2.style.display    = 'block';
      	}
        break;
        
      // Bill
      case "1":
        // Hide
        if (document.layers)
     	  {
     	    el2.visibility = 'hide';
     	    el2.display    = 'none';
      	}
      	else if (document.all)
      	{
      	  el2.style.visibility = 'hidden';
      	  el2.style.display    = 'none';
      	}
      	else if (document.getElementById)
      	{    
      	  el2.style.visibility = 'hidden';
      	  el2.style.display    = 'none';
      	}
        break;
        
      // Automatic Debit
      case "2":
        if (document.layers)
     	  {
     	    el2.visibility = 'show';
     	    el2.display    = 'block';
      	}
      	else if (document.all)
      	{
      	  el2.style.visibility = 'visible';
      	  el2.style.display    = 'block';
      	}
      	else if (document.getElementById)
      	{    
      	  el2.style.visibility = 'visible';
      	  el2.style.display    = 'block';
      	}
        break;
    }
  } else {
    if (document.layers)
 	  {
 	    el2.visibility = 'show';
 	    el2.display    = 'block';
  	}
  	else if (document.all)
  	{
  	  el2.style.visibility = 'visible';
  	  el2.style.display    = 'block';
  	}
  	else if (document.getElementById)
  	{    
  	  el2.style.visibility = 'visible';
  	  el2.style.display    = 'block';
  	}  
  }
}

// Calc Price
function CalcPrice()
{
  // License Count
  var lc = document.getElementById("licensecount");
  // Payment Method
  var meth = GetSelectedPaymentMethod();
  
  // Show Price
  var price = document.getElementById("lprice");
  
  // Check Method
  switch (meth) {
    // 1 - 3 Months (Zahlweise: Vierteljährlich 297,- &euro; zzgl. MwSt.)
    case "1":
      // Check
      if (parseInt(lc.value) > 1)
      {
        var temp = 297 / 2;
        price.innerHTML = (297 + (parseInt(lc.value - 1) * temp)).toFixed(2) + " €";
      } else {
        price.innerHTML = 297 + " €";
      }
      break;
    // 2 - 3 Months (Zahlweise: Monatlich 109,- €; zzgl. MwSt. (Nur bei vorliegender Einzugsermächtigung))
    case "2":
      if (parseInt(lc.value) > 1)
      {
        var temp = 109 / 2;
        price.innerHTML = (109 + (parseInt(lc.value - 1) * temp)).toFixed(2) + " €";
      } else {
        price.innerHTML = 109 + " €";
      }    
      break;
    // 3 - 12 Months (Zahlweise: Jährlich 948,- € zzgl. MwSt. )
    case "3":
      if (parseInt(lc.value) > 1)
      {
        var temp = 948 / 2;
        price.innerHTML = (948 + (parseInt(lc.value - 1) * temp)).toFixed(2) + " €";
      } else {
        price.innerHTML = 948 + " €";
      }    
      break;
    // 4 - 12 Monts (Zahlweise: Monatlich 89,- € zzgl. MwSt. (Nur bei vorliegender Einzugsermächtigung)
    case "4":
      if (parseInt(lc.value) > 1)
      {
        var temp = 89 / 2;
        price.innerHTML = (89 + (parseInt(lc.value - 1) * temp)).toFixed(2) + " €";
      } else {
        price.innerHTML = 89 + " €";
      }    
      break;
  } 
}

// Validate License Count
function ValidateLicenseCount()
{
  // Vars
  var el1 = document.getElementById("licensecount");
  var el2 = document.getElementById("llicensecount");
  
  // Set Count
  el2.innerHTML = el1.value;  
  
  // Calc Price
  CalcPrice();
}

// Validate Payment
function ValidatePayment()
{
  // Vars
  var meth = GetSelectedPaymentMethod();
  var el2 = document.getElementById("lpaymentmethod");  
  
  // Check Method
  switch (meth) {
    // 1 - 3 Months (Zahlweise: Vierteljährlich 297,- &euro; zzgl. MwSt.)
    case "1":
      // Show Text
      el2.innerHTML = "Vierteljährlich";
      
      // Set View Method
      SetViewMethod(2);
      break;
    // 2 - 3 Months (Zahlweise: Monatlich 109,- €; zzgl. MwSt. (Nur bei vorliegender Einzugsermächtigung))
    case "2":
      // Show Text
      el2.innerHTML = "Monatlich";
      
      // Set View Method
      SetViewMethod(1);      
      break;
    // 3 - 12 Months (Zahlweise: Jährlich 948,- € zzgl. MwSt. )
    case "3":
      // Show Text
      el2.innerHTML = "Jährlich";
      
      // Set View Method
      SetViewMethod(2);      
      break;
    // 4 - 12 Monts (Zahlweise: Monatlich 89,- € zzgl. MwSt. (Nur bei vorliegender Einzugsermächtigung)
    case "4":
      // Show Text
      el2.innerHTML = "Monatlich";
      
      // Set View Method
      SetViewMethod(1);      
      break;
  } 
  
  // Validate License Count
  ValidateLicenseCount();
  // Calc Price
  CalcPrice();  
}

// Validate Personaldata
function ValidatePersonalData()
{
  // Company
  var elCompany = document.getElementById("company");
  var elCompVal = document.getElementById("lcompany");
  // Surname
  var elSurname = document.getElementById("surname");
  var elSurVal  = document.getElementById("lsurname");
  // Name
  var elName    = document.getElementById("name");
  var elNameVal = document.getElementById("lname");
  // E-Mail
  var elEMail   = document.getElementById("email");
  var elMailVal = document.getElementById("lemail");

  // Set Values
  elCompVal.innerHTML = CutStr(elCompany.value,15);
  elSurVal.innerHTML  = CutStr(elSurname.value,15);
  elNameVal.innerHTML = CutStr(elName.value,15);
  elMailVal.innerHTML = CutStr(elEMail.value,15);
}

// Validate BankingDetails
function ValidateBankingDetails()
{
  // Vars
  var el1      = document.forms['orderform'].elements['bd'];
  var elMethod = document.getElementById('lmethod');
  var elBLZ    = document.getElementById('lblz');
  var elKN     = document.getElementById('lkn');
  var value = "0";
  
  // Get Selection
  for (var i = 0; i < el1.length; i++) {
		if (el1[i].checked) {
		  value = el1[i].value;
		}
	}  
	
	// Set Data
	switch (value)
	{
	  // 0 - Nothing
	  case "0":
	    break;
	  // 1 - Bill
	  case "1":
	    elMethod.innerHTML = "Rechnung";
      elBLZ.innerHTML    = "";
      elKN.innerHTML     = "";    	    
	    break;
	  // 2 - Automatic Debit
	  case "2":
      elMethod.innerHTML = "Bankeinzug";	
      elBLZ.innerHTML    = document.getElementById('blz').value;
      elKN.innerHTML     = document.getElementById('kn').value;    
	    break;
  }
  
  // Show or Hide Details
  ShowHideBankingDetails();
}

// Validate AGB
function ValidateAGB()
{
  // Vars
  var el  = document.getElementById('agb');
  var el2 = document.getElementById('send');
  
  if (el.checked)
  {
    el2.disabled = false;
  } else {
    el2.disabled = true;
  }
}

// Validate Form
function ValidateForm()
{
  // Vars
  var Proceed = true;
  
  // Reset Mark
  ResetMark();

  // Check License Data
  // License Count
  if ((document.getElementById('licensecount').value == '') || 
      (isNaN(document.getElementById('licensecount').value)))
  {
    Mark('mark1', false);
    Proceed = false;
  } 
  // Payment Method
  var PayM = document.forms['orderform'].elements['paymentmethod'];
  var PayV = 0;
  for (var i = 0; i < PayM.length; i++) {
		if (PayM[i].checked) {
		  PayV = PayM[i].value;
		}
	}
  // Check
  if (PayV == 0)
  {
    Mark('mark2a', false);
    Mark('mark2b', false);
    Proceed = false;
  }
  
  // Check Personal Data
  // Surname
  if (document.getElementById('surname').value == '')
  {
    Mark('mark3', false);
    Proceed = false;
  }
  // Name
  if (document.getElementById('name').value == '')
  {
    Mark('mark4', false);
    Proceed = false;
  }  
  // Street
  if (document.getElementById('street').value == '')
  {
    Mark('mark5', false);
    Proceed = false;
  }  
  // Postalcode
  if (document.getElementById('plz').value == '')
  {
    Mark('mark6', false);
    Proceed = false;
  }  
  // City
  if (document.getElementById('city').value == '')
  {
    Mark('mark6b', false);
    Proceed = false;
  }    
  // Country
  if (document.getElementById('country').value == '')
  {
    Mark('mark6c', false);
    Proceed = false;
  }      
  // E-Mail
  if ((document.getElementById('email').value == '') || 
      (CheckEmail(document.getElementById('email').value) == false))
  {
    Mark('mark7', false);
    Proceed = false;
  }  
  
  // Check Payment Details
  // Method
  var bdDetails = document.forms['orderform'].elements['bd']; 
  var value = "0";  
  for (var i = 0; i < bdDetails.length; i++) {
		if (bdDetails[i].checked) {
		  value = bdDetails[i].value;
		}
	}  	
	// Check
	if ((value != "1") && (value != "2"))
	{
	  Mark('mark8', false);
	  Proceed = false;
  }
  // Banking Details
  else if (value == "2") {
    // Check Banking Details
    // KN
    if (document.getElementById('kn').value == '')
    {
      Mark('mark9', false);
      Proceed = false;
    }  
    // Bank
    if (document.getElementById('bank').value == '')
    {
      Mark('mark10', false);
      Proceed = false;
    }      
    // BLZ
    if (document.getElementById('blz').value == '')
    {
      Mark('mark11', false);
      Proceed = false;
    }          
  }
  
  // Check AGB
  if (!document.getElementById('agb').checked)
  {
    Mark('mark12', false);
    Proceed = false;
  }
  
  // Do Proceed?
  if (!Proceed) {
    alert('Sie haben nicht alle erforderlichen Felder ausgefüllt.\nBitte korrigieren Sie die markierten Felder.');
    return false;
  } else {
    return true; // Ok
  }
}
