
/*----------------------------------------------------
------------------------------------------------------
	Node TypeCode
	for IE
------------------------------------------------------
----------------------------------------------------*/

if(document.all) {
	var Node = {
		ELEMENT_NODE: 1,
		ATTRIBUTE_NODE: 2,
		TEXT_NODE: 3,
		CDATA_SECTION_NODE: 4,
		ENTITY_REFERENCE_NODE: 5,
		ENTITY_NODE: 6,
		PROCESSING_INSTRUCTION_NODE: 7,
		COMMENT_NODE: 8,
		DOCUMENT_NODE: 9,
		DOCUMENT_TYPE_NODE: 10,
		DOCUMENT_FRAGMENT_NODE: 11,
		NOTATION_NODE: 12
	}
}

/*----------------------------------------------------
------------------------------------------------------

	Class tx_jettours_pi1_Base

	Variables :
		options (Object)
		contentTYPO3ID (integer)
		_REQUEST (Array)

	Methods :
		initialize()
		getHTTPVar()
		getElemByName()
		xml2array()
		checkPattern()
		goTo()

------------------------------------------------------
----------------------------------------------------*/

var tx_jettours_pi1_Base = Class.create();
tx_jettours_pi1_Base.prototype = {

	options: null,
	contentTYPO3ID: 0,
	_REQUEST: null,
	lightFormObj: null,
	pageNotFoundMessage: "Votre requête n'a pu aboutir suite à un problème de connexion.",
	timer: false,

	initialize: function (ctID, options) {
		this.options = {
			'addParams': null,
			'lightForm': false,
			'onLoading': null,
			'onComplete': null,
			'listObj': null,
			'engineObj': null,
			'prefixId': null
		};
		Object.extend(this.options, options || {});
		this.contentTYPO3ID = ctID;
		this._REQUEST = this.getHTTPVar();
	},

	getHTTPVar: function () {
		var url = document.location.href;
		var urlObj = url.toQueryParams();
		var h = $H(urlObj), rs = new Array();
		h.each(function(pair) { rs[pair.key] = pair.value; });
		return rs;
	},

	getElemByName: function (name) {
		var myTemplate = new Template(this.templateElemID);
		var elemId = myTemplate.evaluate({'prefix':this.options.prefixId,'id':this.contentTYPO3ID, 'name':name});
		if($(elemId) && elemId!=''){ return $(elemId); }
		return false;
	},

	xml2array: function (DOC) {
		if(DOC == null){ return false; }
		if(!DOC.childNodes){ return false; }
		var rsAr = new Array(), node=null, children=DOC.childNodes;
		for(var u=0; u<children.length; u++){
			node = children[u];
			if(node.nodeType == Node.ELEMENT_NODE){
				if(node.firstChild){
					if((node.firstChild.nodeType == Node.TEXT_NODE) || (node.firstChild.nodeType == Node.CDATA_SECTION_NODE)){
						rsAr[node.nodeName] = node.firstChild.nodeValue;
					}
				}
			}
		}
		return rsAr;
	},

	checkPattern: function (str, pattern) {
		var expression, rs;
		switch(pattern){
			case 'hour':
				expression = /^([0-1][0-9]|2[0-3])\:([0-5][0-9])$/;
				break;
			case 'integer':
				expression = /^([0-9]+)$/;
				break;
			case 'date':
				expression = /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/([0-9]{4})$/;
				break;
			case 'email':
				expression = /^([a-zA-Z0-9_\.\-]+)\@([a-zA-Z0-9\.\-]+)\.([a-zA-Z0-9]{2,5})$/;
				break;
			default:
				break;
		}
		rs = str.search(expression);
		if(rs!=-1){ return true; }
		return false;
	},

	goTo: function (url, params) {
		var parameters = params || {};
		if(Hash.toQueryString(parameters)){ url+= ((url.indexOf('?')!=-1)?'&':'?')+Hash.toQueryString(parameters); }
		document.location.href = url;
		return false;
	},

	_void: function(){}

};

/*----------------------------------------------------
------------------------------------------------------

	Class tx_jettours_pi1_Engine
		extends tx_jettours_pi1_Base

	Variables :
		templateElemID (string)
		defaultFormValues (string)
		backUpPriceArray (Array)

	Methods :
		start()
		send()
		sendRequest()
		addMultipleCriteria()
		switchRadio()
		switchPrice()
		checkField()
		setField()

------------------------------------------------------
----------------------------------------------------*/

