jQuery(document).ready(function() { // Intialize the form when the page loads. initForm(); }); var countries = "\ US:United States|\ AL:Albania|\ DZ:Algeria|\ AD:Andorra|\ AO:Angola|\ AI:Anguilla|\ AG:Antigua and Barbuda|\ AR:Argentina|\ AM:Armenia|\ AW:Aruba|\ AU:Australia|\ AT:Austria|\ AZ:Azerbaijan Republic|\ BS:Bahamas|\ BH:Bahrain|\ BB:Barbados|\ BE:Belgium|\ BZ:Belize|\ BJ:Benin|\ BM:Bermuda|\ BT:Bhutan|\ BO:Bolivia|\ BA:Bosnia and Herzegovina|\ BW:Botswana|\ BR:Brazil|\ VG:British Virgin Islands|\ BN:Brunei|\ BG:Bulgaria|\ BF:Burkina Faso|\ BI:Burundi|\ KH:Cambodia|\ CA:Canada|\ CV:Cape Verde|\ KY:Cayman Islands|\ TD:Chad|\ CL:Chile|\ C2:China|\ CO:Colombia|\ KM:Comoros|\ CK:Cook Islands|\ CR:Costa Rica|\ HR:Croatia|\ CY:Cyprus|\ CZ:Czech Republic|\ CD:Democratic Republic of the Congo|\ DK:Denmark|\ DJ:Djibouti|\ DM:Dominica|\ DO:Dominican Republic|\ EC:Ecuador|\ SV:El Salvador|\ ER:Eritrea|\ EE:Estonia|\ ET:Ethiopia|\ FK:Falkland Islands|\ FO:Faroe Islands|\ FM:Federated States of Micronesia|\ FJ:Fiji|\ FI:Finland|\ FR:France|\ GF:French Guiana|\ PF:French Polynesia|\ GA:Gabon Republic|\ GM:Gambia|\ DE:Germany|\ GI:Gibraltar|\ GR:Greece|\ GL:Greenland|\ GD:Grenada|\ GP:Guadeloupe|\ GT:Guatemala|\ GN:Guinea|\ GW:Guinea Bissau|\ GY:Guyana|\ HN:Honduras|\ HK:Hong Kong|\ HU:Hungary|\ IS:Iceland|\ IN:India|\ IE:Ireland|\ IL:Israel|\ IT:Italy|\ JM:Jamaica|\ JP:Japan|\ JO:Jordan|\ KZ:Kazakhstan|\ KE:Kenya|\ KI:Kiribati|\ KW:Kuwait|\ KG:Kyrgyzstan|\ LA:Laos|\ LV:Latvia|\ LS:Lesotho|\ LI:Liechtenstein|\ LT:Lithuania|\ LU:Luxembourg|\ MG:Madagascar|\ MW:Malawi|\ MV:Maldives|\ ML:Mali|\ MT:Malta|\ MH:Marshall Islands|\ MQ:Martinique|\ MR:Mauritania|\ MU:Mauritius|\ YT:Mayotte|\ MX:Mexico|\ MN:Mongolia|\ MS:Montserrat|\ MA:Morocco|\ MZ:Mozambique|\ NA:Namibia|\ NR:Nauru|\ NP:Nepal|\ NL:Netherlands|\ AN:Netherlands Antilles|\ NC:New Caledonia|\ NZ:New Zealand|\ NI:Nicaragua|\ NE:Niger|\ NU:Niue|\ NF:Norfolk Island|\ NO:Norway|\ OM:Oman|\ PW:Palau|\ PA:Panama|\ PG:Papua New Guinea|\ PE:Peru|\ PH:Philippines|\ PN:Pitcairn Islands|\ PL:Poland|\ PT:Portugal|\ QA:Qatar|\ CG:Republic of the Congo|\ RE:Reunion|\ RO:Romania|\ RU:Russia|\ RW:Rwanda|\ VC:Saint Vincent and the Grenadines|\ WS:Samoa|\ SM:San Marino|\ ST:São Tomé and Príncipe|\ SA:Saudi Arabia|\ SN:Senegal|\ SC:Seychelles|\ SL:Sierra Leone|\ SG:Singapore|\ SK:Slovakia|\ SI:Slovenia|\ SB:Solomon Islands|\ SO:Somalia|\ ZA:South Africa|\ KR:South Korea|\ ES:Spain|\ LK:Sri Lanka|\ SH:St. Helena|\ KN:St. Kitts and Nevis|\ LC:St. Lucia|\ PM:St. Pierre and Miquelon|\ SR:Suriname|\ SJ:Svalbard and Jan Mayen Islands|\ SZ:Swaziland|\ SE:Sweden|\ CH:Switzerland|\ TW:Taiwan|\ TJ:Tajikistan|\ TZ:Tanzania|\ TH:Thailand|\ TG:Togo|\ TO:Tonga|\ TT:Trinidad and Tobago|\ TN:Tunisia|\ TR:Turkey|\ TM:Turkmenistan|\ TC:Turks and Caicos Islands|\ TV:Tuvalu|\ UG:Uganda|\ UA:Ukraine|\ AE:United Arab Emirates|\ GB:United Kingdom|\ UY:Uruguay|\ VU:Vanuatu|\ VA:Vatican City State|\ VE:Venezuela|\ WF:Wallis and Futuna Islands|\ YE:Yemen|\ ZM:Zambia\ "; var states = "\ AU:Australian Capital Territory|\ AU:New South Wales|\ AU:Northern Territory|\ AU:Queensland|\ AU:South Australia|\ AU:Tasmania|\ AU:Victoria|\ AU:Western Australia|\ CA:AB:Alberta|\ CA:BC:British Columbia|\ CA:MB:Manitoba|\ CA:NB:New Brunswick|\ CA:NL:Newfoundland and Labrador|\ CA:NT:Northwest Territories|\ CA:NS:Nova Scotia|\ CA:NU:Nunavut|\ CA:ON:Ontario|\ CA:PE:Prince Edward Island|\ CA:QC:Quebec|\ CA:SK:Saskatchewan|\ CA:YT:Yukon|\ ES:Alava|\ ES:Albacete|\ ES:Alicante|\ ES:Almeria|\ ES:Asturias|\ ES:Avila|\ ES:Badajoz|\ ES:Barcelona|\ ES:Burgos|\ ES:Caceres|\ ES:Cadiz|\ ES:Cantabria|\ ES:Castellon|\ ES:Ceuta|\ ES:Ciudad Real|\ ES:Cordoba|\ ES:Cuenca|\ ES:Guadalajara|\ ES:Gerona|\ ES:Granada|\ ES:Guipuzcoa|\ ES:Huelva|\ ES:Huesca|\ ES:Islas Baleares|\ ES:Jaen|\ ES:La Coruna|\ ES:Las Palmas|\ ES:La Rioja|\ ES:Leon|\ ES:Lerida|\ ES:Lugo|\ ES:Madrid|\ ES:Malaga|\ ES:Melilla|\ ES:Murcia|\ ES:Navarra|\ ES:Orense|\ ES:Palencia|\ ES:Pontevedra|\ ES:Salamanca|\ ES:Santa Cruz de Tenerife|\ ES:Segovia|\ ES:Sevilla|\ ES:Soria|\ ES:Tarragona|\ ES:Teruel|\ ES:Toledo|\ ES:Valencia|\ ES:Valladolid|\ ES:Vizcaya|\ ES:Zamora|\ ES:Zaragoza|\ GB:Aberdeen City|\ GB:Aberdeenshire|\ GB:Angus|\ GB:Antrim|\ GB:Argyll and Bute|\ GB:Armagh|\ GB:Avon|\ GB:Bedfordshire|\ GB:Berkshire|\ GB:Blaenau Gwent|\ GB:Borders|\ GB:Bridgend|\ GB:Bristol|\ GB:Buckinghamshire|\ GB:Caerphilly|\ GB:Cambridgeshire|\ GB:Cardiff|\ GB:Carmarthenshire|\ GB:Ceredigion|\ GB:Channel Islands|\ GB:Cheshire|\ GB:Clackmannan|\ GB:Cleveland|\ GB:Conwy|\ GB:Cornwall|\ GB:Cumbria|\ GB:Denbighshire|\ GB:Derbyshire|\ GB:Devon|\ GB:Dorset|\ GB:Down|\ GB:Dumfries and Galloway|\ GB:Durham|\ GB:East Ayrshire|\ GB:East Dunbartonshire|\ GB:East Lothian|\ GB:East Renfrewshire|\ GB:East Riding of Yorkshire|\ GB:East Sussex|\ GB:Edinburgh City|\ GB:Essex|\ GB:Falkirk|\ GB:Fermanagh|\ GB:Fife|\ GB:Flintshire|\ GB:Glasgow|\ GB:Gloucestershire|\ GB:Greater Manchester|\ GB:Gwynedd|\ GB:Hampshire|\ GB:Herefordshire|\ GB:Hertfordshire|\ GB:Highland|\ GB:Humberside|\ GB:Inverclyde|\ GB:Isle of Anglesey|\ GB:Isle of Man|\ GB:Isle of Wight|\ GB:Isles of Scilly|\ GB:Kent|\ GB:Lancashire|\ GB:Leicestershire|\ GB:Lincolnshire|\ GB:London|\ GB:Londonderry|\ GB:Merseyside|\ GB:Merthyr Tydfil|\ GB:Middlesex|\ GB:Midlothian|\ GB:Monmouthshire|\ GB:Moray|\ GB:Neath Port Talbot|\ GB:Newport|\ GB:Norfolk|\ GB:North Ayrshire|\ GB:North Lanarkshire|\ GB:North Yorkshire|\ GB:Northamptonshire|\ GB:Northumberland|\ GB:Nottinghamshire|\ GB:Orkney|\ GB:Oxfordshire|\ GB:Pembrokeshire|\ GB:Perthshire and Kinross|\ GB:Powys|\ GB:Renfrewshire|\ GB:Rhondda Cynon Taff|\ GB:Roxburghshire|\ GB:Rutland|\ GB:Shetland|\ GB:Shropshire|\ GB:Somerset|\ GB:South Ayrshire|\ GB:South Lanarkshire|\ GB:South Yorkshire|\ GB:Staffordshire|\ GB:Stirling|\ GB:Suffolk|\ GB:Surrey|\ GB:Swansea|\ GB:The Vale of Glamorgan|\ GB:Torfaen|\ GB:Tyne and Wear|\ GB:Tyrone|\ GB:Warwickshire|\ GB:West Dunbartonshire|\ GB:West Lothian|\ GB:West Midlands|\ GB:West Sussex|\ GB:West Yorkshire|\ GB:Western Isles|\ GB:Wiltshire|\ GB:Worcestershire|\ GB:Wrexham|\ IT:Agrigento|\ IT:Alessandria|\ IT:Ancona|\ IT:Aosta|\ IT:L'Aquila|\ IT:Arezzo|\ IT:Ascoli Piceno|\ IT:Asti|\ IT:Avellino|\ IT:Bari|\ IT:Belluno|\ IT:Benevento|\ IT:Bergamo|\ IT:Biella|\ IT:Bologna|\ IT:Bolzano|\ IT:Brescia|\ IT:Brindisi|\ IT:Cagliari|\ IT:Caltanissetta|\ IT:Campobasso|\ IT:Carbonia-Iglesias|\ IT:Caserta|\ IT:Catania|\ IT:Catanzaro|\ IT:Chieti|\ IT:Como|\ IT:Cosenza|\ IT:Cremona|\ IT:Crotone|\ IT:Cuneo|\ IT:Enna|\ IT:Ferrara|\ IT:Firenze|\ IT:Foggia|\ IT:Forli|\ IT:Frosinone|\ IT:Genova|\ IT:Gorizia|\ IT:Grosseto|\ IT:Imperia|\ IT:Isernia|\ IT:Latina|\ IT:Lecce|\ IT:Lecco|\ IT:Livorno|\ IT:Lodi|\ IT:Lucca|\ IT:Macerata|\ IT:Mantova|\ IT:Massa Carrara|\ IT:Matera|\ IT:Medio Campidano|\ IT:Messina|\ IT:Milano|\ IT:Modena|\ IT:Napoli|\ IT:Novara|\ IT:Nuoro|\ IT:Ogliastra|\ IT:Olbia-Tempio|\ IT:Oristano|\ IT:Padova|\ IT:Palermo|\ IT:Parma|\ IT:Pavia|\ IT:Perugia|\ IT:Pesaro|\ IT:Pescara|\ IT:Piacenza|\ IT:Pisa|\ IT:Pistoia|\ IT:Pordenone|\ IT:Potenza|\ IT:Prato|\ IT:Ragusa|\ IT:Ravenna|\ IT:Reggio Calabria|\ IT:Reggio Emilia|\ IT:Rieti|\ IT:Rimini|\ IT:Roma|\ IT:Rovigo|\ IT:Salerno|\ IT:Sassari|\ IT:Savona|\ IT:Siena|\ IT:Siracusa|\ IT:Sondrio|\ IT:La Spezia|\ IT:Taranto|\ IT:Teramo|\ IT:Terni|\ IT:Torino|\ IT:Trapani|\ IT:Trento|\ IT:Treviso|\ IT:Trieste|\ IT:Udine|\ IT:Varese|\ IT:Venezia|\ IT:Verbania-Cusio-Ossola|\ IT:Vercelli|\ IT:Verona|\ IT:Vibo Valentia|\ IT:Vicenza|\ IT:Viterbo|\ US:AL:Alabama|\ US:AK:Alaska|\ US:AZ:Arizona|\ US:AR:Arkansas|\ US:CA:California|\ US:CO:Colorado|\ US:CT:Connecticut|\ US:DE:Delaware|\ US:DC:District of Columbia|\ US:FL:Florida|\ US:GA:Georgia|\ US:HI:Hawaii|\ US:ID:Idaho|\ US:IL:Illinois|\ US:IN:Indiana|\ US:IA:Iowa|\ US:KS:Kansas|\ US:KY:Kentucky|\ US:LA:Louisiana|\ US:ME:Maine|\ US:MD:Maryland|\ US:MA:Massachusetts|\ US:MI:Michigan|\ US:MN:Minnesota|\ US:MS:Mississippi|\ US:MO:Missouri|\ US:MT:Montana|\ US:NC:North Carolina|\ US:ND:North Dakota|\ US:NE:Nebraska|\ US:NV:Nevada|\ US:NH:New Hampshire|\ US:NJ:New Jersey|\ US:NM:New Mexico|\ US:NY:New York|\ US:OH:Ohio|\ US:OK:Oklahoma|\ US:OR:Oregon|\ US:PA:Pennsylvania|\ US:RI:Rhode Island|\ US:SC:South Carolina|\ US:SD:South Dakota|\ US:TN:Tennessee|\ US:TX:Texas|\ US:UT:Utah|\ US:VT:Vermont|\ US:VA:Virginia|\ US:WA:Washington|\ US:WV:West Virginia|\ US:WI:Wisconsin|\ US:WY:Wyoming|\ US:AS:American Samoa|\ US:AE:Armed Forces|\ US:AA:Armed Forces Americas|\ US:AP:Armed Forces Pacific|\ US:FM:Federated States of Micronesia|\ US:GU:Guam|\ US:MH:Marshall Islands|\ US:MP:Northern Mariana Islands|\ US:PW:Palau|\ US:PR:Puerto Rico|\ US:VI:Virgin Islands|\ "; function initForm() { loadCountries(); loadStates(); } function loadCountries() { var countryElement = document.getElementById("country"); countryElement.length = 0; var countryArray = countries.split("|"); for (var i=0; i -1)); } function submitForm(frm) { if (trim(frm.firstName.value) == "") { alert("Please enter your First Name."); frm.firstName.focus(); return false; } if (trim(frm.lastName.value) == "") { alert("Please enter your Last Name."); frm.lastName.focus(); return false; } // See http://en.wikipedia.org/wiki/Bank_card_number for info on credit cards. if (!validateCCNumber(frm.creditCardNumber.value)) { alert("Please enter a valid Credit Card Number."); frm.creditCardNumber.focus(); return false; } if (!validateCCExpDate(frm.expMonth.options[frm.expMonth.selectedIndex].value, frm.expYear.options[frm.expYear.selectedIndex].value)) { alert("Please enter a valid Expiration Date."); frm.expMonth.focus(); return false; } if (!validateCSC(frm.creditCardNumber.value, frm.csc.value)) { alert("Please enter a valid CSC (Card Security Code)."); frm.csc.focus(); return false; } if (trim(frm.street1.value) == "") { alert("Please enter your Billing Address."); frm.street1.focus(); return false; } if (trim(frm.city.value) == "") { alert("Please enter your City."); frm.city.focus(); return false; } if (((frm.state.type == "text") && (trim(frm.state.value) == "")) || ((frm.state.type == "select-one") && (frm.state.selectedIndex == 0))) { alert("Please enter your State, Province or Region."); frm.state.focus(); return false; } if (trim(frm.zip.value) == "") { alert("Please enter your Zip/Postal Code."); frm.zip.focus(); return false; } if (trim(frm.phone.value) == "") { alert("Please enter your Telephone."); frm.phone.focus(); return false; } if (!validateEmail(trim(frm.email1.value))) { alert("Please enter a valid Email Address."); frm.email1.focus(); return false; } frm.submit.disabled = true; return true; } function trim(str) { return str.replace(/^\s+|\s+$/g,""); } function updateCCImage(field) { if (field.value.indexOf("3") == 0) document.cclogo.src = "https://www.cerience.com/content/images/purchase/reader/shared/amex.gif"; else if (field.value.indexOf("4") == 0) document.cclogo.src = "https://www.cerience.com/content/images/purchase/reader/shared/visa.gif"; else if (field.value.indexOf("5") == 0) document.cclogo.src = "https://www.cerience.com/content/images/purchase/reader/shared/mastercard.gif"; else if (field.value.indexOf("6") == 0) document.cclogo.src = "https://www.cerience.com/content/images/purchase/reader/shared/discover.gif"; else document.cclogo.src = "https://www.cerience.com/content/images/purchase/reader/checkout/blank.gif"; } function validateCCExpDate(expMonth, expYear) { var now = new Date(); var expires = new Date(expYear, expMonth, 0, 0, 0); return (now.getTime() < expires.getTime()); } function validateCCNumber(cc) { // Check length. if (cc.length < 13) return false; // Check first digit. if (!((cc.indexOf("3") == 0) || (cc.indexOf("4") == 0) || (cc.indexOf("5") == 0) || (cc.indexOf("6") == 0))) return false; // Do Luhn validation. var i; var sum=0; for (i=cc.length-2; i>=0; i-=2) { sum += Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9)[parseInt(cc.charAt(i), 10)]; } for (i=cc.length-1; i>=0; i-=2) { sum += parseInt (cc.charAt(i), 10); } return ((sum % 10) == 0); } function validateCSC(cc, csc) { if (cc.indexOf("3") == 0) { // Amex (should have 4 digits). return (csc.length == 4); } // All others have 3 digits. return (csc.length == 3); } function validateEmail(email) { var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; return reg.test(email); }