/**
 *	Mitsubishi Distributors
 *	-------------------------
 */

window.onload = function() {
	initNavigationBar();
	initHistoryCounter();
}

/**
 *	History counter
 *	--------------------------
 */

var historyCount = -1;

function initHistoryCounter() {
	var content = document.getElementById('content');
	var link, anchors = content.getElementsByTagName('a');
	for(var i=0; i<anchors.length; i++) {
		link = anchors.item(i);
		if(/#/.test(link.href) && !link.onclick){
			link.onclick = function() {	historyCount --; }
		}
	}
}
	function handleHistory() {
		history.go(historyCount);
	}

/**
 *	Forms
 *	--------------------------
 */

var FormExpressions = {
	company:['^[a-zà-ÿ ß \\/.-]*$',		'Por favor, introduzca correctamente su empresa'],
	firstName:['^[a-zà-ÿ ß \\/.-]*$',	'Por favor, introduzca correctamente su nombre'],
	lastName:['^[a-zà-ÿ ß \\/.-]*$',		'Por favor, introduzca correctamente su apellido'],
	lastName2:['^[a-zà-ÿ ß \\/.-]*$',	'Por favor, introduzca correctamente su apellido'],
	address:['^[a-zà-ÿ ß \\/.-]*$',		unescape('Por favor, introduzca correctamente su direcci%F3n')],
	houseNumber:['^[0-9a-zà-ÿ ß \\/.-]*$', unescape('Por favor, introduzca correctamente su N%BA')],
	floor:['^[0-9a-zà-ÿ ß\\/.-]*$',		'Por favor, introduzca correctamente su piso'],
	postalCode:['^(AND|GIB|([0-9]{4,5}))?$',		unescape('Por favor, introduzca correctamente su c%F3digo postal')],
	city:['^[a-zà-ÿ ß \\/.-]*$',			'Por favor, introduzca correctamente su localidad'],
	province:['^[a-zà-ÿ ß \\/.-]*$',		'Por favor, introduzca correctamente su provincia'],
	personalPhone:['^([0-9]{9})?$', 'Por favor, introduzca correctamente su teléfono particular'],
	mobilePhone:['^([0-9]{9})?$',	unescape('Por favor, introduzca correctamente su teléfono m%F3vil')],
	workPhone:['^([0-9]{9})?$',		'Por favor, introduzca correctamente su teléfono trabajo'],
	mail:['^([0-9a-z._-]*[@][0-9a-z._-]*[.][a-z]{2,4})?$', unescape('Por favor, introduzca correctamente su correo electr%F3nico')],
	model:['^[0-9a-zà-ÿ ß \\/.-]*$',		'Por favor, introduzca correctamente su modelo de su Mitsubishi'],
	matricula:['^[0-9a-zà-ÿ ß \\/.-]*$',	unescape('Por favor, introduzca correctamente su matr%EDcula')],
	modelyear:['^[0-9a-zà-ÿ ß \\/.-]*$',	unescape('Por favor, introduzca correctamente su a%F1o de adquisici%F3n')],
	comments:['.*','Por favor, rellene el campo de observaciones']
}

var FormRequirements = {
	basic:{'company':1, 'firstName':1, 'lastName':1, 'postalCode':1, 'mail':1, 'comments':1},
	customercare:{'company':1, 'firstName':1, 'lastName':1, 'mail':1, 'comments':1},
	brochure:{'company':1, 'firstName':1, 'lastName':1, 'address':1, 'houseNumber':1, 
		 'postalCode':1, 'city':1, 'province':1, 'mail':1},
	offroad:{'company':1, 'firstName':1, 'lastName':1, 'address':1, 'houseNumber':1,  
		'postalCode':1, 'city':1, 'province':1, 'mail':1, 'model':1, 'matricula':1, 'modelyear':1}
}

function submit(formName) {
	var frm = document.forms[formName] || document.getElementById(formName);
	var elements = frm.elements, l = elements.length, name, expression, requires, required;
	
	var origin = frm.origin? frm.origin.value:false;
	var brochure = frm.isBrochureRequest? frm.isBrochureRequest.value:false;
	
	requires = FormRequirements.basic;
	if(origin == 'cluboffroad') requires = FormRequirements.offroad;
	if(origin == 'customercare') requires = FormRequirements.customercare;
	if(brochure == 'true') requires = FormRequirements.brochure;


	for(var i=0; i<l; i++) {
		name = elements[i].name;
		if(!name || !FormExpressions[name] || 
			elements[i].disabled || elements[i].options) continue;
		
		expression = FormExpressions[name];
		required = requires[name];
		if(!validateField(expression[0], elements[i].value) || (required && elements[i].value == '')) {
			alert(expression[1]);
			return;
		}
	}	

	if(frm.onsubmit && (frm.onsubmit() == false)) return;
	frm.submit();
}
	function validateField(reg, value) {
		return (new RegExp(reg,'i')).test(value);
	}

	function validateAtleastOne(form, elements) {
		var value, element;
		for(var i=0; i<elements.length; i++) {
			var element = form.elements[elements[i]];
			if((/(radio|checkbox)/i).test(element.type)) {
				if(element.checked == true) return true;
			} else {
				value = element.value;
				if(value && value.length > 0) return true;
			}
		}	return false;
	}

/**
 *	Mitsubishi navigation
 *	-------------------------
 */

function initNavigationBar() {
	if(!document.getElementsByTagName) return;
	var flash = document.getElementsByTagName('object');
	var hideFlash = (navigator.userAgent.indexOf("Opera") > -1 || 
	  /(a|n|p|r)(i|u)x/i.test(navigator.platform))? true:false;
	
	function setHoverEvent(li, ul) {
		var css = ul.style;
		li.onmouseover = function() { 
			css.visibility = 'visible';
			if(hideFlash) toggleSplashFlash(flash, false);
		}

		li.onmouseout = function() { 
			css.visibility = 'hidden';	
			if(hideFlash) toggleSplashFlash(flash, true);
		}

		if((li.offsetLeft + ul.offsetWidth) > 664) {
			css.left = 'auto';
			css.right = '0px';
		}
	}

	var nav = document.getElementById('navigation');
	if(!nav) return;
	var el, li, uls = nav.getElementsByTagName('ul');
	for(var i=0; i<uls.length; i++) {
		el = uls[i].parentNode;
		if(el.nodeName == 'LI') {
			setHoverEvent(el, uls[i]);
		}
	}
}
	function toggleSplashFlash(flash, toggle) {
		for(var i=0; i<flash.length; i++) {
			flash.item(i).style.visibility = toggle? 'block' : 'none';
		}
	}

/**
 *	Popups
 *	-------------------------
 */

function popupImage(path) {
	window.open('/imageviewer.jsp?image=' + path, 
		'imageViewer', 'width=320,height=240,left=100,top=100');
}

function openCentered(url, width, height) {
	var left = (screen.width - parseInt(width))/2;
	var top = (screen.height - parseInt(height))/2;
	var settings = 'left='+left+',top='+top+',width='+width+',height='+height+'';
	window.open(url, '', settings);
}

/*
 *	Font sizer
 *	-------------------------
 */

function doFontSize(d) {
	var css = document.body.style;
	var size = parseInt(css.fontSize) || 11;
	css.fontSize = (size + d) + 'px';
}

/**
 *	Model color chooser
 *	-------------------------
 */

function setModelColor(color) {
	var img = document.getElementById('modelColor');
	img.src = color;
}
	function setColorLabel(link) {
		var title = link.title;
		var span = document.getElementById('colorTitle');
		span.innerHTML = title;
	}