/*
Script: lozano.js
	
Dependancies:
	mootools.js
	
Author: eBestPractice, <http://wwwm.eBestPractice.net>
*/
//guarda l'arrel de la pàgina
var myURL = '';
//guarda l'idioma actual de la pàgina
var locale = 'ca';
//--TREURE
//guarda l'element actual de navegació
var mySource = new Object();
mySource.menu = '';
mySource.target = '';
//indicador de si s'executen els efectes o només el resultat final
var effectsOn = true;
//--FI TREURE
//l'slider del menú
var myLeftMenuWidth;
//el fader del text del menú
var myLeftMenuFader;
//el fader del contingut de la columna del menú
var myContentColumnFader;
//el crossFader del background
var myBackgroundCrossFader;
//El preloader de les imatges
var ip = null;
//Les imatges a carregar inicialment (les de la pgina principal
var aImg = ['../images/logo02.gif','../images/lozanoIntroLeft.jpg','../images/lozanoIntro15.jpg','../images/lozanoIntro.jpg','./images/homenatge1.gif','../images/homenatgemes.gif','./images/aquarela1.gif','./images/oli1.gif','./images/pintantemcomprenen1.gif','../images/arrowgrey.gif','../images/arrow-list.gif','../images/arrow-list-red.gif','../images/arrowwhite.gif','../images/tl.gif','../images/tr.gif','../images/bl.gif','../images/br.gif','../images/tl2.gif','../images/tr2.gif'];
//Les imatges a carregar en segona tungada (els thumbs de les obres)
var aOtherImg = ['../images/arrow_right.gif','../images/arrow_left.gif','../images/lozano/obres1/thumbs/IMG001.jpg','../images/lozano/obres1/thumbs/IMG002.jpg','../images/lozano/obres1/thumbs/IMG003.jpg','../images/lozano/obres1/thumbs/IMG004.jpg','../images/lozano/obres1/thumbs/IMG005.jpg','../images/lozano/obres1/thumbs/IMG006.jpg','../images/lozano/obres1/thumbs/IMG007.jpg','../images/lozano/obres1/thumbs/IMG008.jpg','../images/lozano/obres1/thumbs/IMG009.jpg','../images/lozano/obres1/thumbs/IMG010.jpg','../images/lozano/obres1/thumbs/IMG011.jpg','../images/lozano/obres1/thumbs/IMG012.jpg',
'../images/lozano/obres2/thumbs/IMG001.jpg','../images/lozano/obres2/thumbs/IMG002.jpg','../images/lozano/obres2/thumbs/IMG003.jpg','../images/lozano/obres2/thumbs/IMG004.jpg','../images/lozano/obres2/thumbs/IMG005.jpg','../images/lozano/obres2/thumbs/IMG006.jpg','../images/lozano/obres2/thumbs/IMG007.jpg','../images/lozano/obres2/thumbs/IMG008.jpg','../images/lozano/obres2/thumbs/IMG009.jpg','../images/lozano/obres2/thumbs/IMG010.jpg','../images/lozano/obres2/thumbs/IMG011.jpg','../images/lozano/obres2/thumbs/IMG012.jpg',
'../images/lozano/obres3/thumbs/IMG001.jpg','../images/lozano/obres3/thumbs/IMG002.jpg','../images/lozano/obres3/thumbs/IMG003.jpg','../images/lozano/obres3/thumbs/IMG004.jpg',
'../images/lozano/obres3/thumbs/IMG005.jpg','../images/lozano/obres3/thumbs/IMG006.jpg','../images/lozano/obres3/thumbs/IMG007.jpg','../images/lozano/obres3/thumbs/IMG008.jpg',
'../images/lozano/obres3/thumbs/IMG009.jpg','../images/lozano/obres3/thumbs/IMG010.jpg','../images/lozano/obres3/thumbs/IMG011.jpg','../images/lozano/obres3/thumbs/IMG012.jpg',
'../images/exposicio/aac/thumbs/IMG001.jpg','../images/exposicio/aac/thumbs/IMG002.jpg','../images/exposicio/aac/thumbs/IMG003.jpg','../images/exposicio/aac/thumbs/IMG004.jpg','../images/exposicio/aac/thumbs/IMG005.jpg','../images/exposicio/aac/thumbs/IMG006.jpg','../images/exposicio/aac/thumbs/IMG007.jpg','../images/exposicio/aac/thumbs/IMG008.jpg','../images/exposicio/aac/thumbs/IMG009.jpg','../images/exposicio/aac/thumbs/IMG010.jpg','../images/exposicio/aac/thumbs/IMG011.jpg','../images/exposicio/aac/thumbs/IMG012.jpg','../images/exposicio/aac/thumbs/IMG013.jpg','../images/exposicio/aac/thumbs/IMG014.jpg','../images/exposicio/aac/thumbs/IMG015.jpg','../images/exposicio/aac/thumbs/IMG016.jpg','../images/exposicio/aac/thumbs/IMG017.jpg','../images/exposicio/aac/thumbs/IMG018.jpg','../images/exposicio/aac/thumbs/IMG019.jpg','../images/exposicio/aac/thumbs/IMG020.jpg','../images/exposicio/aac/thumbs/IMG021.jpg','../images/exposicio/aac/thumbs/IMG022.jpg','../images/exposicio/aac/thumbs/IMG023.jpg','../images/exposicio/aac/thumbs/IMG024.jpg','../images/exposicio/aac/thumbs/IMG025.jpg'];
var breadcrumbList = new Array(); 
breadcrumbList['ca'] = new Array();
breadcrumbList['ca']['inici'] = ['Presentació',''];
breadcrumbList['ca']['biografia1'] = ['Vida','biografia1','Inicis',''];
breadcrumbList['ca']['biografia2'] = ['Vida','biografia1','Formació artística',''];
breadcrumbList['ca']['biografia3'] = ['Vida','biografia1','Terrassa',''];
breadcrumbList['ca']['biografia4'] = ['Vida','biografia1','Definició',''];
breadcrumbList['ca']['biografia5'] = ['Vida','biografia1','El museu i la fundació',''];
breadcrumbList['ca']['biografia6'] = ['Vida','biografia1','Últims anys',''];
breadcrumbList['ca']['obres1'] = ['Obra','obres1','Olis',''];
breadcrumbList['ca']['obres2'] = ['Obra','obres1','Aquarel·les',''];
breadcrumbList['ca']['obres3'] = ['Obra','obres1','Dibuixos',''];
breadcrumbList['ca']['miscelania1'] = ['Miscel·lània','miscelania1','Links',''];
breadcrumbList['ca']['noticies1'] = ['Homenatge','noticies1','Presentació',''];
breadcrumbList['ca']['noticies2'] = ['Homenatge','noticies1','Programa',''];
breadcrumbList['ca']['noticies3'] = ['Homenatge','noticies1','Premi',''];
breadcrumbList['ca']['noticies4'] = ['Homenatge','noticies1','Exposició',''];
breadcrumbList['ca']['noticies5'] = ['Homenatge','noticies1','Entrades',''];
breadcrumbList['ca']['noticies6'] = ['Homenatge','noticies1','Allotjament',''];
breadcrumbList['ca']['contacte1'] = ['Contacte','contacte1','Opinió',''];
breadcrumbList['ca']['contacte2'] = ['Contacte','contacte1','Gràcies',''];
breadcrumbList['es'] = new Array();
breadcrumbList['es']['inici'] = ['Presentación',''];
breadcrumbList['es']['biografia1'] = ['Vida','biografia1','Inicios',''];
breadcrumbList['es']['biografia2'] = ['Vida','biografia1','Formación artística',''];
breadcrumbList['es']['biografia3'] = ['Vida','biografia1','Terrassa',''];
breadcrumbList['es']['biografia4'] = ['Vida','biografia1','Definición',''];
breadcrumbList['es']['biografia5'] = ['Vida','biografia1','El museo y la fundación',''];
breadcrumbList['es']['biografia6'] = ['Vida','biografia1','Últimos años',''];
breadcrumbList['es']['obres1'] = ['Obra','obres1','Óleos',''];
breadcrumbList['es']['obres2'] = ['Obra','obres1','Acuarelas',''];
breadcrumbList['es']['obres3'] = ['Obra','obres1','Dibujos',''];
breadcrumbList['es']['miscelania1'] = ['Miscelánea','miscelania1','Links',''];
breadcrumbList['es']['noticies1'] = ['Homenatge','noticies1','Presentación',''];
breadcrumbList['es']['noticies2'] = ['Homenatge','noticies1','Programa',''];
breadcrumbList['es']['noticies3'] = ['Homenatge','noticies1','Premio',''];
breadcrumbList['es']['noticies4'] = ['Homenatge','noticies1','Exposición AAC',''];
breadcrumbList['es']['noticies5'] = ['Homenatge','noticies1','Entradas',''];
breadcrumbList['es']['noticies6'] = ['Homenatge','noticies1','Alojamiento',''];
breadcrumbList['es']['contacte1'] = ['Contacto','contacte1','Opinión',''];
breadcrumbList['es']['contacte2'] = ['Contacto','contacte1','Gracias',''];
breadcrumbList['en'] = new Array();
breadcrumbList['en']['inici'] = ['Home',''];
breadcrumbList['en']['biografia1'] = ['Life','biografia1','Beginnings',''];
breadcrumbList['en']['biografia2'] = ['Life','biografia1','Artistic education',''];
breadcrumbList['en']['biografia3'] = ['Life','biografia1','Terrassa',''];
breadcrumbList['en']['biografia4'] = ['Life','biografia1','Consolidation',''];
breadcrumbList['en']['biografia5'] = ['Life','biografia1','Museum and foundation',''];
breadcrumbList['en']['biografia6'] = ['Life','biografia1','Last years',''];
breadcrumbList['en']['obres1'] = ['Work','obres1','Oil paintings',''];
breadcrumbList['en']['obres2'] = ['Work','obres1','Watercolours',''];
breadcrumbList['en']['obres3'] = ['Work','obres1','Drawings',''];
breadcrumbList['en']['miscelania1'] = ['Miscellany','miscelania1','Links',''];
breadcrumbList['en']['noticies1'] = ['Homenatge','noticies1','Presentation',''];
breadcrumbList['en']['noticies2'] = ['Homenatge','noticies1','Programme',''];
breadcrumbList['en']['noticies3'] = ['Homenatge','noticies1','Price',''];
breadcrumbList['en']['noticies4'] = ['Homenatge','noticies1','AAC Exhibition',''];
breadcrumbList['en']['noticies5'] = ['Homenatge','noticies1','Tickets',''];
breadcrumbList['en']['noticies6'] = ['Homenatge','noticies1','Accommodation',''];
breadcrumbList['en']['contacte1'] = ['Contact','contacte1','Comments',''];
breadcrumbList['en']['contacte2'] = ['Contact','contacte1','Thank you',''];
breadcrumbList['fr'] = new Array();
breadcrumbList['fr']['inici'] = ['Présentation',''];
breadcrumbList['fr']['biografia1'] = ['Vie','biografia1','Débuts',''];
breadcrumbList['fr']['biografia2'] = ['Vie','biografia1','Formation artistique',''];
breadcrumbList['fr']['biografia3'] = ['Vie','biografia1','Terrassa',''];
breadcrumbList['fr']['biografia4'] = ['Vie','biografia1','Définition',''];
breadcrumbList['fr']['biografia5'] = ['Vie','biografia1','Le musée et la fondation',''];
breadcrumbList['fr']['biografia6'] = ['Vie','biografia1','Dernières années',''];
breadcrumbList['fr']['obres1'] = ['Œuvre','obres1','Peintures à l\'huile',''];
breadcrumbList['fr']['obres2'] = ['Œuvre','obres1','Aquarelles',''];
breadcrumbList['fr']['obres3'] = ['Œuvre','obres1','Dessins',''];
breadcrumbList['fr']['miscelania1'] = ['Mélanges','miscelania1','Liens',''];
breadcrumbList['fr']['noticies1'] = ['Homenatge','noticies1','Présentation',''];
breadcrumbList['fr']['noticies2'] = ['Homenatge','noticies1','Programme',''];
breadcrumbList['fr']['noticies3'] = ['Homenatge','noticies1','Prix',''];
breadcrumbList['fr']['noticies4'] = ['Homenatge','noticies1','Exposition AAC',''];
breadcrumbList['fr']['noticies5'] = ['Homenatge','noticies1','Billets',''];
breadcrumbList['fr']['noticies6'] = ['Homenatge','noticies1','Logement',''];
breadcrumbList['fr']['contacte1'] = ['Contact','contacte1','Courriel',''];
breadcrumbList['fr']['contacte2'] = ['Contact','contacte1','Merci',''];
var stateInici = new State('inici','inici','J. Martínez Lozano',function(){updateInici();},function(){updateInici();});

