/**
	*	@Author: Jan.Wessel for db-n.com
	*	@Descr:
	*	@Params:
	*	@ToDos:
	*	@See:
*/
var locURL = window.location.href;
var locSRCH = window.location.search;

jQuery(function($) {
	//alert(document.compatMode);
	$('body').addClass('js');
	
	var dpdCore = (function() {
				var printerButton = $('#print');
				var prefillClass = 'prefilled';
				
				
				//collect all functions
				function initialize() {
					printerButton.click(
						function() {
							printPage();
						}
					);
					handlePrefilledField($('#myDPD__User'), dpdLang[lang].myDPD__User, prefillClass);
					handlePrefilledField($('#myDPD__Pass'), dpdLang[lang].myDPD__Pass, prefillClass);
					handlePrefilledField($('#DPD__SoTQuery'), dpdLang[lang].DPD__SoTQuery, prefillClass);
					handlePrefilledField($('#DPD__LocFinderParcelShopQuery'), dpdLang[lang].DPD__LocFinderParcelShopQuery, prefillClass);
					handlePrefilledField($('#DPD__LocFinderDepotQuery'), dpdLang[lang].DPD__LocFinderDepotQuery, prefillClass);
					handlePrefilledField($('#DPD__LocFinderDepotQueryCode'), dpdLang[lang].DPD__LocFinderDepotQueryCode, prefillClass);
					
					setTitle($('.closeAlert'), dpdLang[lang].closeAlert);
					
					initiateAccordionOnHomepage();
					initiateScrollpanes();
					initiateCarouFredselsOnHomepage();
					handleMessages();
					
					//numbersOnly($('.numbersOnly'));
				}
				
				
				//call the scollpane functionality
				function initiateScrollpanes() {
					$('.accordionContent').jScrollPane();
				}

				
				// Validation of form fields
				function numbersOnly(elems) {
					elems.keyup(function() { 
					    this.value = this.value.replace(/[^0-9\.]/g,'');
					});
				}
				
				
				//print function
				function printPage() {
					window.print();
				}
				
				
				//accordion
				/**
				 * it seems that the fillSpace option renders a wrong height
				 * for the accordion elements in this particular case,
				 * so we're manipulating those using the "create"-event
				 * and setting "autoHeight"
				 */
				function initiateAccordionOnHomepage() {
					$(".accordion").accordion({
						fillSpace : true,
						autoHeight : false,
						icons: {
							'header': 'iconDown',
							'headerSelected': 'iconUp'
						},
						create: function(event, ui) {
							actElemH = $('.ui-accordion-content-active').height();
							$('.ui-accordion-content').css('height',actElemH-2);
						}
					});
				}
				
				//message
				function handleMessages() {
					$('.closeMessage').each(
						function() {
							$(this).click(function() {
								$(this).parent('.message').slideUp(300);
							});
						}
					);
				}
				
				//carouFredsel
				//caption handling
				function showCaption() {
					$("#mainStage .pagination").fadeOut();
					
					var sHeight = $(this).parents('.slider li').height();
					var sCHeight = $(this).parents('.slideCaption').outerHeight();
					
					var sCTop = sHeight-sCHeight;
					
					$(this).parents('.slideCaption').delay(250).animate({
						top: sCTop
					}, function() {
						$(this).addClass('open');
					});
				}
				
			  function hideCaption() {
					$(this).find('#mainStageSlider').find('.slideCaption').animate({
						top : 243
					},function() {
						$(this).removeClass('open');
						$("#mainStage .pagination").fadeIn();
					});
				}
				
				function initiateCarouFredselsOnHomepage() {
					//stage slider
					$('#mainStageSlider').carouFredSel({
						items: 1,
						direction: "left",
						auto: {
							play: true,
							pauseOnHover: true,
							pauseDuration: 5000
						},
						scroll: {
							easing: 'easeInOutExpo',
							onBefore: function() {
								$("#mainStage .pagination").fadeOut();
							},
							onAfter: function() {
								$("#mainStage .pagination").fadeIn();
							}
						},
						circular: true,
						pagination: {
							container: "#mainStage .pagination",
							anchorBuilder: function(nr) {
								return "<li>" + nr + "</li>";
							}
						}
					}).find(".slideCaption p strong").mouseenter( showCaption );
					$('#mainStage').mouseleave( hideCaption );
					
					
					//latest news
					$('.withCarousel ul').carouFredSel({
						items: 1,
						direction: "left",
						auto: {
							play: false,
							pauseOnHover: true,
							pauseDuration: 5000
						},
						scroll: {
							easing: 'easeInOutExpo',
							onBefore: function() {
								$("#latestNews .pagination").fadeOut();
							},
							onAfter: function() {
								$("#latestNews .pagination").fadeIn();
							}
						},
						circular: true,
						pagination: {
							container: "#latestNews .pagination",
							anchorBuilder: function(nr) {
								return "<li>" + nr + "</li>";
							}
						}
					});
				}
				
								
				//I18N, see I18N.js
				var lang = $('html').attr('lang').replace('-','_');
				if(!lang) {
					lang = "unknown";
				}
				
				function setTitle(elem,title) {
					if (!elem.attr('title')) {
						elem.attr('title', title);
					}
				}
				
        function handlePrefilledField(field, prefillText, prefillClass) {
						if(field.val()) {
							prefillText = field.val();
						}
						
            field
								.attr('title',prefillText)
                .val(prefillText)
                .addClass(prefillClass);
            field
                .addClass('prefilled')
                .val(prefillText);
            field
                .focus(
                    function() {
                        field.removeClass(prefillClass);
                        if (field.val() === prefillText) {
                            field.val("");
                        }
                    }
                )
                .blur(
                    function() {
                        if (!((field.val() !== prefillText) && (field.val().length > 3))) {
                            field
                                .val(prefillText)
                                .addClass(prefillClass);
												}
                    }
                );
        }

				//return to the public
				return {
					init : initialize
				};
	}());

	//do the magic
	dpdCore.init();
});
