﻿var valoVars = {
	loginUrl: '/Bienvenue',
	messageSupport: 'Si le problème persiste, veuillez contacter la hotline Valorissimo.com au 0810 00 30 60.',
	autrePositionRS: 10
}

// Ajouts de fonctions aux types standards
// http://stackoverflow.com/questions/646628/javascript-startswith
if (typeof String.prototype.startsWith != 'function') {
	String.prototype.startsWith = function (str) {
		return this.slice(0, str.length) == str;
	};
}
// http://blog.stevenlevithan.com/archives/faster-trim-javascript
if (typeof String.prototype.trim != 'function') {
	String.prototype.trim = function() {
		var str = this.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
		while (ws.test(str.charAt(--i)));
		return str.slice(0, i + 1);
	}
}
// Idem adapté en left
if (typeof String.prototype.trimLeft != 'function') {
	String.prototype.trimLeft = function () {
		return this.replace(/^\s\s*/, '');
	};
}
// http://stackoverflow.com/questions/280634/endswith-in-javascript
if (typeof String.prototype.endsWith != 'function') {
	String.prototype.endsWith = function (suffix) {
		return this.indexOf(suffix, this.length - suffix.length) !== -1;
	};
}

Array.prototype.contains = function (val) {
	var hasVal = false;
	for (var i = 0; i < this.length; i++) {
		hasVal = (this[i] == val);
		if (hasVal)
			break;
	}
	return hasVal;
};

