// added by WCW
var check_cc = false;
String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,"");
}

function showCCValidation()
{
  // if(document.getElementById('00N30000002FDNv_0').checked)
  //   {
  //     document.getElementById('ccValidWrap').style.display = 'block';
  //     check_cc = true;
  //     // alert('CHECKED');
  //   }
  //   else
  //   {
  //     document.getElementById('ccValidWrap').style.display = 'none';
  //     check_cc = false;
  //     // alert('UNCHECKED');
  //   }
  
  if($('#00N30000002FDNv_1:checked').val() !== undefined)
  {
    $('#chequeNotice').show();
	$('#chequeNotice2').show();
  }
  else
  {
    $('#chequeNotice').hide();
	$('#chequeNotice2').hide();
  }
}

function isValidCreditCard()
{
    sel = document.getElementById("card_type");
    type = sel.options[sel.selectedIndex].value;
    
    ccnum = document.getElementById('card_number').value;
    
    // alert(type + ' - ' + ccnum);
    
    if (type == "Visa")
    {
        // Visa: length 16, prefix 4, dashes optional.
        var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if (type == "MC")
    {
        // Mastercard: length 16, prefix 51-55, dashes optional.
        var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if (type == "Disc")
    {
        // Discover: length 16, prefix 6011, dashes optional.
        var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if (type == "AmEx")
    {
        // American Express: length 15, prefix 34 or 37.
        var re = /^3[4,7]\d{13}$/;
    }
    else if (type == "Diners")
    {
        // Diners: length 14, prefix 30, 36, or 38.
        var re = /^3[0,6,8]\d{12}$/;
    }

    if (!re.test(ccnum))
    {
      return false;
    }

    // Remove all dashes for the checksum checks to eliminate negative numbers
    ccnum = ccnum.split("-").join("");

    // Checksum ("Mod 10?)
    // Add even digits in even length strings or odd digits in odd length strings.
    var checksum = 0;

    for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2)
    {
        checksum += parseInt(ccnum.charAt(i-1));
    }

    // Analyze odd digits in even length strings or even digits in odd length strings.
    for (var i=(ccnum.length % 2) + 1; i<=ccnum.length; i+=2)
    {
        var digit = parseInt(ccnum.charAt(i-1)) * 2;
        if (digit < 10)
        {
            checksum += digit;
        }
        else
        {
            checksum += (digit-9);
        }
    }
    
    if ((checksum % 10) == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function changePaymentPlanOptions()
{
  //get selected index
  applying_select = document.getElementById("00N30000002FDeq");
  index = applying_select.selectedIndex;
  
  // clear payment plan select
  payment_plan_select = document.getElementById('00N30000002FDer');
  payment_plan_select.options.length = 0;
  
  // insert new options
  if(index == 1)
  {
	payment_plan_select.options[0] = new Option('Please Select','Please Select');
    payment_plan_select.options[1] = new Option('Full Payment of $325','Full Payment of $325');
    payment_plan_select.options[2] = new Option('Two payments of $162.50','Two payments of $162.50');
    payment_plan_select.options[3] = new Option('Three payments of $108.50','Three payments of $108.50');
    payment_plan_select.options[4] = new Option('Four payments of $81.25','Four payments of $81.25');
  }
  else if(index == 2)
  {
	payment_plan_select.options[0] = new Option('Please Select','Please Select');
    payment_plan_select.options[1] = new Option('Full Payment of $325','Full Payment of $325');
    payment_plan_select.options[2] = new Option('Two payments of $162.50','Two payments of $162.50');
    payment_plan_select.options[3] = new Option('Three payments of $108.50','Three payments of $108.50');
    payment_plan_select.options[4] = new Option('Four payments of $81.25','Four payments of $81.25');
  }
  else if(index == 3)
  {
	payment_plan_select.options[0] = new Option('Please Select','Please Select');
    payment_plan_select.options[1] = new Option('Full Payment of $600','Full Payment of $600');
    payment_plan_select.options[2] = new Option('Two payments of $300','Two payments of $300');
    payment_plan_select.options[3] = new Option('Three payments of $200','Three payments of $200');
    payment_plan_select.options[4] = new Option('Four payments of $150','Four payments of $150');
  }
  else if(index == 4)
  {
	payment_plan_select.options[0] = new Option('Please Select','Please Select');
    payment_plan_select.options[1] = new Option('Full Payment of $200','Full Payment of $200');
    payment_plan_select.options[2] = new Option('Two payments of $100','Two payments of $100');
    payment_plan_select.options[3] = new Option('Four payments of $50','Four payments of $50');
  }
  else
  {
    payment_plan_select.options[0] = new Option('Please Select','');
  }
}

function isValidEmail(email) {
   var reg = new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/);
   var address = email;
   var result = "";
   if(reg.exec(address) == null) {
      result = 'Invalid Email Address\n\r';
   }
   return result;
}
function isValidPhone(phone) {
   var reg = new RegExp(/^([0-9]){3}([_\-\. ])?([0-9]){3}([_\-\. ])?([0-9]){4}$/);
   var address = phone;
   var result = "";
   if(reg.exec(address) == null) {
      result = 'Invalid Phone Number\n\r';
   }
   return result;
}

function wcwValidate()
{
  // error flag
  var error = false;
  var valiMsg="";
  
  // get form
  form_elements = document.forms[0].elements;
  
  for(var i = 0; i < form_elements.length; i++)
  {
    // alert(form_elements[i].type);
    
    // highlight empty text or select-one fields
    if((form_elements[i].type == "text" || form_elements[i].type == "select-one") && form_elements[i].id != "00N30000002FDNu")
    {
      if(check_cc)
      {
        if(form_elements[i].value.trim() == "")
        {
          form_elements[i].style.border = "2px solid #FF0000";

          error = true;
        }
        else
        {
          form_elements[i].style.border = "2px solid #00FF00";
        }
      }
      else if(form_elements[i].id != "card_type" && form_elements[i].id != "card_number" && form_elements[i].id != "expiry_date_m" && form_elements[i].id != "expiry_date_y")
      {
        if(form_elements[i].value.trim() == "")
        {
          form_elements[i].style.border = "2px solid #FF0000";

          error = true;
        }
        else
        {
          form_elements[i].style.border = "2px solid #00FF00";
        }
      }
      
    }
    
    //huey added these validations
    var tempMsg;
    if(form_elements[i].id == "email" )
    {
    	tempMsg = isValidEmail( form_elements[i].value.trim() );
    	valiMsg += tempMsg;
    	if (tempMsg == ""){
          	form_elements[i].style.border = "2px solid #00FF00";
    	}else{
        	form_elements[i].style.border = "2px solid #FF0000";
    	}
    }

    if(form_elements[i].id == "phone")
    {
    	tempMsg = isValidPhone( form_elements[i].value.trim() );
    	valiMsg += tempMsg;
    	if (tempMsg == ""){
          	form_elements[i].style.border = "2px solid #00FF00";
    	}else{
        	form_elements[i].style.border = "2px solid #FF0000";
    	}
    }
    if(form_elements[i].id == "00N30000002FDNu")
    {
    	if ( form_elements[i].value.trim() != ""){
	    	tempMsg = isValidPhone( form_elements[i].value.trim() );
	    	if (tempMsg == ""){
	          	form_elements[i].style.border = "2px solid #00FF00";
	    	}else{
	        	form_elements[i].style.border = "2px solid #FF0000";
	    		valiMsg += '(Other Number) '+tempMsg ;
	    	}
    	}else{
	        form_elements[i].style.border = "2px solid #00FF00";
    	}
    }
     
    
    
  }
  
  if(error)
  {
    alert("The highlighted fields can not be empty!");
    
    return false;
  }
  
  //huey added
  if (valiMsg != "")
  {
    alert(valiMsg);
    
    return false;
  	
  }
  
  if(check_cc)
	{
  	if(isValidCreditCard())
  	{
      // alert('Form Validated');
    
  	  return true;
    }
    else
    {
      // highight cc field
      document.getElementById('card_number').style.border = "2px solid #FF0000";
      document.getElementById('expiry_date_m').style.border = "2px solid #FF0000";
      document.getElementById('expiry_date_y').style.border = "2px solid #FF0000";
      
      alert('Not a valid Credit Card!');
    
      return false;
    }
  }
  else
  {
    if(!document.getElementById('00N30000002FDNv_0').checked && !document.getElementById('00N30000002FDNv_1').checked)
    {
      alert("Please Select a Payment Method");
      
      return false;
    }
    
    // alert('Form Validated');
    
    return true;
  }
}