var elementArray = new Array();
var Counter = 0;
var PreviousTab = null;

function GetGlobalCalendarSettings() {
	return {
                                                  showOn: 'button', 
                                                  buttonImage: '/pics/calendar.gif', 
                                                  buttonImageOnly: true, 
                                                  nextText: '>>', 
                                                  prevText: '<<', 
                                                  dateFormat: 'yy-mm-dd',
                                                  firstDay: 1, 
                                                  minDate: new Date(),
                                                  changeFirstDay: false 
          };
}
                              
function ShowNiceField(JquerySelector) 
{
	// Add a hidden box before the existing box, rename the exsting one, on change copy value to hidden box (post box), convert date in visible box to a 'nice' date
	var Obj = $(JquerySelector);
	ObjName = Obj.attr('name');
	Obj.attr('name', ObjName + "_nice");
	Obj.parent().prepend("<input name=\"" + ObjName + "\" value=\"\" type=\"hidden\" />");
	Obj.change(function() { 
		var CurrentValue = $(this).attr('value');
		if(CurrentValue.indexOf("-") > 0) { // not a nice date detected, copy to hidden field and convert to current!
			$(this).parent().find("input[type='hidden']").attr('value', CurrentValue); 
			var NiceDate = Date.parseExact(CurrentValue, "yyyy-MM-dd");
			var DateStr = NiceDate.toString("d MMMM yyyy");
			$(this).attr('value', DateStr);
		}
	});
	Obj.attr('readonly', 'readonly');
	Obj.trigger('change');
}

function IsInPast(Date1, Date2) {
	if(Date1.length < 1 || Date2.length < 1) {
		return false;
	}
	var DateObj1 = Date.parseExact(Date1, "yyyy-MM-dd");
	var DateObj2 = Date.parseExact(Date2, "yyyy-MM-dd");	
	if(DateObj1 < DateObj2) {
		return true;
	} else {
		return false;
	}
}

$(document).ready(function(){
    $("#header .page-title").css("height", "43px");
	
    $( "#content-bottom .block" ).each(
        function( ){
            elementArray[Counter] = this;
            Counter++;    
        }
    );
	
    /* jQuery wrong order -> Fix */
    elementArray.reverse();
	
    fadeInNextElement(elementArray);
	
	InitializeWebSearch();

	
    if($('#iRack_room').length > 0){
		$('.iRack_tab').click(function(){
		  iRackShowTab($(this));
		});
		
		iRackShowTabInit($('.iRack_tab'));
		
		if($('a.iRack_result.moreinfo_url').length > 0){
		  $('a.iRack_result.moreinfo_url').fancybox({ 
			hideOnContentClick: false,
			margin: 0,
			padding: 0,
			titleShow: false,
			width: 727,
			height: 320,
			showNavArrows: false,
			autoDimensions: false,
			overlayOpacity: 0.7
		  });
		}
    }
	
  if($('.slideshow').length > 0){
    SlideShow();
  }
  
});

var PreviousItem = 0;


function SlideShow(){
  var TotalItems = $('.slideshow img').length;
  var move = 60;      
  var moveLeft = 11;
  
  $('.slideshow img').eq(PreviousItem).css({ zIndex : 2 });
  
  if(PreviousItem + 1 < TotalItems){
    NextItem = PreviousItem + 1;
  } else {
    NextItem = 0;
  }
  
  $('.slideshow img').eq(NextItem).css({ zIndex : 1 , display : 'block', width : '1200px' });
  
  $('.slideshow img').eq(PreviousItem).animate({'width':'980px'}, 4000, function(){
    $('.slideshow img').eq(PreviousItem).fadeOut('slow', function(){
      PreviousItem = NextItem;
      SlideShow();
    });
  });  
}

var DateList = new Array();

