﻿/*
=======================================================================================
 HOTELES RH                                                     Site produced by KOALAB        
 Copyright 2007                                                   http://www.koalab.com
=======================================================================================
*/

var onLoadingAvailabilityScreen;

$(document).ready(function(){
    //ocultamos los dialogos de la suscripción/desuscripción de la newsletter
    $("div#newsletter p.ajax-load").hide();
    $("#divNewsletterSubscribed").hide();
    $("#divNewsletterUnsubscribed").hide();
    
    $("#imgLoginOnLoad").hide();
    $("#btnLogin").click(function(){ login(); });
   
   //mostramos los enlaces correspondientes a los distintos idiomas
   $("#navLanguage").hide();
   $("div#headerIndex #selectImgLanguage").click(function(e)
   {
        e.preventDefault();
   });
   $("div#headerIndex #selectImgLanguage").mouseover(function() {
       $("#navLanguage").slideDown(function(){
          $().mousemove(function(e){
          var offset = $("#navLanguage").offset();
          var x = 88 + offset.left;
          var y = 130 + offset.top;

          if ((e.pageX < offset.left || e.pageX > x) || (e.pageY < offset.top || e.pageY > y))
          {
             $("#navLanguage").hide();
          }          
         });
       }); 
   });
   
   var cacheImage1 = new Image();
        cacheImage1.src = '/imgLib/bg-load-availability.jpg';
   $.get("/content/availability/onload.html", function(data){
      onLoadingAvailabilityScreen = '<div id="preloaderAvail">' + data + '</div>';
      $('body').append(onLoadingAvailabilityScreen);
      $('#preloaderAvail').hide();
      $(".load-availability").click(function(e) { $('body').html(onLoadingAvailabilityScreen); });
    });

    BannerController.init();
    MainBannerController.init();
    BookingFormManager.init();
    
    BindEnterEvents('#txbUsername', '#btnLogin');
    BindEnterEvents('#txbPassword', '#btnLogin');
    BindEnterEvents('#tbNewsletter', '#btnNewsletter');
    
    $(".date-pick").datePicker({clickInput:true, createButton:false});
    BindBookingsCalendars("#tbArrived", "#tbExit");
    
    if(Sys.Services.AuthenticationService.get_isLoggedIn())
    {
        $("#loggedUserLinks").css("display","inline");
        $("#headerIndex fieldset, #headerIndex #MemberLinks").hide();
    }
    $("#loggedUserLinks .logout").click(function(e){
        Sys.Services.AuthenticationService.logout('/', null, null, null);
        e.preventDefault();
    });

    numhabs(parseInt($('#n_hab').val()) - 1);
});


function BindEnterEvents(textBox, button)
{
    $(textBox).keydown(function(event){
        if(event.which || event.keyCode)
        {
            if ((event.which == 13) || (event.keyCode == 13)) 
            {
                $(button).trigger('click');
                return false;
            }
        } 
        else 
            return true;
    });
}

function BindBookingsCalendars(startDateId, endDateId)
{
    $(startDateId).bind(
		'dpClosed',
		function(e, selectedDates)
		{
			var d = selectedDates[0];
			if (d) {
				d = new Date(d);
				$(endDateId).dpSetStartDate(d.addDays(1).asString());
			}
		}
	);
	$(endDateId).bind(
		'dpClosed',
		function(e, selectedDates)
		{
			var d = selectedDates[0];
			if (d) {
				d = new Date(d);
				$(startDateId).dpSetEndDate(d.addDays(-1).asString());
			}
		}
	);
}

