/*! 
 *  Thomas Cook - Javascript Document
 *
 *  URI         : http://www.thomascook.fr
 *  Version     : v0.2
 *  Version Date: Friday, November 26, 2010
 */

var soldOutFlag = false;
var tempDate = '';
var now = new Date();
now = new Date(now.getFullYear(), now.getMonth(), now.getDate());

jQuery(function($){
	//navigator.userAgent.indexOf('MSIE');	
	jQuery('.subSearchPanel input[disabled]').css('background-color','#E5E5E5');
	jQuery('.subSearchPanel select[disabled]').css('background-color','#E5E5E5');	
	if(jQuery.browser.msie && parseInt(jQuery.browser.version) === 6){
		jQuery('#mainMenu li ul').bgiframe();
		jQuery('#mainMenu li').hover(
			function(){
				jQuery(this).addClass('sfhover');
			},
			function(){
				jQuery(this).removeClass('sfhover');
			}
		);
	}
	highLight();
	thumbView();
	jQuery(".locKalInput").click(function(){
		tempDate = jQuery(this).val() || '';
		jQuery(this).focus();
		jQuery(this).select();
		formChanged = true;
	});
	jQuery(".locKalInput").change(function(){
		var dateText = jQuery(this).val() || '';
		if(getTimestampFromString(dateText,true) == -1){				
				var defDate = new Date(getTimestampFromString(tempDate));
				jQuery(this).datepicker("setDate", defDate);
		} else{
			var deDate = new Date(getTimestampFromString(dateText));
			jQuery(this).datepicker("setDate", deDate);
		}
		formChanged = true;
	});
	
	jQuery(".locKalInput").datepicker({ minDate: +1, maxDate: +365, onSelect: function(dateText, inst){ } });

	jQuery('a[href*="epticahosting.com"]').click(function(ev){
		var epticahostingURL = jQuery(this).attr('href') + '&placeValuesBeforeTB_=savedValues&TB_iframe=true&height=470&width=720&modal=true';
		tb_show('eptica', epticahostingURL, false);
		ev.preventDefault();
	});
	
	jQuery('.loginLink').click(function(ev){
		ev.preventDefault();
		var loginLinkURL = jQuery(this).attr('href') + '?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=290&width=720&modal=true';
		tb_show('Login', loginLinkURL, false);		
	});

	jQuery(".noticeBox, .advt, .chatBox").css('left',jQuery("#content").offset().left + 920);

	jQuery(".resortListDisabled").live('mouseover', function(){
		jQuery(this).find('a').unbind("click").removeAttr('onclick');
	});


	jQuery(".resortListDisabled .auswButton").attr('title','Offre epuisee');

	jQuery('form[name=quickPackageSearchPanel], form[name=quickHotelSearchPanel], form[action*=deDestinationRegions]').submit(function(e){		
		var frmID = jQuery(this);
		var childCount = 0;
		if(frmID.find('#child1Select').val() == 1) childCount++;
		if(frmID.find('#child2Select').val() == 1) childCount++;
		if(frmID.find('#child3Select').val() == 1) childCount++;
		if(childCount > frmID.find('#adultSelect').val()){ 
			e.preventDefault();
			alert('1 adulte minimum par enfant de moins de 2 ans');
		}
	});

	/* Accomodation Detail Tabs */
	jQuery('.rdiTab li').click(function(e){
		jQuery('.rdiTab .rdiTabActive').removeClass('rdiTabActive');
		jQuery('.resortDescInfo .rdiCont').hide();		
		var currTabLi = jQuery(this).attr('class');
		jQuery(this).addClass('rdiTabActive');
		jQuery('#'+currTabLi).show();
	});

});

