/*global $, _, rfp*/
"use strict";

$(function () {
	$('#weiteretr').click(function () {
		rfp.weitereRaeume('tr', 3);
	});
	$('#weiteregr').click(function () {
		rfp.weitereRaeume('gr', 3);
	});

	$('#ausschlusskriterienbutton').click(function () {
		rfp.weitereAusschlusskriterien(3);
	});

	$('.uhrzeit').change(rfp.formatUhrzeit);

	if ($('#vorlage').size() > 0) {
		$('#termin1von, #termin1bis, #kunde').change(rfp.getVorlagen);
		$('#vorlage').change(rfp.fillFormular);
		rfp.getVorlagen();
	}
	
	$('.pauschalebox').click(function () {
		$('#vorlage').val($("#vorlage option:contains(VA " + this.id.substr(9) + ")").val());
		$('#vorlage').change();
		rfp.togglePauschalenassistent(this.id);
	});
	
	$('.pauschalebox').mouseout(function () {
		$('#infodiv').fadeOut(500);
	});
	
	$('#vorlagebutton').click(rfp.submitVorlage);
	$('#vorlagen_name').keypress(function(e) {
		if(e.which === 13)
		{
			rfp.submitVorlage();
			e.preventDefault();
		}
	});
});

rfp.weitereRaeume = function (typ, anzahl)
{
	var vorlage, i;
	vorlage = $('#' + typ + 'NEU');
	for (i = 0; i < anzahl; i += 1)
	{
		$('#rfp' + typ + 'tabelle')
			.append("<tr>" + vorlage.html().replace(/NEU/g, $('#rfp' + typ + 'tabelle tr').size()) + '</tr>');
	}
	
	$('#rfp' + typ + 'tabelle input.helpsuggest').each(function()
	{
		if($(this).val() === '')
		{
			$(this).val(this.title);
		}
	});
	
	$('#rfp' + typ + 'tabelle input.helpsuggest').focus(function()
	{
		if($(this).val() === this.title)
		{
			$(this).val('');
		}
	});
	
	$('#rfp' + typ + 'tabelle input.helpsuggest').blur(function()
	{
		if($(this).val() === '')
		{
			$(this).val(this.title);
		}
	});
};

rfp.weitereAusschlusskriterien = function (n)
{
	var anfang, i;
	anfang = $('#ausschlusskriterienwrapper input:text').size() + 1;
	for (i = anfang; i < anfang + n; i += 1)
	{
		$('#ausschlusskriterienwrapper')
			.append($('#ausschlusskriteriumvorlage').html().replace(/NEU/g, i));
	}

};

rfp.customRange = function (input)
{
	var spaetesteAnreise, fruehesteAbreise;
	
	if (input.id === 'termin1von')
	{
		spaetesteAnreise = null;
		if ($("#termin1bis").datepicker("getDate"))
		{
			spaetesteAnreise = $("#termin1bis").datepicker("getDate");
		}
		return {maxDate: spaetesteAnreise};
	}
	else
	{
		fruehesteAbreise = null;
		if ($("#termin1von").datepicker("getDate"))
		{
			fruehesteAbreise = $("#termin1von").datepicker("getDate");
		}
		return {minDate: fruehesteAbreise};
	}
};

rfp.copytag2tag = function (von, zu)
{
	
	$('#rfp' + von + ' input:text,#rfp' + von + ' select,#rfp' + von + ' textarea').each(function () {
		$('#' + zu + this.id.substr(this.id.indexOf('_'))).val($(this).val());
	});

	$('#rfp' + von + ' input:checkbox').each(function () {
		var that = $('#' + zu + this.id.substr(this.id.indexOf('_'))).get(0);
		if (this.checked !== that.checked)
		{
			$(that).click();
		}
	});
};

