/*
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 03/01/2009 +r14
 */
( function($) {
	$.fn.jqm = function(o) {
		var p = {
			overlay :50,
			overlayClass :'jqmOverlay',
			closeClass :'jqmClose',
			trigger :'.jqModal',
			ajax :F,
			ajaxText :'',
			target :F,
			modal :F,
			toTop :F,
			onShow :F,
			onHide :F,
			onLoad :F
		};
		return this.each( function() {
			if (this._jqm)
				return H[this._jqm].c = $.extend( {}, H[this._jqm].c, o);
			s++;
			this._jqm = s;
			H[s] = {
				c :$.extend(p, $.jqm.params, o),
				a :F,
				w :$(this).addClass('jqmID' + s),
				s :s
			};
			if (p.trigger)
				$(this).jqmAddTrigger(p.trigger);
		});
	};

	$.fn.jqmAddClose = function(e) {
		return hs(this, e, 'jqmHide');
	};
	$.fn.jqmAddTrigger = function(e) {
		return hs(this, e, 'jqmShow');
	};
	$.fn.jqmShow = function(t) {
		return this.each( function() {
			t = t || window.event;
			$.jqm.open(this._jqm, t);
		});
	};
	$.fn.jqmHide = function(t) {
		return this.each( function() {
			t = t || window.event;
			$.jqm.close(this._jqm, t)
		});
	};

	$.jqm = {
		hash : {},
		open : function(s, t) {
			var h = H[s], c = h.c, cc = '.' + c.closeClass, z = (parseInt(h.w
					.css('z-index'))), z = (z > 0) ? z : 3000, o = $(
					'<div></div>').css( {
				height :'100%',
				width :'100%',
				position :'fixed',
				left :0,
				top :0,
				'z-index' :z - 1,
				opacity :c.overlay / 100
			});
			if (h.a)
				return F;
			h.t = t;
			h.a = true;
			h.w.css('z-index', z);
			if (c.modal) {
				if (!A[0])
					L('bind');
				A.push(s);
			} else if (c.overlay > 0)
				h.w.jqmAddClose(o);
			else
				o = F;
			h.o = (o) ? o.addClass(c.overlayClass).prependTo('body') : F;
			if (ie6) {
				$('html,body').css( {
					height :'100%',
					width :'100%'
				});
				if (o) {
					o = o.css( {
						position :'absolute'
					})[0];
					for ( var y in {
						Top :1,
						Left :1
					})
						o.style.setExpression(y.toLowerCase(),
								"(_=(document.documentElement.scroll" + y
										+ " || document.body.scroll" + y
										+ "))+'px'");
				}
			}

			if (c.ajax) {
				var r = c.target || h.w, u = c.ajax, r = (typeof r == 'string') ? $(
						r, h.w)
						: $(r), u = (u.substr(0, 1) == '@') ? $(t).attr(
						u.substring(1)) : u;
				r.html(c.ajaxText).load(u, function() {
					if (c.onLoad)
						c.onLoad.call(this, h);
					if (cc)
						h.w.jqmAddClose($(cc, h.w));
					e(h);
				});
			} else if (cc)
				h.w.jqmAddClose($(cc, h.w));

			if (c.toTop && h.o)
				h.w.before('<span id="jqmP' + h.w[0]._jqm + '"></span>')
						.insertAfter(h.o);
			(c.onShow) ? c.onShow(h) : h.w.show();
			e(h);
			return F;
		},
		close : function(s) {
			var h = H[s];
			if (!h.a)
				return F;
			h.a = F;
			if (A[0]) {
				A.pop();
				if (!A[0])
					L('unbind');
			}
			if (h.c.toTop && h.o)
				$('#jqmP' + h.w[0]._jqm).after(h.w).remove();
			if (h.c.onHide)
				h.c.onHide(h);
			else {
				h.w.hide();
				if (h.o)
					h.o.remove();
			}
			return F;
		},
		params : {}
	};
	var s = 0, H = $.jqm.hash, A = [], ie6 = $.browser.msie
			&& ($.browser.version == "6.0"), F = false, i = $(
			'<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>')
			.css( {
				opacity :0
			}), e = function(h) {
		if (ie6)
			if (h.o)
				h.o.html('<p style="width:100%;height:100%"/>').prepend(i);
			else if (!$('iframe.jqm', h.w)[0])
				h.w.prepend(i);
		f(h);
	}, f = function(h) {
		try {
			$(':input:visible', h.w)[0].focus();
		} catch (_) {
		}
	}, L = function(t) {
		$()[t]("keypress", m)[t]("keydown", m)[t]("mousedown", m);
	}, m = function(e) {
		var h = H[A[A.length - 1]], r = (!$(e.target).parents('.jqmID' + h.s)[0]);
		if (r)
			f(h);
		return !r;
	}, hs = function(w, t, c) {
		return w.each( function() {
			var s = this._jqm;
			$(t).each( function() {
				if (!this[c]) {
					this[c] = [];
					$(this).click( function() {
						for ( var i in {
							jqmShow :1,
							jqmHide :1
						})
							for ( var s in this[i]){
								if (H[this[i][s]]){
									H[this[i][s]].w[i](this);
									break;
								}
							}
						return F;
					});
				}
				this[c].push(s);
			});
		});
	};
})(jQuery);

$.fn.center = function() {
	$(this).css(
			{
				position :"absolute",
				margin :"0",
				top :$(window).height() / 2
						+ document.documentElement.scrollTop - $(this).height()
						/ 2,
				left :$(window).width() / 2
						+ document.documentElement.scrollLeft - $(this).width()
						/ 2
			});
	return $(this);
}

