/* Shorcut jQuery pour no conflict avec Prototype.js */
var $j = jQuery.noConflict();



/* Cookies */
function set_cookie(name, value, nDays, path, domain, secure) {
	var cookie_string = name + "=" + escape(value);

	if (nDays) {
		var today = new Date();
		var expire = new Date();
		expire.setTime(today.getTime() + 3600000 * 24 * nDays);
    	cookie_string += "; expires=" + expire.toGMTString();
	}

	cookie_string += (path)   ? "; path=" + escape(path) : "";
    cookie_string += (domain) ? "; domain=" + escape(domain) : "";
	cookie_string += (secure) ? "; secure" : "";

	document.cookie = cookie_string;
}

function get_cookie(cookie_name) {
	var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

	if (results)
		return unescape(results[2]);
	else
		return null;
}

function delete_cookie(cookie_name, path, domain) {
	var cookie_date = new Date ();	
	cookie_date.setTime(cookie_date.getTime() - 1);
	cookie_name += "=; expires=" + cookie_date.toGMTString();
	
	cookie_name += (path)   ? "; path=" + escape(path) : "";
    	cookie_name += (domain) ? "; domain=" + escape(domain) : "";	
	
	document.cookie = cookie_name;
}


function showProfilePopup(id) {
	var init = $j("#" + id).data("init");
	if ($j("#" + id).data("init") == null) {
		createOverlay(id, {title: "&nbsp;", center: true});
		$j("#" + id).data("init", true);
	}
	$j("#" + id).show();
}



function changeFontSize(size) {
	$j(".font-size").removeClass("font-size-selected");

	if (size == 'small') {
		set_cookie("fontSize", size, '', '/', '' ,'');
		jQuery("body").css("font-size", "11px");
		$j("#fontSizeSmall").addClass("font-size-selected");
	}
	if (size == 'normal') {
		delete_cookie("fontSize",'/','');
		jQuery("body").css("font-size", "12px");
		$j("#fontSizeNormal").addClass("font-size-selected");
	}
	if (size == 'large') {
		set_cookie("fontSize", size, '', '/', '' ,'');
		jQuery("body").css("font-size", "13px");
		$j("#fontSizeLarge").addClass("font-size-selected");

	}
}





jQuery(document).ready(function(){
	// Pour IE6 seulement
	if (jQuery.browser.msie && jQuery.browser.version < 7) {
		// Transparent PNG
		$j(document).pngFix();
	}
});



//--- RUN NOW ---
// Retenir le size des fonts
var fontSize = get_cookie("fontSize");
if (fontSize) {
	changeFontSize(fontSize);
}













function getViewport() {
	var elem = window
	var prop = 'inner';
	
	if (!('innerWidth' in window)) {
		elem = document.documentElement || document.body;
		prop = 'client';
	}
	
	return { width: elem[prop+'Width'], height: elem[prop+'Height'] }
}


/**
 * Function pour centrer un element au centre de la fenetre
 */
function centerElement(elementId) {
	var jElement = jQuery("#" + elementId);
	if  (jQuery.browser.msie && jQuery.browser.version < 7) {
		jElement.css("position", "absolute");
		jElement.css("left", "-10%");
		jElement.css("top", "-30%");
	} else if (jQuery.browser.msie && jQuery.browser.version >= 7) {
		jElement.css("position", "absolute");
		jElement.css("left", "-10%");
		jElement.css("top", "-30%");
		jElement.css("margin-top", jElement.height() / 2 * -1);
		jElement.css("margin-left", jElement.width() / 2 * -1);
	} else {
		jElement.css("position", "fixed");
		jElement.css("left", "50%");
		jElement.css("top", "50%");
		jElement.css("margin-top", jElement.height() / 2 * -1);
		jElement.css("margin-left", jElement.width() / 2 * -1);
	}
}

function keepElementInViewport(elementId) {
	// Keep inside viewport
	viewport = getViewport();
	
	if (jQuery.browser.msie && jQuery.browser.version < 7) {
		var dims = getElementDimensions(elementId);
		// setExpression ne semble pas marcher avec les popups
		if (dims.height > viewport.height - 50) {
			$j("#" + elementId + "-body").css("height", viewport.height - 100);
			$j("#" + elementId + "-body").css('overflow', 'auto');
		}
		if (dims.width > viewport.width - 50) {
			$j("#" + elementId).css("width", viewport.width - 50);
		}
	} else {
		$j("#" + elementId + "-body").css("max-height", viewport.height - 100);
		$j("#" + elementId).css("max-width", viewport.width - 50);
		$j("#" + elementId + "-body").css('overflow', 'auto');
	}
}


/**
 * Contourner les elements qui ont un style display:none, qui n'ont pas de dimension tant qu'il ne sont pas encore visible
 */
function getElementDimensions(elementId) {
	var jElement = $j("#" + elementId);
	if (jElement.css('display') == 'none') {
		jElement.css({visibility: 'hidden', display: 'block'});
		var dims = {width: jElement.width(), height: jElement.height()};
		jElement.css({display: 'none', visibility: 'visible'});
	} else {
		var dims = {width: jElement.width(), height: jElement.height()};
	}
    return dims;
}


