/**
 * Init javascript libs
 *
 * @category   Javascript
 * @package    Dessign
 * @copyright  Copyright (c) 2009 Dessign GmbH
 * @author     Wolfram Huesken <wolframhuesken@dessign.de>
 * @filesource $HeadURL: svn://otrs.dessign.de/saalbach-booking/trunk/httpdocs/resources/js/init.js $
 * @date       $Date: 2012-01-23 14:37:45 +0100 (Mo, 23. Jan 2012) $
 * @version    $Id: init.js 202 2012-01-23 13:37:45Z tomaszbrniak $
 */

/**
 * Cookie vars
 */
var CookieName = "Layout";
var ExpireDays = 7;


/**
 * DOM Ready
 */
jQuery(document).ready(function(){ 
	
	// Make external links open in new window
	jQuery("a[rel='external']").attr('target', 'blank');

	// Fix PNGs for IE6
	jQuery(document).pngFix();
	
	// Init Calendar
	init_fullcalendar();
	
	// Unlink the annoying day links
	setTimeout("unlinkCalendar()", 1000);
});

function unlinkCalendar() {
	jQuery('.fc-event a').click(function() {
		return false;
	});
}

/**
 * Save the season as cookie
 * @param season
 * @return
 */
function changeSeason(season) {
	setCookie(CookieName, season, ExpireDays);
	setTimeout("location.reload()", 250);
}


/**
 * Helper function that sets a cookie with the desired style
 * @param name
 * @param value
 * @param expdays
 * @return
 */
function setCookie(name, value, expdays) {
	var now = new Date();
 	var exp = new Date(now.getTime() + (1000*60*60*24*expdays));
 	document.cookie = name + "=" + escape(value) + ";" + "expires=" + exp.toGMTString() + ";" + "path=/";
}


/**
 * Read a cookie
 * @param string name
 * @return string
 */
function getCookie(name) {
 	var cname = name + "=";
 	var dc = document.cookie;
 	if (dc.length > 0) {
 		var start = dc.indexOf(cname);
 		if (start != -1) {
 			start += cname.length;
 			var stop = dc.indexOf(";", start);
 			if (stop == -1) stop = dc.length;
 			return unescape(dc.substring(start,stop));
 		}
 	}
 	return null;
}

