

var formChanged = 0; 
var submitted = false;
var exitAction = '';
var baseUrl = jQuery.url.attr("protocol") + '://' + jQuery.url.attr("host") + '/';


jQuery(window).bind('beforeunload', function(){
	//if (jQuery("#dataForm").length > 0 && jQuery('#dataForm [name^="tx_mgskiresort_pi2[data]"]').serialize() != jQuery('#dataForm input[name="tx_mgskiresort_pi2[oldVal]"]').val()) {
	if (formChanged == 1) {    
		if (lang == 'de') {
			return 'Sie haben die Daten noch NICHT gespeichert.';    
		} else {
			return 'Your data have NOT yet been saved.';    
		}
        
	}
});

jQuery(document).ready(function() {
	if (typeof lang === 'undefined' ) {
		lang = 'de' ;
	}
	if (lang == 'de') {
		DialogButtonOptions = {
			buttons: {
				'schließen': function() {
					jQuery(this).dialog('close');
				}
			}
		}
	} else {
		DialogButtonOptions = {
			buttons: {
				'close': function() {
					jQuery(this).dialog('close');
				}
			} 
		}

	}

	jQuery('#dataForm').live('change',function() {
		formChanged = 1;
	});

	jQuery('input:submit').button();
	jQuery('input:button').button();
	
	jQuery('input:text.time').mask('99:99');
	jQuery('#oldTabs a').checkOldTabs();
});

function showDialog(title,message,options){
	
	jQuery('#dialog').attr('title', title);
	jQuery('#dialog').find('p').html(message); 
	if (options != undefined && options.width) {
		dialogWidth = options.width;
	} else {
		dialogWidth = 400;
	}
	
	x = jQuery('#dataForm').position().left + jQuery('#dataForm').outerWidth() / 2 - (dialogWidth / 2);
	y = jQuery('#dataForm').position().top ;
	y = 200; 
	
	defaultoptions = {
		modal: true,
		position: [x,y],
		width: dialogWidth,
		buttons: false,
		title: title
	}  
	options = jQuery.extend({}, defaultoptions,options);
	jQuery('#dialog').dialog(options);   

}

function isValidDate(date_string, format) {
	var days = [0,31,28,31,30,31,30,31,31,30,31,30,31];
	var year, month, day, date_parts = null;
	var rtrn = false;
	var decisionTree = {
		'm/d/y':{
			're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{2}|\d{4})$/,
			'month': 1,
			'day': 2, 
			year: 3
		},
		'mm/dd/yy':{
			're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{2})$/,
			'month': 1,
			'day': 2, 
			year: 3
		},
		'mm/dd/yyyy':{
			're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{4})$/,
			'month': 1,
			'day': 2, 
			year: 3
		},
		'dd/mm/yyyy':{
			're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{4})$/,
			'month': 2,
			'day': 1, 
			year: 3
		},
		'y/m/d':{
			're':/^(\d{2}|\d{4})[./-](\d{1,2})[./-](\d{1,2})$/,
			'month': 2,
			'day': 3, 
			year: 1
		},
		'yy/mm/dd':{
			're':/^(\d{1,2})[./-](\d{1,2})[./-](\d{1,2})$/,
			'month': 2,
			'day': 3, 
			year: 1
		},
		'yyyy/mm/dd':{
			're':/^(\d{4})[./-](\d{1,2})[./-](\d{1,2})$/,
			'month': 2,
			'day': 3, 
			year: 1
		}

	};
	var test = decisionTree[format];

	if (test) {
		date_parts = date_string.match(test.re);
		if (date_parts) {
			year = date_parts[test.year];
			month = date_parts[test.month];
			day = date_parts[test.day];
            
			test = (month == 2 && 
				isLeapYear() && 
				29 || 
				days[parseInt(month,10)] || 0);
            
			rtrn = 1 <= day && day <= test;

		}
	}

	function isLeapYear() {
		return (year % 4 != 0 ? false : 
			( year % 100 != 0? true: 
				( year % 1000 != 0? false : true)));
	}
	return rtrn;
}//eof isValidDate


