// Declaring required variables
var digits = "0123456789";

// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";

// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++) {   
		// Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag) {
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length == minDigitsInIPhoneNumber);
}

setError = function(id) {
	document.getElementById(id).className="error";
}
removeError = function(id) {
	document.getElementById(id).className='';
}
removeAllErrors = function() {
	document.getElementById('lblName').className='';
	document.getElementById('lblLastName').className='';
	document.getElementById('lblAddress1').className='';
	document.getElementById('lblCity').className='';
	document.getElementById('lblState').className='';
	document.getElementById('lblZipcode').className='';
	document.getElementById('lblCountry').className='';
	document.getElementById('lblPhone').className='';
	document.getElementById('lblEmail').className='';
	document.getElementById('lblEmailConfirm').className='';
}

checkLength = function(id) {
	if(document.getElementById(id).value.length == 0) { return false } return true;
}

checkPhone = function() {
	var phone = document.getElementById('txtPhone');
	var msg = true;
	if (checkInternationalPhone(phone.value)==false){
		msg = "Please enter a valid 10 digit phone number.";
		return msg;
	}
	return msg;
}

function isValidEmail(src) {
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(src);
}


checkFormBilling = function() {
	
	// removeAllErrors();
	
	// check billing fields
	if((!checkLength('txtName')) || (document.getElementById('txtName').value=="Nombre")){
		// setError('lblName');
		alert('Por favor, introduzca su nombre de pila.');
		// document.getElementById('txtName').focus();
		return false;
	}	
	if((!checkLength('txtLastName')) || (document.getElementById('txtLastName').value=="Apellido")) {
		// setError('lblLastName');
		alert('Por favor, introduzca su apellido.');
		document.getElementById('txtLastName').focus();
		return false;
	}
	if((!checkLength('txtAddress1')) || (document.getElementById('txtAddress1').value=="Direccion 1")) {
		// setError('lblAddress1');
		alert('Por favor, introduzca su dirección de calle.');
		document.getElementById('txtAddress1').focus();
		return false;
	}
	/*
	if((checkLength('txtAddress2')) && (document.getElementById('txtAddress2').value=="Dirección 2")) {
		alert(checkLength('txtAddress2'));
		// clears default txtAddress2 value Dirección 2
		// setError('lblAddress1');
		// alert('Please enter your street address.');
		document.getElementById('txtAddress2').value = "";
		// return false;
	}*/
	
	if(document.getElementById('txtAddress2').value == "Direccion 2") {
		document.getElementById('txtAddress2').value = "";
		
	}
	
	
	if((!checkLength('txtCity')) || (document.getElementById('txtCity').value=="Ciudad")) {
		// setError('lblCity');
		alert('Por favor, introduzca su ciudad.');
		document.getElementById('txtCity').focus();
		return false
	}
	if(!checkLength('cmbCountryBill')) { 
		// setError('lblCountry');
		alert('Por favor, introduzca su país.');
		document.getElementById('cmbCountryBill').focus();
		return false
	}
	switch(document.getElementById('cmbCountryBill').value) {
		case "US" :
			if(!checkLength('cmbState')) {
				// setError('lblState');
				alert('Por favor, introduzca su estado.');
				document.getElementById('cmbState').focus();
				return false
			}
			if((!checkLength('txtZipcode')) || (document.getElementById('txtZipcode').value=="ZIP/Postal")) {
				// setError('lblZipcode');
				alert('Por favor, introduzca su código postal.');
				document.getElementById('txtZipcode').focus();
				return false
			}
			
			// 3 pay U.S. code
			// document.getElementById('prodId').value = '3312';
			// document.getElementById('vendorId').value = 'IS1100_3pay';
			
			// 1 pay U.S. code (2 for 1)
			document.getElementById('prodId').value = '3614';
			document.getElementById('vendorId').value = 'IS1202_esp';
			
			// 3 pay trial offer U.S. code (2 for 1 - $14.99)
			document.getElementById('prodId').value = '3616';
			document.getElementById('vendorId').value = 'IS1499_02_esp';
			
			// PI Tracking Code
			if (document.getElementById('IsPi').value == 1) {
				document.getElementById('prodId').value = '3623';
				document.getElementById('vendorId').value = 'IS1499_02_ITV_esp';
			}
			
			break;
		case "CA" :
			if(!checkLength('cmbState')) {
				// setError('lblState');
				alert('Por favor, introduzca su provincia.');
				document.getElementById('cmbState').focus();
				return false
			}
			if((!checkLength('txtZipcode')) || (document.getElementById('txtZipcode').value=="Código Postal")) {
				// setError('lblZipcode');
				alert('Por favor, introduzca su código postal.');
				document.getElementById('txtZipcode').focus();
				return false
			}
			
			// 3 pay Canada code
			// document.getElementById('prodId').value = '3311';
			// document.getElementById('vendorId').value = 'IS1100CN_3pay';
			
			// 1 pay Canada code (2 for 1)
			document.getElementById('prodId').value = '3612';
			document.getElementById('vendorId').value = 'IS1202CN_esp';
			
			// 1 pay Canada code (2 for 1 - $14.99)
			document.getElementById('prodId').value = '3615';
			document.getElementById('vendorId').value = 'IS1499_02CN_esp';
			
			// PI Tracking Code
			if (document.getElementById('IsPi').value == 1) {
				document.getElementById('prodId').value = '3399';
				document.getElementById('vendorId').value = document.getElementById('vendorId').value + '_ITV';
			}
			
			
			break;
	}
	
	if((!checkLength('txtPhone')) || (document.getElementById('txtPhone').value=="Número de teléfono")) {
		// setError('lblPhone');
		alert('Por favor, introduzca su número de teléfono.');
		document.getElementById('txtPhone').focus();
		return false
	}
	var phoneChk = checkPhone();
	if(phoneChk != true) {
		// setError('lblPhone');
		alert(phoneChk);
		document.getElementById('txtPhone').focus();
		return false
	}
	if((!isValidEmail(document.getElementById('txtEmail').value)) || (document.getElementById('txtEmail').value=="Email")) {
		// setError('lblEmail');
		alert('Por favor, introduzca una dirección de correo electrónico válida.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	if(document.getElementById('txtEmail').value != document.getElementById('txtEmailConfirm').value) {
		// setError('lblEmailConfirm');
		alert('Las direcciones de correo electrónico no coinciden.');
		document.getElementById('txtEmailConfirm').focus();
		return false;
	}
	/*
	if(!document.getElementById('termsCheck').checked ) {
		alert('Please indicate that you have read and agree to the Terms and Conditions of this offer.');
		return false
	}
	*/

	return true;
}


