/*
    Initialize Events
    -------------------------------------------------------------------------------*/
    $(document).ready(function(event){
        $story_titles                           = $('#vacation_story #story_titles');
        $story_values                           = $('#vacation_story #story_values');
        $story_list                             = $('#vacation_story dl ol');
        $story_list_y                           = $story_list.position().top;
        $story_toggle                           = $('#vacation_story dl a#story_toggle');
        $story_promo                            = $('#promo_0').attr(selection_season+'Message');
        $stories                                = $story_list.find('div.current a').length;
        
        $vacation_calendar                      = $('#vacation_calendar #schedule dl div .calendar');
        
        $suitcase_dates                         = $('#suitcase_pricing div span label cite[details="dates"]');
        $suitcase_guests                        = $('#suitcase_pricing div span label cite[details="guests"]');
        $suitcase_lodging                       = $('#suitcase_pricing div span label cite[details="lodging"]');
        $suitcase_package                       = $('#suitcase_pricing div span label cite[details="package"]');
        $suitcase_pricing                       = $('#suitcase_pricing div p cite b[id]');
    
        $rate_keys                              = $('#rate_key ol');
        $promo_code                             = $('input[name="promo_url"]').val();
        $('#promo_0').length > 0                ? $resoPhone = $('#promo_0').attr('resoPhone') : $resoPhone = '1-800-419-4615';

        
        avail                                   = '';
        session_dirty                           = false;
        
        previous_month_button                   = 'active';
        next_month_button                       = 'active';
        

        
        $story_list.find('a').live('click',toggle_vacation_story);
        $('a#story_toggle').live('click',coerce_stories);
        
        $('a.backward').live('click',prevMonth);
        $('a.forward').live('click',nextMonth);


        // handle GUESTS selections
        $('#adults').live($.browser.msie   ? 'click':'change', updateGuests);
        $('#children').live($.browser.msie ? 'click':'change', updateGuests);
        $('#infants').live($.browser.msie  ? 'click':'change', updateGuests);


        // handle LODGING selections
        $('#vacation_lodging').live('mouseleave',{'type':'leave'},update_vacation_lodging);
        $('#vacation_lodging ol a').live('click',{'type':'click'},update_vacation_lodging);
        $('#vacation_lodging ol a').live('mouseover',{'type':'hover'},update_vacation_lodging);
        
        
        // handle PACKAGE selections
        $('#package_inclusions a[prefixx]').live('click',update_package);
        $('#package_inclusions div a[href*="inclusion"]').live('click',{'type':'package_inclusions'},toggle_inclusion);
        $('#suitcase_inclusions a[href*="inclusion"]').live('click',{'type':'suitcase_inclusions'},toggle_inclusion);
        
        
        $('#smuggs_alert_area').live('click',toggle_smuggs_alert);
        
        $('a.vacation_lodging_details').live('click',toggle_smuggs_details);
        $('a.close_details').live('click',toggle_smuggs_details);
        
        $('#your_vacation_details_btn').live('click',{'type':'details'},toggle_vacation_details);        
        $('#your_vacation_details').live('click',{'type':'toggle'},toggle_vacation_details);
        
        $('a#promo_added').live('click',toggle_promotion);
        $('a[rel="save"]').live('click',external_link);
        $('a.book_now').live('click',book_now);
    
    
    
        $('#suitcase_pricing').supersleight();
    
    
        $('#reso_phone_display').html($resoPhone);
        $('#lodging_error_phone').html($resoPhone);
        $('#lodging_info_phone').html($resoPhone);
        
        
        $('form#select_guests select#adults').val(selection_adults);
        $('form#select_guests select#children').val(selection_children);
        $('form#select_guests select#infants').val(selection_infants);
        
        $('#vacation_lodging ol #ROOM_'+selected_room).click();
        
        $('a.book_now').hide();
        
    
    
        toggle_vacation_story('current');
        updatePage();
    });
    
    
    
    
    