var stateBio1 = new State('biografia1',
						  'biografia',
						  'J. Martínez Lozano - Biografia - Els inicis',
							function() { updateMenuTururu('biografia1','biografia'); },
							function() { updateMenuTururu('biografia1','biografia'); });
var stateOpus1 = new State('obres1',
						  'obres',
						  'J. Martínez Lozano - Obres - Olis',
							function() { updateMenuTururu('obres1','obres'); },
							function() { updateMenuTururu('obres1','obres'); });
var stateListener;


/*
Class: Fx.myWidth
	Extensió de la classe Fx.Width per incorporar una nova funció
					 	
	Property: isDiplayed
		Retorna cert si l'element de l'slider és visible
	Arguments:
		None
	Example:
		None	
*/
Fx.myWidth = Fx.Width.extend( {
	isDiplayed: function() {
		return this.element.offsetWidth > 0;
	}
});
		
Fx.myStyle = Fx.Style.extend( {
	initialize: function(container,
						 element,
						 frontImagePath,
						 frontClass,
						 backImagePath,
						 backClass,
						 duration) {
		
		this.container = $(container);
		this.element = $(element);
		this.duration = duration;
		this.setOptions('');
		this.property = '';
		
		Fx.myStyle.backImage = this.container.appendChild(document.createElement('img'));
		Fx.myStyle.backImage.setAttribute('id','tmpBackImg');
		Fx.myStyle.backImage.style.left = this.element.getLeft() + 'px';
		Fx.myStyle.backImage.style.top = this.element.getTop() + 'px'; 
		Fx.myStyle.backImage.className = backClass;
		Fx.myStyle.backImage.src = backImagePath;
		
		Fx.myStyle.frontImage = this.container.appendChild(document.createElement('img'));
		Fx.myStyle.frontImage.setAttribute('id','tmpFrontImg');
		Fx.myStyle.frontImage.style.left = this.element.getLeft() + 'px';
		Fx.myStyle.frontImage.style.top = this.element.getTop() + 'px';
		Fx.myStyle.frontImage.className = frontClass;
		Fx.myStyle.frontImage.src = frontImagePath;
	},
	
	lockFunctionality: function() {
		Fx.myStyle.newDiv = this.container.appendChild(document.createElement('div'));
		Fx.myStyle.newDiv.setAttribute('id','tmpDiv');
		Fx.myStyle.newDiv.style.left = this.container.getLeft() + 'px';
		Fx.myStyle.newDiv.style.top = this.container.getTop() + 'px'; 
		Fx.myStyle.newDiv.style.width = this.container.offsetWidth + 'px';
		Fx.myStyle.newDiv.style.height = this.container.offsetHeight + 'px';
		Fx.myStyle.newDiv.style.position = 'absolute';
		Fx.myStyle.newDiv.style.backgroundImage = 'url(../images/transparentBackground.gif)';
		Fx.myStyle.newDiv.style.zIndex = 1000;
	},
	
	unlockFunctionality: function () {
		Fx.myStyle.newDiv.parentNode.removeChild(Fx.myStyle.newDiv);
	},
	
	crossFade: function() {	
		new Fx.Style('tmpFrontImg','opacity',{duration:this.duration}).custom(0,1).chain(function() {
			Fx.myStyle.frontImage.parentNode.removeChild(Fx.myStyle.frontImage);
		});
		
		return new Fx.Style('tmpBackImg','opacity', {
													duration	: this.duration,
													onComplete	: this.removeImage
													}
							).custom(1,0)
	},
	
	removeImage: function() {
		Fx.myStyle.backImage.parentNode.removeChild(Fx.myStyle.backImage)
	}
});