var tx_jettours_pi1_Engine = Class.create();
tx_jettours_pi1_Engine.prototype = Object.extend(new tx_jettours_pi1_Base(), {

	templateElemID: '#{prefix}_engine_#{name}_c#{id}',
	templateJSObj: '#{prefix}_eObj_c#{id}',
	defaultFormValues: null,
	backUpPriceArray: [],

	start: function(varArr) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		this.defaultFormValues = formElem.serialize();
		this.loadVar(varArr);
		this.runEvent();
	},

	send: function () {
		if(typeof this.options.listObj != 'object' && typeof this.options.targetURL != 'string'){ return false; }
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		if(this.defaultFormValues == formElem.serialize()){ alert('Merci de renseigner au minimun un critère'); return false; }
		if(!this.checkField()){ return false; }
		var parameters = {'action': 'search'};
		if(typeof this.options.targetURL == 'string'){
			Object.extend(parameters, {'noHTMLNode':1});
		} else if(typeof this.options.listObj == 'object'){
			var formListElem = this.options.listObj.getElemByName('form');
			if(!formListElem){ return false; }
			var docFormList = document.forms[formListElem.getAttribute('name')];
			Object.extend(this.options.addParams, {
				'sliceOffset': 1,
				'sliceLength': this.options.listObj.options.addParams.rowNormal,
				'rowFirst': this.options.listObj.options.addParams.rowNormal
			});
			Object.extend(parameters, {
				'skin': this.options.listObj.options.addParams.skin,
				'sliceOffset': this.options.listObj.options.addParams.sliceOffset,
				'sliceLength': this.options.listObj.options.addParams.sliceLength,
				'rowFirst': this.options.listObj.options.addParams.rowFirst,
				'rowNormal': this.options.listObj.options.addParams.rowNormal,
				'view': 'rank_descending-score_descending' // Force le tri par score décroissant sans groupe
			});
			if(typeof tx_jettours_pi1_lightFormObj == 'object'){
				tx_jettours_pi1_lightFormObj.setSelectedOption(docFormList.name, 'temp_slice_length', 0);
			} else {
				docFormList.elements['temp_slice_length'].options[0].selected = true;
			}
		}
		this.cleanCurrentHyperText();
		this.sendRequest(parameters, 'update');
		return false;
	},

	sendRequest: function (params, procFunc) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var parameters = Object.clone(this.options.addParams);
		Object.extend(parameters, params || {});

// var params = formElem.serialize(true) || {};
// Object.extend(params, parameters || {});
// var url = formElem.readAttribute('action')+'?'+Hash.toQueryString(params);
// document.location.href=url;
// return false;

		var onLoading = this.options.onLoading || Prototype.emptyFunction;
		onLoading.apply(this);
		formElem.request({
			'parameters': parameters,
			'onComplete': function(xhr){
				if((xhr.status == 200) || (xhr.status == 404)){
					var onComplete = this.options.onComplete || Prototype.emptyFunction;
					onComplete.apply(this);
					switch(xhr.status){
						case 200:
							if(typeof this.options.targetURL == 'string'){
								this.toPID(xhr);
							} else if(typeof this.options.listObj == 'object'){
								this.options.listObj.buildList(xhr, procFunc);
							}
							break;
						default:
							alert(this.pageNotFoundMessage);
							break;
					}
				}
			}.bind(this)
		});
	},

	toPID: function (xhr) {
		if(typeof this.options.targetURL != 'string'){ return false; }
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var DOC = xhr.responseXML.documentElement;
		var xmlArr = this.xml2array(DOC);
		if(xmlArr){
			if(xmlArr['numRows']){
				xmlArr['numRows'] = parseInt(xmlArr['numRows']);
				if(xmlArr['numRows']==0){
					alert('Aucun résultat pour votre recherche,\nnous vous invitons à formuler une nouvelle recherche.');
					return false;
				}
			}
			if(xmlArr['qKey']){
				this.goTo(this.options.targetURL, {'tx_jettours_pi1[qKey]':xmlArr['qKey'],'tx_jettours_pi1[preLoadCache]':0});
			}
		}
	},

	addMultipleCriteria: function (arg) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var newElem = arg[0];
		var elem = arg[1];
		var indice = Number(arg[2]);
		var docFormElement = document.forms[formElem.readAttribute('name')].elements[elem.readAttribute('name')];
		docFormElement.selectedIndex = 0;
		criteriaExists = false;
		formElem.getElementsBySelector('input[type="hidden"]').each(function(e){
			if(e.readAttribute('name') == elem.readAttribute('rel') && e.readAttribute('value') == docFormElement.options[indice].value){ criteriaExists = true; }
		});
		if(criteriaExists == true){ return false;}
		var prefNode = Builder.node('input', {
			'type':'hidden',
			'name':'preference'+(elem.readAttribute('rel').substr(elem.readAttribute('rel').indexOf('['), elem.readAttribute('rel').length)),
			'value':100
		});
		var inputNode = Builder.node('input', {
			'type':'hidden',
			'name':elem.readAttribute('rel'),
			'value':docFormElement.options[indice].value
		});
		var binNode = Builder.node('img', {
			'src':'clear.gif',
			'alt':'Supprimer ce critere',
			'title':'Supprimer ce critere',
			'class':this.options.prefixId+'-icon-delete'
		});
		Event.observe(binNode, 'click', function(){
			this.parentNode.parentNode.removeChild(this.parentNode);
		});
		var newLine = Builder.node('div', {'class':this.options.prefixId+'-criteria-item'}, binNode);
		newLine.appendChild(inputNode);
		newLine.appendChild(prefNode);
		newLine.appendChild(Builder.node('span', docFormElement.options[indice].text));
		newElem.parentNode.insertBefore(newLine, newElem);
	},

	switchRadio: function (arg) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.getAttribute('name')];
		var fieldName = 'prix';
		var priceFieldArray = ['min','max','exact'];
		if(arg[0] == 0){
			priceFieldArray.each(function(e){
				if(docForm.elements[fieldName+'['+e+']']){
					if(!isNaN(this.backUpPriceArray[e]) && this.backUpPriceArray[e] > 0){
						docForm.elements[fieldName+'['+e+']'].value = this.backUpPriceArray[e];
					}
				}
			}.bind(this));
			var lastPriceField = priceFieldArray.last();
			if(docForm.elements[fieldName+'['+lastPriceField+']']){
				docForm.elements[fieldName+'['+lastPriceField+']'].focus();
			}
		} else {
			priceFieldArray.each(function(e){
				if(docForm.elements[fieldName+'['+e+']']){
					this.backUpPriceArray[e] = docForm.elements[fieldName+'['+e+']'].value;
					docForm.elements[fieldName+'['+e+']'].value = '';
					return true;
				}
			}.bind(this));
		}
	},

	switchPrice: function (event) {
		var elem = Event.element(event);
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.getAttribute('name')];
		if(docForm.elements[elem.getAttribute('name')].value == ''){
			if(typeof tx_jettours_pi1_lightFormObj == 'object'){
				tx_jettours_pi1_lightFormObj.setValue(docForm.name, 'choix_prix', {'value':1}, false);
			} else {
				docForm.elements['choix_prix'][0].checked = true;
			}
		} else {
			if(typeof tx_jettours_pi1_lightFormObj == 'object'){
				tx_jettours_pi1_lightFormObj.setValue(docForm.name, 'choix_prix', {'value':0}, false);
			} else {
				docForm.elements['choix_prix'][1].checked = true;
			}
		}
	},

	checkField: function () {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.getAttribute('name')], u=0, formatInterger, formatDate, fieldRequired, docFormElement=null;
		fieldRequired = formElem.getElementsBySelector('input.vform-required');
		if(fieldRequired.length){
			for(u=0; u<(fieldRequired.length); u++){
				docFormElement = docForm.elements[fieldRequired[u].readAttribute('name')];
				if(docFormElement){
					if(docFormElement.value == ''){ alert(fieldRequired[u].readAttribute('title')+' (champ obligatoire)'); docFormElement.focus(); return false; }
				}
			}
		}
		formatInterger = formElem.getElementsBySelector('input.vform-integer');
		for(u=0; u<(formatInterger.length); u++){
			docFormElement = docForm.elements[formatInterger[u].readAttribute('name')];
			if(docFormElement){
				if(docFormElement.value!=''){
					if(!this.checkPattern(docFormElement.value, 'integer')){ alert(formatInterger[u].readAttribute('title')+' (chiffre)'); docFormElement.select(); return false; }
				}
			}
		}
		formatDate = formElem.getElementsBySelector('input.vform-date');
		for(u=0; u<(formatDate.length); u++){
			docFormElement = docForm.elements[formatDate[u].readAttribute('name')];
			if(docFormElement){
				if(docFormElement.value!=''){
					if(!this.checkPattern(docFormElement.value, 'date')){ alert(formatDate[u].readAttribute('title')+' (date jj/mm/aaaa)'); docFormElement.select(); return false; }
				}
			}
		}
		return true;
	},

	loadVar: function (varArr) {
		if(typeof varArr == 'object'){
			varArr.each(function(e){
				if(typeof e == 'object'){
					$H(e).each(function(pair){
						this.setField(pair.key, pair.value);
					}.bind(this));
				}
			}.bind(this));
		}
	},

	setField: function (fname, fvalue) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.readAttribute('name')];
		if(docForm.elements[fname]){
			var sourceHTMLElement = formElem.getElementsBySelector('[name="'+fname+'"]').first();
			var isMultiple = (sourceHTMLElement.hasAttribute('rel'))?true:false;
			if(isMultiple && sourceHTMLElement.nodeName.toUpperCase() == 'SELECT'){
				var index = 0;
				for(var u=0; u<docForm.elements[fname].options.length; u++){ if(docForm.elements[fname].options[u].value == fvalue){ index = u; break; } }
				this.addMultipleCriteria([(typeof tx_jettours_pi1_lightFormObj == 'object')?sourceHTMLElement.previous(0):sourceHTMLElement, sourceHTMLElement, index]);
			} else {
				var typeOf = sourceHTMLElement.nodeName;
				typeOf = (typeOf=='input')?(docForm.elements[fname].length>1)?docForm.elements[fname][0].type:docForm.elements[fname].type:typeOf;
				typeOf = typeOf.toUpperCase();
				if(typeof tx_jettours_pi1_lightFormObj == 'object'){
					tx_jettours_pi1_lightFormObj.setValue(docForm.name, fname, {'value':fvalue});
				}
				switch(typeOf){
					case 'RADIO':
						for(var u=0; u<docForm.elements[fname].length; u++){
							if(docForm.elements[fname][u].value == fvalue){
								docForm.elements[fname][u].checked = true;
							}
						}
						break;
					default:
						docForm.elements[fname].value = fvalue;
						break;
				}
			}
		}

	},

	cleanCurrentHyperText: function () {
		var className = this.options.prefixId+'-engine-hypertext-CUR';
		$$('.'+className).each(function(elem){
			Element.removeClassName(elem, className);
		});
	},

	runEvent: function (){
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		if((typeof this.options.priceEvent == 'boolean') && (this.options.priceEvent == true)){
			formElem.getElementsBySelector('input.'+this.options.prefixId+'-field-prix').each(function(elem){
				['keyup', 'blur'].each(function(eventName){
					Event.observe(elem, eventName, function(event){
						if(this.timer){ window.clearTimeout(this.timer); }
						this.timer = window.setTimeout(function(){this.switchPrice(event)}.bind(this), 900);
					}.bindAsEventListener(this));
				}.bind(this));
			}.bind(this));
		}
		this.cleanReadOnlyField();
	},

	cleanReadOnlyField: function () {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var readOnly = formElem.getInputs('text');
		readOnly.each(function(elem){
			if(typeof elem.readAttribute('readonly') == 'string'){
				Event.observe(elem, 'keydown', function(event){
					var element = Event.element(event);
					switch(event.keyCode){
						case 8: // backspace
						case 46: // Del
							element.clear();
							break;
						default:
							break;
					}
					Event.stop(event);
				});
			}
		});
	},

	_void: function() {}

});

