// JavaScript Document
function updateContactOptions(){
	var contact = document.forms['quickquote'].contact[0].checked?'phone':'email';
	var phoneOpts = document.getElementById('contactphone');
	var emailOpts = document.getElementById('contactemail');
	switch(contact){
		case 'phone':
		phoneOpts.style.display='block'; 
		emailOpts.style.display='none';		
		break;
		
		case 'email':
		emailOpts.style.display='block'; 
		phoneOpts.style.display='none';	
		break;
	}
}

function checkSpace(){
	var space = document.forms['quickquote'].space;
	var spacelist = document.forms['quickquote'].spacelist;
	if(isNaN(space.value) || space.value==''){
		spacelist.disabled = false;
	} else {
		spacelist.disabled = true;
		spacelist.options[0].selected = true;
	}
	if(!spacelist.options[0].selected){
		space.disabled = true;
		space.value = '';
	} else {
		space.disabled = false;
	}
}

function isEMailAddr(str) {
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        return false;
    } else {
        return true;
    }
}

function validateQuickQuote(){
	var errs = '';
	var form = document.forms['quickquote'];
	var name = form.name.value;
	var el = document.getElementById('fb_name');
	if(name==''){
		el.className='err';
		if(errs!='') errs += "\n";
		errs += 'Please enter a name';
	} else {
		el.className='ok';
	}
	
	var postcode = form.postcode.value;
	var el = document.getElementById('fb_postcode');
	if(isValidPostcode(postcode)==false){
		if(errs!='') errs += "\n"
		errs += 'Postcode not recognised';
		el.className = 'err';
	} else {
		el.className = 'ok';
	}

	var distance = form.distance.value;
	el = document.getElementById('fb_distance');
	if(isNaN(distance) || '' == distance){
		if(errs!='') errs += "\n";
		errs += 'Distance must be numeric';
		el.className = 'err';
	} else {
		el.className = 'ok';
	}
	
	// contact method
	if(form.contact[0].checked){
		// check phone
		var phone_number = form.phone_number.value;
		var el = document.getElementById('fb_phone');
		if(phone_number==''){
			if(errs!='') errs += "\n";
			errs += 'Phone number is required';
			el.className='err';
		} else {
			el.className='ok';
		}
	} else {
		// check email
		var email_address = form.email_address.value;
		var el = document.getElementById('fb_email');
		if(email_address==''){
			if(errs!='') errs += "\n";
			errs += 'email address is required';
			el.className='err';
		} else {
			// email address validation
			if(isEMailAddr(email_address)){
				el.className='ok';
			} else {
				if(errs!='') errs += "\n";
				errs += 'email address is incorrectly formatted';
				el.className='err';
			}
		}
	}
	
	// space required
	var space = form.space.value;
	var spacelist = form.spacelist;
	var el = document.getElementById('fb_space');
	if(space != '' && isNaN(space)){
		el.className='err';
		if(errs!='') errs += "\n";
		errs += 'Space required must be a number';
	} else {
		el.className='ok';
	}
	if(spacelist.options[0].selected && space==''){
		el.className='err';
		if(errs!='') errs += "\n";
		errs += 'Please enter space required';
	}
	
	// when
	var when = form.when;
	var el = document.getElementById('fb_when');
	if(when.options[0].selected){
		el.className='err';
		if(errs!='') errs += "\n";
		errs += 'Please select when you require storage';
	} else {
		el.className='ok';
	}
	
	// duration
	var duration = form.duration;
	var el = document.getElementById('fb_duration');
	if(duration.options[0].selected){
		el.className='err';
		if(errs!='') errs += "\n";
		errs += 'Please select duration of storage';
	} else {
		el.className='ok';
	}
	
	if(errs == ''){
		return true;
	} else {
		alert(errs);
		return false;
	}
}

var geocoder = new GClientGeocoder(); // global geocoder object

function isValidPostcode(postcode){
	var postcode = postcode.toUpperCase();
	if(!/^[A-Z]{1,2}\d{1,2} \d[A-Z]{2}$/.test(postcode)){
		return false;
	}
	return true;
}

function lookupPostCode(){
	var form = document.forms['quickquote'];
	var postcode = form.postcode.value;
	var el = document.getElementById("result_postcode");
	var valid = true;
	// first validate the postcode
	if(isValidPostcode(postcode)==true){
		var longitude = form.longitude;
		var latitude = form.latitude;
		var address = postcode+", UK";
		el.innerHtml = '<span class="err">Looking up Postcode</span>';
		geocoder.getLatLng(address,
			function(point){
				if (!point){
					// address not found
					valid = false;
				} else {
					el.innerHTML = '<span class="ok">Postcode ' + postcode + ' found!</span>';
					longitude.value = point.x;
					latitude.value = point.y;
				}
			}
		);
	} else {
		valid = false;
	}
	if(valid == false){
		el.innerHTML = '<span class="err">Postcode ' + postcode + ' not found</span>';
	}
	return valid;
}

function resetLongLat(){
	var form = document.forms['quickquote'];
	var longitude = form.longitude;
	var latitude = form.latitude;
	longitude.value = '';
	latitude.value = '';
}

