﻿var ubic = {};
ubic.base = "http://www.ubic-agencement.fr/";
if(window.location.href.indexOf("localhost") != -1) ubic.base = "http://localhost/ubic/";


ubic.init = function()
{
	ubic.loading = "<p class='loading'>Chargement en cours</p>";
	ubic.initSWFAddress();
	ubic.initSidebar();
	
	var content = $("#content");
	content.fadeIn();
}

ubic.initSWFAddress = function()
{
	SWFAddress.addEventListener("change", ubic.handleChange);
	ubic.updateLinks();
}

ubic.updateLinks = function()
{
	var links = $("a");
	links.each(ubic.updateLink);
}

ubic.updateLink = function()
{
	var href = this.href;
	if(href.indexOf(ubic.base + "#") == -1)
	{
		href = href.split("#").join("");
		
		var parts = href.split(ubic.base);
		var path = parts[1];
		if(path && path.length) 
		{
			href = parts.join(ubic.base + "#" + (path.length ? "/" : ""));
			this.href = href;
		}
	}
}

ubic.handleChange = function()
{
	var value = SWFAddress.getValue();
	if(ubic.isValid(value))
	{
		$("a").css("cursor", "wait");
		$("a").removeClass("selected");
		ubic.loadPage(value);
		
		var link = $("#sidebar a[href="+ubic.base + "#" + value + "]");
		link.addClass("selected");
		
		var p = link.parent();
		while(p != undefined && !p.hasClass("navigation")) 
		{
			if(p.css("display") != "block") p.slideDown("slow");
			p = p.parent();
		}
	}
	//else console.log("...");
}

ubic.isValid = function(value)
{
	var valid = false;
	var links = $("#sidebar a[href="+ubic.base + "#" + value + "]");
	
	//console.log(links);
	return links.length == 1;
}

ubic.initSidebar = function()
{
	var ul = $("#sidebar>ul");
	$("ul", ul).css("display", "none");
	$("a", ul).click(ubic.slideToggle);
}

ubic.slideToggle = function()
{
	
	this.blur();
	var subNav = $(">ul", $(this).parent());
	if(subNav.length) 
	{
		subNav.slideToggle();
		return false;
	}
	else if(this.href.indexOf("#") != -1)
	{
		var value = this.href.split("#")[1];
		SWFAddress.setValue(value);
		return false;
	}
	else
	{
		return true;
	}
}

ubic.loadPage = function(path)
{
	$("#content").load(ubic.base + path + " #content .post", ubic.showContent);
	ubic.reloadSWF();
}


function thisMovie(movieName)
{
	if (navigator.appName.indexOf("Microsoft") != -1)
	{
		return window[movieName];
    }
	else
	{
		return document[movieName];
    }
}

ubic.reloadSWF = function ()
{
	if(thisMovie("swfContainer").reloadSWF)	thisMovie("swfContainer").reloadSWF();
}


ubic.showContent = function()
{
	$("a").css("cursor", "pointer");
	if(window.location.href.indexOf("references") != -1) ubic.initGallery();
	var content = $("#content");
	var children = content.children();
	children.css("display", "none");
	children.fadeIn();
	
	ubic.updateLinks();
}

ubic.initGallery = function()
{
	var imgs = $("#content .entry img");
	if(imgs.length < 2) return;
	
	var content = $("#content .post");
	content.append("<div id='imgContainer' />");
	content.append("<div id='thumbContainer'><div class='content' /></div>");
	
	
	ubic.loadingImages = imgs.length;
	ubic.contentWidth = 0;
	imgs.css("display", "none");
	imgs.appendTo($("#thumbContainer .content"));
	imgs.each(ubic.initThumb);
	
	
}

ubic.initThumb = function()
{
	if(!this.complete) $(this).load(ubic.onThumbLoaded);
	else ubic.thumbLoaded(this);
}

ubic.onThumbLoaded = function ()
{
	ubic.thumbLoaded(this);
}

ubic.thumbLoaded = function(thumb)
{
	ubic.loadingImages --;
	var img = $(thumb);
	img.css("width", "95px");
	img.css("height", "68px");
	img.css("display", "block");
	img.css("cursor", "pointer");
	img.fadeIn("slow");
	ubic.contentWidth += parseInt(img.css("width")) + parseInt(img.css("margin-right"));
	
	ubic.checkImageLoad();
}

ubic.checkImageLoad = function ()
{
	if(ubic.loadingImages == 0) ubic.initThumbs();
}

ubic.initThumbs = function()
{	
	var thumbContainer = $("#thumbContainer");
	var content = $("#thumbContainer .content");
	content.css("width", ubic.contentWidth);
	
	if(ubic.contentWidth > thumbContainer.width())
	{
		var containerWidth = parseInt(thumbContainer.css("width"));
		var contentWidth = content.width() - 6;
		
		
		var deltaWidth = contentWidth - containerWidth;
		
		thumbContainer.scrollLeft(0);
		thumbContainer.unbind("mousemove");
		thumbContainer.mousemove(
		function(e)
		{
			var containerX = thumbContainer.offset().left;
			var kX = (e.pageX - containerX - 50) / (containerWidth - 2*50);
			kX = Math.min(Math.max(0, kX), 1);
			var left = Math.round(kX * deltaWidth);
			thumbContainer.scrollLeft(left);
		});
	}
	
	var imgs = $("img", thumbContainer);
	if(imgs.length == 0) return;
	imgs.click(ubic.loadImageClick);
	
	ubic.loadImage(imgs[0]);
}

ubic.loadImageClick = function()
{
	ubic.loadImage(this);
}

ubic.loadImage = function(target)
{
	var thumbContainer = $("#imgContainer");
	thumbContainer.html(ubic.loading);
	
	$("#content .selected").removeClass("selected");
	$(target).addClass("selected");
	
	//var img = $("<img src='" + target.src + "'/>");
	//img.load(ubic.showImage);
	
	var image = new Image();
	var img = $(image);
	img.load(ubic.showImage);
	image.src = target.src;
}

ubic.showImage = function()
{
	var thumbContainer = $("#imgContainer");
	var img = $(this);
	thumbContainer.html(this);
	img.css("display", "none");
	img.fadeIn("fast");
}

$(document).ready(function(){ubic.init();});