/*----------------------------------------------------
------------------------------------------------------

	Class tx_jettours_pi1_List
		extends tx_jettours_pi1_Base

	Variables :
		templateElemID (string

	Methods :
		changeFirstRow()
		saveFieldByName()
		changeOrder()
		browser()
		sendRequest()
		buildList()
		updateNumRows()

------------------------------------------------------
----------------------------------------------------*/

var tx_jettours_pi1_List = Class.create();
tx_jettours_pi1_List.prototype = Object.extend(new tx_jettours_pi1_Base(), {

	templateElemID: '#{prefix}_list_#{name}_c#{id}',
	templateJSObj: '#{prefix}_lObj_c#{id}',
	currentPosition: 0,
	isLoadingCache: false,

	start: function () {
		if(this.options.mode == 'based_search'){
			if(this.loadCache()){
				this.isLoadingCache = true;
			} else {
				this.appear();
			}
		}
	},

	appear: function () {
		if(typeof this.options.appearEffect == 'boolean' && this.options.appearEffect == true){
			new Effect.Appear($(this.options.prefixId+'_c'+this.contentTYPO3ID));
		} else {
			$(this.options.prefixId+'_c'+this.contentTYPO3ID).show();
		}
	},

	changeView: function (elem, query) {
		if(typeof query == 'string' && query != ''){
			this.currentPosition = 0;
			var formElem = this.getElemByName('form');
			var viewElem = this.getElemByName('form');
			if(!formElem){ return false; }
			var docForm = document.forms[formElem.readAttribute('name')];
			if(query != docForm.elements['view'].value){
				viewElem.getElementsBySelector('.current').each(function(e){ Element.removeClassName(e, 'current'); });
				docForm.elements['view'].value = query;
				Object.extend(this.options.addParams, {
					'sliceOffset':1,
					'sliceLength':this.options.addParams.rowFirst
				});
				Element.addClassName(elem.parentNode, 'current');
				if(docForm.elements['temp_sort']){
					var expression = /_([^_]+)$/;
					expression.exec(query);
					fvalue = RegExp.$1;
					if(typeof tx_jettours_pi1_lightFormObj == 'object'){
						tx_jettours_pi1_lightFormObj.setValue(docForm.name, 'temp_sort', {'value':fvalue});
					}
					docForm.elements['temp_sort'].value = fvalue;
				}
				this.sendRequest({'action':'view'}, 'update');
			}
		}
	},

	changeSort: function (arg) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var newElem = arg[0];
		var sourceHTMLElement = arg[1];
		var index = arg[2];
		var docForm = document.forms[formElem.readAttribute('name')];
		var sorting = docForm.elements[sourceHTMLElement.readAttribute('name')].options[index].value;
		var query = docForm.elements['view'].value;
		var expression = /^(.*)_([^_]+)$/;
		expression.exec(query);
		docForm.elements['view'].value = RegExp.$1+'_'+sorting;
		Object.extend(this.options.addParams, {
			'sliceOffset':1,
			'sliceLength':this.options.addParams.rowFirst
		});
		this.sendRequest({'action':'browser', 'noSmoothScroll':1}, 'update');
	},

	changeFirstRow: function (arg) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var newElem = arg[0];
		var sourceHTMLElement = arg[1];
		var index = arg[2];
		var docForm = document.forms[formElem.readAttribute('name')];
		var slice_length = docForm.elements[sourceHTMLElement.readAttribute('name')].options[index].value;
		Object.extend(this.options.addParams, {
			'sliceOffset':1,
			'sliceLength':slice_length,
			'rowFirst':slice_length
		});
		this.sendRequest({'action':'browser', 'noSmoothScroll':1}, 'update');
	},

	browser: function () {
		var browserElem = this.getElemByName('browser');
		var formElem = this.getElemByName('form');
		if(!browserElem){ return false; }
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.readAttribute('name')];
		var row_normal = this.options.addParams.rowNormal;
		var slice_offset = this.options.addParams.sliceOffset;
		var slice_length = this.options.addParams.sliceLength;
		slice_offset = (isNaN(slice_offset))?1:slice_offset;
		slice_offset = (Number(slice_offset)+Number(slice_length));
		Object.extend(this.options.addParams, {
			'sliceOffset':slice_offset,
			'sliceLength':row_normal
		});
		this.sendRequest({'action':'browser'}, 'bottom');
	},

	loadCache: function () {
		if(this._REQUEST['tx_jettours_pi1[qKey]']){
			if(this.options.addParams.qKey != this._REQUEST['tx_jettours_pi1[qKey]']){
				var formElem = this.getElemByName('form');
				if(!formElem){ return false; }
				var parameters = {
					'qKey':this._REQUEST['tx_jettours_pi1[qKey]'],
					'action':'view',
					'view':'rank_descending-score_descending',
					'reload':1
				};
				if(typeof this.options.engineObj == 'object' ){
					Object.extend(parameters, {'addInpunt':1});
				}
				this.sendRequest(parameters, 'update');
				return true;
			}
		}
		return false;
	},

	sendRequest: function (params, procFunc) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var parameters = Object.clone(this.options.addParams);
		Object.extend(parameters, params || {});