/**
 * Si le id n'existe pas deja, la function cree lui-meme un wrapper autour.
 *
 * options:
 *   onclose : (hide|remove|disabled) or javascriptString; default is hide
 *   body : string
 *   className : string (Style class name)
 */
 

function createOverlayBackground(elementId, options) {
	var jElement;

	// Test si ca existe, si non, on le cree
	jElement = $j("#" + elementId);
	if (jElement.size() == 0) {
		// ligne du body
		$j("body").prepend("<div id=\"" + elementId + "\" style=\"display: none\"></div>");

		jElement = $j("#" + elementId);
		if (jQuery.browser.msie && jQuery.browser.version < 7) {
			jElement.css("position", "absolute");
			jElement.css("left", "0");
			jElement.css("top", "0");
			jElement.css("height", document.body.offsetHeight);
		} else if (jQuery.browser.msie && jQuery.browser.version >= 7) {
			jElement.css("position", "absolute");
			jElement.css("left", "0");
			jElement.css("top", "0");
			jElement.css("height", document.body.offsetHeight);
		} else {
			jElement.css("position", "fixed");
			jElement.css("left", "0");
			jElement.css("top", "0");
			jElement.css("height", "auto");
		}
		jElement.css("background", "#000");
		jElement.css("opacity", "0.5");
		jElement.css("width", "100%");
		jElement.css("z-index", 999);
	}
}

 
function createOverlay(elementId, options) {
	this.jElement = null;

	var str = "";
	var testExistId = false;

	options           = options           || {};
	options.onclose   = options.onclose   || "hide";
	options.disableCloseButton = options.disableCloseButton   || "false";
	options.className = options.className || "rp-darkblue";
	options.body      = options.body      || " ";
	options.title     = options.title     || " ";
	options.center    = Boolean(options.center)  || null;
	options.visible   = Boolean(options.visible) || null;
	options.width     = options.width     || null;
	options.height    = options.height    || null;
	

	// Strings
	var overlayCloseBtn  = overlayCloseBtn   || "Close";

	
	// Test si ca existe
	this.jElement = $j("#" + elementId);
	if (this.jElement.size() > 0) {
		testExistId = true;
		options.body = this.jElement.html();
	}

	// ligne du body
	if (testExistId != true) {
		$j("body").prepend("<div id=\"" + elementId + "\" class=\"" + options.className + "\" style=\"display: none\"></div>");
	}

	this.jElement = $j("#" + elementId);


	// Si c'est deja initialized on ne la recree pas.
	init = jElement.data("initialized");
	if (init == true) {
		return; // On a deja cree le overlay
	} else {
		jElement.data("initialized", true);
	}


    // Gestion du Close
	var closeAction = null;
	if (options.onclose != "disabled") {
		if (options.onclose == "remove")      { closeAction = "$j('#" + elementId + "').remove()"; }
		else if (options.onclose == "hide")   { closeAction = "$j('#" + elementId + "').hide()"; }
		else                                  { closeAction = options.onclose; }
	}

	str +=  "<table class=\"rp\" cellspacing='0' cellpadding='0' border='0'>" +
			"<tr>" +
			"	<td class=\"rp-tl\"></td>" +
			"	<td class=\"rp-top\">";

			if (closeAction) {
				str += "<div class=\"rp-close\" onclick=\"" + closeAction + "\" />";
			}

	str +=  "<h1>" + options.title + "</h1>" +
			"</td>" +
			"	<td class=\"rp-tr\"></td>" +
			"</tr><tr>" +
			"	<td class=\"rp-left\"></td>" +
			"	<td class=\"rp-middle\"><div id=\"" + elementId + "-body\" class=\"rp-body\">" + options.body + "</div>";

			if (closeAction && !options.disableCloseButton) {
				str += "<div style=\"text-align:right; padding: 5px;\">";
				str += "<a href=\"javascript:void(0)\" onclick=\"" + closeAction + "\" class=\"rbtn rbtn-blue\"><span>"+ overlayCloseBtn +"</span></a>";
				str += "</div>";
			}

	str +=  "   </td>" +
			"	<td class=\"rp-right\"></td>" +
			"</tr><tr>" +
			"	<td class=\"rp-bl\"></td>" +
			"	<td class=\"rp-bottom\"></td>" +
			"	<td class=\"rp-br\"></td>" +
			"</tr></table>";


	this.jElement.html(str);

	$j(".rp-body").css('position', 'relative');

	// Width
	if (options.width != null) {
		this.jElement.width(options.width);
	}

	// Height
	if (options.height != null) {
		$j("#" + elementId + "-body").css('height', options.height);
		$j("#" + elementId + "-body").css('overflow', 'auto');
	}

	// Keep inside viewport
	keepElementInViewport(elementId);
	
	
	// Centering
	if (options.center == true) {
		centerElement(elementId);
	}

	// Visible
	if (options.visible == true) {
		this.jElement.show();
	} else {
		this.jElement.hide();
	}
	
	
	// Pour IE6 seulement
	if (jQuery.browser.msie && jQuery.browser.version < 7) {
		// Transparent PNG
		this.jElement.pngFix();
	}
	
	
	jElement.css("z-index", 999);

	this.jElement.draggable({handle: $j("#" + elementId + " .rp-top")});

	return this;
}