var cf_date = Object();

$(document).ready(function(){
	function cfe_parseSelectFields(element)
	{
		//console.log(element);
		var fakeSelect_id = element.id+'_container';
		var fakeSelect_width = $(element).css('width');
		var fakeSelect_float = $(element).css('float');
		var fakeSelect_class = element.className;
		var fakeSelect_margin = {
			top: $(element).css('marginTop'), 
			right: $(element).css('marginRight'), 
			bottom: $(element).css('marginBottom'), 
			left: $(element).css('marginLeft'), 
		}

		var fakeSelectDiv = document.createElement('div');
		$(fakeSelectDiv).attr('id', fakeSelect_id);
		$(fakeSelectDiv).css({
			width: fakeSelect_width+'px', 
			float: fakeSelect_float, 
			marginTop: fakeSelect_margin.top, 
			marginRight: fakeSelect_margin.right, 
			marginBottom: fakeSelect_margin.bottom, 
			marginLeft: fakeSelect_margin.left
		});
		$(fakeSelectDiv).insertAfter(element);
		
		var fakeSelectInput = document.createElement('input');
		var fakeSelectInput_width = (fakeSelect_width.replace('px', ''))+'px';
		$(fakeSelectInput).attr('type', 'text');
		$(fakeSelectInput).attr('id', fakeSelect_id+'_input');
		$(fakeSelectInput).attr('readonly', 'readonly');
		$(fakeSelectInput).css('width', fakeSelectInput_width);
		$(fakeSelectInput).css('margin', 0);
		$(fakeSelectInput).addClass('cfe-select-input');
		$(fakeSelectInput).addClass(fakeSelect_class);
		$(fakeSelectDiv).append($(fakeSelectInput));
		
		var fakeSelectOptionsDiv = document.createElement('div');
		var fakeSelectOptions_id = fakeSelect_id+'_options_panel';
		$(fakeSelectOptionsDiv).attr('id', fakeSelectOptions_id);
		var fakeSelectOptions_width = (parseInt(fakeSelect_width.replace('px', ''))+2)+'px';
		$(fakeSelectOptionsDiv).css('width', fakeSelectOptions_width);
		$(fakeSelectOptionsDiv).addClass('cfe-select-options');
		if ($(element).hasClass('cfe-options-reverse')) {
			$(fakeSelectOptionsDiv).addClass('cfe-select-options-reverse');
		}
		$(fakeSelectDiv).append($(fakeSelectOptionsDiv));
		
		var fakeSelectOptionsUl = document.createElement('ul');
		$(fakeSelectOptionsDiv).append($(fakeSelectOptionsUl));
		
		$('#'+element.id+' option').each(function(key_, element_) {
			if (key_ == 0) {
				//console.log('val: '+$(element_).val());
				$(fakeSelectInput).val($(element_).val());
			}
			else {
				var fakeSelectOptionsLi = document.createElement('li');
				//console.log('val: '+$(element_).val());
				/*var val = $(element_).val();
				if (val.indexOf('[img:') != -1) {
					//console.log('<img src="'+val.substring(val.lastIndexOf(']'), 0).replace('[img:', '')+'" />');
					var startPos = val.indexOf(':') + 1;
					var endPos = val.indexOf(']');
					var url = val.substring(startPos, endPos);
					var string = val.substr(endPos + 1);
					var html = '<img src="'+url+'" style="padding: 1px;" />'+string;
				}
				else { var html = val; }*/
				$(fakeSelectOptionsLi).html($(element_).val());
				$(fakeSelectOptionsUl).append($(fakeSelectOptionsLi));
			}
		});
		
		$(element).css('display', 'none');
		
		
		var forcingClose = false;
		$(fakeSelectDiv).click(function() {
			if (!forcingClose) {
				$(fakeSelectOptionsDiv).slideDown('fast');
				$(fakeSelectDiv).mouseout(function() {
					$(document).oneTime(200, 'qs-'+fakeSelect_id+'-up-timer', function(i) {
						$(fakeSelectOptionsDiv).slideUp('fast');
					});
				});
			}
			else { forcingClose = false; }
		});
		$(fakeSelectOptionsDiv).mouseover(function() {
			$(document).stopTime('qs-'+fakeSelect_id+'-up-timer');
		});
		
		$('#'+fakeSelectOptions_id+' li').click(function() {
			$(fakeSelectInput).val($(this).html());
			forcingClose = true;
			$(fakeSelectOptionsDiv).slideUp('fast');
		});
	}
	
	var arr_month = new Array();
	arr_month['fr'] = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
	arr_month['en'] = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
	arr_month['es'] = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
	var monthNamesShort = new Array();
	monthNamesShort['fr'] = new Array('Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aout', 'Sep', 'Oct', 'Nov', 'Dec');
	monthNamesShort['en'] = new Array('Jan', 'Feb', 'Mar', 'Avp', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
	monthNamesShort['es'] = new Array("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic");
	var dayNamesShort = new Array();
	dayNamesShort['fr'] = new Array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam');
	dayNamesShort['en'] = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sam');
	dayNamesShort['es'] = new Array("Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb");
	var dayNamesMin = new Array();
	dayNamesMin['fr'] = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
	dayNamesMin['en'] = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
	dayNamesMin['es'] = new Array("Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sá");
	var dateFormat = 'yy-mm-dd';
	function cfe_parseCalendarFields(element)
	{
		var fakeInput_id = element.id+'_container';
		var fakeInput_width = $(element).css('width');
		var fakeInput_float = $(element).css('float');
		var fakeInput_class = element.className;
		var fakeInput_margin = {
			top: $(element).css('marginTop'), 
			right: $(element).css('marginRight'), 
			bottom: $(element).css('marginBottom'), 
			left: $(element).css('marginLeft'), 
		}
		var fakeInput_padding = {
			top: $(element).css('paddingTop'), 
			right: $(element).css('paddingRight'), 
			bottom: $(element).css('paddingBottom'), 
			left: $(element).css('paddingLeft'), 
		}
		
		var fakeInputDiv = document.createElement('div');
		$(fakeInputDiv).attr('id', fakeInput_id);
		$(fakeInputDiv).css({
			width: fakeInput_width+'px', 
			float: fakeInput_float, 
			marginTop: fakeInput_margin.top, 
			marginRight: fakeInput_margin.right, 
			marginBottom: fakeInput_margin.bottom, 
			marginLeft: fakeInput_margin.left
		});
		$(fakeInputDiv).insertAfter($(element));
		$(element).css('margin', '0px');
		$(fakeInputDiv).append($(element));
		
		$(element).addClass('cfe-calendar-input');/**/
		$(element).datepicker({
			numberOfMonths: 2,
			showButtonPanel: false,
			minDate: -0,
			monthNames: arr_month[LANGUAGE],
			monthNamesShort: monthNamesShort[LANGUAGE],
			dayNamesShort: dayNamesShort[LANGUAGE],
			dayNamesMin: dayNamesMin[LANGUAGE],
			dateFormat: dateFormat
		});
		$(element).change(function(){
			var mainDate = this.value;
			eval('cf_date.'+element.id+' = mainDate;');
			var arr_date = mainDate.split('-');
			var date = new Date();
			date.setDate(arr_date[2]);
			date.setMonth(arr_date[1]-1);
			date.setFullYear(arr_date[0]);
			dateStr = date.toString("ddd, dd MMM yyyy");
			this.value = dateStr;
		});
		$(element).attr('readonly', 'readonly');/**/
	}
	
	var nightsNumber = 1;
	var nightsMax = 0;
	var fieldPlusMoins;
	var enteteFieldPlusMoins;
	
	function cfe_parsePlusMoinsFields(element)
	{
		//console.log("_cfe:cfe_parsePlusMoinsFields");
		fieldPlusMoins = element;
		enteteFieldPlusMoins = element.value;
		enteteFieldPlusMoins = enteteFieldPlusMoins.substring(0, enteteFieldPlusMoins.indexOf(':'));
		
		var fakePlusMoins_id = element.id+'_container';
		
		var fakePlusMoinsDiv = document.createElement('div');
		$(fakePlusMoinsDiv).attr('id', fakePlusMoins_id);
		
		var fakePlusMoins_width = $(element).css('width');
		nightsMax = element.maxLength;
		
		var fakePlusMoins_float = $(element).css('float');
		var fakePlusMoins_class = element.className;
		var fakePlusMoins_margin = {
			top: $(element).css('marginTop'), 
			right: $(element).css('marginRight'), 
			bottom: $(element).css('marginBottom'), 
			left: $(element).css('marginLeft')
		}
		var fakePlusMoins_padding = {
			top: $(element).css('paddingTop'), 
			right: $(element).css('paddingRight'), 
			bottom: $(element).css('paddingBottom'), 
			left: $(element).css('paddingLeft')
		}
		
		$(fakePlusMoinsDiv).css({
			width: fakePlusMoins_width+'px', 
			float: fakePlusMoins_float, 
			marginTop: fakePlusMoins_margin.top, 
			marginRight: fakePlusMoins_margin.right, 
			marginBottom: fakePlusMoins_margin.bottom, 
			marginLeft: fakePlusMoins_margin.left
		});
		
		$(fakePlusMoinsDiv).insertAfter($(element));
		$(element).css('margin', '0px');
		$(fakePlusMoinsDiv).append($(element));
		
		var fakeMoinsDiv = document.createElement('div');
		$(fakeMoinsDiv).attr('id', 'moins');
		
		$(fakeMoinsDiv).css({
			width: '17px',
			height: '18px',
			/*backgroundColor: 'red',*/
			zIndex: '899',
			position: 'absolute',
			top: '5px',
			left: '237px',
			cursor: 'pointer'
		});
		$(fakePlusMoinsDiv).append($(fakeMoinsDiv));
		
		var fakePlusDiv = document.createElement('div');
		$(fakePlusDiv).attr('id', 'plus');
		
		$(fakePlusDiv).css({
			width: '16px',
			height: '18px',
			/*backgroundColor: 'green',*/
			zIndex: '899',
			position: 'absolute',
			top: '5px',
			left: '254px',
			cursor: 'pointer'
		});
		$(fakePlusMoinsDiv).append($(fakePlusDiv));
		
		$(fakePlusDiv).click(function(){
			changeNights(this);
		});
		$(fakeMoinsDiv).click(function(){
			changeNights(this);
		});
		
		$(element).attr('readonly', 'readonly');
	}
	
	function changeNights(element)
	{
		//console.log("_cfe:changeNights:id:" + element.id + ":nightsMax:" + nightsMax);		
		switch(element.id) {
			case 'moins':
				if(nightsNumber > 1)
				{
					nightsNumber--;
				}
			break;
			case 'plus':
				if(nightsNumber < nightsMax)
				{
					nightsNumber++;
				}
			break;
		}
		fieldPlusMoins.value = enteteFieldPlusMoins + ': ' + nightsNumber;
	}
	
	$('.cfe-elements').each(function(key, element) {
		//console.log(element.tagName);
		switch (element.tagName.toLowerCase()) {
			case 'select':
				cfe_parseSelectFields(element);
				break;
			case 'input':
				if ($(element).hasClass('cfe-calendar')) {
					cfe_parseCalendarFields(element);
				}
				else if($(element).hasClass('cfe-plus-moins')) {
					cfe_parsePlusMoinsFields(element);
				}
				break;
		}
	});
});