rfp.aktualisiereFormular = function ()
{
	var anreisedatum, abreisedatum, one_day, anzahlTage;
	
	anreisedatum = Date.parseExact($('#termin1von').val(), 'dd.MM.yyyy');
	abreisedatum = Date.parseExact($('#termin1bis').val(), 'dd.MM.yyyy');

	$('#rfpt1b2').hide();
	$('#rfpabreisetag').hide();

	if (anreisedatum !== null && abreisedatum !== null)
	{
		one_day = 1000 * 60 * 60 * 24;
		anzahlTage = Math.round((abreisedatum.getTime() - anreisedatum.getTime()) / (one_day)) + 1;
		
		$('#rfpvoranreisenheader').html(_("Voranreisen") + ", " + anreisedatum.clone().addDays(-1).toString('dd.MM.yyyy') + " - " + anreisedatum.toString('dd.MM.yyyy'));
		$('#rfpanreisetagheader').html(_("Anreisetag") + " - " + anreisedatum.toString('dddd, dd.MM.yyyy'));
		$('#rfpanreisetagzimmerheader').html(_("Zimmer") + ", " + anreisedatum.toString('dd.MM.yyyy') + " - " + anreisedatum.clone().addDays(1).toString('dd.MM.yyyy'));

		if (anzahlTage > 2)
		{
			$('#rfpt1b2').show();
			if (anzahlTage === 3)
			{
				$('#rfpt1b2header').html(anreisedatum.clone().addDays(1).toString('dddd, dd.MM.yyyy'));
			}
			else
			{
				$('#rfpt1b2header').html(anreisedatum.clone().addDays(1).toString('dddd, dd.MM.yyyy') + " - " + abreisedatum.clone().addDays(-1).toString('dddd, dd.MM.yyyy'));
			}
			$('#rfpt1b2zimmerheader').html(_("Zimmer") + ", " + anreisedatum.clone().addDays(1).toString('dd.MM.yyyy') + " - " + abreisedatum.toString('dd.MM.yyyy'));
		}
		
		if (anzahlTage > 1)
		{
			$('#rfpabreisetag').show();
			$('#rfpabreisetagheader').html(_("Abreisetag") + " - " + abreisedatum.toString('dddd, dd.MM.yyyy'));
			$('#rfpabreisetagzimmerheader').html(_("Zimmer") + ", " + abreisedatum.toString('dd.MM.yyyy') + " - " + abreisedatum.clone().addDays(1).toString('dd.MM.yyyy'));
		}

		$('#rfpt1b2copy').unbind();
		$('#rfpabreisetagcopy').unbind();
		$('#rfpt1b2copy').click(function () {
			rfp.copytag2tag('anreisetag', 't1b2');
		});
		$('#rfpabreisetagcopy').click(function () {
			rfp.copytag2tag((anzahlTage === 2) ? 'anreisetag' : 't1b2', 'abreisetag');
		});
	}
};

rfp.validiereDatum = function ()
{
	var anreisedatum, abreisedatum;
	
	anreisedatum = Date.parseExact($('#termin1von').val(), 'dd.MM.yyyy');
	abreisedatum = Date.parseExact($('#termin1bis').val(), 'dd.MM.yyyy');
	
	if (anreisedatum !== null)
	{
		if (abreisedatum !== null)
		{
			if (anreisedatum.compareTo(abreisedatum) > 0)
			{
				anreisedatum = abreisedatum;
			}
		}
		else
		{
			abreisedatum = anreisedatum;
		}
	}
	else
	{
		if (abreisedatum !== null)
		{
			anreisedatum = abreisedatum;
		}
	}

	if (anreisedatum === null) {
		$('#termin1von').val('');
	} else {
		$('#termin1von').val(anreisedatum.toString('dd.MM.yyyy'));
	}
	
	if (abreisedatum === null) {
		$('#termin1bis').val('');
	} else {
		$('#termin1bis').val(abreisedatum.toString('dd.MM.yyyy'));
	}
	
	rfp.aktualisiereFormular();
	rfp.updateTermine();
};


rfp.getVorlagen = function ()
{
	var select, kunde;
	
	if($('#kunde').size() > 0)
	{
		kunde = $('#kunde').val();		
	}
	else
	{
		kunde = 0;
	}
	
	$.getJSON('VorlagenAjax.php', {get: 'vorlagen', anzahlUebernachtungen: rfp.getAnzahlUebernachtungen(), kunde: kunde}, function (data) {
		
		select = $('#vorlage')[0];
		select.length = 0;
		
		for (var i = 0; i < data.length; i += 1)
		{
			select.options[i] = new Option(data[i].name, data[i].id, false, false);
		}
		
		if($('#kunde').size() > 0 && $('p.error').size() === 0)
		{
			$('#vorlage').change();
		}
		
	});
};