/*
    Vacation Planner Functions
    -------------------------------------------------------------------------------*/
    
    
    /* Track Session
    -------------------------------------------*/
    function trackSession(){
        $.post('includes/index.ajax.php?function=trackSession',null,function(message){ message && show_this_alert ? alert(message):''; });
    }
    
    
    /* Toggle Smuggs Alert
    -------------------------------------------*/
    function toggle_smuggs_alert(e){
        $('#smuggs_alert_area').is(':visible')  ? $('#smuggs_alert_area').hide() : $('#smuggs_alert_area').show();
    }
    
    
    /* Toggle Smuggs Details
    -------------------------------------------*/
    function toggle_smuggs_details(e){        
        if($('#vacation_lodging_details').is(':visible')){
            $('a.close_details').fade_out();
            $('#vacation_lodging_details').fade_out();
        } else {
            $('a.close_details').fade_in();
            $('#vacation_lodging_details').fade_in();
        }
        
        
        return false;
    }
    
    
    /* Toggle Vacation Details
    -------------------------------------------*/
    function toggle_vacation_details(e){
        e.data.type                            == 'details' ? makeGuestDetails() : '';
        $('#your_vacation_details').toggle();

        
        return false;
    }
    
        
    
    
    /* Toggle Vacation Story
    -------------------------------------------*/
    function toggle_vacation_story(type){
        if(type                                == 'current'){
            if(selection_season != ''          || !isIE6){
                $current_story                  = $story_list.find('div[season="'+selection_season+'"] a:first-child').attr('href').replace('?story=','');
            } else {
                $current_story                  = $story_list.find('div[class="current"] a:first-child').attr('href').replace('?story=','');
                $story_list.find('div[class="current"] a:first-child').click();
            }
            
            
            if($('#story_values img[story="'+$current_story+'"]').attr('url') != ''){
                var $video      = $('#story_values img[story="'+$current_story+'"]').attr('url');
                var $image      = $('#story_values img[story="'+$current_story+'"]').attr('src');
                var $video_id   = $('#story_values img[story="'+$current_story+'"]').attr('id');
                
                swfobject.embedSWF('/media/video_player.swf?video_path='+$video+'&image_path='+$image,$video_id,'300','225','8.0.0','/media/expressInstall.swf','',{'wmode':'transparent'},{'video_path':$video,'styleclass':'current'});
                
                $('#vacation_story #story_titles div[season="'+selection_season+'"] h1:first-child').addClass('current');
            } else {
                $('#vacation_story #story_titles div[season="'+selection_season+'"] h1:first-child').addClass('current');
                $('#vacation_story #story_values div[season="'+selection_season+'"] img:first-child').addClass('current');
            }
            
            
            if($story_promo){
                $('#story_promo').html($story_promo).attr('season',selection_season);
                $story_list.find('div[season="'+selection_season+'"]').prepend('<a id="promo_added" href="?story=promo">'+$('#promo_0').attr('PromotionTitle')+'</a>');
                
                $('a#promo_added').click();
                $('#story_promo').fade_in();
                
                $stories < 6 ? $story_toggle.addClass('inactive') : $story_toggle.removeClass('inactive');
            } else {
                $stories < 6 ? $story_toggle.addClass('inactive') : $story_toggle.removeClass('inactive');
            }
        } else {
            if(!$(this).hasClass('current')){        
                $('#story_promo').is(':visible')? $('#story_promo').hide() : '';
                $('#story_titles h1.current').removeClass();
                $('#story_values img.current').removeClass();
                $('#story_values object.current').removeClass();
                $('#vacation_story dl ol a.current').removeClass('current');
            
            
                $current_story                  = $(this).attr('href').replace('?story=','');
                pageTracker._trackPageview('/vacation_planner/stories/'+$current_story);


                $('#story_titles h1[story="'+$current_story+'"]').addClass('current');
                $(this).addClass('current');
                
                if($('#story_values img[story="'+$current_story+'"]').attr('url') != ''){            
                    var $video                  = $('#story_values img[story="'+$current_story+'"]').attr('url');
                    var $image                  = $('#story_values img[story="'+$current_story+'"]').attr('src');
                    var $video_id               = $('#story_values img[story="'+$current_story+'"]').attr('id');
                    
                    swfobject.embedSWF('/media/video_player.swf?video_path='+$video+'&image_path='+$image,$video_id,'300','225','8.0.0','/media/expressInstall.swf','',{'wmode':'transparent'},{'video_path':$video,'styleclass':'current'});
                }
            
                $('#story_values [id="'+$current_story+'"]').set_class('current');
            }
            
            
            return false;
        }
    }
    
    
    /* Coerce Stories
    -------------------------------------------*/
    function coerce_stories(e){
        $stories                                = $story_list.find('div.current a').length;
    
        $story_list_min                         = 200 - ($stories * 40);
        $story_list_max                         = 0;
    
        if($story_list_y                        > $story_list_min){
            $story_list_y                      -= 40;
            $story_list.animate({top:$story_list_y},300,check_coercion);
        } else if($story_list_y                 < $story_list_max){
            $story_list_y                      += 40;
            $story_list.animate({top:$story_list_y},300,check_coercion);
        }
    }
    
    
    /* Check Coercion
    -------------------------------------------*/
    function check_coercion(e){  
        $stories                                = $story_list.find('div.current a').length;
    
        $story_list_min                         = 200 - ($stories * 40);
     
        if($story_list_y                       <= $story_list_min){
            !$story_toggle.hasClass('toggled')  ? $story_toggle.addClass('toggled') : '';
        } else {
            $story_toggle.hasClass('toggled')   ? $story_toggle.removeClass('toggled') : '';
        }
    }
    
    
    
    /* Update Vacation Lodging
    -------------------------------------------*/
    function update_vacation_lodging(e){
        if(e.data.type                         == 'click'){
            if($(this).hasClass('available')){
                $('#vacation_lodging ol a.selected').removeClass('selected');
                $('#vacation_lodging dl div.current').removeClass('current');
                $('#vacation_lodging dl div.info').hide();
                
                
                $(this).addClass('selected current');
                $('#vacation_lodging dl div[lodge="'+$(this).attr('href').replace('?lodge=','')+'"]').addClass('current').show();
                
                
                selectRoom($(this).attr('id').replace('ROOM_','')); 
                updatePage();
                saveToSession('update_vacation_lodging', true);
            }
            
            
            return false;
        } else if(e.data.type                  == 'hover'){
            $('#vacation_lodging ol a').removeClass('current');              
            $('#vacation_lodging dl div').hide();
            $('#vacation_lodging dl div[lodge="'+$(this).attr('href').replace('?lodge=','')+'"]').show();
        
            $(this).addClass('current');
        } else if(e.data.type                  == 'leave' || e == 'update'){
            if($('#vacation_lodging ol a.selected').length > 0){
                $('#vacation_lodging ol a:not(.selected)').removeClass('current');
                $('#vacation_lodging dl div:not(.current)').hide();
                
                $('#vacation_lodging ol a.selected').addClass('current');
                $('#vacation_lodging dl div.current').show();
            }
        }
    }
    
        
    
    /* Check Package
    -------------------------------------------*/
    function check_package(package_object){
    	var $package							= package_object;
    	var $passes_requisition					= 0;
    	var $requisites							= $package.data().requisites;

                		
        $passes_requisition	   				   += ((!$requisites['min_adults']	   || ($requisites['min_adults']   == 'any'))	? 1 : selection_adults 	   >= $requisites['min_adults']);
        $passes_requisition	   				   += ((!$requisites['min_children']   || ($requisites['min_children'] == 'any'))	? 1 : selection_children   >= $requisites['min_children']);
        $passes_requisition	   				   += ((!$requisites['max_adults'] 	   || ($requisites['max_adults']   == 'any'))	? 1 : selection_adults 	   <= $requisites['max_adults']);
        $passes_requisition	   				   += ((!$requisites['max_children']   || ($requisites['max_children'] == 'any'))	? 1 : selection_children   <= $requisites['max_children']);
        $passes_requisition	   				   += ((!$requisites['min_nights'] 	   || ($requisites['min_nights']   == 'any'))	? 1 : selection_nights 	   >= $requisites['min_nights']);
        $passes_requisition	   				   += ((!$requisites['max_nights'] 	   || ($requisites['max_nights']   == 'any'))	? 1 : selection_nights 	   <= $requisites['max_nights']);
    	
    	
    	return ($passes_requisition			   == 6);
    }
    
    var package_chosen = '';
        
    /* Update Package
    -------------------------------------------*/
    function update_package(){
        if(selection_nights && selection_adults && selected_room){
            // if called directly from the click, then remember the package
            if ( $(this).attr('prefixx') ) package_chosen = $(this).attr('prefixx');

            $('#package_inclusions a[prefixx]').each(function(e){
            	if($(this).data().requisites){
            		if(check_package($(this))){
            			$(this).children('kbd').removeAttr('style');
            		} else {
            			$(this).children('kbd').css({'background-color':'transparent','border-color':'transparent'});
                		
                		smuggs_alert($requisites['message_fail'],6,$(this));
            		}
            	} else {
            		$(this).children('kbd').removeAttr('style');
            	}
            }); 


            if($(this).attr('prefixx')){
                if($(this).hasClass('package_selected')){
                    $(this).attr('class','package_title');
                    
                    
                    selected_package_id         = '';
                    selected_package_prefix     = '';
                } else {
                	if($(this).data().requisites){
                		if(check_package($(this))){
                			$('#package_inclusions a[prefixx]').set_class('package_title');
                   			$(this).set_class('package_selected');
                   			
                   			$(this).children('kbd').removeAttr('style');
                   		
                   		
                   			selected_package_id    	= $(this).attr('id').replace('package_','');
                   			selected_package_prefix	= $(this).attr('prefixx');
                		} else {
                			$(this).children('kbd').css({'background-color':'transparent','border-color':'transparent'});
                		
                			smuggs_alert($requisites['message_fail'],6,$(this));
                		}
                	} else {
                   		$('#package_inclusions a[prefixx]').set_class('package_title');
                   		$(this).set_class('package_selected');
                   		
                   		
                   		selected_package_id    	= $(this).attr('id').replace('package_','');
                   		selected_package_prefix	= $(this).attr('prefixx');
                	}
                }

                updatePage();
            } else {
                $('#package_inclusions #package_'+selected_package_id).set_class('package_selected');
            }
        } else {
            $('#package_inclusions a[prefixx]').set_class('package_title');
            $('#package_inclusions a[prefixx] kbd').css({'background-color':'transparent','border-color':'transparent'});
            $('#package_inclusions a[prefixx] strong').html('&nbsp;');
        
            selected_package_id                 = '';
            selected_package_prefix             = '';
        }
        

        saveToSession('update_package', true);
        
        
        return false;
    }
    
    
    
    /* Smuggs Alert
    -------------------------------------------*/
    function smuggs_alert(message,section,object){
        $('#smuggs_alert_area').removeAttr('class');
    
        if(section                     == 2 ){
            $('#smuggs_alert_area').addClass('message').css({'top':'804px','left':'25px'}).html(message+'<a class="close">!</a>').show();
        } else if(section              == 3){
            $('#smuggs_alert_area').css({'top':'680px','left':'300px'}).html(message+'<a class="close">X</a>').show();
        } else if(section              == 4){
            $('#smuggs_alert_area').css({'top':'873px','left':' 25px'}).html(message+'<a class="close">X</a>').show();
        } else if(section              == 5){
            $('#smuggs_alert_area').css({'top':(object.position().top + 100),'left':(object.position().left + 20)}).html(message+'<a class="close">X</a>').show();
        } else if(section              == 6){
        	object.siblings('p').children('cite.package_error').remove();
        	object.siblings('p').prepend('<cite class="package_error">'+message+'</cite>');
        } else {
            $('#smuggs_alert_area').css({'top':'470px','left':'  0px'}).html(message+'<a class="close">X</a>').show();
        }
    }
    
    
    /* Toggle Promotion
    -------------------------------------------*/
    function toggle_promotion(e){
        if(!$(this).hasClass('current')){
            $('#story_titles h1.current').removeClass();
            $('#story_values img.current').removeClass();
            $('#vacation_story dl ol a.current').removeClass('current');
            
            
            $('#story_promo').show();
            $(this).addClass('current');
            
            $current_story                      = $(this).attr('href').replace('?story=','');
        }
        
        
        return false;
    }
    
    
    /* Toggle Inclusion
    -------------------------------------------*/
    function toggle_inclusion(e){
        var $current_inclusion                  = $('#'+e.data.type+' div [inclusion="'+$(this).attr('href').replace('?inclusion=','')+'"]');
        pageTracker._trackPageview('/vacation_planner/inclusions/'+$current_inclusion.attr('inclusion'));
        
        if($current_inclusion.is(':visible')){
            $(this).removeClass('current');
            $current_inclusion.slideUp(function(event){ $(this).removeClass('current'); });
        } else if($current_inclusion.text()    != ''){ 
            $(this).addClass('current');
            $current_inclusion.slideDown(function(event){ $(this).addClass('current'); });
        }
        
        return false;
    }
    
    
    /* Book Now
    -------------------------------------------*/
    function book_now(e){
        saveToSession('book_now');
        trackSession();
        
        document.location                       = 'confirmation.php';


        return false;
    }