jQuery(document).ready(function() {
	
	
	jQuery("a.fancygroup").livequery(function(){
		jQuery(this).fancybox();
	});
	
	jQuery.validator.addMethod("noHTML", function(value, element) {
		if (this.optional(element) ||  !/<.*?>/.test(value) ) {
			return true;
		}
	}, jQuery.validator.messages.noHTML);

	jQuery.validator.addMethod("isNumber", function(value, element) {
		theVal = '' + value;
		theVal = theVal.replace(/,/g, '.'); 
		// Tolle seite: http://lawrence.ecorp.net/inet/samples/regexp-validate2.php
		return /^[-+]?[0-9]+(\.[0-9]*)?$/.test(theVal)  ||  this.optional(element)


	}, jQuery.validator.messages.isNumber);
	
	
	fndouble = function(value, element, param) {
		var theVal = '' + value;
		theVal = theVal.replace(/[^0-9,\.-]/g, '');
		var negative = theVal.substring(0, 1) === '-';

		theVal = theVal.replace(/-/g, '');
		theVal = theVal.replace(/,/g, '.');
		if (theVal.indexOf('.') == -1) {
			theVal += '.0';
		}

		var parts = theVal.split('.');
		var dec = parts.pop();
		if (dec.length <= param ||  this.optional(element) ) {
			return true;    
		}
	}
	
	jQuery.validator.addMethod("double", fndouble, jQuery.validator.messages.double);
	jQuery.validator.addMethod("double2", fndouble, jQuery.validator.messages.double2);


	jQuery.validator.addMethod("myMax", function(value, element, param) {
		var theVal = '' + value;
		theVal = theVal.replace(/[^0-9,\.-]/g, '');
		var negative = theVal.substring(0, 1) === '-';
		theVal = theVal.replace(/-/g, '');
		theVal = theVal.replace(/,/g, '.');

		return this.optional(element) || theVal <= param
	}, jQuery.validator.messages.myMax);

	jQuery.validator.addMethod("myDate", function(value, element) {
        
		if (lang == 'de') {
			format = 'dd/mm/yyyy';
		} else {
			format = 'yyyy/mm/dd'; 
		}
		return this.optional(element) || isValidDate(value, format);  
	}, jQuery.validator.messages.integer);

	jQuery.validator.addMethod("integer", function(value, element) {
		if (this.optional(element) || ( /^-?\d+$/.test(value) && !/^0\d+$/.test(value))) {
			return true;
		}
	}, jQuery.validator.messages.integer);

	jQuery.validator.addMethod("notNegative", function(value, element) {
		var theVal = '' + value;
		var negative = theVal.substring(0, 1) === '-';
		if (this.optional(element) || !negative) {
			return true;
		}
	}, jQuery.validator.messages.notNegative);
	
	jQuery.validator.addMethod("time", function(value, element) {
		if (value == '__:__') {
			return true;
		}
		return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){0,2}$/.test(value);
	}, jQuery.validator.messages.time);

	
	if (lang == 'de' ) {
		jQuery.extend(jQuery.validator.messages, {
			required: "Dieses Feld ist ein Pflichtfeld.",
			maxlength: jQuery.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),
			minlength: jQuery.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),
			rangelength: jQuery.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),
			email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
			url: "Geben Sie bitte eine gültige URL ein.",
			date: "Bitte geben Sie ein gültiges Datum ein.",
			myDate: "Bitte geben Sie ein gültiges Datum ein.",
			number: "Geben Sie bitte eine Nummer ein.",
			digits: "Geben Sie bitte nur Ziffern ein.",
			equalTo: "Bitte denselben Wert wiederholen.",
			range: jQuery.validator.format("Geben Sie bitten einen Wert zwischen {0} und {1} ein."),
			max: jQuery.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
			myMax: jQuery.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
			min: jQuery.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
			creditcard: "Geben Sie bitte ein gültige Kreditkarten-Nummer ein.",
			double: "Bitte nur maximal eine Stelle nach dem Komma.",
			double2: "Bitte nur maximal zwei Stellen nach dem Komma.",
			integer: "Geben Sie bitte eine ganze Zahl ohne Komma ein.",
			notNegative: "Geben Sie bitte eine positive Zahl ein.",
			isNumber: "Geben Sie bitte eine Zahl ein." ,
			noHTML: "Bitte verwenden sie kein HTML",
			time : "Bitte geben Sie eine gültige Uhrzeit ein.",
			trailmapname : "Bitte geben Sie den Namen des Pistenplans ein (z.B. Name Skigebiet)",
			trailmapimage : "Pistenplan fehlt. Bitte hochladen",
			trailmapineractivename: "Bitte geben Sie den Namen des Pistenplans ein (z.B. Name Skigebiet)",
			trailmapineractivelink: "Bitte einen Link angeben",
			season: "Bitte wählen Sie die Saison aus.",
			artificialsnow : "Bitte eine Zahl größer 0 eingeben oder die 0 löschen.",
			crosscountryskiingkm : "Bitte eine Zahl größer 0 eingeben oder die 0 löschen.",
			crosscountryskiingtotallength :"Geben Sie bitte einen Wert kleiner oder gleich {0} ein",
			rightsconfirmed : "Bitte bestätigen oder gegebenenfalls das Foto löschen:",
			eventstartdateEmpty: "Bitte geben Sie ein Veranstaltungsdatum ein.",
			eventstartdatePast: "Das Veranstaltungsdatum darf nicht in der Vergangenheit liegen",
			eventenddatePast: "Das Veranstaltungsenddatum darf nicht in der Vergangenheit liegen und muss nach dem Veranstaltungsbeginn liegen",
			winterpackageenddateEmpty: "Bitte geben Sie ein Gültigkeitsdatum an",
			winterpackagtextEmpty: "Bitte geben Sie einen Werbetext an",
			winterpackageenddatePast: "Das Gültigkeitsdatum darf nicht in der Vergangenheit liegen",
			currencySelect: "Bitte Währung auswählen.",
			nosnowreport: "Bitte wählen Sie Ja oder Nein"

		});
	} else {
		jQuery.extend(jQuery.validator.messages, {
			myMax: jQuery.validator.format("Please enter a value less than or equal to {0}."),
			myDate: "Please enter a valid date.",
			double: "Only one decimal place please.",
			double2: "Only two decimal place please.",
			integer: "Please enter a number without a decimal.",
			notNegative: "Please enter a positive number.",
			isNumber: "Please enter a number.",
			noHTML: "Please do not use an HTML.",
			time : "Please enter a valid time.",
			trailmapname : "Please enter the name of the trail map (for example, ski resort name).",
			trailmapimage : "Trail map is missing. Please upload.",
			trailmapineractivename: "Please enter the name of the trail map (for example, ski resort name).",
			trailmapineractivelink: "Please enter a link.",
			season: "Please select a season.",
			artificialsnow : "Please enter a number larger than 0, or delete the 0.",
			crosscountryskiingkm : "Please enter a number larger than 0, or delete the 0.",
			crosscountryskiingtotallength :"Please enter a value that is less than or equal to {0}.",
			rightsconfirmed : "Please confirm or if necessary, delete the photo.:",
			eventstartdateEmpty: "Please enter an event date.",
			eventstartdatePast: "The event date may not be in the past.",
			eventenddatePast: "The event date may not be in the past and must be after the event start date. ",
			winterpackageenddateEmpty: "Please enter an expiry date.",
			winterpackagtextEmpty: "Please enter an advertising text.",
			winterpackageenddatePast: "The expiry date may not be in the past.",
			currencySelect: "Please select a currency.",
			nosnowreport: "Please select yes or no."
			
		});
	}
});