rfp.togglePauschalenassistent = function (string)
{
	var lang = "ger";
	if ($('html').attr('lang') === 'en') {
		lang = 'eng';
	}
	
	$('#pauschaleeco').get(0).src = '../images/pauschalen/' + lang + '_eco_off.png';
	$('#pauschalestandard').get(0).src = '../images/pauschalen/' + lang + '_stndrd_off.png';
	$('#pauschalepremium').get(0).src = '../images/pauschalen/' + lang + '_prem_off.png';
	
	if (string.search(/eco$/) !== -1)
	{
		$('#pauschaleeco').get(0).src = '../images/pauschalen/' + lang + '_eco_on.png';
	}
	if (string.search(/standard$/) !== -1)
	{
		$('#pauschalestandard').get(0).src = '../images/pauschalen/' + lang + '_stndrd_on.png';
	}
	if (string.search(/premium$/) !== -1)
	{
		$('#pauschalepremium').get(0).src = '../images/pauschalen/' + lang + '_prem_on.png';
	}
};

rfp.fillFormular = function ()
{	
	rfp.togglePauschalenassistent($('#vorlage option:selected').text());
	
	$.getJSON('VorlagenAjax.php', {get: 'vorlage', id: $('#vorlage').val()}, function (data) {
		
		var key, i, typ, j;
		
		for (key in data)
		{
			if (data.hasOwnProperty(key))
			{
				if (key === 'ausschluss_kriterium' || key === 'tr' || key === 'gr' || key === 'kunde') {
					continue;
				}
				
				if ($('#' + key).hasClass('togglebox'))
				{
					if ($('#' + key).get(0).checked !== data[key])
					{
						$('#' + key).click();
					}
				}
				else
				{
					
					if (data[key] === null) {
						$('#' + key).val(""); // IE zeigt sonst null in den Input an
					}
					else {
						$('#' + key).val(data[key]);
					}
					$('#' + key).blur();
				}
			}
		}
		
		$('#ausschlusskriterienwrapper').empty();
		if (data.ausschluss_kriterium === undefined)
		{
			rfp.weitereAusschlusskriterien(3);
		}
		else
		{
			rfp.weitereAusschlusskriterien(data.ausschluss_kriterium.length);
			
			for (i = 0; i < data.ausschluss_kriterium.length; i += 1)
			{
				$('#ausschluss_kriterium' + (i + 1)).val(data.ausschluss_kriterium[i].text);
				//$('#ausschluss_kriterium' + (i + 1) + '_id').val(data.ausschluss_kriterium[i].id);
			}	
		}
		
		typ = ['tr', 'gr'];
		for (j = 0; j < 2; j += 1)
		{
			$('#rfp' + typ[j] + 'tabelle tbody').empty();
			if (data[typ[j]] === undefined)
			{
				if (typ[j] === 'tr') {
					rfp.weitereRaeume(typ[j], 1);
					// Ist richtig! Nur die einzige erste Checkbox soll angeklickt werden!
					$('#' + typ[j] + '1checkbox').click();
				}
				else
				{
					rfp.weitereRaeume(typ[j], 3);
				}
			}
			else
			{
				rfp.weitereRaeume(typ[j], data[typ[j]].length);
				for (i = 0; i < data[typ[j]].length; i += 1)
				{
					$('#' + typ[j] + (i + 1) + 'checkbox').click();
					//$('#' + typ[j] + (i + 1) + 'id').val(data[typ[j]][i].id);
					$('#' + typ[j] + (i + 1) + 'groesse').val(data[typ[j]][i].groesse);
					$('#' + typ[j] + (i + 1) + 'groesse').blur();
					$('#' + typ[j] + (i + 1) + 'paxpraum').val(data[typ[j]][i].paxpraum);
					$('#' + typ[j] + (i + 1) + 'stuhlform').val(data[typ[j]][i].stuhlform);
					$('#' + typ[j] + (i + 1) + 'sonstiges').val(data[typ[j]][i].sonstiges);
				}			
			}		
		}
		
	});
};

rfp.submitVorlage = function () {
	$('#rfpspeichern').val('vorlage');
	$('#rfpformular').submit();
};