function InitializeWebSearch()
{
	var CalendarSettings = GetGlobalCalendarSettings();
	
	CalendarSettings.onSelect = function(CalendarDate) {
		var BlockId = $(this).parent().parent().parent().parent().parent().attr('id');
		var CalendarDate = Date.parseExact(CalendarDate, 'yyyy-MM-dd');
		
		if($(this).hasClass('date_from_field_input')) {
			var ToDate = Date.parseExact($('#'+ BlockId +' .date_to_field_input').parent().find("input[type='hidden']").val(), 'yyyy-MM-dd');
			
			if((ToDate == null)) {
				$('#'+ BlockId +' .date_to_field_input').val(CalendarDate.add(1).days().toString('yyyy-MM-dd'));
			} else {
				if(parseInt(CalendarDate.toString('yyyyMMdd')) >= parseInt(ToDate.toString('yyyyMMdd'))) {
					$('#'+ BlockId +' .date_to_field_input').val(CalendarDate.add(1).days().toString('yyyy-MM-dd'));
				}
			}
		}
		
		if($(this).hasClass('date_to_field_input')) {
			var FromDate = Date.parseExact($('#'+ BlockId +' .date_from_field_input').parent().find("input[type='hidden']").val(), 'yyyy-MM-dd');
			
			if((FromDate != null) && (parseInt(CalendarDate.toString('yyyyMMdd')) <= parseInt(FromDate.toString('yyyyMMdd')))) {
				$('#'+ BlockId +' .date_from_field_input').val(CalendarDate.add(-1).days().toString('yyyy-MM-dd'));
			}
		}
		
		$('#'+ BlockId +' .date_from_field_input').trigger('change');
        $('#'+ BlockId +' .date_to_field_input').trigger('change');
		
		/* double check if the period is valid */
		var AvailableDate = true;
		
		var FromDate 	= Date.parseExact($('#'+ BlockId +' .date_from_field_input').parent().find("input[type='hidden']").val(), 'yyyy-MM-dd');
		var ToDate 		= Date.parseExact($('#'+ BlockId +' .date_to_field_input').parent().find("input[type='hidden']").val(), 'yyyy-MM-dd');
		
		if((FromDate != null) && (ToDate != null)) {
			var CheckDate = FromDate;
			
			while(AvailableDate && (parseInt(CheckDate.toString('yyyyMMdd')) < parseInt(ToDate.toString('yyyyMMdd')))) {
				var Year 	= CheckDate.getFullYear();
				var Month 	= (CheckDate.getMonth() + 1);
				var Day 	= CheckDate.getDate();
				
				if( (DateList[BlockId] == undefined) || (DateList[BlockId][Year +'-'+ Month] == undefined) || (DateList[BlockId][Year +'-'+ Month][Day] == undefined) || (DateList[BlockId][Year +'-'+ Month][Day] == false) ) {
					AvailableDate = false;
				}
				
				CheckDate.add(1).days();
			}
		}
		
		if(!AvailableDate) {
			alert('helaas is deze periode niet beschikbaar');
			$('#'+ BlockId +' input[type=submit]').attr("disabled","disabled");
			$('#'+ BlockId +' input[type=submit]').addClass("disabled");
		} else {
			$('#'+ BlockId +' input[type=submit]').removeAttr("disabled");
			$('#'+ BlockId +' input[type=submit]').removeClass("disabled");
		}
	}
	
	CalendarSettings.beforeShowDay = function(CalendarDate) {
		var BlockId = $(this).parent().parent().parent().parent().parent().attr('id');
		
		if($(this).hasClass('date_from_field_input')) {
			var Year 	= CalendarDate.getFullYear();
			var Month 	= (CalendarDate.getMonth() + 1);
			var Day 	= CalendarDate.getDate();
			
			if( (DateList[BlockId] != undefined) &&
				(DateList[BlockId][Year +'-'+ Month] != undefined) &&
				(DateList[BlockId][Year +'-'+ Month][Day] != undefined) ) {
				return [DateList[BlockId][Year +'-'+ Month][Day]];
			}
			
			return [false];
		}
		
		if($(this).hasClass('date_to_field_input')) {
			var FromDate = Date.parseExact($('#'+ BlockId +' .date_from_field_input').parent().find("input[type='hidden']").val(), 'yyyy-MM-dd');
			
			if(FromDate == null) {
				if(parseInt(parseInt(CalendarDate.toString('yyyyMMdd'))) > Date.today().toString('yyyyMMdd')) {
					return [true];
				} else {
					return [false];
				}
			}
			
			if(parseInt(CalendarDate.toString('yyyyMMdd')) <= parseInt(FromDate.toString('yyyyMMdd'))) {
				return [false];
			}
			
			var AvailableDate = true;
			var CheckDate = FromDate;
			
			while(AvailableDate && (parseInt(CheckDate.toString('yyyyMMdd')) < parseInt(CalendarDate.toString('yyyyMMdd')))) {
				var Year 	= CheckDate.getFullYear();
				var Month 	= (CheckDate.getMonth() + 1);
				var Day 	= CheckDate.getDate();
				
				if( (DateList[BlockId] == undefined) || (DateList[BlockId][Year +'-'+ Month] == undefined) || (DateList[BlockId][Year +'-'+ Month][Day] == undefined) || (DateList[BlockId][Year +'-'+ Month][Day] == false) ) {
					AvailableDate = false;
				}
				
				CheckDate.add(1).days();
			}
			
			if(AvailableDate) {
				return [true];
			} else {
				return [false];
			}
		}
		

	}
	
	CalendarSettings.onChangeMonthYear = function(Year, Month, Instance) {
		var BlockId 	= $(this).parent().parent().parent().parent().parent().attr('id');
		var PackageId 	= /iRack_room_([0-9]*)/.exec(BlockId)[1];
		
		if(DateList[BlockId] == undefined) {
			DateList[BlockId] = new Array();
		}
		
		if(DateList[BlockId][Year +'-'+ Month] == undefined) {
			DateList[BlockId][Year +'-'+ Month] = new Array();
				
			$.ajax({
				url: '/IManager/RackCB/Availability/1/'+ PackageId + '/' + Month + '/' + Year,
				dataType: "json",
				async: false,
				success: function(DayList) {
					for (Day in DayList) {
						DateList[BlockId][Year +'-'+ Month][Day] = DayList[Day];
					}
				}
			});
		}
	}
	
	/* load initial calendar information for current month */
	$('#content .kamers .calendar2 .iRack_web_search .date_from_field_input').each(function(){
		var BlockId 	= $(this).parent().parent().parent().parent().parent().attr('id');
		var PackageId 	= /iRack_room_([0-9]*)/.exec(BlockId)[1];
		
		if(DateList[BlockId] == undefined) {
			DateList[BlockId] = new Array();
		}
		
		var Year 	= Date.today().getFullYear();
		var Month 	= (Date.today().getMonth() + 1);
		
		if(DateList[BlockId][Year +'-'+ Month] == undefined) {
			DateList[BlockId][Year +'-'+ Month] = new Array();
				
			$.ajax({
				url: '/IManager/RackCB/Availability/1/'+ PackageId + '/' + Month + '/' + Year,
				dataType: "json",
				async: false,
				success: function(DayList) {
					for (Day in DayList) {
						DateList[BlockId][Year +'-'+ Month][Day] = DayList[Day];
					}
				}
			});
		}
	});
	
	/* Make the date display fields nice */
	ShowNiceField('#content .kamers .calendar2 .iRack_web_search .date_from_field_input');
	ShowNiceField('#content .kamers .calendar2 .iRack_web_search .date_to_field_input');
	
	/* initialize calendar objects */
	$('#content .kamers .calendar2 .iRack_web_search .date_from_field_input').datepicker(CalendarSettings);
	$('#content .kamers .calendar2 .iRack_web_search .date_to_field_input').datepicker(CalendarSettings);
}


