// Function to add validation to forms
function add_validation() {
	function get_label(input_elem) {
		var label = input_elem.parentNode;
		if( label.nodeName.toLowerCase() !== 'label' ) {
			var all = document.getElementsByTagName('label');
			for( var i = 0; i < all.length; i++ ) {
				if( all[i].htmlFor === input_elem.id ) {
					label = all[i];
				}
			}
		}
		return label;
	}
	function get_elements_by_class( parent_node, class_name ) {
		if( document.getElementsByClassName ) {
			return parent_node.getElementsByClassName(class_name);
		} else {
			var all = parent_node.getElementsByTagName('*');
			var output = [];
			for( var i = 0; i < all.length; i++ ) {
				if( all[i].className.indexOf(class_name) > -1 ) {
					output.push( all[i] );
				}
			}
			return output;
		}
	}
	function validate_form(event) {
		var req = get_elements_by_class( this, 'required' );
		var error = 0;
		for( var i = 0; i < req.length; i++ ) {
			var message = document.getElementById( 'error-' + req[i].id );
			if( req[i].value === '' ) {
				message.style.display = 'inline';
				error++;
			} else if( req[i].className.indexOf('email') > -1 ) {
				var x = /[\(\)<\>\,\;\:\\\"\[\]]/;
				var y = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
				if( req[i].value.match(x) || ( !y.test( req[i].value ) ) ) {
					message.innerHTML = 'invalid email address';
					message.style.display = 'inline';
					error++;
				} else {
					message.style.display = 'none';
				}
			} else {
				message.style.display = 'none';
			}
		}
		if( error > 0 ) {
			return false;
		}
	}
	var form_elem = get_elements_by_class( document, 'validate' );
	for( var i = 0; i < form_elem.length; i++ ) {
		var req = get_elements_by_class( form_elem[i], 'required' );
		for( var j = 0; j < req.length; j++ ) {
			var label = get_label( req[j] );
			var message = document.createElement('span');
			message.id = 'error-' + req[j].id;
			message.className = 'error';
			message.innerHTML = 'required';
			message.style.display = 'none';
			label.innerHTML = label.innerHTML + ' ';
			label.appendChild(message);
		}
		form_elem[i].onsubmit = validate_form;
	}
}

// Function to add map
function add_map() {
	var contact = document.getElementById('contact-form');
	if(contact) {
		var container = document.createElement('div');
		container.id = 'map';
		contact.parentNode.appendChild(container);
		var latlng = new google.maps.LatLng(54.3500969, -1.4481345);
		var opts = {
			zoom: 12,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		var map = new google.maps.Map( document.getElementById('map'), opts );
		var mark = new google.maps.Marker({
			position: latlng,
			title: 'JWT 4x4'
		});
		mark.setMap(map);
	}
}

// Function to add sales image switch
function add_image_switch() {
	var image = document.getElementById('sales-image');
	if(image) {
		var container = document.getElementById('sales-thumbnails');
		var thumbs = container.getElementsByTagName('a');
		var switch_image = function(event) {
			image.src = this.href;
			return false;
		};
		for(var i = 0; i < thumbs.length; i++) {
			thumbs[i].onclick = switch_image;
		}
	}
}

// Functions to run on load
window.onload = function() {
	add_validation();
	add_map();
	add_image_switch();
};