// var params = formElem.serialize(true) || {};
// Object.extend(params, parameters || {});
// var url = formElem.readAttribute('action')+'?'+Hash.toQueryString(params);
// document.location.href=url;
// return false;

		var onLoading = this.options.onLoading || Prototype.emptyFunction;
		onLoading.apply(this);
		formElem.request({
			'parameters': parameters,
			'onComplete': function(xhr){
				if((xhr.status == 200) || (xhr.status == 404)){
					var onComplete = this.options.onComplete || Prototype.emptyFunction;
					onComplete.apply(this);
					switch(xhr.status){
						case 200:
							this.buildList(xhr, procFunc);
							break;
						default:
							alert(this.pageNotFoundMessage);
							break;
					}
				}
			}.bind(this)
		});
	},

	buildList: function (xhr, procFunc) {
		var browserElem = this.getElemByName('browser');
		var rowFirstElem = this.getElemByName('rowfirst');
		var messageElem = this.getElemByName('message');
		var contentElem = this.getElemByName('content');
		var viewElem = this.getElemByName('view');
		var formElem = this.getElemByName('form');
		if(!contentElem){ alert('no content'); return false; }
		if(!formElem){ alert('no form'); return false; }
		var docForm = document.forms[formElem.getAttribute('name')];
		var DOC = xhr.responseXML.documentElement;
		var xmlArr = this.xml2array(DOC);
		if(xmlArr){
			if(xmlArr['currentPosition']){ this.currentPosition = Number(xmlArr['currentPosition']); }
			if(xmlArr['inputObj'] && this.options.engineObj && (typeof this.options.engineObj == 'object')){
				eval('var obj = '+xmlArr['inputObj']+';');
				this.options.engineObj.loadVar(obj);
			}
			if(xmlArr['qKey']){ Object.extend(this.options.addParams, {'qKey':xmlArr['qKey']}); }
			if(xmlArr['rowFirstFunc'] && rowFirstElem){ eval('rowFirstElem.'+xmlArr['rowFirstFunc']+'();'); }
			if(xmlArr['rowFirstContent'] && rowFirstElem){
				var sNodes = rowFirstElem.getElementsBySelector('select');
				if(sNodes){
					var selectNode = sNodes.first();
					selectNode.update(xmlArr['rowFirstContent']);
					if(typeof tx_jettours_pi1_lightFormObj == 'object'){
						tx_jettours_pi1_lightFormObj.updateSelectOne(formElem.getAttribute('name'), selectNode.getAttribute('name'));
					}
				}
			}
			if(xmlArr['numRows']){ this.updateNumRows(xmlArr['numRows']); }
			if(xmlArr['browserFunc'] && browserElem){ eval('browserElem.'+xmlArr['browserFunc']+'();'); }
			if(xmlArr['browserContent'] && browserElem){
				var aNodes = browserElem.getElementsBySelector('a');
				if(aNodes){ aNodes.first().update(xmlArr['browserContent']); }
			}
			if(xmlArr['viewFunc'] && viewElem){ eval('viewElem.'+xmlArr['viewFunc']+'();'); }
			if(xmlArr['viewValue'] && viewElem){ document.forms[formElem.getAttribute('name')].elements['view'].value = xmlArr['viewValue']; }
			if(xmlArr['viewContent'] && viewElem){
				var mNodes = viewElem.getElementsBySelector('.menu-container');
				if(mNodes){ mNodes.first().update(xmlArr['viewContent']); }
			}
			if(messageElem){
				if(xmlArr['message']){
					messageElem.update(xmlArr['message']);
					messageElem.show();
				} else {
					messageElem.hide();
				}
			}
			if(xmlArr['html']){
				switch(procFunc){
					case 'bottom':
						new Insertion.Bottom(contentElem, xmlArr['html']);
						break;
					default:
						//contentElem.update(xmlArr['html']);
						contentElem.innerHTML = xmlArr['html'];
						break;
				}
				if(typeof tx_jettours_pi1_lightFormObj == 'object'){
					tx_jettours_pi1_lightFormObj.start();
				}
			} else {
				contentElem.update('');
			}
			if(xmlArr['smoothScroll']){
				var parts = $$('#'+contentElem.readAttribute('id')+' .'+this.options.prefixId+'-page-breaker-box');
				if(parts.length){
					new Effect.ScrollTo(parts.last());
				} else {
					new Effect.ScrollTo(contentElem);
				}
			}
			if((typeof this.isLoadingCache == 'boolean') && (this.isLoadingCache == true)){
				this.appear();
				this.isLoadingCache = false;
			}
		}
	},

	toggleView: function (index) {
		var contentElem = this.getElemByName('content');
		if(!contentElem){ return false; }
		var elem = contentElem.down('.'+this.options.prefixId+'-group-inner', (Number(index)-1));
		if(elem){ elem.toggle(); }
		var elem2 = contentElem.down('.'+this.options.prefixId+'-group-pic', (Number(index)-1));
		if(elem2){ elem2.toggle(); }
	},

	goTo: function (url, params) {
		var parameters = params || {};
		if(this.options.addParams.qKey && (this.options.mode == 'based_search')){
			Object.extend(parameters, {'qKey':this.options.addParams.qKey});
		}
		if(Hash.toQueryString(parameters)){ url+= ((url.indexOf('?')!=-1)?'&':'?')+Hash.toQueryString(parameters); }
		document.location.href = url;
		return false;
	},

	updateNumRows: function (num) {
		if(!isNaN(num)){
			var CSSRule = '#'+this.options.prefixId+'_c'+this.contentTYPO3ID+' .'+this.options.prefixId+'-items-number';
			$$(CSSRule).each(function(elem){ elem.update(num); });
			var footerElem = this.getElemByName('footer');
			if(footerElem){if(num>0){Element.show(footerElem);}else{Element.hide(footerElem);}}
			return true;
		}
		return false;
	},

	selectOptionBox: function (fName, newValue) {
		var formElem = this.getElemByName('form');
		if(!formElem){ return false; }
		var docForm = document.forms[formElem.readAttribute('name')];
		if(docForm.elements[fName]){
			for(var u=0; u<docForm.elements[fName].length; u++){
				if(docForm.elements[fName].options[u].value == newValue){
					docForm.elements[fName].options[u].selected = true;
					return true;
				}
			}
		}
		return false;
	},

	switchGroup: function (elem, position) {
		var contentElem = this.getElemByName('content');
		if(!contentElem){ return false; }
		position = Number(position);
		var groups = contentElem.getElementsBySelector('.'+this.options.prefixId+'-group');
		if(position != this.currentPosition){
			groups.each(function(elem, i){
				if(position == 0){
					elem.show();
				} else if(position == (i+1)) {
					elem.show();
				} else {
					elem.hide();
				}
			});
			this.currentPosition = position;
		}
		contentElem.getElementsBySelector('.'+this.options.prefixId+'-groups-synopsis a.current').each(function(e){
			Element.removeClassName(e, 'current');
		});
		Element.addClassName(elem, 'current');
		return false;
	},

	toogleViewConditions: function (entry, dataid) {
		Element.toggle('promo_conditions_'+dataid);
		Element.toggleClassName(entry, 'opened');
	},

	_void: function() {}

});

