/* -------- JQuery functions -----------*/
String.prototype.isValidEmail = function() { return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(this));};

var states = Array( Array ("Alabama","Alaska","American Samoa","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","District of Columbia","Florida","Georgia","Guam","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Pennsylvania","Puerto Rico","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","United States Minor Outlying Islands","Utah","Vermont","Virgin Islands, U.S.","Virginia","Washington","West Virginia","Wisconsin","Wyoming"),
Array ("Alberta","British Columbia","Manitoba","New Brunswick","Newfoundland and Labrador","Northwest Territories","Nova Scotia","Nunavut","Ontario","Prince Edward Island","Quebec","Saskatchewan","Yukon Territory"),
Array ("Aberdeen City","Aberdeenshire","Angus","Antrim","Ards","Argyll and Bute","Armagh","Ballymena","Ballymoney","Banbridge","Barking and Dagenham","Barnet","Barnsley","Bath and North East Somerset","Bedfordshire","Belfast","Bexley","Birmingham","Blackburn with Darwen","Blackpool","Blaenau Gwent","Bolton","Bournemouth","Bracknell Forest","Bradford","Brent","Bridgend [Pen-y-bont ar Ogwr GB-POG]","Brighton and Hove","Bristol, City of","Bromley","Buckinghamshire","Bury","Caerphilly [Caerffili GB-CAF]","Calderdale","Cambridgeshire","Camden","Cardiff [Caerdydd GB-CRD]","Carmarthenshire [Sir Gaerfyrddin GB-GFY]","Carrickfergus","Castlereagh","Ceredigion [Sir Ceredigion]","Cheshire","Clackmannanshire","Coleraine","Conwy","Cookstown","Cornwall","Coventry","Craigavon","Croydon","Cumbria","Darlington","Denbighshire [Sir Ddinbych GB-DDB]","Derby","Derbyshire","Derry","Devon","Doncaster","Dorset","Down","Dudley","Dumfries and Galloway","Dundee City","Dungannon","Durham","Ealing","East Ayrshire","East Dunbartonshire","East Lothian","East Renfrewshire","East Riding of Yorkshire","East Sussex","Edinburgh, City of","Eilean Siar","Enfield","Essex","Falkirk","Fermanagh","Fife","Flintshire [Sir y Fflint GB-FFL]","Gateshead","Glasgow City","Gloucestershire","Greenwich","Gwynedd","Hackney","Halton","Hammersmith and Fulham","Hampshire","Haringey","Harrow","Hartlepool","Havering","Herefordshire, County of","Hertfordshire","Highland","Hillingdon","Hounslow","Inverclyde","Isle of Anglesey [Sir Ynys Môn GB-YNM]","Isle of Wight","Isles of Scilly","Islington","Kensington and Chelsea","Kent","Kingston upon Hull, City of","Kingston upon Thames","Kirklees","Knowsley","Lambeth","Lancashire","Larne","Leeds","Leicester","Leicestershire","Lewisham","Limavady","Lincolnshire","Lisburn","Liverpool","London, City of","Luton","Magherafelt","Manchester","Medway","Merthyr Tydfil [Merthyr Tudful GB-MTU]","Merton","Middlesbrough","Midlothian","Milton Keynes","Monmouthshire [Sir Fynwy GB-FYN]","Moray","Moyle","Neath Port Talbot [Castell-nedd Port Talbot GB-CTL]","Newcastle upon Tyne","Newham","Newport [Casnewydd GB-CNW]","Newry and Mourne","Newtownabbey","Norfolk","North Ayrshire","North Down","North East Lincolnshire","North Lanarkshire","North Lincolnshire","North Somerset","North Tyneside","North Yorkshire","Northamptonshire","Northumberland","Nottingham","Nottinghamshire","Oldham","Omagh","Orkney Islands","Oxfordshire","Pembrokeshire [Sir Benfro GB-BNF]","Perth and Kinross","Peterborough","Plymouth","Poole","Portsmouth","Powys","Reading","Redbridge","Redcar and Cleveland","Renfrewshire","Rhondda, Cynon, Taff [Rhondda, Cynon,Taf]","Richmond upon Thames","Rochdale","Rotherham","Rutland","Salford","Sandwell","Scottish Borders, The","Sefton","Sheffield","Shetland Islands","Shropshire","Slough","Solihull","Somerset","South Ayrshire","South Gloucestershire","South Lanarkshire","South Tyneside","Southampton","Southend-on-Sea","Southwark","St. Helens","Staffordshire","Stirling","Stockport","Stockton-on-Tees","Stoke-on-Trent","Strabane","Suffolk","Sunderland","Surrey","Sutton","Swansea [Abertawe GB-ATA]","Swindon","Tameside","Telford and Wrekin","Thurrock","Torbay","Torfaen [Tor-faen]","Tower Hamlets","Trafford","Vale of Glamorgan, The [Bro Morgannwg GB-BMG]","Wakefield","Walsall","Waltham Forest","Wandsworth","Warrington","Warwickshire","West Berkshire","West Dunbartonshire","West Lothian","West Sussex","Westminster","Wigan","Wiltshire","Windsor and Maidenhead","Wirral","Wokingham","Wolverhampton","Worcestershire","Wrexham [Wrecsam GB-WRC]","York")
);