function init_fullcalendar() {

	$('#Cal').fullCalendar({
	
		editable: false,

		firstDay: 6,
		
		events: "/calendar/newevents",
		
		monthNames: ["Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
		monthNamesShort: ["Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],

		dayNames: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
		dayNamesShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],

		buttonText: {
	        prev: '&nbsp;&#9668;&nbsp;', // left triangle
	        next: '&nbsp;&#9658;&nbsp;', // right triangle
	        today: 'Heute',
	        month: 'Monat',
	        week: 'Woche',
	        day: 'Tag'
		},
		
		eventDrop: function(event, delta) {
			alert(event.title + ' was moved ' + delta + ' days\n' +
				'(should probably update your database)');
		},
		
		loading: function(bool) {
			if (bool) $('#loading').show();
			else $('#loading').hide();
		}
		
	});
		
}

function init_calendar() {
	var options = {
    		onMonthChanging: function(dateIn) {
                //this could be an Ajax call to the backend to get this months events
                //var events = [    { "EventID": 7, "StartDate": new Date(2009, 1, 1), "Title": "10:00 pm - EventTitle1", "URL": "#", "Description": "This is a sample event description", "CssClass": "Birthday" },
                //              { "EventID": 8, "StartDate": new Date(2009, 1, 2), "Title": "9:30 pm - this is a much longer title", "URL": "#", "Description": "This is a sample event description", "CssClass": "Meeting" }
                //];
                //$.jMonthCalendar.ReplaceEventCollection(events);
		    	jQuery.getJSON("/calendar/events/date/" + dateIn, function(data) {
		    		$.jMonthCalendar.ReplaceEventCollection(data);
		    		setTimeout("unlinkCalendar()", 250);
		    	});
				return true;
            },
            onEventLinkClick: function(event) { 
                // alert("event link click");
                return false; 
            },
            onEventBlockClick: function(event) { 
                // alert("block clicked");
                return false; 
            },
            onEventBlockOver: function(event) {
                // alert(event.Title + " - " + event.Description);
                return true;
            },
            onEventBlockOut: function(event) {
                return true;
            },
            onDayLinkClick: function(date) { 
                // alert(date.toLocaleDateString());
                return false; 
            },
            onDayCellClick: function(date) { 
                // alert(date.toLocaleDateString());
                return true; 
            },

            firstDayOfWeek: 6,

            locale: {
                days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
                daysShort: ["Son", "Mon", "Die", "Wed", "Thu", "Fri", "Sat", "Sun"],
                daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
                months: ["Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
                monthsShort: ["Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
                weekMin: 'wk'
            },

            navLinks: {
                enableToday: false,
                enableNextYear: true,
                enablePrevYear: true,
                p:'&lsaquo; Zur&uuml;ck', 
                n:'Weiter &rsaquo;', 
                t:'Heute',
                showMore: 'Show More'
            },
            
            dragableEvents: false
            
        };
        
//        var events = [  { "EventID": 1, "Color": "#9F4A47", "StartDateTime": new Date(2009, 8, 5), "EndDateTime": new Date(2009, 8, 12), "Title": "H&uuml;tte Elster", "URL": "#", "Description": "This is a sample event description" },
//                        { "EventID": 2, "Color": "#5A7992", "StartDateTime": new Date(2009, 8, 11), "EndDateTime": new Date(2009, 8, 14), "Title": "H&uuml;tte Fuchs", "URL": "#", "Description": "This is a sample event description" },
//                        { "EventID": 3, "Color": "#5C5F13", "StartDateTime": "2009-09-08", "EndDateTime": "2009-09-12", "Title": "H&uuml;tte Murmeltier", "URL": "#", "Description": "This is a sample event description", "CssClass": "Meeting" }
//        ];

    	jQuery.getJSON("/calendar/events", function(data) {
    		$.jMonthCalendar.Initialize(options, data);	
    	});

}

function validate_registration() {
	
	// Hide Error
	jQuery('#Error').html('');
	jQuery('#Error').hide();
	
	if (jQuery('#salutation').val() == '') {
		jQuery('#Error').html("Bitte w\u00e4hlen Sie eine Anrede aus!");
		jQuery('#Error').fadeIn();
		return false;
	} 
	
//	if (jQuery('#Bl:checked').val() != 'on' && jQuery('#Bm:checked').val() != 'on' && jQuery('#Br:checked').val() != 'on') {
//		jQuery('#Error').html("Fehler: Bitte klicken Sie mindestens einen der Mitmach-Buttons an!");
//		jQuery('#Error').fadeIn();
//		return false;
//	}
	
//	if (jQuery('#ChkRqm:checked').val() != 'on') {
//		jQuery('#Error').html("Fehler: Bitte akzeptieren Sie die Teilnahmebedingungen!");
//		jQuery('#Error').fadeIn();
//		return false;
//	}
	
	if (jQuery('#firstname').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihren Vornamen ein!");
		jQuery('#Error').fadeIn();
		return false;
	}

	if (jQuery('#lastname').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihren Nachnamen ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (jQuery('#bday').val() == '' || gueltigesDatum( jQuery('#bday').val() ) == false) {
		jQuery('#Error').html("Bitte geben Sie ein g\u00fcltiges Geburtsdatum ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (jQuery('#email').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (!checkRegexp('email', /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i)) {
		jQuery('#Error').html("Bitte geben Sie eine g\u00fcltige E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}

	if (jQuery('#address').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre Adresse an!");
		jQuery('#Error').fadeIn();
		return false;		
	}

	if (jQuery('#zip').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre Postleitzahl ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (jQuery('#city').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihren Wohnort ein!");
		jQuery('#Error').fadeIn();
		return false;		
	}	

	if (jQuery('#country').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihr Land an!");
		jQuery('#Error').fadeIn();
		return false;		
	}		
	
	if (jQuery('#phone').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre Telefonnummer an!");
		jQuery('#Error').fadeIn();
		return false;		
	}		
	
	return true;
}

function validate_login() {
	if (jQuery('#email_existing').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (!checkRegexp('email_existing', /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i)) {
		jQuery('#Error').html("Bitte geben Sie eine g\u00fcltige E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}

	if (jQuery('#passwd').val() == '') {
		jQuery('#Error').html("Bitte geben Sie ein Passwort ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (jQuery('#passwd').val().length != 6) {
		jQuery('#Error').html("Bitte geben Sie ein g\u00fcltiges Passwort ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	return true;
} 

function validate_forgot() {
	if (jQuery('#email').val() == '') {
		jQuery('#Error').html("Bitte geben Sie Ihre E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}
	
	if (!checkRegexp('email', /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i)) {
		jQuery('#Error').html("Bitte geben Sie eine g\u00fcltige E-Mail Adresse ein!");
		jQuery('#Error').fadeIn();
		return false;
	}

	return true;
}


function checkRegexp(o, regexp) {
	if ( !( regexp.test( jQuery('#' + o).val() ) ) ) {
		return false;
	} else {
		return true;
	}
}

function showLoadingImage(el, text) {
    var f_text = text || 'Wird geladen...';
    var elWidth = parseInt($('#' + el).css('width'));
    $('#' + el).html('<div style="position:absolute;top:0px;left:30%;">'+
		    '<img src="/resources/images/ajax_loading.gif" align="absmiddle" border="0" />&nbsp;'+f_text+
		    '</div>');
}

function gueltigesDatum (datum)
{
    //(Schritt 1) Fehlerbehandlung
 if (!datum) return false;
 datum=datum.toString();

    //(Schritt 2) Aufspaltung des Datums
 datum=datum.split(".");
 if (datum.length!=3) return false;

    //(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats

 datum[0]=parseInt(datum[0],10);
 datum[1]=parseInt(datum[1],10)-1;

    //(Schritt 4) Behandlung Jahr nur zweistellig
 if (datum[2].length==2) datum[2]="20"+datum[2];

    //(Schritt 5) Erzeugung eines neuen Dateobjektes
 var kontrolldatum=new Date(datum[2],datum[1],datum[0]);

    //(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
 if (kontrolldatum.getDate()==datum[0] && kontrolldatum.getMonth()==datum[1] && kontrolldatum.getFullYear()==datum[2])
     return true; else return false;

}