var frm;
/* Home Search Panel */
function hspTabs(){
	jQuery('#spTabs a').click(function() {
		var currID = jQuery(this).attr('class');
		var parameter = jQuery(this).attr('rel');
		document.getElementById(parameter+'PageId').value = parameter;
		if(!jQuery(this).hasClass('inactiveTabs')){
			jQuery('#spTabs li').removeClass('activeSPTabs');
			jQuery(this).parent('li').addClass('activeSPTabs');
			jQuery('.spWrap').hide();
			currID = '#' + currID;								
			jQuery(currID).show();
			//Reset form values
			jQuery(currID).find('form').get(0).reset();
			frm=jQuery(currID).find('form');
			var proposition = jQuery(currID).find('form').find('#propositionIDField').val();
			try{
	         AjaxSearchTools.populateDestination("-1",proposition, updateDestinationSelect);
			 //AjaxSearchTools.populateRegions("-1", proposition, updateResorts);
		    }catch(err){}

            AjaxSearchTools.resetSearchBean();
		}
		
	});
}

/* Accomodation List Page - Thumbnail View */
function thumbView(){
	jQuery('.hotelSelection .hotelThumb, .dbcImage').hover(
		function(){
			var img = jQuery(this).children('a').children('img').attr('src');
			/*
			if(img.indexOf("_mi")>=0) {
				img = img.replace('_mi','_gr');
			} else if(img.indexOf("_kl")>=0) {
				img = img.replace('_kl','_gr');
			} else if(img.indexOf("https")>=0) {
				img = img.replace('booking_thumbs','booking_thumbs_gr');
			}
			*/
			var innerContent = '<div><img src="' + img + '" alt="" /></div>';
			if(jQuery(this).hasClass('hotelThumb') && jQuery(this).children('.hotelAdvText').length != 0){
				innerContent = '<div class="hotelBig"><div><img src="' + img + '" alt="" /><div class="hotelAdvTextWrap"><span class="crossSign" title="Fermer">Close</span>' + jQuery(this).children('.hotelAdvText').html() + '</div></div></div>';
				jQuery(this).append(innerContent);
				jQuery(this).children('.hotelBig').css({ 'position': 'absolute', 'top': 0, 'left': 183 }).show();
			} else{
				var pos = jQuery(this).offset();
				if(jQuery(this).hasClass('dbcImage'))
					jQuery('#hotelBig').css('background-position','0 -20px');
				jQuery('#hotelBig').css({
					'position': 'absolute',
					'top': pos.top,
					'left': (pos.left + (jQuery(this).hasClass('dbcImage')? 108 : 185))
				}).html(innerContent).show();
				if(IE6) jQuery('#hotelBig').bgiframe();
			}
		}, 
		function(){
			if(jQuery(this).hasClass('hotelThumb') && jQuery(this).children('.hotelAdvText').length != 0)
				jQuery(this).children('.hotelBig').remove();
			else
				jQuery('#hotelBig').empty().hide();
		}
	);
	jQuery('.hotelSelection .hotelThumb .hotelBig .crossSign').live('click', function(e){
		jQuery(this).parent('.hotelAdvTextWrap').hide();
	});
}

/* Accomodation Detail Page - Wait Window */
var  previousId = -1;
var  cancel = false;
var topId = -1;
function waitPage(flag, text, id, bookingId,IFF,pageId,supplier,hotelInfo,bookingUrl,roomsInfo,pageUrlName,airportName,bookingCode,tourOpCode,tcTerms,tcTermsLink,supplierName,formattingCode,oldPrice){
	if(!formChanged){
		topId = (jQuery('.resortListWrap .resortList:last').attr('id')).replace('RESULT','');
		topId = parseInt(topId,10);
		cancel = false;
		text = (typeof text != 'undefined')? text : '';
		jQuery('#pleaseWaitTxt').html(text);
		if(jQuery.browser.msie && parseInt(jQuery.browser.version) === 6)
			jQuery('.bookingJourney select').hide();		
		jQuery('#bjOverlay').css({
			'top': jQuery(window).scrollTop(),
			'height': jQuery(window).height()
		});
		if(pageId=='hotel' || pageId=='wellness' || pageId=='holidayHomes' || pageId=='holidayLocations' || pageId=='skiLocations' || pageId=='skiHotels')
			jQuery('#bjOverlay .bjWait').addClass('bjHotelWait');
		(flag)? jQuery('#bjOverlay').show() : jQuery('#bjOverlay').hide();
		
		if(previousId != -1) {
			jQuery('#ID'+previousId).show();
			jQuery('#RESULT'+previousId).hide();
		}
		
		reCost(id,bookingId,IFF,pageId,supplier,hotelInfo,bookingUrl,roomsInfo,pageUrlName,airportName,tcTerms,tcTermsLink,supplierName,formattingCode,oldPrice);
		previousId = id;
	} else{
		alert("Vous avez modifié les paramètres de votre recherche.\nVeuillez cliquer sur le bouton \"Rechercher\" dans le moteur ci-dessus afin d'actualiser les résultats.");
	}
}

