
function Iui()
{                                           
	var busy = false;
	var albumid = 19; 
	var pageTitle = "Home";
	var curHeight;
	var ajaxErrHandler = null;
	var httpHeaders = {"X-Requested-With" : "XMLHttpRequest"};
	var myScroll = null; 
	var totImgs = 0;
	var loadedImgs = 0;
	 
	$(window).load(function(){
	   init(); 
	});
	
	var sendEvent = function(type, node, props) {
		
	}; 
	
	var handleClick = function(event) {
		var link = event.target;  
		var id = getIdFromHash(link.hash); 
		var parent = $(link).parents("ul.active");
		var parentPath = getParentPath(parent);
		var newHash = id; 
		id = "#"+id;
		
		if (link)
		{             
			
			event.preventDefault();    
			//if(console) console.log("tracking event");
			trackevent("Album","Click", link.title);         
			if (link.href && link.hash)
			{                                  
				unselect(link);               
				$(link).addClass("active");
				$(id).addClass("active");                                       
				location.hash = link.hash;              
			}                                                        
			else if (link.href && !link.hash)
			{         
				unselect(link);                                                                                             
				albumid = $(link).attr("id"); 
				var alias = link.title.toLowerCase(); 
				alias = removeAccents(alias);
				var mAlias = alias.match(/\s/);
				if (mAlias) alias = alias.replace(mAlias,"-");
				mAlias = alias.match(/[a-z]/ig);
				pageTitle = alias;
				location.hash= (parent.length) ?"#/"+ parentPath + pageTitle : "#/"+ pageTitle;
				showAlbum(link.href, curHeight, pageTitle);  
				
				$(link).addClass("active");
				
			}
		}
	};  
	
	var getIdFromHash = function(hash)
	{                                 
		var parts = hash.substr(2).split("/");       
		var id = parts[parts.length-1] ;      
		//console.log("parts : ",parts, "\nid ", id)
		return id;
		
	}
	
	var getParentPath = function(parents)
	{       
		var path = "";
		if (parents.length)
		{       
			//console.log("parents : ", parents );
			for (var i=parents.length-1; i>-1; i--)
			{
				path += $(parents[i]).attr("id") + "/"; 
				//console.log("getParentPath : (i = "+i+") ", $(parents[i]).attr("id"))
			}   
			//console.log("path : ", path)
		} 
		return path;
	};
	
	var toolsClick = function(event)
	{
		var link = event.target;  
		var id = getIdFromHash(link.hash);    
		var newHash = "#/"+id; 
		if (id == "infolettre") 
		{
		   	$("#infolettre p.reponse").removeClass("erreur"); 
			$("#infolettre p.reponse").html(""); 
		}
		id = "#"+id;
		
		if (link)
		{             
			
			event.preventDefault();     
			if (link.href && link.hash)
			{                   
				$(id).addClass("active");              
			}                                                        
		}
	};
	
	var handleForm = function(event)
	{
		event.preventDefault(); 
		var email =  $("#email").val(); 
		var result = email.match(/([a-z0-9._-]+?)@([a-z0-9.-]+)\.([a-z]{2,4})/);  
		if (result)
		{
			$("#infolettre p.reponse").removeClass("erreur"); 
			$("#infolettre p.reponse").html("");     
			
			$.ajax({   
				type: 'POST',
				url: event.target.action,
				data: {email: $("#email").val()},
				success: processForm,
				error: processFormError
			});
		}   
		else
		{
		   $("#infolettre p.reponse").html("VEUILLEZ ENTRER UN COURRIEL VALIDE"); 
			$("#infolettre p.reponse").addClass("erreur");
		}
	};
	
	var processForm = function(data)
	{
		$("#infolettre p.reponse").html("MERCI, VOTRE MESSAGE EST ENVOYÉ");
	}   
	
	var processFormError = function()
	{
	   $("#infolettre p.reponse").html("UNE ERREUR EST SURVENUE, VEUILLEZ RÉESSAYER");	 
	   $("#infolettre p.reponse").addClass("erreur"); 
	}
	
	var getQueryVariable = function(url, variable) {
	        var query = url.split("?")[1];
	        var vars = query.split("&");
	        for (var i = 0; i < vars.length; i++) {
	            var pair = vars[i].split("=");
	            if (pair[0] == variable) {
	                return unescape(pair[1]);
	            }
	        }                              
	    };     
	
	var getPageFromLoc = function()
	{                             
		var page, id, pageUL, pageA;
		var result = location.hash.match(/#\/([^\?_]+)/);   
		//console.log("getPageFromLoc");
		//console.log("result = ", result);
		if (result)
			id = getIdFromHash(location.hash); 
		
			//console.log("id : ",id);
		pageUL = $("#"+id) ;  
		pageA = $('a[title="'+id+'"]');
		page = (pageUL.length) ? pageUL : pageA;               
		
		//console.log("page : ",page);
		if (page.is("ul")) 
		{              
			//console.log("page is ul !",page);                             
			setParentActive(page);
			page.siblings("a").click();  
		} 
		else if (page.is("a"))
		{              
			//console.log("page is a !", page); 
			
			setParentActive(page);  
			albumid = page.attr("id");
			pageTitle = id;
			page.click();
		}
		                
		if (!page.length)
		{
		   	page = "#"+albumid;
			page = $(page);
			page.click(); 
		}
	};  
	
	var setParentActive = function(link)
	{              
		var navParent = $(link).parents(".nav");
		var ulParent =  $(link).parents("ul");
		var ulParentLink =  ulParent.siblings("a");   
		
		//console.log("setParentActive");  
		//console.log("navParent", navParent);
		//console.log("ulParent", ulParent);
		//console.log("ulParentLink", ulParentLink);
		                     
		$(link).parents(".nav").addClass("active");
		$(link).parents("ul:not(.not-nav)").addClass("active"); 
		$(link).parents("ul:not(.not-nav)").siblings("a").addClass("active");    
	};
	
	var showAlbum = function(url, height, title)
	{           
		if ($("#album").html()) $("#album").html(""); 
		//$("#loader").show(); 
		$("#progress").show(); 
	   loadedImgs = 0;
	   	$.ajax({
			url: url+"&curheight="+height+"&ptitle="+title,
			success: processAlbum,
			complete: function() {
				  //$("#loader").hide();
			}
		}); 
	};
	
	var processAlbum = function(data)
	{
		$("#album").html(data);
		$("#album").css("display","block"); 
		myscroll = new iScroll('wrapper', {scrollbarClass: 'thumbScroll', scrollTarget: document.getElementById('scroller')});  
		totImgs = $("#album img").length;                 
		var availHeight = window.innerHeight - $(".header").height();
		var viewHeight = $("#wrapper").height();  
		$("#content").css("padding-bottom", viewHeight);
		$("#album").css("margin-top", -viewHeight);
		$("#album").css("height", viewHeight);
		if (totImgs) $("#album img").load(processImg);
		else
		{           
		   $("#progress").hide();
			$("#bar").css("width","0px"); 
		} 
		
		$("#image_scroller").click(function(event){  
			//$("#image_scroller").removeClass("grabbing");
			//$("#image_scroller").addClass("grab");
		});                                 
		$("#image_scroller").mouseover(function(event){                      
			$("#image_scroller").removeClass("grabbing");
			$("#image_scroller").addClass("grab");
		}); 
		$("#image_scroller").mousedown(function(event){ 
		   $("#image_scroller").removeClass("grab");    
		   $("#image_scroller").addClass("grabbing");
		});
		$("#image_scroller").mouseup(function(event){ 
			$("#image_scroller").removeClass("grabbing");
			$("#image_scroller").addClass("grab");
		});
		
	};               
	
	var processImg = function(event)
	{
		loadedImgs++;                                                               
		var percentLoaded = Math.round(loadedImgs/totImgs*100);
		
		//console.log("Image "+event.target.src+" loaded : "+loadedImgs+" / "+totImgs+" ("+percentLoaded+"%)");
		$("#bar").css("width",percentLoaded+"px"); 
		$(event.target).unbind();
		if (percentLoaded == 100) 
		{                          
			//$("#loader").hide();
		   $("#progress").hide();
			$("#bar").css("width","0px"); 
		} 
	}
	                
	var unselect = function(link)
	{                                      
		var siblings = $(".active");     
		var numParents = $(link).parentsUntil("div#menu>ul>li").length; 
		switch(numParents)
		{
			case 0 :
				unselectAll();
				break;
			case 2 :
				unselectSiblings(link); 
				autoSelectChild(link);
				break;
			case 4 :
				unselectSiblings(link);
				break;  
			default :
				unselectAll();
				break;
		}     
	}; 
	
	var unselectSiblings = function(link)
	{                                   
		var myParent = $(link).parent();                    
		var siblings =  myParent.children(".active");
		myParent.children(".active").removeClass("active");                    
		myParent.siblings().children(".active").removeClass("active");
	};
	
	var unselectAll = function()
	{                               
		$(".active").removeClass("active");                           
	};  
	
	var autoSelectChild = function(link)
	{                                  
  		var id = getIdFromHash(link.hash);
		id = "#"+id;                    
		$(id).find(".nav").first().click();
	};
	
	var listAttributes = function(ele) {
		var list = [];   
		$(ele).each(function() {  
			var attributes = [];
			for(var key in ele.attributes) {                
				if(!isNaN(key)) {
					if(!ele || ele.attributes[key].name.substr(0,ele.length) == ele) {
						attributes.push(ele.attributes[key].name); 
					}
				}
			}  	
				
			list.push(attributes);
		});
		return (list.length > 1 ? list : list[0]);
	};
	
	var followAnchor = function(link) {
		if (!this.busy)
		{
			this.busy = true;
			link.addClass("active"); 
			showPage($(getIdFromHash(link.hash)));
			unselect($(link));
		}
	};
	
	var followAjax =  function(link, replaceLink) {
		
	}; 
	
	var init = function() {  
		$(".nav").click(handleClick); 
		$(".utils").click(toolsClick);
		curHeight = window.innerHeight-230;
		//$('#loader').height(curHeight);
		//$('#loader').css("marginTop", "0px"); 
		$("#newsletter").submit(handleForm);
		getPageFromLoc();        
	};               
	
	var removeAccents = function(str)
	{
		var patternLetters = /[öäüÖÄÜáàâéèêúùûóòôÁÀÂÉÈÊÚÙÛÓÒÔß]/g;
		var lookupLetters = {
		      "ä": "a", "ö": "o", "ü": "u",
		      "Ä": "A", "Ö": "O", "Ü": "U",
		      "á": "a", "à": "a", "â": "a",
		      "é": "e", "è": "e", "ê": "e",
		      "ú": "u", "ù": "u", "û": "u",
		      "ó": "o", "ò": "o", "ô": "o",
		      "Á": "A", "À": "A", "Â": "A",
		      "É": "E", "È": "E", "Ê": "E",
		      "Ú": "U", "Ù": "U", "Û": "U",
		      "Ó": "O", "Ò": "O", "Ô": "O",
		      "ß": "s"
		    };
		var letterTranslator = function(match) { 
		      return lookupLetters[match] || match;
		    } 
		return str.replace(patternLetters, letterTranslator);
	}

}   

var iui = new Iui();  

