
//-----------------------------------------------------------------------------
function vex_InitDocument()
{
	vex_InitClickables();
	vex_InitExternals();
	vex_InitTooltips();
	vex_InitForms();
	vex_InitShowMore();
	vex_InitHome();

	new SmoothScroll();

	if (typeof Shadowbox != 'undefined') {
		var opcsShadow = {
				assetURL:			'/pub/video/',
				animSequence:		'sync',
				overlayOpacity:		0.60,
				initialWidth:		500,
				initialHeight:		300,
				handleUnsupported:	'remove',
				keysClose:			['c', 27],	// c or esc
				displayNav:			true,
				showMovieControls:	false,
				autoplayMovies:		true,
				text: {
					cancel:		'Cancelar',
					loading:	'cargando',
					close:		'<span class="shortcut">C</span>errar'
				}
			};
		Shadowbox.init(opcsShadow);
	}
}

//-----------------------------------------------------------------------------
function vex_InitBody()
{
	googleMapLoaded = false;

	// ¿Existe un mapa de google?
	var gMap = $("googleMap");

	if (gMap && GBrowserIsCompatible()) {
		var map = new GMap2(gMap);
//		var latLng = new GLatLng(40.530478, -3.654200);
		var latLng = new GLatLng(40.414689,-3.700397);

		var vexlanIcon = new GIcon();
		vexlanIcon.iconSize = new GSize(86, 42);
		vexlanIcon.shadowSize = new GSize(86, 42);
		vexlanIcon.iconAnchor = new GPoint(23, 39);
		vexlanIcon.image  = "http://www.vexlan.com/pub/icono-maps.png";
		vexlanIcon.shadow = "http://www.vexlan.com/pub/icono-maps-shadow.png";

		var marcador = new GMarker(latLng, { icon:vexlanIcon} );

		map.setCenter(latLng, 14);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.addOverlay(marcador);

		GEvent.addListener(marcador, "click",
			function ()
			{
				map.openInfoWindowHtml(map.getCenter(), "<address><strong>Vexlan Tecnolog&iacute;a y Servicios, S.L.</strong><br />Plaza de Santa Ana, 7<br />28012 Madrid</address>");
			});
		googleMapLoaded = true;
	}
}

//-----------------------------------------------------------------------------
function vex_InitHome()
{
	var elWrapper = $E(".caption_wrapper", $("main_caption"));

	if (!elWrapper) return;

	elWrapper.originalSize = elWrapper.getSize().size.y;
	elWrapper.targetSize = 290;

	elWrapper.fx = new Fx.Style(elWrapper, "height", {duration: 1000, transition: Fx.Transitions.Cubic.easeInOut});

	elWrapper.abre = function(){
		this.fx.stop();
		this.fx.start(this.getSize().size.y, this.targetSize);
	};
	elWrapper.cierra = function(){
		this.fx.stop();
		this.fx.start(this.getSize().size.y, this.originalSize);
	};

	var open_inform = $("abre_informe");
	if (open_inform) {
		open_inform.addEvent( "click", (function(event){ this.abre(); e = new Event(event); e.stop(); }).bindAsEventListener(elWrapper) );
	}
}


//-----------------------------------------------------------------------------
function vex_deInitBody()
{
	if (googleMapLoaded) GUnload();
}

//-----------------------------------------------------------------------------
function vex_InitExternals()
{
	var elems = $$("a");
	elems.each(function(e) {
			if ((e.href.test("^https?:\/\/") && !e.href.test(document.domain))
					|| (e.getAttribute("rel") == "external")) {
				e.setAttribute("target", "_blank");
			}
		});
}

//-----------------------------------------------------------------------------
function vex_InitClickables()
{
	$$("div.clickable").each(function(el, i){
			var firstA = $E("a", el);
			if (firstA) {
				el.href = firstA.href;
				el.addEvent("click", function(){ doClickable(this.href); });
				el.addEvent("mouseover", function(){ this.addClass("hover") } );
				el.addEvent("mouseout",  function(){ this.removeClass("hover") } );
			}
		});
}

//-----------------------------------------------------------------------------
function vex_InitTooltips()
{
	new Tips($$('.toolTip'), {
		maxTitleChars: 50,
		fixed: false,
		offsets: { x: 21, y: -20 }
	});
}

//-----------------------------------------------------------------------------
function vex_InitForms()
{
	$$("form").each(function(el) {
		// Añadir la clase "hover" en los botones para simular el pseudoselector :hover
		$ES("button", el).addEvent( "mouseover", function() { this.addClass("hover"); } );
		$ES("button", el).addEvent( "mouseout",  function() { this.removeClass("hover"); } );

		// También a los "input" con .class "boton".
		$ES("input.boton", el).addEvent( "mouseover", function() { this.addClass("hover"); } );
		$ES("input.boton", el).addEvent( "mouseout",  function() { this.removeClass("hover"); } );

		el.addEvent("submit", submitForm);
	});
}

//-----------------------------------------------------------------------------
function vex_InitShowMore()
{
	var showMore = $("blk_show_more_slide");
	if (showMore) {
		var mySlide = new Fx.Slide("blk_show_more_slide");
		$E(".blk_show_more a.informacion").addEvent("click", function(e){
			e = new Event(e);
			mySlide.toggle();
			e.stop();
		});
		mySlide.hide();
	}
}



//-----------------------------------------------------------------------------
function doClickable(_href)
{
	document.location = _href;
}


//-----------------------------------------------------------------------------
function submitForm(e)
{
	var event = new Event(e);
	var todoOk = true;
	if (e.type != "submit") return;

	// Comprobamos los datos.
	var form_elems = $ES(".formfield", this);
	var form_focus = null;

	for (var i=0; i<form_elems.length; i++) {
		var input = $E("input", form_elems[i]);
		if (!input) input = $E("textarea", form_elems[i]);
		if (!input) input = $E("select", form_elems[i]);
		if (!input) continue;

		if (input && form_elems[i].hasClass("required")) {
			var elemOk = false;

			if (input.tagName == "SELECT") {
				elemOk = input.getValue() > 0;
			} else if (input.type == "checkbox") {
				elemOk = input.checked;
			} else {
				elemOk = input.getValue().trim().length > 0;
			}

			// OK, el elemento tiene contenido... ¿Es un email?
			if (elemOk && form_elems[i].hasClass("checkemail")) {
				elemOk =  input.getValue().test("@");
			}
			if (elemOk) {
				form_elems[i].removeClass("error");
			} else {
				form_elems[i].addClass("error");
				todoOk = false;
				if (!form_focus) form_focus = input;
			}
		}
	}
	if (!todoOk) {
		if (form_focus) { $(form_focus).focus(); }
		alert("Por favor, rellene correctamente los datos obligatorios.");
		event.stop();
	}
}


//=============================================================================
window.addEvent("domready", vex_InitDocument );
window.addEvent("load",  vex_InitBody );
window.addEvent("unload", vex_deInitBody );