function cancelWaitPage(){		
	jQuery('#bjOverlay').hide();
	jQuery('.bookingJourney select').show();
	cancel = true;
}

var formChanged = false;
function formCheck(){
	//jQuery('.subSearchPanel').find(':input:not([type=hidden])').serializeArray();
	var fr = jQuery('.subSearchPanel');
    fr.find(':input, select, :checkbox, :radio').not(":submit, :reset, :image, [disabled], [type=hidden], [id=resortSelect], [id=destinationSelect]").change(function(){
		formChanged = true;
	});
}

function cleanDisplay(obj,str,alternative) {
    if (typeof obj == 'undefined' || obj == "") {
        return false;
    }
    if (obj.value == str || obj.value == alternative) {
        obj.value = '';
    }
    return true;
}

function reactivateDisplay(obj,str) {
    if (typeof obj == 'undefined' || obj == "") {
        return false;
    }
    if (obj.value == "") {
        obj.value = str;
    }
    return true;
}

/* Date Functionality */
function getTimestampFromString(sTermin,flag){
  if(typeof sTermin == 'undefined') return false;
  var day   = 0;
  var month = 0;
  var year  = 0;
  if(sTermin.search(/(mar|mer|jeu|ven|sam|dim|lun)\. (\d{2})\.(\d{2})\.(\d{4})/i)!=-1){
    day   = parseInt(RegExp.$2, 10);
    month = parseInt(RegExp.$3, 10);
    year  = parseInt(RegExp.$4, 10);
  }else if(sTermin.search(/(\d{2})[\.\/]?(\d{2})[\.\/]?(\d{4})/)!=-1){
    day   = parseInt(RegExp.$1, 10);
    month = parseInt(RegExp.$2, 10);
    year  = parseInt(RegExp.$3, 10);
  }else if(sTermin.search(/(\d{2})[\.\/]?(\d{2})[\.\/]?(\d{2})/)!=-1){
    day   = parseInt(RegExp.$1, 10);
    month = parseInt(RegExp.$2, 10);
    year  = parseInt(RegExp.$3, 10);
    year = year>20?(1900+year):(2000+year);
  }
  if (day >= 1 && day <= 31 && month >= 1 && month <= 12 && year >= 1920 && year < 2020) {
    var dt = new Date(year,month-1,day,12,0,0);
  } else {
	flag = (typeof flag == 'undefined')? false : flag;
	if(!flag){
		var dt = new Date();
		dt.setHours(12,0,0,0);
	} else{
		return -1;
	}
  }
  return dt.getTime();
}

/* Popup Window */
function openInfoBox(url){
	var favorit = window.open(url,'info','height=680,width=733,scrollbars=yes,status=yes,toolbar=no,menubar=no,location=no,resizable=yes'); 
    favorit.focus(); 
    return false;
}

function openPopup(url,w,h){
	h = (h > screen.height-40)? screen.height-40 : h; 
	var x = (screen.width/2) - (w/2);
	var y = (screen.height/2) - (h/2);
	var op = 'height='+ h +',width=' + w + ',scrollbars=yes,status=yes,toolbar=no,menubar=no,location=no,resizable=yes'
	var winPOP = window.open(url,'info',op);
	winPOP.moveTo(x,y);
	winPOP.focus();
}