jQuery(function($){
	$.datepicker.regional['de'] = {
		clearText: 'löschen', 
		clearStatus: 'aktuelles Datum löschen',
		closeText: 'schließen', 
		closeStatus: 'ohne Änderungen schließen',
		prevText: '&#x3c;zurück', 
		prevStatus: 'letzten Monat zeigen',
		nextText: 'Vor&#x3e;', 
		nextStatus: 'nächsten Monat zeigen',
		currentText: 'heute', 
		currentStatus: '',
		monthNames: ['Januar','Februar','März','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		monthStatus: 'anderen Monat anzeigen', 
		yearStatus: 'anderes Jahr anzeigen',
		weekHeader: 'Wo', 
		weekStatus: 'Woche des Monats',
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayStatus: 'Setze DD als ersten Wochentag', 
		dateStatus: 'Wähle D, M d',
		dateFormat: 'dd.mm.yy', 
		firstDay: 1, 
		initStatus: 'Wähle ein Datum', 
		isRTL: false
	};

	$.datepicker.regional['en'] = {
		dateFormat: 'yy-mm-dd'
	};

	if (lang=='de') {
		$.datepicker.setDefaults($.datepicker.regional['de']);
	} else {
		$.datepicker.setDefaults($.datepicker.regional['en']);
	}
});
function saveFormSerialized() {
	var serialized = jQuery('#dataForm [name^="tx_mgskiresort_pi2[data]"]').serialize();   
	jQuery('#dataForm input[name="tx_mgskiresort_pi2[oldVal]"]').val(serialized);
}

function showLoading(){
	if(jQuery("#loader").length == 0){
		jQuery('<div id="loader"><div id="loaderInner"><img src="/typo3conf/ext/mg_skiresort/res/img/ajax-loader_contactForm.gif" /></div></div>').appendTo('body');
		jQuery("#loader").show();
	//jQuery('#loaderInner').css('background-image','url(/typo3conf/ext/mg_skiresort/res/img/ajax-loader_contactForm.gif)');
	//jQuery('#loader').fadeTo(100,1);    

	}

}

//hide loading bar
function hideLoading() {
	jQuery('#resortList').show();
	jQuery("#loader").fadeTo(100, 0);
	/*jQuery('#resortList').fadeTo(250, 1);*/

	jQuery("#loader").remove();

};

function unlockRecord() {
	jQuery.ajax({
		type: "GET", 
		url: "index.php?eID=mg_skiresort&action=unlockRecord", 
		async: false
	});
}
function checkLockFE() {
	data = {
		ruid: jQuery('input[name="tx_mgskiresort_pi2[uid]"]').val()
	};
	jQuery.get('index.php?eID=mg_skiresort&action=checkLockFE',data,function(data){
		locked =  parseInt(jQuery(data).find('locked').text());
		if (locked > 0 ) {
			showDialog(language['islockedTitle'],language['islocked']);
			jQuery('[name^="tx_mgskiresort_pi2[data]"]').attr('disabled',true);
			checkForUnlock();
		}
	});

}

function checkForUnlock() {
	data = {
		ruid: jQuery('input[name="tx_mgskiresort_pi2[uid]"]').val()
	};
	jQuery.get('index.php?eID=mg_skiresort&action=checkForUnlockFE',data,function(data){
		locked = parseInt(jQuery(data).find('locked').text());
		if (locked > 0) {
			window.setTimeout("checkForUnlock()", 5000);
		} else {
			jQuery('#dialog').dialog('destroy');
			jQuery('[name^="tx_mgskiresort_pi2[data]"]').attr('disabled',false);
			options = {
				modal: false,
				buttons: {
					'OK': function() {
						jQuery(this).dialog('close');
					}
				}
			}
			showDialog(language['unlockedTitle'],language['unlocked'],options);
		}
	});
}

function randomString(len, charSet) {
	charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
	var randomString = '';
	for (var i = 0; i < len; i++) {
		var randomPoz = Math.floor(Math.random() * charSet.length);
		randomString += charSet.substring(randomPoz,randomPoz+1);
	}
	return randomString;
}

jQuery.fn.setStyleInlineElements = function() {
	el = jQuery(this);
	el.each(function() {
		jQuery('fieldset.inline:even',el).addClass('even').removeClass('odd');
		jQuery('fieldset.inline:odd',el).addClass('odd').removeClass('even');
	});
};


function removeHeaderOldTab(thisTab) {
	href = jQuery('div#oldTabs div.' + thisTab + ' a').attr('href');
	jQuery('.subNavi a[href="'+href+'"]').removeClass('oldTab');
	jQuery('div#oldTabs div.' + thisTab).remove();
	
	if (jQuery('#oldTabs a').length == 0) {
		jQuery('#oldTabsHeadline').remove();
	}
//jQuery('#oldTabs a').checkOldTabs();
}

function checkOldTab(thisTab) {
	if (jQuery('div#oldTabs div.' + thisTab).length == 0) {
		return true;
	}
	return false;
}
jQuery.fn.markSeasonsLatest = function() {
	jQuery(this).each(function(){
		$el = jQuery(this); 
		if ($el.prop("selectedIndex") == 1) {
			$el.css({
				'background-color':'green',
				'color':'white'
			});
			$el.next('div.seasonerror').hide();
		} else if ($el.prop("selectedIndex") > 1) {
			$el.css({
				'background-color':'red',
				'color':'white'
			});
			$el.next('div.seasonerror').show();
		} else {
			$el.css({
				'background-color':'white',
				'color':'black'
			}); 
		}
		
		jQuery(this).find('option').each(function(){
			if (jQuery(this).index() == 1){
				jQuery(this).css({
					'background-color':'green',
					'color':'white'
				});
			} else if (jQuery(this).index() > 1) {
				jQuery(this).css({
					'background-color':'red',
					'color':'white'
				});
			} else {
				jQuery(this).css({
					'background-color':'white',
					'color':'black'
				}); 
			}
			
		});
	
	});
	
};

function scrollToFirstError(){
	$el = jQuery('div.error > label.error').filter(':visible:first');
	if ($el.length == 0) {
		return '';
	}
	jQuery('html, body').animate({
		scrollTop: $el.offset().top - 100
	}, 'slow');
}


(function($)
{
	
	$.fn.checkOldTabs = function() {
		// alte Tabs
		jQuery(this).each(function(){
			href = jQuery(this).attr('href');
			jQuery('.subNavi a[href="'+href+'"]').addClass('oldTab');
		
		});
		
	};
	/**
	 * Enable any button with workaround for IE lack of :disabled selector
	 */
	$.fn.enableBt = function()
	{
		$(this).attr('disabled', false);
		if ($.browser.msie && $.browser.version < 9)
		{
			$(this).removeClass('disabled');
		}
	}
	
	/**
	 * Disable any button with workaround for IE lack of :disabled selector
	 */
	$.fn.disableBt = function()
	{
		$(this).attr('disabled', true);
		if ($.browser.msie && $.browser.version < 9)
		{
			$(this).addClass('disabled');
		}
	}
	
})(jQuery);