/*
Property: initialize
	Inicialitza les variables necessàries (myLeftMenuWidth, myLeftMenuFader, etc,) pel correcte 		    funcionament dels efectes de la web
Arguments:
	None
Example:
	None
*/
function initialize() {
	//s'inicialitza myLeftMenuWidth (a hide)
	myLeftMenuWidth = new Fx.myWidth('leftMenuArea', {duration: 2000}).hide();
	
	//s'inicialitza myLeftMenuFader
	myLeftMenuFader = new Fx.Style('leftMenuText', 'opacity', {duration: 500});
	
	//s'inicialitza myContentColumnFader
	myContentColumnFader = new Fx.Style('contentcolumn', 'opacity', {duration: 500});

}

/*
Property: updateMenu
	Actualitza corresponentment el contingut del menú. També gestiona si el menú s'ha de visualitzar 	o no 
Arguments:
	target - argument per identificar el contingut que s'ha d'actualitzar
Example:
	None
*/
function updateMenu(target) {
	
if (target == 'inici') {
	if(mySource.target != 'inici')
  	{
		if (myLeftMenuWidth.isDiplayed()) {
			myLeftMenuWidth.toggle();
			updateContent(target);
			mySource.menu='';
		}
		else
		{
			if(effectsOn)
			{
				myBackgroundCrossFader.crossFade().chain(function() {									 					
					updateContent('inici');
				});
			}
			else
			{
				updateContent('inici');
			}
		}
	}
}
else if(mySource.target != (target + '1')){
	
	if (!myLeftMenuWidth.isDiplayed()) {
		requestMenuContent(target);
		myLeftMenuWidth.toggle().chain(function() {									
			updateContent(target + '1');	
		});
		mySource.menu=target;
	}
	else {
		if (target!=mySource.menu) {
			requestMenuContent(target);
			updateContent(target + '1');
			mySource.menu=target;
		}
		else
		{
			updateContent(target + '1','link'+target.charAt(0).toUpperCase() + target.substr(1) + '1');
			mySource.menu=target;
		}
	}	
}

}

