var cf_date = Object();

$(document).ready(function(){
	function cfe_parseSelectFields(element)
	{
		var fakeSelect_id = element.id+'_container';
		var fakeSelect_width = $(element).css('width');
		var fakeSelect_height = $(element).css('height');
		var fakeSelect_float = $(element).css('float');
		var fakeSelect_class = element.className;
		var fakeSelect_font = {
			family: $(element).css('fontFamily'), 
			color: $(element).css('color'), 
			size: $(element).css('fontSize')
		}
		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('fontFamily', fakeSelect_font.family);
		$(fakeSelectInput).css('fontSize', fakeSelect_font.size);
		$(fakeSelectInput).css('color', fakeSelect_font.color);
		$(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);
		if ($.browser.msie && $.browser.version.slice(0,1) < 8) {
			var fakeSelectOptions_marginLeft = (parseInt(fakeSelectOptions_width.replace('px', ''))+10)+'px';
			$(fakeSelectOptionsDiv).css('margin-left', '-'+fakeSelectOptions_marginLeft);
			var fakeSelectOptions_height = (parseInt(fakeSelect_height.replace('px', ''))+6)+'px';
			$(fakeSelectOptionsDiv).css('margin-top', fakeSelectOptions_height);
		}
		$(fakeSelectOptionsDiv).addClass('cfe-select-options');
		$(fakeSelectDiv).append($(fakeSelectOptionsDiv));
		
		var fakeSelectOptionsUl = document.createElement('ul');
		$(fakeSelectOptionsDiv).append($(fakeSelectOptionsUl));
		
		$('#'+element.id+' option').each(function(key_, element_) {
			if (key_ == 0) {
				$(fakeSelectInput).val($(element_).val());
			}
			else {
				var fakeSelectOptionsLi = document.createElement('li');
				$(fakeSelectOptionsLi).css('fontFamily', fakeSelect_font.family);
				$(fakeSelectOptionsLi).css('fontSize', fakeSelect_font.size);
				$(fakeSelectOptionsLi).css('color', fakeSelect_font.color);
				$(fakeSelectOptionsLi).html($(element_).val());
				$(fakeSelectOptionsUl).append($(fakeSelectOptionsLi));
			}
		});
		
		var forcingClose = false;
		$(fakeSelectDiv).click(function() {
			if (!forcingClose) {
				if ($.browser.msie && $.browser.version.slice(0,1) < 8) {
					$(fakeSelectOptionsDiv).fadeIn('fast');
				}
				else { $(fakeSelectOptionsDiv).slideDown('fast'); }
				$(fakeSelectDiv).mouseout(function() {
					$(document).oneTime(200, 'qs-'+fakeSelect_id+'-up-timer', function(i) {
						if ($.browser.msie && $.browser.version.slice(0,1) < 8) {
							$(fakeSelectOptionsDiv).fadeOut('fast');
						}
						else { $(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;
			if ($.browser.msie && $.browser.version.slice(0,1) < 8) {
				$(fakeSelectOptionsDiv).fadeOut('fast');
			}
			else { $(fakeSelectOptionsDiv).slideUp('fast'); }
		});
		
		$(element).css('display', 'none');
	}
	
	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');
	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');
	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');
	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');
	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');/**/
	}
	
	$('.cfe-elements').each(function(key, element) {
		switch (element.tagName.toLowerCase()) {
			case 'select':
				cfe_parseSelectFields(element);
				break;
			case 'input':
				if ($(element).hasClass('cfe-calendar')) {
					cfe_parseCalendarFields(element);
				}
				break;
		}
	});
});