var BannerController =
{
    init : function()
    {   
        BannerController.refreshBanner();
        $('p#linksInfoOffers a.link-prev').click(function(){ BannerController.prev(); return false; });
        $('p#linksInfoOffers a.link-next').click(function(){ BannerController.next(); return false; });
    },
    next : function()
    {
        BannerController.CurrentBanner  = BannerController.CurrentBanner == bannersArray.length - 1 ? 0 : ++BannerController.CurrentBanner;
        BannerController.refreshBanner();
    },
    prev : function()
    {
        BannerController.CurrentBanner  = BannerController.CurrentBanner == 0 ? bannersArray.length-1 : --BannerController.CurrentBanner;
        BannerController.refreshBanner();
    },
    refreshBanner : function()
    {
        $("#imgBanner").html('');
        
        if(BannerController.CurrentTimeOut != 'undefined')
        {
            clearTimeout(BannerController.CurrentTimeOut);
            clearTimeout(BannerController.CurrentLoadTimeOut);
        }
     
      BannerController.CurrentLoadTimeOut = setTimeout(function(){ $("#imgBanner").html(bannersArray[BannerController.CurrentBanner]); }, 900);
      if(bannersArray.length-2 < 1)
          return;
      BannerController.CurrentTimeOut = setTimeout(function(){ BannerController.next(); }, 7000);
    },
    CurrentBanner : 0,
    CurrentTimeOut : 'undefined',
    CurrentLoadTimeOut : 'undefined'
}
var MainBannerController =
{
    init: function() {
        MainBannerController.Banners = $("#widgetImg .home-banner");
        MainBannerController.refreshBanner();
    },
    refreshBanner: function() {
        if (MainBannerController.CurrentTimeOut != 'undefined') {
            clearTimeout(MainBannerController.CurrentTimeOut);
            clearTimeout(MainBannerController.CurrentLoadTimeOut);
        }
        MainBannerController.Banners.fadeOut('slow');
        ++MainBannerController.CurrentBanner;
        MainBannerController.CurrentLoadTimeOut = setTimeout(function() { $("#widgetImg .home-banner:eq(" + MainBannerController.CurrentBanner + ")").fadeIn('slow'); }, 900);
        if (MainBannerController.Banners.length == MainBannerController.CurrentBanner)
            MainBannerController.CurrentBanner = -1;

        MainBannerController.CurrentTimeOut = setTimeout(function() { MainBannerController.refreshBanner(); }, 9000);
    },
    Banners: null,
    CurrentBanner: -1,
    CurrentTimeOut: 'undefined',
    CurrentLoadTimeOut: 'undefined'
}
var HotelsDictionary =
{
    '0'  : 'Select a Hotel',
    'RHCANF5': 'Hotel RH Canfali **',
    'RHINTER6': 'Hotel RH Internacional **',
    'RHSOL4': 'Hotel RH Sol *** / Estudios Sol',
    'RHRIV8': 'Hotel RH Riviera ***',
    'RHGI': 'Hotel RH Gijón ***',
    'RHPRIN3': 'Hotel RH Princesa ****',
    'RHCOR2': 'Hotel RH Corona del Mar ****',
    'RHBAYI9': 'Hotel RH Bayren ****',
    'RHBAYII10': 'Hotel RH Bayren Parc ****',
    'RHCAS7': 'Hotel RH Casablanca ****',
    'RHPOR11': 'Hotel RH PortoCristo ****',
    'NOVOG': 'RH Novogolf Apartments'
}
var BookingFormManager =
{
    benidorm: ['RHCANF5', 'RHINTER6', 'RHSOL4', 'RHPRIN3', 'RHCOR2'],
    gandia: ['RHRIV8', 'RHGI', 'RHBAYI9', 'RHBAYII10'],
    peniscola: ['RHCAS7', 'RHPOR11'],
    torrevieja: ['NOVOG'],
    all: ['0', 'RHCANF5', 'RHINTER6', 'RHSOL4', 'RHPRIN3', 'RHCOR2', 'RHRIV8', 'RHGI', 'RHBAYI9', 'RHBAYII10', 'RHCAS7', 'RHPOR11', 'NOVOG'],
    updateHotels: function() {
        var ddlDestination = document.getElementById("ddlDestination");
        var destinationIndex = ddlDestination.options[ddlDestination.selectedIndex].value;

        var ddlHotel = document.getElementById("ddlHotel");
        ddlHotel.length = 0;
        ddlHotel.options[0] = new Option('Select a Hotel', '');
        if (destinationIndex == '0') {
            $("#ddlHotel").attr("disabled", "true");
            for (h = 0; h < BookingFormManager.all.length; h++) {
                ddlHotel.options[h] = new Option(HotelsDictionary[BookingFormManager.all[h]], BookingFormManager.all[h]);
            }
            return;
        }
        $("#ddlHotel").removeAttr("disabled");
        var hotelsArrayCode = destinationIndex == '1' ? 'benidorm' : destinationIndex == '2' ? 'gandia' : destinationIndex == '3' ? 'peniscola' : 'torrevieja';
        var hotelsArray = BookingFormManager[hotelsArrayCode];

        for (h = 0; h < hotelsArray.length; h++) {
            ddlHotel.options[h] = new Option(HotelsDictionary[hotelsArray[h]], hotelsArray[h]);
        }

    },
    datesValidation: function(fieldValue) {
        var RegExPattern = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
        if ((fieldValue.match(RegExPattern)) && (fieldValue != ''))
            return true;
        else
            return false;
    },
    launchPopWindow: function() {
        var destination = $('#ddlDestination').val();
        var hotel = $('#ddlHotel').val();
        var checkIn = $('#tbArrived').val();
        var checkOut = $('#tbExit').val();

        var w = 800, h = 600;
        var popW = 800, popH = 600;

        if (document.all) {
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }
        else if (document.layers) {
            w = window.innerWidth;
            h = window.innerHeight;
        }

        var leftPos = (w - popW) / 2, topPos = (h - popH) / 2;
        window.open('/content/bookings/transport.aspx?ddlDestination=' + destination + '&ddlHotel=' + hotel + '&tbArrived=' + checkIn + '&tbExit=' + checkOut, 'bookingPopWindow', 'status=1, location=0, scrollbars=1, resizable=1, menubar=0, toolbar=0, width=' + popW + ',height=' + popH + ', top=' + topPos + ', left=' + leftPos);
    },
    init: function() {
        $("#ddlDestination").change(function() {
            BookingFormManager.updateHotels();
        });

        $("#ddlHotel").change(function() {
            if ($("#ddlHotel").val() == 'RHPOR11') {
                for (i = 1; i <= 5; i++) {
                    var selector = document.getElementById('ddlBabies' + i);
                    selector.options.length = 2;
                }
            }
            else {
                for (i = 1; i <= 5; i++) {
                    var selector = document.getElementById('ddlBabies' + i);
                    if (selector.options.length == 2)
                        selector.options[2] = new Option('2 Babies', '2');
                }
            }
        });

        $("#boton").click(function(e) {
            if ($("#ddlDestination").val() == '0' || $("#ddlHotel").val() == '0') {
                alert('Please. Select a destination and hotel. Thank you');
                return false;
            }
            else {
                if (!BookingFormManager.datesValidation($('#tbArrived').val()) || !BookingFormManager.datesValidation($('#tbExit').val())) {
                    alert('Please enter valid check-in and check-out dates for your booking');
                    e.preventDefault();
                    return false;
                }
            }
        });

        BookingFormManager.updateHotels();
    }
};