/*
Property: updateContent
	Actualitza corresponentment el contingut del menú. També gestiona si el menú s'ha de visualitzar 	o no 
Arguments:
	target - argument per identificar el contingut que s'ha d'actualitzar
Example:
	None
*/
function updateContent(target,submenuSelected, onCompleteFunction) {
	var tmpURL = myURL + target + 'Content.html';
	
	if (submenuSelected!=null) {
		changeItemSubMenu(submenuSelected);
	}
	 //Comentat pq es gestiona des de StateListener
	updateBreadcrumbs(target);
	
	mySource.target = target;
	
	new Ajax (
		tmpURL, {
		update: 'contentcolumn',
		onComplete: function(){
			if (target=="obres1" || target=="obres2" || 
				target=="obres3" || target=="obres4" || target=="noticies4") {
				Behaviour.register(myrules);
				Behaviour.apply();
				init(target);

				
				setTimeout('initSlideShow()',40);
				setTimeout('setSlideShowEvents()',50);
				
			}
			if  (target.indexOf("inici")==0) {
				  //TRANSITION
			    var myAquarelaWidth = new Fx.myWidth($('iniciaquarela'), {duration: 1000}).hide();
					var myOliWidth = new Fx.myWidth($('inicioli'), {duration: 1000}).hide();
					$('iniciaquarela').style.visibility = 'visible';
					$('inicioli').style.visibility = 'visible';
					myAquarelaWidth.toggle().chain(function() {
						myOliWidth.toggle().chain(function() {
							stateListener.unlockFunctionality();									
						});								 	
					});
				/* GO
					$('iniciaquarela').style.visibility = 'visible';
					$('inicioli').style.visibility = 'visible';
					stateListener.unlockFunctionality();
			  */
			}
		},
		method: 'get'
	}).request();
}