var tx_jettours_pi1_lightFormObj = false;

function tx_jettours_pi1_lightForm () {
	tx_jettours_pi1_lightFormObj = new lightForm({
		'cssRule': 'form.lightform-tx_jettours_pi1',
		'selector': ['input[type="radio"]','select']
	});
	tx_jettours_pi1_lightFormObj.start();
}

/*------------------------------------------------
	Gestion de la cellule 'Chargement'
	utilisée pour l'Ajax.Request
------------------------------------------------*/

function actionOnLoading () {
	var elem_id = 'tx_jettours_pi1_loading';
	if(!$(elem_id)){ new Insertion.Top(document.getElementsByTagName('body').item(0), '<div id="'+elem_id+'" style="visibility:hidden"></div>'); }
	var scrollXY = getPageScroll();
	var pageXY = getPageSize();
	var loadingTop = Math.round((Number(pageXY[3])-Number($(elem_id).offsetHeight)) /2)+Number(scrollXY[1]);
	var loadingLeft = Math.round((Number(pageXY[2])-Number($(elem_id).offsetWidth))/2)+Number(scrollXY[0]);
	Element.setStyle(elem_id, {
		'top':loadingTop+'px',
		'left':loadingLeft+'px'
	});
	Element.setStyle(elem_id, {'visibility':'visible'});
}

function actionOnComplete () {
	var elem_id = 'tx_jettours_pi1_loading';
	if($(elem_id)){ Element.setStyle(elem_id, {'visibility':'hidden'}); }
}