function iRackShowTabInit(TabClass){

  TabClass.each(function(){
    var iRackRoomDiv        = $('#iRack_room');
    var iRackArrangementDiv = $('#iRack_arrangement');
    if(!$(this).hasClass('active')){
      if($(this).hasClass('room')){
        iRackRoomDiv.css('display','none');
      } else {
        iRackArrangementDiv.css('display','none');
      }
    } else {
      if($(this).hasClass('room')){
        iRackRoomDiv.css('display','block');
      } else {
        iRackArrangementDiv.css('display','block');
      }
    }
  });
}

function iRackShowTab (ClickedTab){
  if(PreviousTab != null){
    if(ClickedTab.attr('class') == PreviousTab.attr('class')){
      return false;
    }
  }
      var iRackRoom = $('#iRack_room');
      var iRackArrangement = $('#iRack_arrangement');
      
      if(!ClickedTab.hasClass('room')){
        iRackRoom.css('display','none');
        if(PreviousTab != null){
          PreviousTab.removeClass('active');
        } else {
          $('.iRack_tab.active').removeClass('active');
        }
        iRackArrangement.css('display','block');
        ClickedTab.addClass('active');
        PreviousTab = ClickedTab;
      } else {
        var _this = ClickedTab;
        iRackArrangement.css('display','none');
        iRackRoom.css('display','block');
        if(PreviousTab != null){
          PreviousTab.removeClass('active');
        } else {
           $('.iRack_tab.active').removeClass('active');
        }
        _this.addClass('active');
        PreviousTab = _this;
      }
}