/*
Property: updateMenuContent
	Fa la petició Ajax del contingut a actualitzar i mostra la trancisió del text del menú
Arguments:
	target - argument per identificar el contingut que s'ha d'actualitzar
Example:
	None
*/
function requestMenuContent(target) {
	var tmpURL = myURL + target + 'Menu.html';

	new Ajax (
		tmpURL, {
		update: 'leftMenuText',
		method: 'get'
	}).request();
}


function changeItemSubMenu(selectedLink) {
	$E('.menuItemSelected','submenuLinks').removeClass('menuItemSelected');
	if($(selectedLink)!=null)
		$(selectedLink).addClass('menuItemSelected');
}

function updateBreadcrumbs(target) {
	var breads = $ES('li','breadcrumbs');
	var mainBreads = $E('ul','breadcrumbs');
	var numBreads = breads.length;
	var newBreadcrumbs = breadcrumbList[locale][target];
	var numArgs = newBreadcrumbs.length;
	var i;
	var newBread;
	var newBreadLink;
	
	// delete breadcrumbs
	for (i=0;i<numBreads;i++)
		$(breads[i]).remove();
	
	// add new breadcrumbs
   	for(i=0; i<numArgs; i=i+2) {
		newBread = new Element('li');
		
		if (i==numArgs-2) {
			// actual page
			$(newBread).appendText(newBreadcrumbs[i]);
			$(newBread).addClass('actualpage');
			$(newBread).injectInside($(mainBreads));
		}
		else {
			// hist page
			newBreadLink = new Element('a');
			$(newBreadLink).appendText(newBreadcrumbs[i]);
			newBreadLink.setAttribute('href','javascript:updateContent(\''+newBreadcrumbs[i+1]+'\',\'link'+newBreadcrumbs[i+1].charAt(0).toUpperCase() + newBreadcrumbs[i+1].substr(1) + '\');');
			$(newBreadLink).addClass('histpage');
			$(newBreadLink).injectInside($(newBread));
			$(newBread).injectInside($(mainBreads));
		}
	}
}

