
if(!window.console) {
  // firebug not installed or disabled
  window.console = new function() {
    this.log = function(str) {};
    this.dir = function(str) {};
    this.debug = function(str) {};
  };
}

/*-------------------------GLOBALS-------------------------*/
$(document).ready(function () {

	var cache = false;

	//$.plugin('datepicker', { files:['/basewebinterface/org/js/jquery/1.7.2/ui.datepicker.min.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/datepicker/i18n/ui.datepicker-de.js'], selectors: ['.datepicker', 'input.TypeDate', 'input.TypeDateTime'], callback : function(){ $('.datepicker').datepicker(); }, cache:cache } );
	$.plugin('datepicker', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/datepicker/date.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/datepicker/date-de.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/bgiframe/jquery.bgiframe.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/datepicker/jquery.datePicker.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/datepicker/css/datePicker.css'], selectors: ['.datepicker', 'input.TypeDate', 'input.TypeDateTime'], callback : function(){ /*$('.datepicker').datePicker();*/ }, cache:cache } );
	$.plugin('accordion', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/accordion/css/jquery.accordion.css','/basewebinterface/org/js/jquery/1.7.2/plugins/easing/jquery.easing.js','/basewebinterface/org/js/jquery/1.7.2/plugins/dimensions/jquery.dimensions.js','/basewebinterface/org/js/jquery/1.7.2/plugins/accordion/jquery.accordion.js'], selectors: ['.accordion'], callback : function(){ /*$('.accordion').accordion();*/ }, cache:cache } );
	$.plugin('lightbox', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/lightbox/jquery.lightbox.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/lightbox/css/lightbox.css'], selectors: ['.lightbox'], callback : function(){ $('.lightbox').lightbox(); }, cache:cache } );
	$.plugin('fancybox', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/fancybox/jquery.fancybox-1.2.6.pack.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/fancybox/jquery.fancybox-1.2.6.css','/basewebinterface/org/js/jquery/1.7.2/plugins/easing/jquery.easing.js'], selectors: ['.lightbox'], callback : function(){ $('.lightbox').fancybox(); }, cache:cache } );
	$.plugin('swfobject', { files:['/basewebinterface/org/js/swfobject/2.0/swfobject.js'], selectors: ['div#flashcontent'], callback : function(){ /* */ }, cache:cache } );
	//$.plugin('sexycombo', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/sexycombo/css/sexy.css', '/basewebinterface/org/js/jquery/1.7.2/plugins/sexycombo/css/jquery.sexy-combo.css', '/basewebinterface/org/js/jquery/1.7.2/plugins/bgiframe/jquery.bgiframe.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/sexycombo/jquery.sexy-combo-2.1.2.js'], selectors: ['select.TypeSelect'], callback : function(){ /**/ }, cache:cache } );
	$.plugin('scrollable', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/tools.scrollable.min.js', '/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/scrollable-vertical.css', '/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/scrollable-horizontal.css', '/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/scrollable-buttons.css', '/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/scrollable-navigator.css'], selectors: ['.scrollable'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('overlay', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/tools.overlay.min.js','/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/overlay-minimal.css'], selectors: ['.overlay'], callback : function(){ /* */ }, cache:cache } );
	//$.plugin('tooltip', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/tools.tooltip.min.js','/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/tooltip.css'], selectors: ['.tooltip'], callback : function(){ /* */ }, cache:false } );
	$.plugin('tooltip', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/bgiframe/jquery.bgiframe.js','/basewebinterface/org/js/jquery/1.7.2/plugins/dimensions/jquery.dimensions.js','/basewebinterface/org/js/jquery/1.7.2/plugins/tooltip/jquery.tooltip.js','/basewebinterface/org/js/jquery/1.7.2/plugins/tooltip/css/jquery.tooltip.css'], selectors: ['.tooltip'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('tabs', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/tools.tabs.js','/basewebinterface/org/js/jquery/1.7.2/plugins/fptools/css/tabs.css'], selectors: ['.tabs'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('thickbox', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/thickbox/thickbox-compressed.js','/basewebinterface/org/js/jquery/1.7.2/plugins/thickbox/thickbox.css'], selectors: ['.thickbox'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('flowplayer', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/flowplayer/flowplayer-3.1.2.min.js'], selectors: ['.flowplayer'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('reflection', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/reflection/reflection.js'], selectors: ['.reflection'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('pageflip', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/pageflip/jquery.pageflip.js','/basewebinterface/org/js/jquery/1.7.2/plugins/pageflip/css/pageflip.css'], selectors: ['.pageflip'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('quickflip', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/pageflip/jquery.quickflip.js'], selectors: ['.quickflip'], callback : function(){ /* */ }, cache:cache } );
	$.plugin('jgrowl', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/jgrowl/jquery.jgrowl.css','/basewebinterface/org/js/jquery/1.7.2/plugins/jgrowl/jquery.jgrowl.js'], selectors: ['.jgrowl'], callback : function(){ /* */ }, cache:cache } );
	
	$.plugin('jcarousel', { files:['/basewebinterface/org/js/jquery/1.7.2/plugins/jcarousel/jquery.jcarousel.pack.js','/basewebinterface/org/js/jquery/1.7.2/plugins/jcarousel/jquery.jcarousel.css'], selectors: ['.jcarousel'], callback : function(){ /* */ }, cache:cache } );

	
	
	// load default
	/*$.plugin('datepicker').get();*/
	//$.plugin('lightbox').get();
	//$.plugin('fancybox').get();
	$.plugin('thickbox').get();
	$.plugin('jgrowl').get();

});
 

/*---------------------------------------------------------------*/

function windowOpenBooking(url) {
    // used for donna-hotels.com
	window.open(url,'','directories=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0,width=640,height=520,left=50,top=50');
	return null;
}

function navigationSelectbox_goToPage(select) {
   var path = select.options[select.options.selectedIndex].value;
   document.location.href = path;
}

function field_addCSSClassName(object, className) {
    object.className = object.className + ' ' + className;
}

function field_removeCSSClassName(object, className) {
    classArray = object.className.split(" ");
    object.className = '';
    for(i=0;i<classArray.length;i++) {
        if (classArray[i] != className) {
            object.className = object.className + ' ' + classArray[i];
        }
    }
    return;
}

function preloadImages(src) {
	if (document.images)
	{
	  image     = new Image(); 
	  image.src = src; 
	}
	return;
}

function changeImage(key, newSrc) {
    // by id
	image = document.getElementById(key);
    if (!image) { 
       // by class-key
	   element = document.getElementsByClassName(key)
       image   = document.getElementsByTagName('img', element)[0];
    }
	image.src = newSrc;
	return;
}


function changeImageByClassKey(classKey, newSrc) {
	element = document.getElementsByClassName(classKey)
	image   = document.getElementsByTagName('img', element);
	image[0].src = newSrc;
	return;
}

function removeElementById(elementId) {
  var base = document.getElementById('cmsskin');
  var toDelete = document.getElementById(elementId);
  base.removeChild(toDelete);
}

function showElementById(elementId) {
	var element = document.getElementById(elementId);
	if(element) {	
		element.style.visibility = 'visible';
	} else {
		alert('Element not found! (id='+elementId+')');
	}
}
function hideElementById(elementId) {
	var element = document.getElementById(elementId);
	if(element) {
		element.style.visibility = 'hidden';
	} else {
		alert('Element not found! (id='+elementId+')');
	}
}

function showBalloon(elementId) {
	setBalloonPosition(elementId, 'bottom-left');
	showElementById(elementId)
}

function setBalloonPosition(elementId, type) {
	var balloon = document.getElementById(elementId);
    var element = document.getElementById(elementId+'-offset');
	var width   = element.offsetWidth;
	var height  = element.offsetHeight;
	
	if(type=='bottom-left') {
		balloon.style.left = -6 ;
		balloon.style.top  = ( height - 18 ) * -1 ;
	} 
	if(type=='top-left') {
		balloon.style.left = -6 ;
		balloon.style.top  = ( 6 ) * -1 ;
	} 
}



function portletGetContent(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, parameters) {
	
	if (portletUID == null) { 
		var onCompleteFunction = function(responseData) {
			if (responseData['html'] != null) {
				$('#portletslot-'+slotKey).html(responseData['html']);
			}
			eval(responseData['javascript']);
		}
	} else {
		var onCompleteFunction = function(responseData) {
			if (responseData['html'] != null) {
				$('#portlet-'+portletUID+' .base-portlet-content').html(responseData['html']);
			}
			eval(responseData['javascript']);
		}
	}

	url = baseUrl + '/' + languageKey + '/portlets/' + slotKey + '__' + pageUID;
	
	if (portletUID != null) {
		url += '__' + portletUID;
	} 
	
	if (parameters != null) {
		url += '.phtml';
		postData = ''+parameters;
		methodType = 'POST';
	} else {
		url += '.html';
		postData = null;
		methodType = 'GET';
	}

	if (cacheManagerId != undefined && cacheManagerId != null) {
		url += '?CM_ID=' + cacheManagerId;
	}

    var myAjax = $.ajax({
    	url:url, 
    	type:methodType,
    	data:postData,
    	success:onCompleteFunction,
    	dataType:'json',
    	processData:false
    });
    
    return void(0);
}

function wait(millis)
{
	var date = new Date();
	var curDate = null;	
	do { curDate = new Date(); }
	while(curDate-date < millis);
}


function leafletAddItem(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, parameters) {
	
	$.jGrowl.defaults.closer   = false;
	$.jGrowl.defaults.position = 'top-right';
	
	// check if portlet is loaded
	if(!($('.leaflet-list-portlet').length > 0))  {
		$.jGrowl('Bitte warten bis das Merkblatt geladen ist.', { theme:'notice', header:'Bitte warten...'});
		return void(0);
	}			
	
	// check leaflet size		
	leafletSize = $('.leaflet-list-portlet table tr.leaflet-item').size();
	if ( leafletSize == 0 ) {
		$('.leaflet-list-portlet table').show();
		$('.leaflet-empty-message').hide();
	}
	if ( leafletSize > 15) {
		$.jGrowl('Sie können maximal 15 Elemente zum Merkblatt hinzufügen.', { theme:'notice', header:'Merkblatt ist begrenzt'});
		return void(0);
	}	
	
	// duplicate check
	rowId    = 'row-'+parameters['id'].toString();
	if (parameters['type']=='offer') { rowId += parameters['offerId'].toString(); }
	if($('.leaflet-list-portlet table tr#'+rowId).get(0)){
		$.jGrowl(parameters['caption']+'<br>'+parameters['caption2']+'<br>'+parameters['price'], { theme:'notice', header:'Bereits gemerkt...'});
		return void(0);
	}
	
	$('.leaflet-list-portlet .empty-message').hide();
		
	parameterString = "'"+baseUrl+"', '"+languageKey+"',  '"+slotKey+"', '"+pageUID+"', '"+cacheManagerId+"', '"+portletUID+"', { type:'"+parameters['type']+"', id:'##LEAFLET_ITEM_ID##', caption:'"+parameters['caption']+"', caption2:'"+parameters['caption2']+"', price:'"+parameters['price']+"' }";
	rowHtml = '';
	rowHtml += '<tr class="leaflet-item leaflet-item-new" id="'+rowId+'">';
	rowHtml += '<td class="column-amount"><span class="amount">1</span><br><a href="javascript:leafletDeleteItem('+parameterString+')" class="delete-item-link"><img src="/basewebinterface/org/images/icons/16x16/delete-x.png" title="Entfernen" alt="Entfernen" align="center"/></a></td>';
	rowHtml += '<td class="column-caption"><span class="caption">'+parameters['caption']+'</span><br><span class="caption2">'+parameters['caption2']+'</span></td>';
	rowHtml += '<td class="column-price"><span class="single-price">'+parameters['price']+'</span><span class="price">'+parameters['price']+'</span></td>';
	rowHtml += '</tr>';
	
    $('.leaflet-list-portlet table tr.leaflet-sum').before(rowHtml);
    
    if (parameters['type']=='offer') {
    	portletGetContent(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, 'action=add&type='+parameters['type']+'&id='+parameters['id']+'&offerId='+parameters['offerId']);
    	$.plugin('jgrowl', function() {
   			$.jGrowl(parameters['caption']+'<br>'+parameters['caption2']+'<br>'+parameters['price'], { theme:'accept', header:'Angebot hinzugefügt'});
   		});
    } else {
    	portletGetContent(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, 'action=add&type='+parameters['type']+'&id='+parameters['id']);
    	$.plugin('jgrowl', function() {
   			$.jGrowl(parameters['caption']+'<br>'+parameters['caption2']+'<br>'+parameters['price'], { theme:'accept', header:'Paket hinzugefügt'});
   		});
    }
    leafletCalculateSum();
    return void(0);
}

function leafletDeleteItem(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, parameters) {
	
	$.jGrowl.defaults.closer   = false;
	$.jGrowl.defaults.position = 'top-right';	
	
	// check if portlet is loaded
	if(!($('.leaflet-list-portlet').length > 0))  {
		$.jGrowl('Bitte warten bis das Merkblatt geladen ist.', { theme:'notice', header:'Bitte warten...'});
		return void(0);
	}			
	
	rowClass = 'row__leaflet-'+parameters['type']+'-'+parameters['id'];    
    $('.leaflet-list-portlet .'+rowClass).remove().fadeOut();
    $('.leaflet-list .'+rowClass).remove().fadeOut();
            
    portletGetContent(baseUrl, languageKey, slotKey, pageUID, cacheManagerId, portletUID, 'action=delete&type='+parameters['type']+'&id='+parameters['id']);
    if(parameters['type']=='offer') {
    	$.plugin('jgrowl', function() { 
    		$.jGrowl(parameters['caption']+'<br>'+parameters['caption2']+'<br>'+parameters['price'], { theme:'error', header:'Angebot gelöscht'});    		
   		});
    } else {
    	$.plugin('jgrowl', function() {
    		$.jGrowl(parameters['caption']+'<br>'+parameters['caption2']+'<br>'+parameters['price'], { theme:'error', header:'Paket gelöscht'});
    	});
    }
    leafletCalculateSum();
    
	
	// check leaflet size		
	leafletSize = $('.leaflet-list-portlet table tr.leaflet-item').size();
	if ( leafletSize == 0 ) {
		$('.leaflet-list-portlet table').hide();
		$('.leaflet-list-portlet .leaflet-empty-message').show();
	}
    
    return void(0);
}

function leafletCalculateSum() {        
    var summe = 0.0;
    jQuery.each($(".leaflet-list-portlet .leaflet-item"), function() {
    	rawAmount    = $('.amount', this).html();
        rawPrice     = $('.single-price', this).html();
        pricePerDay  = $('.price-per-day', this).html();
        nights       = $('.nights', this).html();
        
        amount       = parseFloat(rawAmount);
        pricePerDay  = parseInt(pricePerDay);
        nights       = parseInt(nights);
        
        price    = rawPrice.replace(/€/g, '');
        price    = price.replace(/,/g, '.');
        price    = price.replace(/--/g, '00');
        price    = parseFloat(price);
        tmp      = price*amount;
        if (pricePerDay) { tmp = tmp*nights; } 
        summe   += tmp;
    });
    summe = summe.toFixed(2);
    summe = summe.replace(/.00/,',--');
    summe = summe.replace(/\./,',');        
    $(".leaflet-list .sum-value").html('&euro;' + summe.toString());
    $(".leaflet-list-portlet .sum-value").html('&euro; ' + summe.toString());
    return void(0);
}


function fieldDatePicker_open(fieldUniqueId, args) {
	$.plugin('datepicker', function () {
		args.createButton = false;
		$('input[name=\''+fieldUniqueId+'\']').datePicker(args).dpSetOffset(25, 60).dpDisplay();
	});
	return void(0);
}


function quickrequestSetDefaultDates(selectorArrival, selectorDeparture, interval, arrivalDateAddDays) {
		
	var arrivalDate = new Date();
	if(!interval)     { interval  = 5; }	
	if(arrivalDateAddDays)        { arrivalDate = new Date(arrivalDate.getTime()+(parseInt(arrivalDateAddDays)*24*60*60*1000)); }
	
	var departureDate = new Date(arrivalDate.getTime()+(parseInt(interval)*24*60*60*1000));
			
	$(selectorArrival).attr('value', baseFormatDate(arrivalDate));
	$(selectorDeparture).attr('value', baseFormatDate(departureDate));
}


function baseFormatInt(int, length) {
	strInt = '' + int;
	iMax = length - strInt.length
	for (i=0;i < iMax;i++) {
		strInt = '0' + strInt
	}
	return strInt
}

function baseFormatDate(rawDate, format) {

	if(!format) { format = 'dd.mm.yyyy'; }

	year  = rawDate.getYear();
	if (year < 999) { year += 1900; }
	month = rawDate.getMonth()+1;
	day   = rawDate.getDate();

	var outputDate = '';
	outputDate = baseFormatInt(day, 2) + '.' + baseFormatInt(month, 2) + '.' + baseFormatInt(year, 2);
	return outputDate;
}