function login() 
{
        $("#btnLogin").hide();
        $("#imgLoginOnLoad").show();
        Sys.Services.AuthenticationService.login(
            $get('txbUsername').value,
            $get('txbPassword').value,
            false,
            null,
            null,
            loginComplete,
            loginError,
            null);
}
function loginComplete(result)
{
        $("#imgLoginOnLoad").hide();
        if(result)
        {
            $("#headerIndex fieldset").hide();
            $("#headerIndex p#MemberLinks").fadeIn('slow').html("<strong>Thank you for authenticating yourself.</strong>.");
            $("#loggedUserLinks").css("display","inline");
            setTimeout(function(){ $("#headerIndex p#MemberLinks").fadeOut('slow'); }, 7000);
        }
        else
        {
            $("#imgLoginOnLoad").hide();
            $("#btnLogin").show(); 
            alert('The username and password do not coincide with any user. Please try again, thank you.'); 
        }  
}
function loginError(result)
{
        $("#imgLoginOnLoad").hide();
        $("#btnLogin").show();  
        alert('An authentication error has occurred. Please try again in a few moments, thank you.');
}

// emailCheck by Sandeep V. Tamhankar (stamhankar@hotmail.com)
function emailCheck(emailStr, log) {
	if (!log) log = alert;
	var checkTLD=1;
	var knownDomsPat=/^(es|cat|com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		log("The e-mail address supplied is incorrect. ");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			log("The e-mail address account username is incorrect");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			log("The domain specified is incorrect");
			return false;
		}
	}	
	if (user.match(userPat)==null) {
		log("The e-mail address account username is incorrect");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				log("Incorrect IP address");
				return false;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			log("The domain specified is incorrect");
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		log("The domain extension is incorrect");
		return false;
	}
	if (len<2) {
		log("The e-mail account domain not found");
		return false;
	}
	return true;
}	


//newsletter 
function doNewsletterSubscription(){
    $("div#newsletterFields").hide();
    $("div#newsletter p.ajax-load").show();
    
    var _email = $("#tbNewsletter").val();

    var subscriptionStatus = true; 
    for(var i = 0; i < document.aspnetForm.subscription.length; i++){
        if(document.aspnetForm.subscription[i].checked){
            subscriptionStatus = document.aspnetForm.subscription[i].value;
        }
    }
    $.post("/jsLib/newsletter/manager.ashx", { email: _email, status: subscriptionStatus },newsletterSubscriptionCallback );

    return false;
}
function newsletterSubscriptionCallback(result){
   $("div#newsletter p.ajax-load").hide();
   switch (result){
        case "-1":
            //email vacio
            $("div#newsletterFields label strong").html("You must enter your e-mail");
             $("div#newsletterFields label strong").css("color", "red");
            $("div#newsletterFields").show();
        break;
        case "1":
            //email incorrecto
            $("div#newsletterFields label strong").html("Your e-mail is incorrect");
            $("div#newsletterFields label strong").css("color", "red");
            $("div#newsletterFields").show();
        break;
        case "2":
            //añadido a la newsletter
            $("div#divNewsletterSubscribed").show();
        break;
        case "3":
            //eliminado de la newsletter
            $("div#divNewsletterUnsubscribed").show();
        break;            
   }
}
function onNewsletterSubscriptionError (result){
    $("div#newsletter p.ajax-load").hide();
    $("div#newsletterFields").show();
}

// Función que proporciona para cada habitación seleccionada
// el número de personas por habitación correspondientes
function numhabs(cuantas) {
    if (cuantas==4)
    {
       document.location.href="/content/bookings/groups.aspx"
    }
	for(i=2;i<=4;i++){
		document.getElementById("hab"+i).style.display = "none";
	}	
	for(i=1;i<=cuantas+1;i++){
		document.getElementById("hab"+i).style.display = "block";	
	}
	if(cuantas==0) {
		var hab1 = document.getElementById("hab1");
		hab1.getElementsByTagName("label")[0].style.display = "none";	
	}else {
		var hab1 = document.getElementById("hab1");
		hab1.getElementsByTagName("label")[0].style.display = "block";	
	}
}