/* TRACTAMENT PRE-LOADING IMATGES */

function preloadOtherImages(){
	var oip = new ImagePreloader(aOtherImg, function(){});
}

function onPreload(aImages, nImages){

if ( nImages == aImages.length ){
		$('bodyid').setStyle('background', '#000000');
		$('contentwrapper').setStyle('background-image', 'url(../images/lozanoIntro15.jpg)');
		$('maincontainer').setStyle('display', 'block');
		$('leftMenuArea').setStyle('background-image', 'url(../images/lozanoIntroLeft.jpg)');

		//Inicialitzacions necessaries pels efectes
		initialize();
		
		//Si tenim link, anem a la pÃ gina que toqui, si no executem l'efecte d'inici
		if(window.location.hash)
		{
			stateListener.setState(window.location.hash.substring(1),false);
		}
		else 
		{
			stateListener.first(true);
		}

		preloadOtherImages();
		return;
	}
	else {
		// pirula
		alert('Images not load properly:'+nImages+'-'+aImages.length);
		return;
	}
}

function ImagePreloader(images, callback){

	// store the callback
	this.callback = callback;

	// initialize internal state.
	this.nLoaded = 0;
	this.nProcessed = 0;
	this.aImages = new Array;

	// record the number of images.
	this.nImages = images.length;

	// for each image, call preload()
	for ( var i = 0; i < images.length; i++ ) 
		this.preload(images[i]);
}

/*
The callback function is stored for later use, then each image URL is passed into the preload() method.
*/

ImagePreloader.prototype.preload = function(image){
 
	// create new Image object and add to array
	// var oImage = new Image; creating an image like this it doesn't work in safari
	var oImage = document.createElement('img');

	this.aImages.push(oImage);

	// set up event handlers for the Image object
	oImage.onload = ImagePreloader.prototype.onload;
	oImage.onerror = ImagePreloader.prototype.onerror;
	oImage.onabort = ImagePreloader.prototype.onabort;

	// assign pointer back to this.
	oImage.oImagePreloader = this;
	oImage.bLoaded = false;

	// assign the .src property of the Image object
	oImage.src = image;	
}