// Ajout du support JSON si manquant. https: //github.com/douglascrockford/JSON-js
var JSON;if(!JSON){JSON={};}
(function(){'use strict';function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==='string'){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());


// Extension jQuery pour tester si un élém a le focus en :focus. ne sera plus nécessaire en jQuery 1.6
// http://stackoverflow.com/questions/967096/using-jquery-to-test-if-an-input-has-focus
(function ($) {
	var filters = $.expr[":"];
	if (!filters.focus) {
		filters.focus = function (elem) {
			return elem == document.activeElement && (elem.type || elem.href);
		};
	}
})(jQuery);

// Classe Hash. Code semblant venir de http://recursive-design.com/blog/2007/07/25/javascript-hash-class/.
function Hash() {
	this.length = 0;
	this.items = new Array();
	for (var i = 0; i < arguments.length; i += 2) {
		if (typeof (arguments[i + 1]) != 'undefined') {
			this.items[arguments[i]] = arguments[i + 1];
			this.length++;
		}
	}

	this.getItembyVal = function (in_val) {
		var results = new Array();
		for (var i in this.items) {
			if (this.items[i] == in_val) {
				results.push(i)
			}
		}
		return results;
	}

	this.removeItem = function (in_key) {
		var tmp_previous;
		if (typeof (this.items[in_key]) != 'undefined') {
			this.length--;
			tmp_previous = this.items[in_key];
			delete this.items[in_key];
		}

		return tmp_previous;
	}

	this.getItem = function (in_key) {
		return this.items[in_key];
	}

	this.setItem = function (in_key, in_value) {
		var tmp_previous;
		if (typeof (in_value) != 'undefined') {
			if (typeof (this.items[in_key]) == 'undefined') {
				this.length++;
			}
			else {
				tmp_previous = this.items[in_key];
			}

			this.items[in_key] = in_value;
		}

		return tmp_previous;
	}

	this.hasItem = function (in_key) {
		return typeof (this.items[in_key]) != 'undefined';
	}

	this.clear = function () {
		for (var i in this.items) {
			delete this.items[i];
		}

		this.length = 0;
	}
}

var valoInitializers = function () {
	function initLoginPage() {
		swfobject.registerObject('FlashID', '9', '/Content/Flash/expressInstall.swf');

		var pwd, pwdPrompt;
		function showPrompt(show) {
			show = show && pwd.val() == '' && !pwd.is(':focus');
			if (show)
				pwdPrompt.show();
			else
				pwdPrompt.hide();
		}

		function toggleLogin(oubli) {
			if (oubli) {
				$('.login').hide();
				$('.motDePass').show();
			}
			else {
				$('.motDePass').hide();
				$('.login').show();
			}
		}

		$(document).ready(function () {
			pwd = $('#password');
			pwdPrompt = $('#pwdPrompt');
			pwd.focus(function () {
				showPrompt(false);
			}).change(function () {
				showPrompt(false);
			}).blur(function () {
				showPrompt(true);
			});

			var jqFrmAcc = $('#accountForm');
			jqFrmAcc.submit(function () {
				$.postAction(jqFrmAcc.attr('action'), jqFrmAcc, function (returnCode) {
					if (returnCode >= 0)
						toggleLogin(false);
				});
				return false;
			});

			pwdPrompt.click(function () { showPrompt(false); pwd.focus(); });
			showPrompt(true);

			$('#Name').keypress(function () {
				setTimeout(function () {
					showPrompt(true);
				}, 50)
			});

			//hp non loguee hide/show toogle
			$('.btnMdp').click(function (e) {
				e.preventDefault();
				toggleLogin(true);
			});

			$('.btnRetour').click(function (e) {
				e.preventDefault();
				toggleLogin(false);
			});

			popupHandler.init();

			$('#email').attr('validationtxt', 'isEmail');

			$('#envoyerMail').click(function (e) {
				e.preventDefault();
				var jqForm = $(this).closest('form');

				if (valoValidation.checkForm(jqForm.get(0))) {
					var href = jqForm.attr('action');

					$.postAction(href, jqForm, function (returnCode) {
						if (returnCode > 0)
							popupHandler.close();
					});
				}
			});
		});
	}

	function initPreinscription() {
		function checkFormPreInscription(Form) {
			return valoValidation.checkForm(Form, ['AdresseCompl', 'Comments'], null, [['Mobile', 'TelBur']]);
		}

		$(document).ready(function () {
			$('input[type="reset"]').click(function () {
				valoUtils.closeCurrentWindow();
			});
			$('#EMail').attr("validationtxt", 'isEmail');

			var jqFrmReg = $('#frmRegistration');
			jqFrmReg.submit(function (e) {
				e.preventDefault();
				var isValid = checkFormPreInscription(jqFrmReg.get(0));
				if (isValid) {
					$.postAction(jqFrmReg.attr('action'), jqFrmReg, function (rCode) {
						if (rCode > 0)
							valoUtils.closeCurrentWindow();
					});
				}
				else {
					popupHandler.showMessage('Le formulaire est incomplet, nous ne pouvons pas prendre en compte votre pré-inscription.',
						null, 30000);
				}
				return false;
			});
		});
	}

	function initInscription() {
		function checkFormCoords(form) {
			return valoValidation.checkForm(form,
				['prescr_Fax', 'prescr_AdresseCompl', 'societe_Capital',
					'societe_NumGestion', 'societe_AdresseComplSiege'],
				null, [['prescr_TelBur', 'prescr_Mobile']]);
		}

		$(document).ready(function () {
			initCoordonneesSocieteFields('societe');

			$('input[type="reset"]').click(function () {
				valoUtils.closeCurrentWindow();
			});

			var jqFrm = $('#formDeclaration');
			jqFrm.submit(function (e) {
				e.preventDefault();
				var isValid = checkFormCoords(jqFrm.get(0));
				if (isValid) {
					$.postAction(jqFrm.attr('action'), jqFrm, function (rCode) {
						if (rCode < 0)
							return;

						popupHandler.show($('#overlaySuccess'), function (elt) {
							$('#master-loading').show();
							valoUtils.closeCurrentWindow();
						});
					});
				}
				else {
					popupHandler.showMessage('Le formulaire est incomplet, nous ne pouvons pas prendre en compte votre inscription.',
						null, 30000);
				}

				return false;
			});
		});
	}

	function initCoordonneesSociete() {
		function checkFormSte(form) {
			return valoValidation.checkForm(form, ['Capital', 'NumGestion', 'AdresseComplSiege']);
		}

		$(document).ready(function () {
			initCoordonneesSocieteFields();

			$('input[type="reset"]').click(function () {
				valoUtils.closeCurrentWindow();
			});

			var jqFrmReg = $('#formDeclaration');
			jqFrmReg.submit(function (e) {
				e.preventDefault();
				var isValid = checkFormSte(jqFrmReg.get(0));
				if (isValid) {
					$.postAction(jqFrmReg.attr('action'), jqFrmReg, function (rCode) {
						if (rCode > 0)
							valoUtils.closeCurrentWindow();
					});
				}
				else {
					popupHandler.showMessage('Le formulaire est incomplet, nous ne pouvons pas prendre en compte vos modifications.',
						null, 30000);
				}

				return false;
			});
		});
	}

	function initCoordonneesSocieteFields(prefix) {
		if (prefix && prefix.length > 0)
			prefix += '_';
		else
			prefix = '';

		$(document).ready(function () {
			$('#' + prefix + 'FinCarteT').datepicker({
				changeMonth: true,
				changeYear: true,
				yearRange: 'c-2:c+18'
			});

			valoUtils.setCurrencyInput($('#' + prefix + 'Capital'));

			var jqPosRS = $('#' + prefix + 'PositionRS');
			var jqAutrePosRS = $('#' + prefix + 'AutrePositionRS');
			jqPosRS.change(function (e) {
				valoValidation.unsetErrorField(jqAutrePosRS);
				if (jqPosRS.val() == valoVars.autrePositionRS) {
					jqAutrePosRS.prop('disabled', false);
					jqAutrePosRS.focus();
				}
				else
					jqAutrePosRS.prop('disabled', true);
			});
		});
	}

	function initMaster() {
		$(document).ready(function () {
			popupHandler.init();

			$('.logInOut').click(function () {
				$('.toggleLogin').toggle();
				$('.logInOut').toggleClass('close');
			});

			$('#contactRpv').click(function (e) {
				e.preventDefault();
				var jqForm = $('#overlayContactMe').find('form');

				if (valoValidation.checkForm(jqForm.get(0), ['contact'])) {
					var href = jqForm.attr('action');
					$.postAction(href, jqForm, function (returnCode) {
						if (returnCode >= 0)
							popupHandler.close();
					});
				}
			});

			/*** navigation niveau 1 du site ***/
			$('#nav1 li a').mouseover(function () {
				var navElt = $(this);
				navElt.addClass('selected');
				$('#nav1 ul ul').hide();
				navElt.parent().children('#nav1 ul ul').show();
			})
			.mouseleave(function () {
				var navElt = $(this);
				navElt.removeClass('selected');
				var myNav = navElt.parent().children('#nav1 ul ul');
				if ($(myNav).is(':visible') == true) {
					myNav.hide();
				}
			});
			$('#nav1 ul ul').mouseover(function (e) {
				var navElt = $(this);
				navElt.parent().children().addClass('selected');
				navElt.show();
			})
			.mouseleave(function (e) {
				var navElt = $(this);
				navElt.parent().children().removeClass('selected');
				navElt.hide();
			});

			/*** navigation niveau 2 du site ***/
			var jqNav2 = $('#nav2');
			if (jqNav2.length > 0) {
				jqNav2.find('.current ul').show();

				/* Action sur click d'une li a */
				jqNav2.find('li a').click(function () {
					/* Si je ne clique pas sur lui-même */
					var navLnk = $(this);
					if (!navLnk.hasClass('active')) {

						jqNav2.find('li[class="current"]').removeClass('current');
						jqNav2.find('li a[class="active"]').removeClass('active');
						navLnk.parent().find('ul li').removeClass('active');

						/* Slide du sous-menu */
						navLnk.siblings().toggle('slow');
						navLnk.toggleClass('active');
					}
				});
			}
		});
	}

	function initRechercheSimple(urlCount, urlLocalisations, urlVilles) {
		$(document).ready(function () {
			var sh = searchHandler;
			sh.urls.countNbLots = urlCount;
			sh.urls.loadPlaces = urlLocalisations;
			sh.urls.loadCities = urlVilles;
			sh.callbacks.formChanged = searchHandler.updateNbreLot;

			$('#goSearch').click(function (e) {
				e.preventDefault();
				window.location = e.target.href + '?' + valoUtils.removeEmptyQueryStrParams($('#search').serialize());
			});
		});
	}

	function initRechercheComplete(urlLocalisations, urlVilles, urlProgrammes) {
		$(document).ready(function () {
			$('.mainContainer span.bulle').aToolTip({
				toolTipClass: 'tooltipRight',
				xOffset: -38,
				yOffset: 5
			});

			var sh = searchHandler;
			sh.urls.loadPlaces = urlLocalisations;
			sh.urls.loadCities = urlVilles;
			sh.urls.loadProgrammes = urlProgrammes;
			$('form.formProgramme .btnOk input').click(function (e) {
				if (!sh.validateProg())
					e.preventDefault();
			});
		});
	}

	function initPageResultatsLots(pageIndexBase, urlRefresh) {
		ajaxHtmlHandler.callbacks.refineAjaxUrl = ajaxHtmlHandler.getRefineUrlCallbackForSelects('#Option, #PageSize');

		ajaxHtmlHandler.callbacks.htmlRefreshed = function (url, htmlContainerId, linksSelector) {
			ajaxHtmlHandler.activateLinks(linksSelector, htmlContainerId);

			$('#Option, #PageSize').change(function () {
				var targetUrl = valoUtils.setUrlParam(url, 'PageIndex', pageIndexBase);
				ajaxHtmlHandler.ajaxHtml(targetUrl, htmlContainerId, linksSelector);
			});

			var jqHtmlContainer = $('#' + htmlContainerId);

			popupHandler.init(function () {
				ajaxHtmlHandler.ajaxHtml(url, htmlContainerId, linksSelector);
			}, jqHtmlContainer);

			var actionLinks = jqHtmlContainer.find('a.actionopt');
			actionLinks.click(function (e) {
				e.preventDefault();
				var reloadList = function () {
					ajaxHtmlHandler.ajaxHtml(url, htmlContainerId, linksSelector);
				};
				$.postAction(e.target.href, null, reloadList, reloadList);
			});
		};

		$(document).ready(function () {
			var jqHeaderCriteres = $('#contentWide .modifierRecherche');
			var jqToggleLink = jqHeaderCriteres.find('a.close');
			if (jqToggleLink.length > 0) {
				var toggleLink = jqToggleLink.get(0);
				function toggleCriteres(e) {
					e.preventDefault();
					collapsableHandler.toggle(toggleLink, 'modifRecherche');
				}
				jqHeaderCriteres.click(toggleCriteres);
				jqToggleLink.click(function (e) {
					e.preventDefault();
				});
			}

			ajaxHtmlHandler.callbacks.htmlRefreshed(urlRefresh, 'rechLots', '#rechLots .pagination li a, #rechLots .tabHead th a');
		});
	}

	function initEditionVeille() {
		$(document).ready(function () {
			var jqFrmVeille = $('#VeilleSave');
			jqFrmVeille.submit(function (e) {
				e.preventDefault();

				var jqNom = $('#Vname');
				var jqClient = $('#Cname');
				jqNom.val(jqNom.val().trim());
				jqClient.val(jqClient.val().trim());
				var isValid = jqNom.val().length > 0 || jqClient.val().length > 0;

				if (isValid) {
					$.postAction(jqFrmVeille.attr('action'), jqFrmVeille);
				}
				else {
					popupHandler.showMessage('Veuillez saisir le nom de la veille ou celui du client.');
				}
			});
		});
	}

	function initAddToSelectionDialog() {
		$(document).ready(function () {
			var jqForm = $('#ajoutSelection');
			var jqValidOption = jqForm.find('.valider');
			jqValidOption.click(function (e) {
				e.preventDefault();
				if (valoValidation.checkForm(jqForm.get(0), null, null, [['SId', 'SelName']])) {
					$.postAction(jqForm.attr('action'), jqForm, function (returnCode) {
						var close = true;
						var message = '';
						switch (returnCode) {
							case -1:
								message = 'Votre ajout n\'a pas pu être effectué : la liste choisie ne semble plus exister.';
								break;
							case -2:
								message = 'Votre ajout n\'a pas pu être effectué : le lot ne semble plus disponible.';
								break;
							case -3:
								message = 'Votre ajout n\'a pas pu être effectué : l\'opération ne semble plus disponible.';
								break;
							case -4:
								close = false;
								message = 'Votre ajout n\'a pas pu être effectué : le nom de nouvelle liste ne peut pas être vide.';
								break;
						}
						if (close)
							popupHandler.close();
						if (message.length > 0)
							popupHandler.showMessage(message, null, 30000);
					}, function () {
						popupHandler.close();
					});
				}
				else {
					jqForm.find('.champOblg').css({ color: '#ff0000' });
				}
			});
		});
	}

	function initPoseOption(urlProspects) {
		$(document).ready(function () {
			function poserOption(jqForm) {
				$.postAction(jqForm.attr('action'), jqForm, function (returnCode) {
					popupHandler.close();
				}, function () {
					popupHandler.close();
				});
			}

			var jqForm = $('#poseOption');
			var jqValidOption = jqForm.find('.valider');
			var jqAnnuler = jqForm.find('.annuler');

			function valider(event) {
				event.preventDefault();

				var refProspect = parseInt($('#prospect').val());
				var prospectSelected = !isNaN(refProspect) && refProspect > 0;

				if (prospectSelected || valoValidation.checkForm(jqForm.get(0), ['prospect', 'Comment', 'prospAutoc'])) {
					if (!prospectSelected) {
						var jqPrAction = $('#prospectAction');
						jqPrAction.hide();
						jqPrAction.after('<p>Voulez-vous déclarer ce prospect en posant l\'option ?</p>');

						jqValidOption.val('Poser en déclarant');
						jqValidOption.unbind('click');
						jqValidOption.click(function (e) {
							e.preventDefault();
							$('#declPr').val('true');
							poserOption(jqForm);
						});

						jqAnnuler.val('Poser sans déclarer');
						jqAnnuler.unbind('click');
						jqAnnuler.click(function (e) {
							e.preventDefault();
							poserOption(jqForm);
						});
					}
					else {
						poserOption(jqForm);
					}
				}
			}

			jqValidOption.click(valider);

			var jqSelProspect = $('#prospect');
			var tabIndex = parseInt(jqSelProspect.attr('tabindex'));
			if (!isNaN(tabIndex))
				tabIndex = ' tabindex="' + tabIndex + '"';
			jqSelProspect.replaceWith(
				'<input type="hidden" name="PId" id="prospect" value="" /><input type="text" id="prospAutoc"'
			+ tabIndex + ' value="" />');

			var jqAutoc = $('#prospAutoc');
			var jqProspect = $('#prospect');
			var autoc = jqAutoc.autocomplete(urlProspects, {
				autoFill: false,
				minChars: 1,
				multiple: false,
				mustMatch: true,
				matchContains: true,
				matchSubset: false,
				listParent: jqForm,
				select: function (event, ui) {
					event.preventDefault();
				},
				formatMatch: function (row, index, matchCount) {
					return row.nom;
				},
				formatItem: function (row, index, matchCount) {
					return row.nom + ' (' + row.date + ')';
				},
				parse: function (data) {
					var parsed = [];
					for (var i = 0; i < data.length; i++) {
						if (data[i]) {
							parsed[parsed.length] = {
								data: data[i],
								value: data[i].nom,
								result: data[i].nom
							};
						}
					}
					return parsed;
				}
			});

			var jqNewProspectFields = $('#civilite input, #Nom, #Prenom, #CP, #Ville, #PaysPr, #Comment');
			var jqCustomNewProspectFields = $('#civilite input');

			if (autoc) {
				var valProspect = '';
				autoc.result(function (event, data, formatted) {
					if (data) {
						jqProspect.val(data.id);
						jqNewProspectFields.prop('disabled', true);
						valProspect = data.nom;
					}
					else {
						jqProspect.val('');
						jqNewProspectFields.prop('disabled', false);
						valProspect = '';
					}
					Custom.syncDisabled(jqCustomNewProspectFields);
				})
				.change(function () {
					if (jqAutoc.val() != valProspect) {
						jqProspect.val('');
						jqNewProspectFields.prop('disabled', false);
						Custom.syncDisabled(jqCustomNewProspectFields);
					}
				})
				.keypress(function (e) {
					var code = null;
					code = (e.keyCode ? e.keyCode : e.which);
					return (code == 13) ? false : true;
				});
			}
			else {
				jqProspect.remove();
				jqAutoc.replaceWith(jqSelProspect);

				jqSelProspect.change(function (e) {
					if (this.selectedIndex == 0)
						jqNewProspectFields.prop('disabled', false);
					else
						jqNewProspectFields.prop('disabled', true);
					Custom.syncDisabled(jqCustomNewProspectFields);
				});
			}
		});
	}

	var programQuery = '';
	function setProgramQuery(pId, lId) {
		programQuery = '/' + pId + '?LId=';
		if (lId)
			programQuery += lId;
	}

	function initProgramme(pId, lId, getLot) {
		$(document).ready(function () {
			function loadLot(getLotUrl) {
				$.postAjax({
					url: getLotUrl,
					dataType: 'html',
					success: function (data) {
						$('#tabs-2').html(data);
						initTabLot(getLotUrl);
					}
				});
			}

			function initTabLot(getLotUrl) {
				var jqTabLotContent = $('#tabs-2');
				popupHandler.init(function () {
					loadLot(getLotUrl);
				}, jqTabLotContent);

				jqTabLotContent.find('a.actionopt').click(function (e) {
					e.preventDefault();
					var reloadLot = function () {
						loadLot(getLotUrl);
					};
					$.postAction(e.target.href, null, reloadLot, reloadLot);
				});

				jqTabLotContent.find('.simulation').click(function (e) {
					e.preventDefault();
					$('#simuDefisc').submit();
				});
			}

			var jqTabContainers = $('#cont div.tabs > div');
			var jqTabHeaders = $('#cont div.tabs ul.tabNavigation li');
			function switchTab(jqLink) {
				var tabSelector = jqLink.attr('href');
				jqTabContainers.hide().filter(tabSelector).show();
				jqTabHeaders.removeClass('selected');
				jqLink.parent().addClass('selected');

				// Activation/désactivation lien plan.
				var jqPlan = $('#PDL');
				var jqLabelPlan = jqPlan.siblings('label');
				if (tabSelector == '#tabs-1') {
					jqPlan.prop('checked', false);
					jqPlan.change();
					jqPlan.prop('disabled', true);
					jqLabelPlan.addClass('disabled');
					jqLabelPlan.find('a').hide();
				}
				else {
					jqPlan.prop('disabled', false);
					jqLabelPlan.removeClass('disabled');
					jqLabelPlan.find('a').show();
				}
				Custom.syncDisabled(jqPlan);
			}

			$('#main .specialCont span.accroche').aToolTip({
				toolTipClass: 'tooltipRight',
				xOffset: -38,
				yOffset: 5
			});

			// bascule onglets programme/lot
			jqTabHeaders.find('a').click(function (e) {
				e.preventDefault();
				switchTab($(this));
			});

			// Bascule onglet lot depuis liste
			$('#tabs-1 .menuCont td a').click(function (e) {
				e.preventDefault();

				var lotLib = $(this).closest('tr').find('td:first > a').html();
				var tab2 = $('#a-tabs-2');
				tab2.html(lotLib);
				tab2.closest('li').css('visibility', '');
				switchTab(tab2);
				loadLot(e.target.href);
			});

			// Déploiement types de lot
			$('#tabs-1 .ouvrirCont a').click(function (e) {
				e.preventDefault();
				var jqToogle = $(this);
				jqToogle.closest('.menu').find('.menuCont').slideToggle();
				jqToogle.parent().toggleClass('fermerCont');
			});

			setProgramQuery(pId, lId);
			initTabLot(getLot);

			var jqGetDocs = $('#btnGetDocuments');
			var urlGetDocs = jqGetDocs.attr('href');
			jqGetDocs.attr('href', '#');
			jqGetDocs.click(function (e) {
				var docsQuery = $('#dldocuments').serialize();
				if (!docsQuery) {
					e.preventDefault();
					popupHandler.showMessage('Veuillez sélectionner des documents à télécharger.');
					return;
				}
				jqGetDocs.attr('href', urlGetDocs + programQuery + '&' + docsQuery);
			});

			var jqMailDocs = $('#btnMailDocuments');
			jqMailDocs.click(function (e) {
				e.preventDefault();
				var popupid = jqMailDocs.attr('rel');
				var eltPopup = $('#' + popupid);

				var docs = $('#dldocuments input[type=checkbox]').filter(':checked').not(':disabled');
				if (docs.length == 0) {
					popupHandler.showMessage('Veuillez sélectionner des documents à envoyer.');
					return;
				}

				var html = '';
				docs.each(function (i, elt) {
					var jElt = $(elt);
					html = html + '<' + 'li>' + jElt.nextAll('label').html() + '<span><a href="#docs=' + jElt.attr('id') + '" title="Supprimer le document"></a></span><' + '/li>';
				});

				var jqDocList = $('#mldocuments ul.liens');
				jqDocList.html(html);
				jqDocList.find('li > a').remove();
				jqDocList.find('li span a').click(function (e) {
					e.preventDefault();
					$(this).closest('li').remove();
				});

				popupHandler.show(eltPopup);
			});

			$('#toSndPrg, #toSndDoc').attr('validationtxt', 'isEmail');

			$('#envoyerContact, #envoyerProg, #envoyerDoc, #visuProg, #visuDoc').click(function (e) {
				e.preventDefault();

				var jqForm = $(this).closest('form');

				if (valoValidation.checkForm(jqForm.get(0), ['contactCntPrg', 'sujSndDoc', 'msgSndDoc', 'sujSndPrg', 'msgSndPrg'])) {
					var actionUrl = jqForm.attr('action') + programQuery;

					jqForm.find('ul.liens li span a').each(function (i, elt) {
						actionUrl += elt.hash;
					});
					actionUrl = actionUrl.replace(/#/g, '&');

					switch (this.id) {
						case 'visuProg':
						case 'visuDoc':
							actionUrl += '&visu=true';
							break;
					}

					$.postAction(actionUrl, jqForm, function (returnCode) {
						if (returnCode > 0)
							popupHandler.close();
					});
				}
			});

			$('#cont .planQuartier a.popuplayer').filter('[rel="overlayPlanQuartier"]').show();
		});
	}

	function refreshProgramPageForLot(pId, lId, pdl, lotClass, statutLot) {
		$('#PDL').parent().replaceWith(pdl);
		/* Ne pas recyler via une var ni le $('#PDL') ni le $('#PDL').parent() : le replaceWith 
		crée de nouveaux noeuds et renvoie l'ancien. Il faut donc re-résoudre pour récupérer les nouveaux noeuds */
		Custom.styleFields($('#PDL').parent().get(0));
		setProgramQuery(pId, lId);

		var jqLotRow = $('#lot_' + lId);
		jqLotRow.removeClass().addClass(lotClass);
		jqLotRow.find('.statut a').html(statutLot);
		return;
	}

	function initDeclProspect(loadPlacesUrl) {
		searchHandler.urls.loadPlaces = loadPlacesUrl;

		$(document).ready(function () {
			var $frmPro = $('#formDeclaration');
			$frmPro.submit(function (e) {
				e.preventDefault();
				var isValid = checkFormProspect($frmPro.get(0));
				if (isValid) {
					$.postAction($frmPro.attr('action'), $frmPro, function (rCode) {
						if (rCode > 0)
							valoUtils.closeCurrentWindow();
					});
				}
			});

			$('input[type="reset"]').click(function () {
				valoUtils.closeCurrentWindow();
			});

			function checkFormProspect(form) {
				return valoValidation.checkForm(form, ['Adresse', 'AdresseCompl', 'EMail', 'TelBur', 'localisation', 'villes', 'programmeProspect', 'P1', 'P2', 'P3', 'P4', 'P5', 'Budget', 'Comments']);
			}
		});
	}

	function initParamsTable(urlReactivationMail, urlEnregDelai) {
		$(document).ready(function () {
			$('#FinVosOptionsDelaiAlerte').change(function () {
				var jqSelect = $(this);
				$.postJSON(urlEnregDelai, {
					delai: parseInt(jqSelect.val())
				});
			});

			$('#formParam input').filter('[type="checkbox"]').change(function (e) {
				var jqCheck = $(this);
				var jqFrmParam = $('#formParam');
				$.postJSON(jqFrmParam.attr('action'), {
					alerte: parseInt(jqCheck.attr('name').match(/[0-9]+/)),
					mode: parseInt(jqCheck.val()),
					active: jqCheck.is(':checked')
				});
			});

			$('#errMailReactive').click(function (e) {
				e.preventDefault();
				$.postAction(urlReactivationMail, null, function (returnCode) {
					if (returnCode > 0) {
						$('#errMail').hide();
					}
				});
			});

			$('span.bulle').aToolTip({
				toolTipClass: 'tooltipRight',
				xOffset: -38,
				yOffset: 5
			});
		});
	}

	function initHyperPrescripteurControls(urlListeSocietes, urlListeSuperPrescr) {
		function getDropdownListOpt(ddlId, selVal, isSelected) {
			if (!selVal || selVal == '')
				return null;

			var toReturn = $(ddlId + ' option[value=\'' + selVal + '\']');

			if (isSelected)
				return toReturn.prop('selected', true);
			else
				return toReturn;
		}

		$(document).ready(function () {
			var oldChkCompanyAttach;

			loadDdlPrescriber();

			$('#ChkCompanyAttach').change(function (e) {
				loadDdlPrescriber();
			});

			$('#btnAssociate a').click(function (e) {
				e.preventDefault();
				var option = $('option:selected', '#RefSuperPrescr');
				var selectedIndex = option.index();
				if (option.index() > 0) {
					$.postAjax({
						url: urlListeSocietes + '?prescriber=' + option.val(),
						dataType: 'html',
						success: function (data) {
							if (data > 0)
								getDropdownListOpt('#RefPartenaire', data, true);
						}
					});
				}
			});

			function loadDdlPrescriber() {
				var curChkCompanyAttach = $('#ChkCompanyAttach').is(':checked');
				var curScePartner = $('option:selected', $('#RefPartenaire')).index();

				var option = $('option:selected', '#RefPartenaire');
				var $ddlPrescriber = $('#RefSuperPrescr');
				var optPrescVal = $('option:selected', $ddlPrescriber).val();

				var funcSelectElt = function () {
					var optRef = getDropdownListOpt('#RefSuperPrescr', optPrescVal, true);
					if (!optRef || optRef.length == 0)
						$('option:nth-child(2)', $ddlPrescriber).prop('selected', true);
				};

				if (curChkCompanyAttach != oldChkCompanyAttach || curChkCompanyAttach) {
					oldChkCompanyAttach = curChkCompanyAttach;
					$('option', $ddlPrescriber).not(':first-child').remove();

					var tpUrl = urlListeSuperPrescr;
					if (curChkCompanyAttach && optPrescVal && optPrescVal.length > 0)
						tpUrl += '?partner=' + option.val();

					$.postAjax({
						url: tpUrl,
						dataType: 'html',
						success: function (data) {
							var list = $.parseJSON(data);
							$.each(list, function (index, litem) {
								$ddlPrescriber.append($('<option></option>')
										.val(litem.RefInterlocuteur)
										.html(litem.Libelle));
							});

							funcSelectElt();
						}
					});
				}
				else {
					funcSelectElt();
				}
			}

			$('#RefPartenaire').change(function (e) {
				loadDdlPrescriber();
			});
		});
	}

	return {
		initLoginPage: initLoginPage,
		initInscription: initInscription,
		initCoordonneesSociete: initCoordonneesSociete,
		initPreinscription: initPreinscription,
		initMaster: initMaster,
		initRechercheSimple: initRechercheSimple,
		initRechercheComplete: initRechercheComplete,
		initPageResultatsLots: initPageResultatsLots,
		initEditionVeille: initEditionVeille,
		initAddToSelectionDialog: initAddToSelectionDialog,
		initPoseOption: initPoseOption,
		initProgramme: initProgramme,
		refreshProgramPageForLot: refreshProgramPageForLot,
		initDeclProspect: initDeclProspect,
		initParamsTable: initParamsTable,
		initHyperPrescripteurControls: initHyperPrescripteurControls
	};
} ();

var valoUtils = function () {
	var unloading = false;

	// Public
	function setUrlParam(url, key, value) {
		key = escape(key); value = escape(value);

		var urlParts = url.split('?');
		switch (urlParts.length) {
			case 1:
				urlParts.push('');
				break;
			case 2:
				break;
			default:
				urlParts[1] = urlParts.slice(1).join('?');
				urlParts = urlParts.slice(0, 2);
				break;
		}

		var kvp = urlParts[1].split('&');

		var i = kvp.length; var x; while (i--) {
			x = kvp[i].split('=');

			if (x[0] == key) {
				x[1] = value;
				kvp[i] = x.join('=');
				break;
			}
		}

		if (i < 0) {
			if (kvp[0] == '')
				kvp[0] = [key, value].join('=');
			else
				kvp[kvp.length] = [key, value].join('=');
		}

		urlParts[1] = kvp.join('&');

		if (urlParts[0].length == 0)
			return urlParts[1];
		return urlParts.join('?');
	}

	function removeEmptyQueryStrParams(queryStr) {
		var params = queryStr.split('&');
		var cleanedParams = new Array();
		$.each(params, function (i, param) {
			var kvp = param.split('=');
			if (kvp.length > 2 || (kvp.length == 2 && kvp[1].length > 0))
				cleanedParams.push(param);
		});
		return cleanedParams.join('&');
	}

	// Gestion du prompt "texte direct dans le champ".
	// input : champ concerné.
	// activate : true pour activer le prompt si besoin, false pour le désactiver.
	// prompt : le texte d'invite.
	function handlePrompt(input, activate, prompt, promptClass) {
		var jInput = $(input);
		activate = activate && input.value == '' && !jInput.is(':focus');
		if (activate) {
			input.value = prompt;
			if (promptClass)
				jInput.addClass(promptClass)
		}
		else if (input.value == prompt) {
			input.value = '';
			if (promptClass)
				jInput.removeClass(promptClass);
		}
	}

	// Si la fenêtre en cours est une popup, la ferme, sinon navigue vers une url de secours.
	function closeCurrentWindow(fallbackUrl) {
		if (!window.opener) {
			if (!fallbackUrl)
				fallbackUrl = "/";
			window.location = fallbackUrl;
		}
		else {
			window.close();
		}
	}

	function setCurrencyInput(jqInput) {
		jqInput.unbind('.checkCurrency')
		.bind('keypress.checkCurrency', checkCurrencyInput)
		.bind('keyup.checkCurrency', checkCurrencyInput)
		.bind('change.checkCurrency', checkCurrencyInput);
	}

	function ajaxError(xhr, textStatus, errorThrown, afterShow) {
		if (!shouldHandleAjaxError(xhr) || errorThrown === 'abort')
			return;

		var errorMsg;
		switch (textStatus) {
			case 'timeout':
				errorMsg = 'Le site Valorissimo.com n\'a pas répondu dans le délai imparti, veuillez nous en excuser.<br />';
				break;
			case 'error':
			case 'parsererror':
				errorMsg = 'Une erreur de communication avec le site Valorissimo.com est survenue, veuillez nous en excuser.<br />';
				break;
			case 'abort':
				return;
			default:
				errorMsg = 'Une erreur est survenue, veuillez nous en excuser.<br />';
				break;
		}

		if (errorMsg) {
			errorMsg = errorMsg + valoVars.messageSupport;
			popupHandler.showMessage(errorMsg, null, 30000, afterShow);
		}
	}

	function shouldHandleAjaxError(xhr) {
		return !unloading && !checkAjaxSessionTimeOut(xhr) && !checkAjaxAbort(xhr);
	}

	// Privé

	function checkCurrencyInput(e) {
		var input = this;
		var patt = /(\d*)[\.,]{1}(\d{0,2})/;
		var donepatt = /^(\d*)[\.,]{1}(\d{2})$/;
		var str = input.value; var result;
		if (!str.match(donepatt)) {
			result = str.match(patt);
			if (result != null) {
				str = result[1] + ',' + result[2];
				input.value = str;
			} else {
				if (str.match(/[^\d]/gi))
					input.value = str.replace(/[^\d]/gi, '');
			}
		}
	}

	function checkAjaxSessionTimeOut(xhr) {
		if (xhr.status == 408) {
			window.location = valoVars.loginUrl;
			return true;
		}
		return false;
	}

	function checkAjaxAbort(xhr) {
		return xhr.valoAbort === true;
	}

	$(window).bind('beforeunload', function () {
		unloading = true;
	});
	$(window).unload(function () {
		unloading = true;
	});

	return {
		setUrlParam: setUrlParam,
		removeEmptyQueryStrParams: removeEmptyQueryStrParams,
		handlePrompt: handlePrompt,
		closeCurrentWindow: closeCurrentWindow,
		setCurrencyInput: setCurrencyInput,
		ajaxError: ajaxError,
		shouldHandleAjaxError: shouldHandleAjaxError
	};
} ();

// gestionnaire de popup.
// Note implémentation : les arrêts d'animations ne peuvent pas tous être "brutaux" (stop(true, false))
// car les animations de fermeture doivent toujours appeler leur éventuelle callback. Donc les cas où l'on
// peut arrêter une animation de fermeture sont en stop(true, true) (mais alors avec risque d'animation
// "hachée" visuellement).
var popupHandler = function () {
	var popups = new Array();

	// Si eltPopup est défini, et est le sélecteur qui a été fourni au dernier appel de show, ferme
	// la popup correspondante. S'il est défini mais ne correspond pas, ne fait rien. S'il n'est pas
	// défini, ferme la popup en cours.
	function close(eltPopup, animDuration) {
		if (popups.length == 0) {
			if (eltPopup && eltPopup != null) {
				// fallback fermeture explicite.
				eltPopup.hide();
				$('#fade').hide();
			}
			else {
				// fallback général : on ferme tout ce que l'on trouve.
				$('#fade, #layers > div').hide();
			}
			return;
		}

		// Ne fermer que si la popup en cours est celle dont on demande fermeture.
		if (eltPopup && eltPopup != null && popups[popups.length - 1] != eltPopup) {
			return;
		}

		if (!animDuration || animDuration == null) {
			animDuration = 'fast';
		}

		var idsLayerToClose = new Array();
		var lastLayerId;
		if (popups.length == 1) {
			// Plus de popup après cette fermeture, cacher le masque de page.
			idsLayerToClose.push('#fade');
			lastLayerId = 'fade';
		}

		popups[popups.length - 1].each(function () {
			idsLayerToClose.push('#' + this.id);
			lastLayerId = this.id;
		});

		var closeCallback = popups[popups.length - 1].closeCallback;
		var idsToClose = idsLayerToClose.join(', ');

		popups.pop();

		if (popups.length > 0) {
			var bkpLen = popups.length;
			var prevPopup = popups[popups.length - 1];
			$(idsToClose).stop(true, false).fadeOut(animDuration, function () {
				// Ne l'appeler qu'une fois, soit sur le dernier layer.
				if (this.id != lastLayerId)
					return;

				if (popups.length == bkpLen && popups[bkpLen - 1] == prevPopup)
					prevPopup.stop(true, true).fadeIn('fast');

				callCloseCallback(closeCallback);
			});
		}
		else {
			$(idsToClose).stop(true, false).fadeOut(animDuration, function () {
				// Ne l'appeler qu'une fois, soit sur le dernier layer.
				if (this.id != lastLayerId)
					return;
				callCloseCallback(closeCallback);
			});
		}
	}

	function callCloseCallback(closeCallback) {
		if (closeCallback && closeCallback != null)
			closeCallback();
	}

	function show(eltPopup, closeCallback) {
		if (popups.length > 0) {
			popups[popups.length - 1].stop(true, false).fadeOut('fast');
		}
		else {
			var fade = $('#fade');
			if (fade.length == 0)
				fade = $('body').append('<div id="fade"></div>')
					.find('#fade').css({ 'filter': 'alpha(opacity=30)' });
			fade.stop(true, false).fadeIn();
		}
		eltPopup.closeCallback = closeCallback;
		popups.push(eltPopup);

		var fixedPopup = eltPopup.not('.abs');
		if (fixedPopup.length > 0) {
			// Supprimer l'éventuelle définition de taille manuelle
			var fixedPopupContent = fixedPopup.find('.content');
			fixedPopupContent.css('max-height', '');
			var viewHeight = $(window).height();
			if (fixedPopup.height() + 10 > viewHeight) {
				fixedPopupContent.css('max-height', viewHeight - 60);
			}
			var popuptopmargin = (eltPopup.height() + 5) / 2;
			eltPopup.css({
				'margin-top': -popuptopmargin
			});
		}
		else
			$('html, body').animate({ scrollTop: 0 }, 'slow');

		var popupleftmargin = (eltPopup.width() + 10) / 2;
		eltPopup.css({
			'visibility': 'visible',
			'margin-left': -popupleftmargin,
			'opacity': ''
		});
		eltPopup.fadeIn('fast', function () {
			eltPopup.find('[tabindex="1"]').focus();
		});

		// En cas de création dynamique de popup ou de callback, re-binder le close.
		// Donc on commence par supprimer l'éventuel ancien.
		var eltClose = eltPopup.find('.popupClose, .annuler');
		eltClose.unbind('click.popupHandler');
		eltClose.bind('click.popupHandler', function (e) {
			e.preventDefault();
			close();
			return false;
		});
	}

	function showMessage(message, title, timeout, closeCallback) {
		var popup = $('#popupHandlerMsg');
		if (popup.length == 0) {
			var layers = $('#layers');
			if (layers.length == 0)
				layers = $('body').append('<div id="layers"></div>').find('#layers');
			popup = layers.append(
				'<div class="layer386" id="popupHandlerMsg"><div class="top"> </div><div class="center"><a class="popupClose" href="#" title="Fermer">&nbsp;</a><div class="content"><div></div></div></div><div class="bottom"> </div></div>')
				.find('#popupHandlerMsg');
		}
		var popupHtml = message;
		if (title && title != null && title.length > 0)
			popupHtml = '<h2>' + title + '</h2>' + message;
		popup.find('.content div').empty().html(popupHtml);

		show(popup, closeCallback);
		if (timeout && timeout != null && timeout > 0)
			setTimeout(function () { close(popup, 1000) }, timeout);
	}

	function init(closeCallback, rootElem) {
		// Peux être appelée plusieurs fois, donc éviter de binder les click 
		// en multiple afin de ne pas démultiplier l'ouverture.
		var eltPopups;
		if (rootElem)
			eltPopups = rootElem.find('a.popuplayer');
		else
			eltPopups = $('a.popuplayer');
		eltPopups.unbind('click.popupHandler');
		eltPopups.bind('click.popupHandler', function (e) {
			e.preventDefault();
			var jqLink = $(this);
			var popupid = jqLink.attr('rel');
			var eltPopup = $('#' + popupid);

			// e.target.href est une url absolue, il faut tester la valeur d'attribut à la place
			var linkHref = jqLink.attr("href");
			if (!linkHref.startsWith("#") && !linkHref.startsWith("javascript:")) {
				$.postAjax({
					url: e.target.href,
					dataType: 'html',
					success: function (data) {
						if (jqLink.hasClass("once"))
							jqLink.attr("href", "#");
						eltPopup.html(data);
						show(eltPopup, closeCallback);
						eltPopup.each(function () {
							Custom.styleFields(this);
						});
					}
				});
			}
			else {
				show(eltPopup, closeCallback);
			}
		});
	}

	return {
		close: close,
		show: show,
		showMessage: showMessage,
		init: init
	};
} ();

var collapsableHandler = {
	// function toggle-slide
	toggle: function (link, contenue, linkClose, linkOpen) {
		if (!linkClose)
			linkClose = 'Agrandir la fenêtre';

		if (!linkOpen)
			linkOpen = 'Réduire la fenêtre';

		var toggledElem = document.getElementById(contenue);

		$('#' + contenue + " .docWindow").slideToggle();
		$('.' + contenue).slideToggle();

		var jLink = $(link);
		jLink.toggleClass('open');

		if (jLink.hasClass('open')) {
			jLink.html(linkClose);
		}
		else {
			jLink.html(linkOpen);
		}
	},

	// Sur la page mon-activite-2.html table tree
	toggleTree: function (link, tableId) {
		var jLink = $(link);
		var linkText = jLink.html();

		if (linkText.indexOf('ferm') >= 0) {
			$('#' + tableId + ' tr').each(function (i) {
				$(this).removeClass('root').removeClass('expanded').collapse();
			});
			$(link).html('Afficher la liste d&eacute;ploy&eacute;e');
		}
		else {
			$('#' + tableId + ' tr').each(function (i) {
				var jElt = $(this);
				if (jElt.attr('class').indexOf('child') < 0) {
					jElt.addClass('root');
				}

				jElt.removeClass('collapsed').expand();
			});
			$(link).html('Afficher la liste ferm&eacute;e');
		}
	}
};

/*********************************************************************************************************************/
/**********************************************************************************
* fonctions de validation
**********************************************************************************/
var valoValidation = function () {
	// Membres privés

	/**
	* Indique si une chaîne est vide ou non définie.
	*/
	function isEmpty(str) {
		var regexp1 = /^\s+$/;
		var result = new String(str).search(regexp1);
		if (str.length == 0 || str == null || result != -1)
			return true;
		else
			return false;
	}

	/**
	* isRequiredFilled(element, promptSentences) valide si l'element d'une formulaire est rempli ou pas.
	*/
	function isRequiredFilled(element, promptSentences) {
		var elementType = element.type;
		var result = false;

		var jqElement = jQuery(element);

		if (elementType == 'text' || elementType == 'textarea') {
			if (!isEmpty(element.value) && !promptSentences.contains(element.value)) {
				result = true;
			}

			var validationFunction = jqElement.attr('validationtxt');

			if (validationFunction) {
				if (eval(validationFunction + '(element.value)'))
					result = true;
				else
					result = false;
			}
		}
		else if (elementType == 'select-one') {
			if (element.selectedIndex != 0) {
				result = true;
			}
		}
		else if (elementType == 'checkbox') {
			if (element.checked == true) {
				result = true;
			}
		}

		return result;
	}

	// Validation minimale du format de mail. La norme est trop complexe à valider sans exclure des cas "normaux".
	function isEmail(str) {
		return str.indexOf('@') >= 0;
	}

	/**
	* checkRequiredRadioButton(form, elementName) valide une groupe de radio buttons
	*/
	function checkRequiredRadioButton(form, elementName) {
		var radioGroup = form.elements[elementName];
		var resultRadio = false;

		for (var i = 0; i < radioGroup.length; i++) {
			if (radioGroup[i].checked == true) {
				resultRadio = true;
				break;
			}
		}

		if (resultRadio)
			return radioGroup.length;
		else
			return -1;
	}

	/**
	* setErrorField met en évidence l'élément en erreur et affiche un message si disponible.
	*/
	function setErrorField(jqElement, message) {
		var errorMsg = jqElement.siblings('.errorMsg');
		var labelOfElement = jqElement.siblings('label');
		if (labelOfElement && labelOfElement.length > 0) {
			errorMsg.css({ paddingLeft: 10 });
		}

		jqElement.css({ border: '1px solid #CC0000' })
		.unbind('.unsetError')
		.bind('change.unsetError', function () {
			unsetErrorField(jqElement);
		});

		var eltType = jqElement.attr('type');
		switch (eltType) {
			case 'checkbox':
			case 'radio':
				jqElement.filter('.styled.done').prev().css({ border: '1px solid #CC0000' })
				.unbind('.unsetError').bind('click.unsetError', function () {
					unsetErrorField(jqElement);
				}).bind('keydown.unsetError', function (e) {
					switch (e.which) {
						case 32:
							unsetErrorField(jqElement);
							break;
					}
				});
				break;
			case 'text':
			case 'textarea':
				jqElement.bind('keypress.unsetError', function () {
					unsetErrorField(jqElement);
				});
				break;
		}
		errorMsg.css({ visibility: 'visible' }).html(message);
		var idElem = jqElement.attr('id');
		if (idElem) {
			$('#error' + idElem).css({ visibility: 'visible' }).html(message);
		}
	}

	// Membres publics

	/**
	* Valide un formulaire.
	* Cette fonction emploie une extension de la classe Array définie dans common.js : contains()
	* 
	* Paramètres :
	* 
	* form - Type Form : Le formulaire en question
	* nonRequiredFields - Type Array de String : Les noms des champs qui ne sont pas obligatoires
	* promptSentences - Type Array de String : Les textes d'invite, qui ne doivent pas être considérés comme des valeurs.
	* setOfOrFields - Type Array de Array de String : Les noms des champs qui sont en alternatives les unes des autres.
	*/
	function checkForm(form, nonRequiredFields, promptSentences, setOfOrFields) {
		var elements = form.elements;
		var formIsValid = true;
		var defaultErrorMessage = '*';

		if (!nonRequiredFields || nonRequiredFields == null)
			nonRequiredFields = new Array();
		if (!promptSentences || promptSentences == null)
			promptSentences = new Array();
		if (!setOfOrFields || setOfOrFields == null)
			setOfOrFields = new Array();

		for (var i = 0; i < elements.length; i++) {
			var elem = elements[i];
			var elemId = elem.id ? elem.id : elem.name;

			if (nonRequiredFields.contains(elemId) || elem.disabled)
				continue;

			var fieldIsInOrFields = false;
			for (var j = 0; j < setOfOrFields.length; j++) {
				if (setOfOrFields[j].contains(elemId)) {
					fieldIsInOrFields = true;
					break;
				}
			}

			if (fieldIsInOrFields)
				continue;

			var fieldIsValid = true;

			if ((elem.type == 'text' || elem.type == 'select-one' || elem.type == 'checkbox' || elem.type == 'textarea')) {
				fieldIsValid = isRequiredFilled(elem, promptSentences);
			}
			else if (elem.type == 'radio') {
				fieldIsValid = checkRequiredRadioButton(form, elem.name) >= 0;
			}

			if (!fieldIsValid) {
				var errorMessage = elem.getAttribute('errortxt');
				if (!errorMessage)
					errorMessage = defaultErrorMessage;
				setErrorField(jQuery('#' + elem.id), errorMessage);
				formIsValid = false;
			}
		}

		for (var i = 0; i < setOfOrFields.length; i++) {
			var fieldsNames = setOfOrFields[i];
			var setOfFieldsOk = false;
			for (var j = 0; j < fieldsNames.length; j++) {
				if (isRequiredFilled(elements[fieldsNames[j]], promptSentences)) {
					setOfFieldsOk = true;
					break;
				}
			}

			if (!setOfFieldsOk) {
				var elementsName = '#' + fieldsNames.join(', #');
				var elems = jQuery(elementsName);
				var erroMessage = elems.attr("errortxt");
				if (!erroMessage)
					erroMessage = 'Au moins un de ces champs doit &ecirc;tre renseign&eacute;.';
				setErrorField(elems, erroMessage);
				formIsValid = false;
			}
		}

		return formIsValid;
	}

	/**
	* unsetErrorField(jqElemt) est un fonction qui est appelé pour retourner l'element du formulaire à la normale.
	*/
	function unsetErrorField(jqElemt) {
		jqElemt.css({ border: '1px solid #CEC9B2' }).unbind('.unsetError')
		.siblings('.errorMsg').css({ visibility: 'hidden' }).empty();
		var idElem = jqElemt.attr('id');
		if (idElem) {
			$('#error' + idElem).css({ visibility: '' }).empty();
		}

		jqElemt.filter('.styled.done').prev().css({ border: '' }).unbind('.unsetError');
		if (jqElemt.attr('type') == 'radio') {
			var associatedRadios = jqElemt.siblings('[type="radio"][name="' + jqElemt.attr('name') + '"]');
			associatedRadios.css({ border: '1px solid #CEC9B2' }).unbind('.unsetError');
			associatedRadios.filter('.styled.done').prev().css({ border: '' }).unbind('.unsetError');
		}
	}

	return {
		checkForm: checkForm,
		unsetErrorField: unsetErrorField
	};
} ();

$(document).ready(function () {
	$('a.print').click(function (e) {
		e.preventDefault();
		window.print();
	});
	
	// add a "rel" attrib if Opera 7+
	if (window.opera) {
		if ($("a.jqbookmark").attr("rel") != "") { // don't overwrite the rel attrib if already set
			$("a.jqbookmark").attr("rel", "sidebar");
		}
	}

	$("a.jqbookmark").click(function (event) {
		event.preventDefault(); // prevent the anchor tag from sending the user off to the link
		var url = this.href;
		var title = this.title;

		if (window.sidebar) { // Mozilla Firefox Bookmark
			window.sidebar.addPanel(title, url, "");
		} else if (window.external) { // IE Favorite
			window.external.AddFavorite(url, title);
		} else if (window.opera) { // Opera 7+
			return false; // do nothing - the rel="sidebar" should do the trick
		} else { // for Safari, Konq etc - browsers who do not support bookmarking scripts (that i could find anyway)
			popupHandler.showMessage('Malheureusement, votre navigateur ne permet pas à la page d\'ajouter des favoris.<br />Veuillez, si vous le souhaitez, ajouter le favoris manuellement.');
		}
	});
});

(function ($) {
	/** auto align function **/
	$.fn.vAlign = function () { return this.each(function (i) { var ah = $(this).height(); var ph = $(this).parent().height(); var mh = Math.ceil((ph - ah) / 2); $(this).css('padding-top', mh) }) }

	// Sérialisation de noeud jQuery sous une forme supportée par JSON.stringify.
	// http://stackoverflow.com/questions/1184624/serialize-form-to-json-with-jquery
	$.fn.serializeObject = function()
	{
		var o = {};
		var a = this.serializeArray();
		$.each(a, function() {
			if (o[this.name] !== undefined) {
				if (!o[this.name].push) {
					o[this.name] = [o[this.name]];
				}
				o[this.name].push(this.value || '');
			} else {
				o[this.name] = this.value || '';
			}
		});
		return o;
	};

	// jQuery Url Plugin
	// **** http://ajaxcssblog.com/jquery/url-read-request-variables/
	$.url = {};
	$.extend($.url, {
		_params: {},
		init: function () {
			var paramsRaw = "";
			try {
				paramsRaw = (document.location.href.split("?", 2)[1] || "").split("#")[0].split("&") || [];
				for (var i = 0; i < paramsRaw.length; i++) {
					var single = paramsRaw[i].split("=");
					if (single[0]) this._params[single[0]] = unescape(single[1])
				}
			} catch (e) {
				alert(e)
			}
		},
		param: function (name) {
			return this._params[name] || ""
		},
		paramAll: function () {
			return this._params
		},
		hasParam: function (name) {
			var lparam = this.param(name);
			return (lparam && lparam.length > 0)
		},
		addParam: function (name, value) {
			this._params[name] = value;
		},
		getUrl: function () {
			var url = "";
			for (idx in this._params) {
				url = url + idx + "=" + this._params[idx] + "&";
			}

			url = document.location.href.split("?", 2)[0] + "?" + url;
		}
	});
	$.url.init();
})($);

(function ($) {
	$.extend({
		postAjax: function (options, error) {
			var config = $.extend({
				type: "POST",
				error: valoUtils.ajaxError
			}, options);
			if (error) {
				config.error = function(xhr, textStatus, errorThrown) {
					valoUtils.ajaxError(xhr, textStatus, errorThrown, error);
				};
			}
			var xhr = $.ajax(config);
			xhr.valoAbort = false;
			return xhr;
		},

		postJSON: function (url, jsonData, success, error) {
			var config = {
				url: url,
				data: jsonData ? JSON.stringify(jsonData) : null,
				dataType: "json",
				contentType: "application/json; charset=utf-8",
				success: success
			}; 
			return $.postAjax(config, error);
		},

		postAction: function (tUrl, form, success, error) {
			var tDatas = null;
			
			if (form && form.length > 0) {
				tDatas = form.serializeObject();
			}
			return $.postJSON(tUrl, tDatas, function (data, textStatus) {
				var ajaxCtnx = this;
				var postMsgActions = function () {
					if (success)
						success.call(ajaxCtnx, data.ReturnCode);
					if (data.RedirectUrl && data.RedirectUrl.length > 0)
						window.location = data.RedirectUrl;
				};

				if (data.Message && data.Message.length > 0)
					popupHandler.showMessage(data.Message, data.MessageTitle, data.MessageTimeout, postMsgActions);
				else
					postMsgActions();
			}, error);
		}
	});

	$(window).load(function () {
		var jWin = $(window);
		var menuYloc = ((jWin.height() / 2) - 25);

		var jqLoading = $(".loading");
		var fn_scrollcenter = function () {
			var offset = menuYloc + $(document).scrollTop() + "px";
			var center = (($(this).width() / 2) - 50);
			$("#master-pane").css({ top: offset });
			jqLoading.css({ left: center });
		};

		var fn_ajaxFadeout = function () {
			jqLoading.fadeOut(1000);
		};

		jWin.scroll(fn_scrollcenter);

		$("#master-pane").ajaxStart(function () {
			jqLoading.show();
		}).ajaxComplete(fn_ajaxFadeout);

		fn_scrollcenter();
		fn_ajaxFadeout();
	});

	$("#master-loading").show();
})($);

var ajaxHtmlHandler = function () {
	var callbacks = {
		refineAjaxUrl: function (url, htmlContainerId) { return url; },
		htmlRefreshed: function (url, htmlContainerId, linksSelector) {
			activateLinks(linksSelector, htmlContainerId);
		}
	};

	function activateLinks(linksSelector, htmlContainerId) {
		$(linksSelector).unbind('click.ajaxHtmlHandler')
		.bind('click.ajaxHtmlHandler', function (e) {
			e.preventDefault();
			var url = e.target.href;
			if (!url.startsWith("#")) {
				ajaxHtml(url, htmlContainerId, linksSelector);
			}
		});
	}

	function getRefineUrlCallbackForSelects(selectsSelector, restrictToContainer) {
		var refineAjaxUrl = function (url, htmlContainerId) {
			var targetUrl = url;

			var selects;
			if (restrictToContainer)
				selects = $('#' + htmlContainerId).find(selectsSelector);
			else
				selects = $(selectsSelector);
			selects.each(function (i, elt) {
				if (elt.value) {
					targetUrl = valoUtils.setUrlParam(targetUrl, elt.name, elt.value);
				}
			});

			return targetUrl;
		};
		return refineAjaxUrl;
	}

	function ajaxHtml(url, htmlContainerId, linksSelector) {
		var targetUrl = callbacks.refineAjaxUrl(url, htmlContainerId);

		$.postAjax({
			url: targetUrl,
			data: null,
			dataType: 'html',
			success: function (data) {
				var htmlContainer = $('#' + htmlContainerId);
				htmlContainer.html(data);
				callbacks.htmlRefreshed(targetUrl, htmlContainerId, linksSelector);
			}
		});
	}

	return {
		ajaxHtml: ajaxHtml,
		getRefineUrlCallbackForSelects: getRefineUrlCallbackForSelects,
		activateLinks: activateLinks,
		callbacks: callbacks
	};
} ();

/***custom checkbox, radiobutton***/

// Objet de personalisation des cases à cocher et radiobouton.
var Custom = function () {
	var checkboxHeight = "25";
	var radioHeight = "25";

	function styleFields(eltBase) {
		var eltBaseSel = document;
		if (this != window && eltBase)
			eltBaseSel = eltBase;

		var workElem = $(eltBaseSel);
		var fields = workElem.find('input.styled[type="checkbox"], input.styled[type="radio"]').not('.done');
		fields.before(function () {
			var custStyle = '';
			if (this.checked == true) {
				if (this.type == 'checkbox') {
					custStyle = ' style="background-position: 0 -' + (checkboxHeight * 2) + 'px;"';
				}
				else {
					custStyle = ' style="background-position: 0 -' + (radioHeight * 2) + 'px;"';
				}
			}
			var tabindex = '';
			if (this.tabIndex)
				tabindex = ' tabindex="' + this.tabIndex + '"';
			return '<a href="#" class="' + this.type + '"' + custStyle + tabindex + '></a>';
		});
		fields.addClass('done');
		fields.change(syncDisplay);
		syncDisabled(fields);
	}

	function syncDisabled(jqFields) {
		jqFields.not(':disabled').prev().unbind('mousedown').unbind('click').unbind('keydown')
		.mousedown(pushed).click(click).keydown(keyPress).removeClass('disabled');
		jqFields.filter(':disabled').prev().unbind('mousedown').unbind('click').unbind('keydown')
		.click(function (e) { e.preventDefault(); }).addClass('disabled');
	}

	function keyPress(event) {
		switch (event.which) {
			case 13:
				event.preventDefault();
				// todo : submit
				break;
			case 32:
				event.preventDefault();
				check(this);
				break;
		}
	}

	function pushed() {
		var field = this.nextSibling;
		var height = (field.type == "checkbox") ? checkboxHeight : radioHeight;
		if (field.checked == true) {
			this.style.backgroundPosition = "0 -" + height * 3 + "px";
		} else {
			this.style.backgroundPosition = "0 -" + height + "px";
		}
	}

	function click(event) {
		event.preventDefault();
		check(this);
	}

	function check(custField) {
		var field = custField.nextSibling;
		if (field.checked == true && field.type == "checkbox") {
			field.checked = false
		} else {
			field.checked = true
		}
		$(field).change();
	}

	function syncDisplay() {
		var field = this;
		var isCheck = field.type == "checkbox";
		var height = isCheck ? checkboxHeight : radioHeight;
		var ui = field.previousSibling;
		if (field.checked == true) {
			ui.style.backgroundPosition = "0 -" + height * 2 + "px";
			if (!isCheck) {
				var group = field.name;
				var otherRadios = $('input.styled.done[name="' + group + '"][type="radio"]').not(field);
				otherRadios.prev().css('background-position', '0 0');
			}
		} else {
			ui.style.backgroundPosition = "0 0"
		}
	}

	return {
		styleFields: styleFields,
		pushed: pushed,
		check: check,
		syncDisabled: syncDisabled
	};
} ();

$(document).ready(function () {
	Custom.styleFields();
});

/* Plugin aTooltip
jQuery Version:				jQuery 1.3.2+
Plugin Name:				aToolTip V 1.5
Plugin by: 					Ara Abcarians: http://ara-abcarians.com
License:					aToolTip is licensed under a Creative Commons Attribution 3.0 Unported License
Read more about this license at --> http://creativecommons.org/licenses/by/3.0/
*/
// Modifié par Business Lab
(function ($) {
	$.fn.aToolTip = function (options) {
		/**
		setup default settings
		*/
		var defaults = {
			// no need to change/override
			closeTipBtn: 'aToolTipCloseBtn',
			toolTipId: 'aToolTip',
			// ok to override
			fixed: false,
			clickIt: false,
			inSpeed: 200,
			outSpeed: 100,
			tipContent: '',
			toolTipClass: 'tooltip',
			xOffset: -108,
			yOffset: 5,
			onShow: null,
			onHide: null
		},
		// This makes it so the users custom options overrides the default ones
		settings = $.extend({}, defaults, options);

		return this.each(function () {
			var obj = $(this);
			/**
			Decide weather to use a title attr as the tooltip content
			*/
			if (obj.attr('title')) {
				// set the tooltip content/text to be the obj title attribute
				var tipContent = obj.attr('title');
			} else {
				// if no title attribute set it to the tipContent option in settings
				var tipContent = settings.tipContent;
			}

			/**
			Build the markup for aToolTip
			*/
			var buildaToolTip = function () {
				$('body').append("<div id='" + settings.toolTipId + "' class='" + settings.toolTipClass + "'><div class='cont'><p>" + tipContent + "</p></div><div class='tip'></div></div>");

				if (tipContent && settings.clickIt) {
					$('#' + settings.toolTipId + ' p.aToolTipContent')
					.append("<a id='" + settings.closeTipBtn + "' href='#'>fermer</a>");
				}
			},
			/**
			Position aToolTip
			*/
			positionaToolTip = function () {
				var $ttId = $('#' + settings.toolTipId);
				$ttId.css({
					top: (obj.offset().top - $ttId.outerHeight() - settings.yOffset) + 'px',
					left: (obj.offset().left + obj.outerWidth() + settings.xOffset) + 'px'
				})
				.stop().show();
				if ($.isFunction(settings.onShow)) {
					settings.onShow(obj);
				}
			},
			/**
			Remove aToolTip
			*/
			removeaToolTip = function () {
				$('#' + settings.toolTipId).stop().hide();

				if ($.isFunction(settings.onHide)) {
					settings.onHide(obj);
				}
			};

			/**
			Decide what kind of tooltips to display
			*/
			// Regular aToolTip
			if (tipContent && !settings.clickIt) {
				// Activate on hover
				obj.hover(function () {
					// remove already existing tooltip
					$('#' + settings.toolTipId).remove();
					obj.attr({ title: '' });
					buildaToolTip();
					positionaToolTip();
				}, function () {
					removeaToolTip();
				});
			}

			// Click activated aToolTip
			if (tipContent && settings.clickIt) {
				// Activate on click
				obj.click(function (el) {
					// remove already existing tooltip
					$('#' + settings.toolTipId).remove();
					obj.attr({ title: '' });
					buildaToolTip();
					positionaToolTip();
					// Click to close tooltip
					$('#' + settings.closeTipBtn).click(function () {
						removeaToolTip();
						return false;
					});
					return false;
				});
			}

			// Follow mouse if enabled
			if (!settings.fixed && !settings.clickIt) {
				obj.mousemove(function (el) {
					var $ttId = $('#' + settings.toolTipId);
					if ($ttId.length > 0) {
						$ttId.css({
							top: (el.pageY - $ttId.outerHeight() - settings.yOffset),
							left: (el.pageX + settings.xOffset)
						});
					}
				});
			}

		}); // END: return this
	};
})(jQuery);
/* fin pulgin aTooltip */

/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
* 
* Open source under the BSD License. 
* 
* Copyright © 2008 George McGinley Smith
* All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
* 
* Redistributions of source code must retain the above copyright notice, this list of 
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list 
* of conditions and the following disclaimer in the documentation and/or other materials 
* provided with the distribution.
* 
* Neither the name of the author nor the names of contributors may be used to endorse 
* or promote products derived from this software without specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
*  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
*  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
* OF THE POSSIBILITY OF SUCH DAMAGE. 
*
*/
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d)},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b}});
// end Easing