function setupForm(formId, ajax) {
	// Initialize
	var $jQ = jQuery;
	var f = '#' + formId;
	
	$jQ(f + ' input[type="text"]').attr("label",function() { return this.value; });
	
	if ($jQ.browser.webkit){
		$jQ(f + ' input[type="text"]').click(function() {
		if ($jQ(this).val() == $jQ(this).attr("label")) {
				this.value="";
			}
		});
	}

	// Field Entry
	$jQ(f + ' input').focus(function() {
		if ($jQ(this).val() == $jQ(this).attr("label")) {
			$jQ(this).select();
			$jQ(this).addClass('entered');
		}
	});
	$jQ(f + ' input[type="text"]').blur(function() {
		if ($jQ(this).val() == $jQ(this).attr("label") || this.value == "") {
			$jQ(this).removeClass('entered');
			this.value="";
			this.value=$jQ(this).attr("label"); // unselect
		}
	});
	
	$jQ(f + ' select').focus(function(){
		if (! $jQ(this).hasClass("entered")) {
			$jQ(this).addClass("entered");
		}
	});
	
	$jQ(f + ' #Country').change(function(){
		var sp = $jQ(f + ' select[name="state"]');
		var ot = sp[0].options[0].text.length;
		sp.empty();
		var i = this.selectedIndex - 1;
		if (i >= 0 && i < states.length) {
			opts = states[i];
			if (ot > 1)
				sp.append('<option>State/Province</option>');
			else 
				sp.append('<option></option>');
			for (n = 0; n < opts.length; n++){
				sp.append('<option>'+opts[n]+'</option>')
			}
		}
		else {
			if (ot > 1)
				sp.append('<option>State/Province (N/A)</option>');
			else 
				sp.append('<option></option>');
		}; // index out of range
		sp.blur();
	});
	
	$jQ(f + ' select').blur(function() {
		if (this.selectedIndex > 0){
			if (! $jQ(this).hasClass("entered")) {
				$jQ(this).addClass("entered");
			}
		}
		else {
			$jQ(this).removeClass("entered");
		}
	});
	

	// Form Validation - all fields required
    $jQ(f).submit(function () {
        var capframe = $jQ("#recaptcha_" + formId).contents();
    	capframe.find('#recaptcha_mismatch').css('display','none');
        reqs = $jQ(f + ' input[type="text"]:visible');
        var optionals = false;
        var msg = '';
        var err = '';
         if (capframe){
        	this.recaptcha_response_field.value = capframe[0].getElementById('recaptcha_response_field').value;
        	this.recaptcha_challenge_field.value =capframe[0].getElementById('recaptcha_challenge_field').value;
        }
        for (var i=0; i < reqs.length; i++) {
            var fr = $jQ(reqs[i]);
            if (!fr.attr('required')){
             optionals = true;
             continue;
            }
            if (fr.val() =='' || fr.val() == fr.attr('label')) {
            	err += "  -" + fr.attr('label') +  "\n";
            }
        }
        reqs= $jQ(f + ' select:visible');
        for (var i=0; i < reqs.length; i++) {
            var fr = $jQ(reqs[i]);
            if (!fr.attr('required') == 'true'){
             optionals = true;
             continue;
            }
            if (fr.attr('selectedIndex') == 0 && fr.attr('length') > 1){
                err += "  -" + fr.get(0).item(0).text + "\n";
			}
		}
        if (err.length) {
         	if (optionals)
         		msg = err = "Please enter the following:\n" + err;
         	else
         		msg = 'Please complete all entries on the form.\n'
         }
		err = '';
		var fr = $jQ(f + ' #email');
		if (!(fr.val() == '' || fr.val() == fr.attr('label')) ) {
			if (! (fr.attr('value').isValidEmail())) {
				msg+="Please enter a valid Email address";
			}
		}
		if (msg.length){
			alert(msg);
			return false;
		}
		if (ajax){
		    $jQ(f).css('cursor','wait');
			jQuery(f + " *").css('cursor','wait');
				$jQ.post(ajax,$jQ(this).serialize(),function(data){doProcessResponse(f,data);});
			//window.location = $jQ(this).attr('action');
		    $jQ(f + ' :input').attr('disabled','disabled');
			return false;
		}
		return true;
    });
    
    var ctelem = $jQ(f + ' #Country').get(0); 
	if (ctelem && ctelem.tagName == 'SELECT')
		for (n = 0; n < countryList.length; n++){
				$jQ(f + ' #Country').append('<option>'+countryList[n]+'</option>')
		 }  
}
	