/*
The preload function creates an Image object and assigns functions for the three Image events; onload, onerror and onabort. The onload event is raised when the image has been loaded into memory, the onerror event is raised when an error occurs while loading the image and the onabort event is raised if the user cancels the load by clicking the Stop button on the browser.
A pointer to the ImagePreloader object is stored in each Image object to facilitate the callback mechanism. An optional boolean flag can be added here to indicate whether the image loads properly or not.

Finally, the src attribute is assigned to start the loading of the image.
*/

ImagePreloader.prototype.onComplete = function() {

	this.nProcessed++;
	if ( this.nProcessed == this.nImages ){
		this.callback(this.aImages, this.nLoaded);
	}
}

ImagePreloader.prototype.onload = function(){

	this.bLoaded = true;
	this.oImagePreloader.nLoaded++;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function(){

	this.bError = true;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function(){

	this.bAbort = true;
	this.oImagePreloader.onComplete();
}

function openNewWindow(wUrl, wWidth, wHeight) {
	window.open(wUrl, '', 'width='+wWidth+',height='+wHeight+',directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
}

function openNewScrollableWindow(wUrl, wWidth, wHeight) {
	window.open(wUrl, '', 'width='+wWidth+',height='+wHeight+',directories=no,location=no,menubar=no,resizable=no,scrollbars=yes,status=no,toolbar=no');
}

function sendMail() 
{
  //Recuperem valors i enviem
  var nom = $('nom').value;
  var cognoms = $('cognoms').value;
  var email = $('email').value;
  var opinio = $('opinio').value;
  
  var url = window.location.protocol + "//" + window.location.hostname + window.location.pathname + "contacteEnviat.html";
  $('iframeContacte').contentWindow.setRedirect(url);
  $('iframeContacte').contentWindow.setValues(nom,cognoms,email,opinio);
  $('iframeContacte').contentWindow.submit();	
}

function getEnviat()
{
		updateContent('contacte2');
}

/* FUNCIONS DE CANVI D'ESTAT */


function updateMenuTururu(stateId,menuId) {
	
	if (!myLeftMenuWidth.isDiplayed()) {
		requestMenuContent(menuId);
		myLeftMenuWidth.toggle().chain(function() {									
			updateContent(stateId);	
		});
	}
	else {
		if (stateListener.getCurrentState().idMenu != menuId) {
			requestMenuContent(menuId);
			updateContent(stateId);
		}
		else
		{
			updateContent(stateId,'link'+stateId.charAt(0).toUpperCase() + stateId.substr(1));
		}
	}	
}


function updateInici()
{
	//s'inicialitza myBackgroundCrossFader
	if(myBackgroundCrossFader==null) 
		myBackgroundCrossFader = new Fx.myStyle('maincontainer',
											'contentwrapper',
											'../images/lozanoIntro15.jpg',
											'frontClass',
											'../images/lozanoIntro.jpg',
											'backClass',
											5000
											);
	//es crea un div que bloqueja totes les possibles accions mentre dura el moviment
	//s'executa l'efecte de crossFade inicial amb un delay de 2 segons
	
	if (myLeftMenuWidth.isDiplayed()) {
		stateListener.lockFunctionality();
		myLeftMenuWidth.toggle();
		updateContent('inici',null,onCompleteInici);
	}
	else
	{
		stateListener.lockFunctionality();
		myBackgroundCrossFader.crossFade().chain(function() {									 					
			updateContent('inici',undefined,onCompleteInici);
		});
	}
}

/* FUNCIONS ON COMPLETE */

function onCompleteInici()
{
	 var myAquarelaWidth = new Fx.myWidth($('iniciaquarela'), {duration: 1000}).hide();
	 var myOliWidth = new Fx.myWidth($('inicioli'), {duration: 1000}).hide();
	 $('iniciaquarela').style.visibility = 'visible';
	 $('inicioli').style.visibility = 'visible';
	 myAquarelaWidth.toggle().chain(function() {
	     myOliWidth.toggle().chain(function() {
			   stateListener.unlockFunctionality();									
		});								 	
	});
}

function onCompleteObres()
{
}