/*!
* jQuery Cycle Plugin (with Transition Definitions)
* Examples and documentation at: http://jquery.malsup.com/cycle/
* Copyright (c) 2007-2010 M. Alsup
* Version: 2.88 (08-JUN-2010)
* Dual licensed under the MIT and GPL licenses.
* http://jquery.malsup.com/license.html
* Requires: jQuery v1.2.6 or later
*/
(function(i){var l="2.88";if(i.support==undefined){i.support={opacity:!(i.browser.msie)}}function a(r){if(i.fn.cycle.debug){f(r)}}function f(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "))}}i.fn.cycle=function(s,r){var t={s:this.selector,c:this.context};if(this.length===0&&s!="stop"){if(!i.isReady&&t.s){f("DOM not ready, queuing slideshow");i(function(){i(t.s,t.c).cycle(s,r)});return this}f("terminating; zero elements found by selector"+(i.isReady?"":" (DOM not ready)"));return this}return this.each(function(){var x=m(this,s,r);if(x===false){return}x.updateActivePagerLink=x.updateActivePagerLink||i.fn.cycle.updateActivePagerLink;if(this.cycleTimeout){clearTimeout(this.cycleTimeout)}this.cycleTimeout=this.cyclePause=0;var y=i(this);var z=x.slideExpr?i(x.slideExpr,this):y.children();var v=z.get();if(v.length<2){f("terminating; too few slides: "+v.length);return}var u=k(y,z,v,x,t);if(u===false){return}var w=u.continuous?10:h(v[u.currSlide],v[u.nextSlide],u,!u.rev);if(w){w+=(u.delay||0);if(w<10){w=10}a("first timeout: "+w);this.cycleTimeout=setTimeout(function(){e(v,u,0,(!u.rev&&!x.backwards))},w)}})};function m(r,u,s){if(r.cycleStop==undefined){r.cycleStop=0}if(u===undefined||u===null){u={}}if(u.constructor==String){switch(u){case"destroy":case"stop":var w=i(r).data("cycle.opts");if(!w){return false}r.cycleStop++;if(r.cycleTimeout){clearTimeout(r.cycleTimeout)}r.cycleTimeout=0;i(r).removeData("cycle.opts");if(u=="destroy"){q(w)}return false;case"toggle":r.cyclePause=(r.cyclePause===1)?0:1;v(r.cyclePause,s,r);return false;case"pause":r.cyclePause=1;return false;case"resume":r.cyclePause=0;v(false,s,r);return false;case"prev":case"next":var w=i(r).data("cycle.opts");if(!w){f('options not found, "prev/next" ignored');return false}i.fn.cycle[u](w);return false;default:u={fx:u}}return u}else{if(u.constructor==Number){var t=u;u=i(r).data("cycle.opts");if(!u){f("options not found, can not advance slide");return false}if(t<0||t>=u.elements.length){f("invalid slide index: "+t);return false}u.nextSlide=t;if(r.cycleTimeout){clearTimeout(r.cycleTimeout);r.cycleTimeout=0}if(typeof s=="string"){u.oneTimeFx=s}e(u.elements,u,1,t>=u.currSlide);return false}}return u;function v(y,z,x){if(!y&&z===true){var A=i(x).data("cycle.opts");if(!A){f("options not found, can not resume");return false}if(x.cycleTimeout){clearTimeout(x.cycleTimeout);x.cycleTimeout=0}e(A.elements,A,1,(!w.rev&&!w.backwards))}}}function b(r,s){if(!i.support.opacity&&s.cleartype&&r.style.filter){try{r.style.removeAttribute("filter")}catch(t){}}}function q(r){if(r.next){i(r.next).unbind(r.prevNextEvent)}if(r.prev){i(r.prev).unbind(r.prevNextEvent)}if(r.pager||r.pagerAnchorBuilder){i.each(r.pagerAnchors||[],function(){this.unbind().remove()})}r.pagerAnchors=null;if(r.destroy){r.destroy(r)}}function k(z,L,v,u,F){var D=i.extend({},i.fn.cycle.defaults,u||{},i.metadata?z.metadata():i.meta?z.data():{});if(D.autostop){D.countdown=D.autostopCount||v.length}var s=z[0];z.data("cycle.opts",D);D.$cont=z;D.stopCount=s.cycleStop;D.elements=v;D.before=D.before?[D.before]:[];D.after=D.after?[D.after]:[];D.after.unshift(function(){D.busy=0});if(!i.support.opacity&&D.cleartype){D.after.push(function(){b(this,D)})}if(D.continuous){D.after.push(function(){e(v,D,0,(!D.rev&&!D.backwards))})}n(D);if(!i.support.opacity&&D.cleartype&&!D.cleartypeNoBg){g(L)}if(z.css("position")=="static"){z.css("position","relative")}if(D.width){z.width(D.width)}if(D.height&&D.height!="auto"){z.height(D.height)}if(D.startingSlide){D.startingSlide=parseInt(D.startingSlide)}else{if(D.backwards){D.startingSlide=v.length-1}}if(D.random){D.randomMap=[];for(var J=0;J<v.length;J++){D.randomMap.push(J)}D.randomMap.sort(function(N,w){return Math.random()-0.5});D.randomIndex=1;D.startingSlide=D.randomMap[1]}else{if(D.startingSlide>=v.length){D.startingSlide=0}}D.currSlide=D.startingSlide||0;var y=D.startingSlide;L.css({position:"absolute",top:0,left:0}).hide().each(function(w){var N;if(D.backwards){N=y?w<=y?v.length+(w-y):y-w:v.length-w}else{N=y?w>=y?v.length-(w-y):y-w:v.length-w}i(this).css("z-index",N)});i(v[y]).css("opacity",1).show();b(v[y],D);if(D.fit&&D.width){L.width(D.width)}if(D.fit&&D.height&&D.height!="auto"){L.height(D.height)}var E=D.containerResize&&!z.innerHeight();if(E){var x=0,C=0;for(var H=0;H<v.length;H++){var r=i(v[H]),M=r[0],B=r.outerWidth(),K=r.outerHeight();if(!B){B=M.offsetWidth||M.width||r.attr("width")}if(!K){K=M.offsetHeight||M.height||r.attr("height")}x=B>x?B:x;C=K>C?K:C}if(x>0&&C>0){z.css({width:x+"px",height:C+"px"})}}if(D.pause){z.hover(function(){this.cyclePause++},function(){this.cyclePause--})}if(c(D)===false){return false}var t=false;u.requeueAttempts=u.requeueAttempts||0;L.each(function(){var P=i(this);this.cycleH=(D.fit&&D.height)?D.height:(P.height()||this.offsetHeight||this.height||P.attr("height")||0);this.cycleW=(D.fit&&D.width)?D.width:(P.width()||this.offsetWidth||this.width||P.attr("width")||0);if(P.is("img")){var N=(i.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var Q=(i.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var O=(i.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.cycleH==17))&&!this.complete);var w=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(N||Q||O||w){if(F.s&&D.requeueOnImageNotLoaded&&++u.requeueAttempts<100){f(u.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){i(F.s,F.c).cycle(u)},D.requeueTimeout);t=true;return false}else{f("could not determine size of image: "+this.src,this.cycleW,this.cycleH)}}}return true});if(t){return false}D.cssBefore=D.cssBefore||{};D.animIn=D.animIn||{};D.animOut=D.animOut||{};L.not(":eq("+y+")").css(D.cssBefore);if(D.cssFirst){i(L[y]).css(D.cssFirst)}if(D.timeout){D.timeout=parseInt(D.timeout);if(D.speed.constructor==String){D.speed=i.fx.speeds[D.speed]||parseInt(D.speed)}if(!D.sync){D.speed=D.speed/2}var G=D.fx=="shuffle"?500:250;while((D.timeout-D.speed)<G){D.timeout+=D.speed}}if(D.easing){D.easeIn=D.easeOut=D.easing}if(!D.speedIn){D.speedIn=D.speed}if(!D.speedOut){D.speedOut=D.speed}D.slideCount=v.length;D.currSlide=D.lastSlide=y;if(D.random){if(++D.randomIndex==v.length){D.randomIndex=0}D.nextSlide=D.randomMap[D.randomIndex]}else{if(D.backwards){D.nextSlide=D.startingSlide==0?(v.length-1):D.startingSlide-1}else{D.nextSlide=D.startingSlide>=(v.length-1)?0:D.startingSlide+1}}if(!D.multiFx){var I=i.fn.cycle.transitions[D.fx];if(i.isFunction(I)){I(z,L,D)}else{if(D.fx!="custom"&&!D.multiFx){f("unknown transition: "+D.fx,"; slideshow terminating");return false}}}var A=L[y];if(D.before.length){D.before[0].apply(A,[A,A,D,true])}if(D.after.length>1){D.after[1].apply(A,[A,A,D,true])}if(D.next){i(D.next).bind(D.prevNextEvent,function(){return o(D,D.rev?-1:1)})}if(D.prev){i(D.prev).bind(D.prevNextEvent,function(){return o(D,D.rev?1:-1)})}if(D.pager||D.pagerAnchorBuilder){d(v,D)}j(D,v);return D}function n(r){r.original={before:[],after:[]};r.original.cssBefore=i.extend({},r.cssBefore);r.original.cssAfter=i.extend({},r.cssAfter);r.original.animIn=i.extend({},r.animIn);r.original.animOut=i.extend({},r.animOut);i.each(r.before,function(){r.original.before.push(this)});i.each(r.after,function(){r.original.after.push(this)})}function c(x){var v,t,s=i.fn.cycle.transitions;if(x.fx.indexOf(",")>0){x.multiFx=true;x.fxs=x.fx.replace(/\s*/g,"").split(",");for(v=0;v<x.fxs.length;v++){var w=x.fxs[v];t=s[w];if(!t||!s.hasOwnProperty(w)||!i.isFunction(t)){f("discarding unknown transition: ",w);x.fxs.splice(v,1);v--}}if(!x.fxs.length){f("No valid transitions named; slideshow terminating.");return false}}else{if(x.fx=="all"){x.multiFx=true;x.fxs=[];for(p in s){t=s[p];if(s.hasOwnProperty(p)&&i.isFunction(t)){x.fxs.push(p)}}}}if(x.multiFx&&x.randomizeEffects){var u=Math.floor(Math.random()*20)+30;for(v=0;v<u;v++){var r=Math.floor(Math.random()*x.fxs.length);x.fxs.push(x.fxs.splice(r,1)[0])}a("randomized fx sequence: ",x.fxs)}return true}function j(s,r){s.addSlide=function(u,v){var t=i(u),w=t[0];if(!s.autostopCount){s.countdown++}r[v?"unshift":"push"](w);if(s.els){s.els[v?"unshift":"push"](w)}s.slideCount=r.length;t.css("position","absolute");t[v?"prependTo":"appendTo"](s.$cont);if(v){s.currSlide++;s.nextSlide++}if(!i.support.opacity&&s.cleartype&&!s.cleartypeNoBg){g(t)}if(s.fit&&s.width){t.width(s.width)}if(s.fit&&s.height&&s.height!="auto"){$slides.height(s.height)}w.cycleH=(s.fit&&s.height)?s.height:t.height();w.cycleW=(s.fit&&s.width)?s.width:t.width();t.css(s.cssBefore);if(s.pager||s.pagerAnchorBuilder){i.fn.cycle.createPagerAnchor(r.length-1,w,i(s.pager),r,s)}if(i.isFunction(s.onAddSlide)){s.onAddSlide(t)}else{t.hide()}}}i.fn.cycle.resetState=function(s,r){r=r||s.fx;s.before=[];s.after=[];s.cssBefore=i.extend({},s.original.cssBefore);s.cssAfter=i.extend({},s.original.cssAfter);s.animIn=i.extend({},s.original.animIn);s.animOut=i.extend({},s.original.animOut);s.fxFn=null;i.each(s.original.before,function(){s.before.push(this)});i.each(s.original.after,function(){s.after.push(this)});var t=i.fn.cycle.transitions[r];if(i.isFunction(t)){t(s.$cont,i(s.elements),s)}};function e(y,r,x,A){if(x&&r.busy&&r.manualTrump){a("manualTrump in go(), stopping active transition");i(y).stop(true,true);r.busy=false}if(r.busy){a("transition active, ignoring new tx request");return}var v=r.$cont[0],C=y[r.currSlide],B=y[r.nextSlide];if(v.cycleStop!=r.stopCount||v.cycleTimeout===0&&!x){return}if(!x&&!v.cyclePause&&!r.bounce&&((r.autostop&&(--r.countdown<=0))||(r.nowrap&&!r.random&&r.nextSlide<r.currSlide))){if(r.end){r.end(r)}return}var z=false;if((x||!v.cyclePause)&&(r.nextSlide!=r.currSlide)){z=true;var w=r.fx;C.cycleH=C.cycleH||i(C).height();C.cycleW=C.cycleW||i(C).width();B.cycleH=B.cycleH||i(B).height();B.cycleW=B.cycleW||i(B).width();if(r.multiFx){if(r.lastFx==undefined||++r.lastFx>=r.fxs.length){r.lastFx=0}w=r.fxs[r.lastFx];r.currFx=w}if(r.oneTimeFx){w=r.oneTimeFx;r.oneTimeFx=null}i.fn.cycle.resetState(r,w);if(r.before.length){i.each(r.before,function(D,E){if(v.cycleStop!=r.stopCount){return}E.apply(B,[C,B,r,A])})}var t=function(){i.each(r.after,function(D,E){if(v.cycleStop!=r.stopCount){return}E.apply(B,[C,B,r,A])})};a("tx firing; currSlide: "+r.currSlide+"; nextSlide: "+r.nextSlide);r.busy=1;if(r.fxFn){r.fxFn(C,B,r,t,A,x&&r.fastOnEvent)}else{if(i.isFunction(i.fn.cycle[r.fx])){i.fn.cycle[r.fx](C,B,r,t,A,x&&r.fastOnEvent)}else{i.fn.cycle.custom(C,B,r,t,A,x&&r.fastOnEvent)}}}if(z||r.nextSlide==r.currSlide){r.lastSlide=r.currSlide;if(r.random){r.currSlide=r.nextSlide;if(++r.randomIndex==y.length){r.randomIndex=0}r.nextSlide=r.randomMap[r.randomIndex];if(r.nextSlide==r.currSlide){r.nextSlide=(r.currSlide==r.slideCount-1)?0:r.currSlide+1}}else{if(r.backwards){var u=(r.nextSlide-1)<0;if(u&&r.bounce){r.backwards=!r.backwards;r.nextSlide=1;r.currSlide=0}else{r.nextSlide=u?(y.length-1):r.nextSlide-1;r.currSlide=u?0:r.nextSlide+1}}else{var u=(r.nextSlide+1)==y.length;if(u&&r.bounce){r.backwards=!r.backwards;r.nextSlide=y.length-2;r.currSlide=y.length-1}else{r.nextSlide=u?0:r.nextSlide+1;r.currSlide=u?y.length-1:r.nextSlide-1}}}}if(z&&r.pager){r.updateActivePagerLink(r.pager,r.currSlide,r.activePagerClass)}var s=0;if(r.timeout&&!r.continuous){s=h(y[r.currSlide],y[r.nextSlide],r,A)}else{if(r.continuous&&v.cyclePause){s=10}}if(s>0){v.cycleTimeout=setTimeout(function(){e(y,r,0,(!r.rev&&!r.backwards))},s)}}i.fn.cycle.updateActivePagerLink=function(r,t,s){i(r).each(function(){i(this).children().removeClass(s).eq(t).addClass(s)})};function h(w,u,v,s){if(v.timeoutFn){var r=v.timeoutFn.call(w,w,u,v,s);while((r-v.speed)<250){r+=v.speed}a("calculated timeout: "+r+"; speed: "+v.speed);if(r!==false){return r}}return v.timeout}i.fn.cycle.next=function(r){o(r,r.rev?-1:1)};i.fn.cycle.prev=function(r){o(r,r.rev?1:-1)};function o(t,w){var s=t.elements;var v=t.$cont[0],u=v.cycleTimeout;if(u){clearTimeout(u);v.cycleTimeout=0}if(t.random&&w<0){t.randomIndex--;if(--t.randomIndex==-2){t.randomIndex=s.length-2}else{if(t.randomIndex==-1){t.randomIndex=s.length-1}}t.nextSlide=t.randomMap[t.randomIndex]}else{if(t.random){t.nextSlide=t.randomMap[t.randomIndex]}else{t.nextSlide=t.currSlide+w;if(t.nextSlide<0){if(t.nowrap){return false}t.nextSlide=s.length-1}else{if(t.nextSlide>=s.length){if(t.nowrap){return false}t.nextSlide=0}}}}var r=t.onPrevNextEvent||t.prevNextClick;if(i.isFunction(r)){r(w>0,t.nextSlide,s[t.nextSlide])}e(s,t,1,w>=0);return false}function d(s,t){var r=i(t.pager);i.each(s,function(u,v){i.fn.cycle.createPagerAnchor(u,v,r,s,t)});t.updateActivePagerLink(t.pager,t.startingSlide,t.activePagerClass)}i.fn.cycle.createPagerAnchor=function(v,w,t,u,x){var s;if(i.isFunction(x.pagerAnchorBuilder)){s=x.pagerAnchorBuilder(v,w);a("pagerAnchorBuilder("+v+", el) returned: "+s)}else{s='<a href="#">'+(v+1)+"</a>"}if(!s){return}var y=i(s);if(y.parents("body").length===0){var r=[];if(t.length>1){t.each(function(){var z=y.clone(true);i(this).append(z);r.push(z[0])});y=i(r)}else{y.appendTo(t)}}x.pagerAnchors=x.pagerAnchors||[];x.pagerAnchors.push(y);y.bind(x.pagerEvent,function(C){C.preventDefault();x.nextSlide=v;var B=x.$cont[0],A=B.cycleTimeout;if(A){clearTimeout(A);B.cycleTimeout=0}var z=x.onPagerEvent||x.pagerClick;if(i.isFunction(z)){z(x.nextSlide,u[x.nextSlide])}e(u,x,1,x.currSlide<v)});if(!/^click/.test(x.pagerEvent)&&!x.allowPagerClickBubble){y.bind("click.cycle",function(){return false})}if(x.pauseOnPagerHover){y.hover(function(){x.$cont[0].cyclePause++},function(){x.$cont[0].cyclePause--})}};i.fn.cycle.hopsFromLast=function(u,t){var s,r=u.lastSlide,v=u.currSlide;if(t){s=v>r?v-r:u.slideCount-r}else{s=v<r?r-v:r+u.slideCount-v}return s};function g(t){a("applying clearType background-color hack");function s(u){u=parseInt(u).toString(16);return u.length<2?"0"+u:u}function r(x){for(;x&&x.nodeName.toLowerCase()!="html";x=x.parentNode){var u=i.css(x,"background-color");if(u.indexOf("rgb")>=0){var w=u.match(/\d+/g);return"#"+s(w[0])+s(w[1])+s(w[2])}if(u&&u!="transparent"){return u}}return"#ffffff"}t.each(function(){i(this).css("background-color",r(this))})}i.fn.cycle.commonReset=function(x,u,v,s,t,r){i(v.elements).not(x).hide();v.cssBefore.opacity=1;v.cssBefore.display="block";if(s!==false&&u.cycleW>0){v.cssBefore.width=u.cycleW}if(t!==false&&u.cycleH>0){v.cssBefore.height=u.cycleH}v.cssAfter=v.cssAfter||{};v.cssAfter.display="none";i(x).css("zIndex",v.slideCount+(r===true?1:0));i(u).css("zIndex",v.slideCount+(r===true?0:1))};i.fn.cycle.custom=function(D,x,r,u,w,s){var C=i(D),y=i(x);var t=r.speedIn,B=r.speedOut,v=r.easeIn,A=r.easeOut;y.css(r.cssBefore);if(s){if(typeof s=="number"){t=B=s}else{t=B=1}v=A=null}var z=function(){y.animate(r.animIn,t,v,u)};C.animate(r.animOut,B,A,function(){if(r.cssAfter){C.css(r.cssAfter)}if(!r.sync){z()}});if(r.sync){z()}};i.fn.cycle.transitions={fade:function(s,t,r){t.not(":eq("+r.currSlide+")").css("opacity",0);r.before.push(function(w,u,v){i.fn.cycle.commonReset(w,u,v);v.cssBefore.opacity=0});r.animIn={opacity:1};r.animOut={opacity:0};r.cssBefore={top:0,left:0}}};i.fn.cycle.ver=function(){return l};i.fn.cycle.defaults={fx:"fade",timeout:4000,timeoutFn:null,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,onPrevNextEvent:null,prevNextEvent:"click.cycle",pager:null,onPagerEvent:null,pagerEvent:"click.cycle",allowPagerClickBubble:false,pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:"auto",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:1,pauseOnPagerHover:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!i.support.opacity,cleartypeNoBg:true,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250,activePagerClass:"activeSlide",updateActivePagerLink:null,backwards:false}})(jQuery);(function(a){a.fn.cycle.transitions.none=function(c,d,b){b.fxFn=function(g,e,f,h){a(e).show();a(g).hide();h()}};a.fn.cycle.transitions.scrollUp=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.height();c.cssBefore={top:b,left:0};c.cssFirst={top:0};c.animIn={top:0};c.animOut={top:-b}};a.fn.cycle.transitions.scrollDown=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.height();c.cssFirst={top:0};c.cssBefore={top:-b,left:0};c.animIn={top:0};c.animOut={top:b}};a.fn.cycle.transitions.scrollLeft=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.width();c.cssFirst={left:0};c.cssBefore={left:b,top:0};c.animIn={left:0};c.animOut={left:0-b}};a.fn.cycle.transitions.scrollRight=function(d,e,c){d.css("overflow","hidden");c.before.push(a.fn.cycle.commonReset);var b=d.width();c.cssFirst={left:0};c.cssBefore={left:-b,top:0};c.animIn={left:0};c.animOut={left:b}};a.fn.cycle.transitions.scrollHorz=function(c,d,b){c.css("overflow","hidden").width();b.before.push(function(h,f,g,e){a.fn.cycle.commonReset(h,f,g);g.cssBefore.left=e?(f.cycleW-1):(1-f.cycleW);g.animOut.left=e?-h.cycleW:h.cycleW});b.cssFirst={left:0};b.cssBefore={top:0};b.animIn={left:0};b.animOut={top:0}};a.fn.cycle.transitions.scrollVert=function(c,d,b){c.css("overflow","hidden");b.before.push(function(h,f,g,e){a.fn.cycle.commonReset(h,f,g);g.cssBefore.top=e?(1-f.cycleH):(f.cycleH-1);g.animOut.top=e?h.cycleH:-h.cycleH});b.cssFirst={top:0};b.cssBefore={left:0};b.animIn={top:0};b.animOut={left:0}}})(jQuery);
// end Cycle

var slideHandler = {
	initActualite: function (rootClass) {
		$('.' + rootClass + ' ul.contenue').each(function () {
			var slidesRoot = $(this);
			var liLength = slidesRoot.children("li").length;
			if (liLength > 1) {
				slideHandler.initCycle(rootClass, $('.' + rootClass + ' .contenue'));
			}
			else if (liLength == 1) {
				slidesRoot.find('.navLeft, .navRight').css('visibility', 'hidden');
			}
		});
	},
	initCycle: function (rootClass, slidesContainer) {
		slidesContainer.cycle({
			fx: 'scrollHorz',
			next: '.' + rootClass + ' .navRight',
			prev: '.' + rootClass + ' .navLeft',
			timeout: 0,
			easing: 'easeOutQuint',
			height: 'auto'
		});
	}
};