function alert(text, titre) {
	if (!titre) {
		titre = ' ';
	}
	if ($('#alert').length) {
		$('#alert .jqmAlertContent').html(text);
		$('#alert .jqmAlertTitle h1').html(titre);
	} else {
		$('body')
				.append(
						$(
								'<div class="jqmAlert" id="alert"><div class="jqmAlertWindow"><div class="jqmAlertTitle clearfix"><h1>'
										+ titre
										+ '</h1><a href="#" class="jqmClose"><em>Fermer</em></a></div><div class="jqmAlertContent">'
										+ text + '</div></div></div>').jqm( {
							zIndex :9999,
							modal :true,
							overlay :50,
							trigger :false
						}));
	}
	$('#alert').center().jqmShow();
}

function over(id, text, titre, suffix, modal, close, trigger, width, height,
		show, overflow, zIndex) {
	var closeLink = '';
	if (!suffix) {
		suffix = '';
	}
	if (!titre) {
		titre = ' ';
	}
	if (!text && $('#' + id).length) {
		text = $('#' + id + ' .jqmWindowContent' + suffix).html();
		if (!text) {
			text = $('#' + id).html();
		}
	}
	if (modal !== false) {
		modal = true
	}
	if (close === true) {
		close = 'jqmClose' + suffix;
		closeLink = '<a href="#" class="' + close + '"><em>Fermer</em></a>';
	}
	if (!trigger) {
		trigger = false;
	}
	if (!width) {
		width = '500px';
	} else {
		width += 'px';
	}
	if (!height) {
		heigth = 'auto';
	} else {
		height += 'px';
	}
	if (!show) {
		show = false;
	}
	if (!overflow) {
		overflow = false;
	}
	if (!zIndex) {
		zIndex = 3000
	}
	$(document)
			.ready(
					function() {
						if ($('#' + id).length) {
							$('#' + id).remove();
						}
						$('body')
								.append(
										$(
												'<div class="jqmWindow'
														+ suffix
														+ '" id="'
														+ id
														+ '" style="width:'
														+ width
														+ '; height:'
														+ height
														+ ';'
														+ ((overflow === true) ? 'overflow:auto;'
																: '')
														+ '">'
														+ '<div class="jqmWindowTitle'
														+ suffix
														+ ' clearfix">'
														+ '<h1>'
														+ titre
														+ '</h1>'
														+ closeLink
														+ '</div>'
														+ '<div class="jqmWindowContent'
														+ suffix + '">' + text
														+ '</div>' + '</div>')
												.jqm( {
													zIndex :zIndex,
													modal :modal,
													closeClass :close,
													overlay :50,
													trigger :trigger,
													onShow : function(hash) {
														hash.w.center().show();
													}
												}));
						if (show) {
							$('#' + id).center().jqmShow();
						}
					});
}

function overShow(id, text, titre, suffix, modal, close, trigger, width,
		height, overflow, zIndex) {
	over(id, text, titre, suffix, modal, close, false, width, height, true,
			overflow, zIndex);
}

function overAjax(id, ajax, titre, suffix, modal, close, trigger, width,
		height, target, show, overflow, zIndex) {
	var closeLink = '';
	if (!suffix) {
		suffix = '';
	}
	if (!titre) {
		titre = ' ';
	}
	if (modal !== false) {
		modal = true
	}
	if (close === true) {
		close = 'jqmClose' + suffix;
		closeLink = '<a href="#" class="' + close + '"><em>Fermer</em></a>';
	}
	if (!trigger) {
		trigger = false;
	}
	if (!width) {
		width = '500px';
	} else {
		width += 'px'
	}
	if (!height) {
		heigth = 'auto';
	} else {
		height += 'px'
	}
	if (!target) {
		target = '.jqmWindowContent'
	}
	if (!show) {
		show = false;
	}
	if (!overflow) {
		overflow = false;
	}
	if (!zIndex) {
		zIndex = 3000
	}
	$(document)
			.ready(
					function() {
						if ($('#' + id).length) {
							$('#' + id).remove();
						}
						$('body')
								.append(
										$(
												'<div class="jqmWindow'
														+ suffix
														+ '" id="'
														+ id
														+ '" style="width:'
														+ width
														+ '; height:'
														+ height
														+ ';'
														+ ((overflow === true) ? 'overflow:auto;'
																: '')
														+ '">'
														+ '<div class="jqmWindowTitle'
														+ suffix
														+ ' clearfix">'
														+ '<h1>'
														+ titre
														+ '</h1>'
														+ closeLink
														+ '</div>'
														+ '<div class="jqmWindowContent'
														+ suffix
														+ '"><div class="loading" style="border:0px; background-color:transparent;">Veuillez patienter... <img src="/images/busy'
														+ suffix
														+ '.gif" alt="chargement" /></div></div>'
														+ '</div>').jqm( {
											zIndex :zIndex,
											ajax :ajax,
											modal :modal,
											closeClass :close,
											overlay :50,
											trigger :trigger,
											target :target + suffix,
											onLoad : function(hash) {
												hash.w.center().show();
											}
										}));
						if (show) {
							$('#' + id).center().jqmShow();
						}
					});
}

function overAjaxShow(id, ajax, titre, suffix, modal, close, trigger, width,
		height, target, overflow, zIndex) {
	overAjax(id, ajax, titre, suffix, modal, close, false, width, height,
			target, true, overflow, zIndex);
}