/* Return Query String Parameter Value */
function urlParam(urlTxt){
	var results = new RegExp('[\\?&]' + urlTxt + '=([^&#]*)').exec(window.location.href);
	if(!results){ return 0; }
	return results[1] || 0;
}

/* Main Navigation Highlight */
var currPageIndex = -1;
function highLight(){
	currPage = window.location.href;
	replaceTxt = window.location.protocol + "//" + window.location.host + "/";
	currPage = currPage.replace(replaceTxt,'');
	currPage = currPage.substring(0, currPage.indexOf('/'));
	//currPage = currPage.replace(/-/g,' ');
	currPage = currPage.toLowerCase();
	if(currPage == ''){ 
		jQuery(jQuery('.menuWrap li[id*="tab"]')[0]).addClass('menuActive'); 
	} else{
		returnIndex(currPage);
		if(currPageIndex == -1) returnIndex(urlParam('page_url_name'));
		if(currPageIndex >= 0){
			jQuery(jQuery('.menuWrap li[id*="tab"]')[currPageIndex]).addClass('menuActive');
		}
	}	
}
function returnIndex(txt){
	jQuery('.menuWrap li[id*="tab"]').each(function(ind){
		var elemTxt = jQuery(this).children('a').attr('class');
		elemTxt = elemTxt.toLowerCase();
		elemTxt = jQuery.trim(elemTxt);
		if(elemTxt == txt){ 
			currPageIndex = ind;
			return false;
		}
	});
	return false;
}

function findPageId(txt){	
	switch(txt){
		case 'package': returnIndex('pauschalreise'); break;
		case 'lastminute': returnIndex('lastminute'); break;
		case 'flight': 
		case 'charterflight': returnIndex('flug'); break;
		case 'hotel': 
		case 'cityhotel': 
		case 'clubholidays':
		case 'hotelcar':   
		case 'wellness': returnIndex('hotel'); break;
		case 'flighthotel': 
		case 'flighthotelcar': returnIndex('flug + hotel'); break;
		case 'flightcity': 
		case 'nurhotel': 
		case 'flughotel': 
		case 'cityhotellondon': 
		case 'cityhotelparis':
		case 'cityhotelny':
		case 'cityhotelberlin': returnIndex('städtereise'); break;
		case 'holidayHomes': returnIndex('ferienhaus'); break;
		default: break;
	}
	if(txt == 0){ returnIndex('start'); }
}

// This function will call when selected package was sold out.
function callNext(id,bookingId,IFF,pageId,supplier,hotelInfo,bookingUrl,roomsInfo,pageUrlName,airportName,tcTerms,tcTermsLink,supplierName) {
	var newId = id+1;	
	var hiddenObject = jQuery('#bookId'+newId);
	if(hiddenObject) {
		soldOutFlag = true;
		jQuery('#ID'+id).show();
		jQuery('#ID'+id).addClass('resortListDisabled');
		jQuery('#RESULT'+id).hide();
		bookingId = hiddenObject.attr('value');
		previousId = newId;		
		reCost(newId,bookingId,IFF,pageId,supplier,hotelInfo,bookingUrl,roomsInfo,pageUrlName,airportName,tcTerms,tcTermsLink,supplierName);		
	} 
	if(hiddenObject.length == 0) cancelWaitPage();	
}


function callReload(no) {
	var address =  window.location+"" ;	
	if(document.getElementById('searchParam').value == '')
	{
	window.location =  address.split("?")[0] + "?check="+no+"&pageId="+document.getElementById('pageIdentifier').value;
	}else{
	window.location =  address.split("?")[0] + "?check="+no+"&pageId="+document.getElementById('pageIdentifier').value+"&search="+document.getElementById('searchParam').value;
	}

}
	
function setEvents(events) {
	s.events = s.events+ events;
}