function submitForm(){
  return true;
}

function fadeInNextElement(elementArray)
{
    if (elementArray.length > 0)
    {
        var element = elementArray.pop();
        $(element).fadeIn('slow', function()
        {
            $(element).css('display', 'inline');
             fadeInNextElement(elementArray);
        });
    }
}

function checkUl(){
    $( "ul" ).each(
        function( ){
            if(!($(this).children("li").length > 0)){
                $(this).css('display', 'none');    
            }   
        }
    );
}

function showDiv(element, roomType){
    element = $("a." + element);
    var bActive = false;
    $('.quick-buttons a').each(function(){
        if($(this).hasClass("active")){
            if(roomType == null){
                roomType = "";
            }
            slideDownDiv(element, this, roomType);    
            bActive = true;
        } 
    });
    
    if(!bActive){
        slideDownDiv(element, 'none', roomType);
    }
} 

function slideDownDiv(element, active, roomType){

    if(active != "none"){
        if($(active).attr('rel') != $(element).attr('rel')){
            $('#'+$(active).attr('rel')).slideUp("slow", function(){
                 $(active).removeClass("active");
                 slider(element, roomType);
            });
        } else {
            $('#'+$(element).attr('rel')).slideUp("slow");
            $(element).removeClass("active");    
        }    
    } else {
        slider(element, roomType);
    }  
}

function slider(element, roomType){

    if($(element).attr('rel') == "kamer"){
        if($('#kamer').css('display') == 'none'){            
            $('input#kamerType').attr('value', roomType); 
            $('#kamer').slideDown("slow");
            $("a.kamerBtn").addClass("active");
            window.scroll(0,0)
        }
    }
    if($(element).attr('rel') == "arrangement"){
        if($('#arrangement').css('display') == 'none'){
            $('#arrangement').slideDown("slow");
            $("a.arrangementBtn").addClass("active");
        }
    }
    if($(element).attr('rel') == "nieuwsbrief"){
        if($('#nieuwsbrief').css('display') == 'none'){
            $('#nieuwsbrief').slideDown("slow");
            $("a.nieuwsbriefBtn").addClass("active");
        }
    }
}

function switchPic(picture, uid){
    var currentElement = "<img src='" + picture + "' />";
    if($('#rightPic_'+uid).html() != currentElement){
        $('#rightPic_'+uid + ' img.bigImage').attr('src',picture);
    }
}
/*
DO NOT USE GLOBAL ITEM REPLACES! IT CAUSES PROBLEMS ON OTHER PARTS OF THE SITE!
$(function()
{
  if(!$('.date').hasClass('column')){
	      $('.date_from_field_input, .date_to_field_input').datepicker({  showOn: 'button', 
                                      buttonImage: '/pics/calendar.gif', 
                                      buttonImageOnly: true, 
                                      nextText: '>>', 
                                      prevText: '<<', 
                                      dateFormat: 'dd MM, yy',
                                      firstDay: 1, 
                                      minDate: new Date(),
                                      changeFirstDay: false 
                                      });
  }
}); */


function GoBook(RoomToBook) {
  var ElementToSlide = RoomToBook.parents('div:eq(3)').find('.iRack-room');
  $(ElementToSlide).animate({'right':'0px'});
  
  return false;
}