function doProcessResponse(f,d){
    if (d){
		var j = eval('(' + d + ')');
		switch(j.error){
			case 'ok':
				loc = jQuery(f).attr('action');
				window.location = loc;
				break;
			case 'captcha':
				var capframe = jQuery(f + ' iframe').contents();
				capframe.find('#recaptcha_mismatch').css("display","block");
				// capframe.find('#reload').get(0).click();
				jQuery(f + " *").css('cursor','auto');
				jQuery(f).css('cursor','auto');
				jQuery(f + ' :input').removeAttr('disabled');
				break;
			default:
				jQuery(f + " *").css('cursor','auto');
				jQuery(f).css('cursor','auto');
				jQuery(f + ' :input').removeAttr('disabled');
				break;
		}
	}
}

/*-------- select population ------------------*/
countryList = Array("United States","Canada","United Kingdom","Afghanistan","Albania","Algeria","Andorra","Angola","Antigua and Barbuda","Argentina","Armenia","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bhutan","Bolivia, Plurinational State Of","Bosnia and Herzegovina","Botswana","Brazil","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Colombia","Comoros","Congo","Congo, The Democratic Republic Of The","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic","Côte D\'Ivoire","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Fiji","Finland","France","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Greenland","Grenada","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran, Islamic Republic Of","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","Korea, Democratic People\'s Republic Of","Korea, Republic of","Kuwait","Kyrgyzstan","Lao People\'s Democratic Republic","Latvia","Lebanon","Lesotho","Liberia","Libyan Arab Jamahiriya","Liechtenstein","Lithuania","Luxembourg","Macedonia, the Former Yugoslav Republic Of","Madagascar","Malawi","Malaysia","Maldives","Mali","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia, Federated States Of","Moldova, Republic of","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Palau","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Qatar","Romania","Russian Federation","Rwanda","Saint Helena, Ascension and Tristan Da Cunha","Saint Kitts And Nevis","Saint Vincent And The Grenedines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","Spain","Sri Lanka","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Taiwan, Province Of China","Tajikistan","Tanzania, United Republic of","Thailand","Timor-Leste","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","United Arab Emirates","United States Minor Outlying Islands","Uruguay","Uzbekistan","Vanuatu","Venezuela, Bolivarian Republic of","Viet Nam","Western Sahara","Yemen","Zambia","Zimbabwe");


