var idwPrice = new Array(299, 279, 259, 239, 219);
var idwLimits = new Array(1, 5, 10, 20, 100);

var itpPrice = new Array(199, 184, 169, 154, 139);
var itpLimits = new Array(1, 5, 10, 20, 100);

var productNames = new Array("InfoNode Tabbed Panel", "InfoNode Docking Windows");
var productShort = new Array("itp", "idw");
   
var euCountries = new Array("AT", "BE", "CY", "CZ", "DE", "DK", "EE", "EL", "ES", "FI", "FR", "GB", "HU", "IE", "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "SI", "SK");
var includeVat = false;

var firstName = ""; 
var lastName = "";
var email = "";
var company = "";
var address1 = "";
var address2 = "";
var city = "";
var zip = "";
var country = "";
var vatNumber = "";

function checkNumLicenses() {
 	var str = document.getElementById("quantity").value;
  	var exp = /^\d+$/;
  	if (!exp.test(str)) {
    	alert("Number of licenses must be a number. " + str);
    	return false;
  	}
  
  	var num = parseInt(str);
  	if (num < 1) {
    	alert("Number of licenses must be > 0.");
    	return false;
  	}
  
  	return true;
}

function getProductName() {
    var productName = "";
    var products = document.product_form.product_name;
    
    for (i = 0; i < products.length; i++) {
    	if (products[i].checked) {
    		return products[i].value;
    	}
    }
    
    return "";
}

function getProductShort() {
	var productName = getProductName();
	for (i = 0; i < productNames.length; i++) {
		if (productNames[i] == productName) {
			return productShort[i];
		}
	}
	
	return "";
}

function getPrice() {
	var product = getProductShort();
    var numCopies = document.getElementById("quantity").value;
    var num = getNumLicensesNoAlert(numCopies);
    var aPrice = 0;

    var limits = eval(product + "Limits");
    var price = eval(product + "Price");
    for (i = 0; i < limits.length; i++) {
        if (num >= limits[i]) {
            aPrice = price[i];
        } else {
            break;
        }
    }
    
    return aPrice;
}

function getNumLicensesNoAlert(str) {
	var exp = /^\d+$/;
	if (!exp.test(str)) {
		return 0;
	}
	var num = parseInt(str);
	if (num < 1) {
		return 0;
	}
	  
	return num;
}

function applyProductData() {
    var price = getPrice();
    document.getElementById("item_name").value = getProductName() + " developer license with 4 months support";;
    document.getElementById("amount").value = price
   	document.getElementById("tax").value = includeVat ? price * parseInt(document.getElementById("quantity").value) * 0.25 : "0.00";
}

function checkSubmitProductForm() {
	if (checkNumLicenses() && checkCustomerData()) {
		applyCustomerData();
		applyProductData();
		/*alert("os0: " + document.getElementById("os0").value + "\n" + 
				"os1: " + document.getElementById("os1").value + "\n" +
				"custom: " + document.getElementById("custom").value + "\n" + 
				"invoice: " + document.getElementById("invoice").value);*/
		return true;
	}
	
	return false;
}

function trim(str) { 
    str.replace(/^\s*/, '').replace(/\s*$/, ''); 
   	return str;
}

function extractCustomerData() {
 	firstName = trim(document.getElementById("first_name").value); 
	lastName = trim(document.getElementById("last_name").value);
	email = trim(document.getElementById("email").value);
	company = trim(document.getElementById("companyField").value);
	address1 = trim(document.getElementById("address1").value);
	address2 = trim(document.getElementById("address2").value);
	city = trim(document.getElementById("city").value);
	zip = trim(document.getElementById("zip").value);
	country = trim(document.getElementById("country").value);
	vatNumber = trim(document.getElementById("vat_number").value);
}

function checkEuResident() {
	for (i = 0; i < euCountries.length; i++) {
		if (country == euCountries[i])
			return true;
	}
	return false;
}

function checkSweden() {
	return country == "SE";
}

function activateVatNumberField() {
	extractCustomerData();
	var euResident = checkEuResident();
	document.getElementById("vat_number").disabled = !euResident;
	
	if (!euResident) {
		document.getElementById("vat_number").value = "";
	}
}

function checkCustomerData() {
	extractCustomerData();
	
	includeVat = false;
	
	if (firstName == "") {
		alert("You must enter a first name!");
	} else if (lastName == "") {
		alert("You must enter a last name!");
	} else if (email == "") {
		alert("You must enter an email address!");
	} else if (address1 == "" || city == "") {
		alert("You must enter street address and a city!");	
	} else if (country == "") {
		alert("You must choose a country!");
	} else if (checkEuResident()) {
		includeVat = true;
		if (vatNumber == "" && company != "") {
			return confirm("You have specified a company within the European Union but you haven't entered a VAT number.\nYou will be charged 25% swedish VAT.\n\nDo you want to proceed with your order?");			
		}
		
		if (vatNumber != "" && company == "") {
			return confirm("You haven't specified a company within the European Union but you have entered a VAT number.\nYou will be charged 25% swedish VAT.\n\nDo you want to proceed with your order?");			
		}
		
		includeVat = company == "" || vatNumber == "";
		
		return true;
	} else if (checkSweden()) {
		includeVat = true;
		return true;
	} else {
		return true;
	}		

	return false;
}

function applyCustomerData() {
	document.getElementById("os0").value = firstName + " " + lastName;
	document.getElementById("os1").value = email + ", " + document.getElementById("country")[document.getElementById("country").selectedIndex].innerHTML;
	document.getElementById("custom").value = address1 + " ;; " + address2 + " ;; " + company;
	document.getElementById("invoice").value = city + " ;; " + zip + " ;; " + vatNumber;
}
