// JavaScript Document

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function display() { //v9.0
  var i,p,v,obj,args=display.arguments;
  for (i=0; i<(args.length-2); i+=3)
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='visible')?'block':(v=='cache')?'none':v; }
    obj.display=v; }
}

if (typeof(base_url) == 'undefined') {
    var base_url = '/index.php'; 
}
if (typeof(webroot) == 'undefined') {
    var webroot = '/app/webroot/'; 
}

var DP = {

	visit: null,
	lteIE6: false,
	artistRequested: null,

	registerEvents: function() {

		// click sur LI dans résulats
		var oeuvres = $$('#listeoeuvres li');
		oeuvres.each(function(element, index){
			//console.log(element, index);
			Event.observe(element,'click',DP.clickLiRes);
		});

		// recherche avancée items catégories
		$$('#categories_choix li').each(function(element, index){
			DP.populateHiddenInput1(element); // contrer persistance des form: resync onload
		});
		$$('#categories_mediums li','#categories_artistes li','#categories_sujets li').each(function(element, index){			
			Event.observe(element,'click',DP.clickCategoRechAvan); // click
			Event.observe(element,'mouseover',function(event){ // mouseover
				$(element).addClassName('hover');
			});
			Event.observe(element,'mouseout',function(event){ // mouseout
				$(element).removeClassName('hover');
			});
		});

		// recherche avancée formats
		$$('#formats li').each(function(element, index){
			DP.populateHiddenInput2(element); // contrer persistance des form: resync onload
			Event.observe(element,'click',function(event){
				$(this).toggleClassName('select');
				DP.populateHiddenInput2(this);
			});
		});

		if ($('liste')) {
			// mouseover sur LIs liste artistes
			Event.observe('liste','mouseover',DP.listeArtistesHover);
			Event.observe('liste','mouseout',DP.listeArtistesHover);
			Event.observe('liste','click',DP.listeArtistesClick);
			Event.observe(window,'unload',DP.listeArtistesUnload);
		}
		
		if (DP.lteIE6) DP.fixIE6PNG();
	},

	fixIE6PNG: function(){
		if ($('flechegauche')) {// alpha relatif sur fleches dans IE
			$('flechegauche').style.filter = 
				"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+webroot+"/img/interface/fleche_accueil_gauche.png')";
		}
		if ($('flechedroite')) {// alpha relatif sur fleches dans IE
			$('flechedroite').style.filter = 
				"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+webroot+"/img/interface/fleche_accueil_droite.png')";
		}
	},

	listeArtistesUnload: function(event) {
		if (DP.artistRequested) {
			$(DP.artistRequested).addClassName('visited');
		}
		//Event.stop(event);
	},

	listeArtistesClick: function(event) {
		var elt = $(Event.element(event)).up('#liste li');
		if (elt && !elt.hasClassName('lettre')) {
			DP.artistRequested = elt;
		}
		//Event.stop(event);
	},

	listeArtistesHover: function(event){
		var elt = $(Event.element(event)).up('#liste li');
		if (!elt) return;
		if (!elt.hasClassName('lettre') && !elt.hasClassName('visited')) {
			if (event.type=='mouseover')
				elt.addClassName('hover');
			else
				elt.removeClassName('hover');
		}
	},

	populateHiddenInput1: function(element) { // comme un select
		var form = $(element).up('form');
		var value = $(element).select('span.value')[0].innerHTML;
		var name = $(element).select('span.name')[0].innerHTML;
		form[name].value = value;
	},

	populateHiddenInput2: function(element) { // comme un checkbox
		var form = $(element).up('form');
		var name = $(element).select('span.name')[0].innerHTML;
		var value = $(element).hasClassName('select') ? "on" : "off";
		form[name].value = value;
	},

	clickCategoRechAvan: function(event){
		//console.log(this); // li

		// style sur li slectionné
		var ul = $(this).up('ul');
		$(ul).select('li').each(function(li){
			$(li).removeClassName('select');
		});
		$(this).addClassName('select');

		// change li choix content
		var prefix = ul.id;
		var container = $(prefix+'_choix');
		var content = this.innerHTML;
		container.update(content);
		$(ul).hide();

		DP.populateHiddenInput1(this);
	},

	clickLiRes: function(event){
		//console.log(this); // li
		var container = $('detail_oeuvre');
		var content = $(this).select('div.meta')[0].innerHTML;
		container.update(content);
		DP.ajaxSetOeuvreVisited(this.id);
	},

	ajaxSetOeuvreVisited: function(id) {
		var idDB = id.replace(/^oeuvre_/,'');
		var url = base_url + '/visit/add/works/'+idDB;
		//console.log(url);
		new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
				$(id).select('a.listeoeuvres')[0].addClassName('visited');
				DP.visit = transport.responseJSON;
				//console.log($H(DP.visit).inspect());
			}
		});
	},

	ajaxSetOeuvreSelected: function(id) {
		var idDB = id.replace(/^oeuvre_/,'');
		var oeuvre = $(id).select('a.listeoeuvres')[0];
		//var action = DP.searchVisit('selected',idDB) != -1 ? 'del' : 'add';
		var action = oeuvre.hasClassName('selection') ? 'del' : 'add';
		var url = base_url + '/visit/'+action+'/selected/'+idDB;
		//console.log(url);
		new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
				oeuvre.toggleClassName('selection');
				DP.visit = transport.responseJSON;
				//console.log($H(DP.visit).inspect());
			}
		});
	},

	searchVisit: function(type, id) {
		return $A(DP.visit[type]).indexOf(id);
	},

	load: function(event) {
		DP.getVisit();
		DP.registerEvents();
		// si on clique avant que la page soit chargée, la boite est vide
		if ($('modifierrecherche_btn'))
			$('modifierrecherche_btn').show();
	},

	artistsVisited: function(){
		if ($('liste')) {
			$A(DP.visit['artists']).each(function(id){
				if ($('artist_'+id))
					$('artist_'+id).addClassName('visited');
			});
		}
	},

	getVisit: function(){
		var url = base_url + '/visit/';
		//console.log(url);
		new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
				DP.visit = transport.responseJSON;
				DP.artistsVisited();
				//console.log($H(DP.visit).inspect());
			}
		});
	}

};
if (Event && Event.observe)
	Event.observe(window,'load',DP.load);

var map;
var myHtml = '<div style="font:12px Arial,Helvetica,sans-serif"><p><strong>Dimension Plus</strong></p><p><a target="_blank" href="http://maps.google.com/maps?saddr=45.4980383,-73.6595546%28Dimension%20Plus%29&daddr=&hl=fr">Itinéraire</a></p></div>';

// Creates a marker at the given point
// Clicking the marker will hide it
function createMarker(latlng) {
	var marker = new GMarker(latlng);
	//GEvent.addListener(marker,"click", function() {
	//	map.openInfoWindowHtml(latlng, myHtml);
	//});
	return marker;
}

function initMap() {//(45.4980383, -73.6595546)
	var lat = 45.4980383;
	var lng = -73.6595546;
	var latlng = new GLatLng(lat,lng);
	map = new GMap2(document.getElementById("map_canvas"));
	map.setCenter(new GLatLng(lat,lng), 15);
	map.addControl(new GSmallZoomControl3D());
	map.addControl(new GMapTypeControl());
	map.addOverlay(createMarker(latlng));
	//map.openInfoWindowHtml();
}
