/* Globals
=========================================================================================== */

// Vail namespace to safely hold any global config/logging/functions/etc.
var VAIL = {
    proxy: '/VailResorts/HttpHandlers/GenericProxy.ashx',
    feeds: { 
        vri: 'http://common.snow.com/adminincludes/rtp.resorts.vri.xml.asp',
        videos: 'http://link.brightcove.com/services/link/bcpid1726689763?action=mrss',
		heavenly:  '/vailresorts/sites/snow/layouts/weatherfeed.aspx?days=6&lat=38.934787&long=-119.940384',
		terrainStatus: {
		    /*
		    beavercreek: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=2',
		    breckenridge: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=4',
		    heavenly: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=50',
		    keystone: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=3',
		    vail: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=1'
		    */
		    beavercreek: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=2',
		    breckenridge: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=4',
		    heavenly: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=50',
		    keystone: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=3',
		    vail: '/VailResorts/HttpHandlers/GenericProxy.ashx?url=http://common.snow.com/adminincludes/groomingReportXml.asp?siteid=1'
		}
    },
    data: {
        brightcove: {
            weather: {
                vail:           { playerId: '1745088821', lineupId: '471470177' },
                beavercreek:    { playerId: '1745088821', lineupId: '1134010055' },
                breckenridge:   { playerId: '1745088821', lineupId: '483267790' },
                keystone:       { playerId: '1745088821', lineupId: '483623200' },
                heavenly:       { playerId: '1745088821', lineupId: '1419760633' }
            }
        },
        autocompleteList: ["colorado vacations", "colorado transportation", "colorado vacation", "colorado vacations", "colorado web cams", "colorado webcams", "cross country skiing", "colorado cams", "colorado lift ticket deals", "colorado lodge", "colorado mountain transportation", "colorado resorts", "colorado season ski pass", "colorado ski", "colorado ski areas", "colorado ski packages", "colorado ski pass", "colorado ski passes", "colorado ski resort", "colorado ski resorts", "colorado skiing", "colorado snow", "colorado snow report", "downhill skiing", "daily lift ticket prices", "first snow", "fish and ski", "freestyle skiing", "group ski holidays", "group skiing holidays", "lift ticket discounts", "lift ticket prices", "lift tickets", "mountain snow", "package deals", "breckenridge", "pictures of snow", "resort", "resort skiing", "season ski pass", "ski", "ski accessories", "ski apparel", "resorts", "ski areas", "ski clothing", "ski colorado", "ski conditions", "ski conditions colorado", "ski equipment", "ski freestyle", "ski gear", "ski holidays child care", "ski jump", "ski jumping", "ski lift", "ski lift ticket discounts", "ski lift tickets", "ski lodges", "ski packages", "ski packages in breckenridge", "ski passes", "ski rentals", "ski reports", "ski resort pictures", "ski resorts", "ski resorts in colorado", "ski school", "ski shops"],
        weatherConditions: { // class_name: transformed weather conditions from xml as array
            cloud_light: ['partlycloudy','partlycloudywithhaze','partlycloudyandbreezy','cloudy'],
            cloud_dark: ['mostlycloudy','overcast','overcastwithhaze','overcastandbreezy'],
            sun: ['sunny','starrynight','mostlysunny','fair','clear','fairwithhaze','clearwithhaze','fairandbreezy','clearandbreezy'],
            sun_cloud_light: ['partlycloudy','afewclouds','afewcloudswithhaze','afewcloudsandbreezy'],
            sun_cloud_dark: ['mostlycloudy','mostlycloudywithhaze','mostlycloudyandbreezy','increasingclouds'],
            fog: ['fogmist','fog','freezingfog','shallowfog','partialfog','patchesoffog','foginvicinity','freezingfoginvicinity','shallowfoginvicinity','partialfoginvicinity','patchesoffoginvicinity','showersinvicinityfog','lightfreezingfog','heavyfreezingfog','smoke',
'dust','lowdriftingdust| blowingdust','sand','blowingsand','lowdriftingsand','dustsand whirls','dustsandwhirlsinvicinity','duststorm','heavyduststorm ','duststorminvicinity','sandstorm','heavysandstorm','sandstorm invicinity','haze'],
            wind: ['windy','breezy','fairandwindy','afewcloudsandwindy','partlycloudyandwindy','mostlycloudyandwindy','overcastandwindy'],
            rain: ['showers','thunderstorms','scatteredshowers','rainshowers','rain','isolatedthunderstorms','rainshowers','lightrainshowers','lightrainandbreezy','heavyrainshowers','rainshowersinvicinity','lightshowersrain','heavyshowersrain','showersrain','showersraininvicinity','rainshowersfogmist','lightrainshowersfogmist','heavyrainshowersfogmist','rainshowersinvicinityfogmist','lightshowersrainfogmist','heavyshowersrainfogmist','showersrainfogmist','showersraininvicinityfogmist','thunderstorm','thunderstormrain','lightthunderstormrain','heavythunderstormrain','thunderstormrainfogmist','lightthunderstormrainfogmist','heavythunderstormrainfogandwindy','heavythunderstormrainfogmist','thunderstormshowersinvicinity','lightthunderstormrainhaze','heavythunderstormrainhaze','thunderstormfog','lightthunderstormrainfog','heavythunderstormrainfog','thunderstormlightrain','thunderstormheavyrain','thunderstormrainfogmist','thunderstormlightrainfogmist','thunderstormheavyrainfogmist','thunderstorminvicinityfogmist','thunderstormshowersinvicinity','thunderstorminvicinityhaze','thunderstormhazeinvicinity','thunderstormlightrainhaze','thunderstormheavyrainhaze','thunderstormfog','thunderstormlightrainfog','thunderstormheavyrainfog','thunderstormhail','lightthunderstormrainhail','heavythunderstormrainhail','thunderstormrainhailfogmist','lightthunderstormrainhailfogmist','heavythunderstormrainhailfoghail','thunderstormshowersinvicinityhail','lightthunderstormrainhailhaze','heavythunderstormrainhailhaze','thunderstormhailfog','lightthunderstormrainhailfog','heavythunderstormrainhailfog','thunderstormlightrainhail','thunderstormheavyrainhail','thunderstormrainhailfogmist','thunderstormlightrainhailfogmist','thunderstormheavyrainhailfogmist','thunderstorminvicinityhail','thunderstorminvicinityhailhaze','thunderstormhazeinvicinityhail','thunderstormlightrainhailhaze','thunderstormheavyrainhailhaze','thunderstormhailfog','thunderstormlightrainhailfog','thunderstormheavyrainhailfog','thunderstormsmallhailsnowpellets','thunderstormrainsmallhailsnowpellets','lightthunderstormrainsmallhailsnowpellets','heavythunderstormrainsmallhailsnowpellets','showersinvicinity','showersinvicinityfogmist','showersinvicinityfog','showersinvicinityhaze','thunderstorminvicinity','thunderstorminvicinityfog','thunderstorminvicinityhaze','lightrain','drizzle','lightdrizzle','heavydrizzle','lightrainfogmist','drizzlefogmist','lightdrizzlefogmist','heavydrizzlefogmist','lightrainfog','drizzlefog','lightdrizzlefog','heavydrizzlefog','rain','heavyrain','rainfogmist','heavyrainfogmist','rainfog','heavyrainfog'],
            rain_snow_light: ['freezingrain','freezingdrizzle','lightfreezingrain','lightfreezingdrizzle','heavyfreezingrain','heavyfreezingdrizzle','freezingraininvicinity','freezingdrizzleinvicinity','icepellets','lighticepellets','heavyicepellets','icepelletsinvicinity','showersicepellets','thunderstormicepellets','icecrystals','hail','smallhailsnowpellets','lightsmallhailsnowpellets','heavysmallhailsnowpellets','showershail','hailshowers','rainicepellets','lightrainicepellets','heavyrainicepellets','drizzleicepellets','lightdrizzleicepellets','heavydrizzleicepellets','icepelletsrain','lighticepelletsrain','heavyicepelletsrain','icepelletsdrizzle','lighticepelletsdrizzle','heavyicepelletsdrizzle','freezingrainrain','lightfreezingrainrain','heavyfreezingrainrain','rainfreezingrain','lightrainfreezingrain','heavyrainfreezingrain','freezingdrizzlerain','lightfreezingdrizzlerain','heavyfreezingdrizzlerain','rainfreezingdrizzle','lightrainfreezingdrizzle','heavyrainfreezingdrizzle'],
            rain_snow_heavy: ['freezingrainsnow','lightfreezingrainsnow','heavyfreezingrainsnow','freezingdrizzlesnow','lightfreezingdrizzlesnow','heavyfreezingdrizzlesnow','snowfreezingrain','lightsnowfreezingrain','heavysnowfreezingrain','snowfreezingdrizzle','lightsnowfreezingdrizzle','heavysnowfreezingdrizzle','rainsnow','lightrainsnow','heavyrainsnow','snowrain','lightsnowrain','heavysnowrain','drizzlesnow','lightdrizzlesnow','heavydrizzlesnow','snowdrizzle','lightsnowdrizzle','heavydrizzlesnow','funnelcloud','funnelcloudinvicinity','tornadowaterspout'],
            snow: ['isolatedsnowshowers','heavysnow','snow','lightsnow','heavysnow','snowshowers','lightsnowshowers','heavysnowshowers','showerssnow','lightshowerssnow','heavyshowerssnow','snowfogmist','lightsnowfogmist','heavysnowfogmist','snowshowersfogmist','lightsnowshowersfogmist','heavysnowshowersfogmist','showerssnowfogmist','lightshowerssnowfogmist','heavyshowerssnowfogmist','snowfog','lightsnowfog','heavysnowfog','snowshowersfog','lightsnowshowersfog','heavysnowshowersfog','showerssnowfog','lightshowerssnowfog','heavyshowerssnowfog','showersinvicinitysnow','snowshowersinvicinity','snowshowersinvicinityfogmist','snowshowersinvicinityfog','lowdriftingsnow','blowingsnow','snowlowdriftingsnow','snowblowingsnow','lightsnowlowdriftingsnow','lightsnowblowingsnow','lightsnowblowingsnowfogmist','heavysnowlowdriftingsnow','heavysnowblowingsnow','thunderstormsnow','lightthunderstormsnow','heavythunderstormsnow','snowgrains','lightsnowgrains','heavysnowgrains','heavyblowingsnow','blowingsnowinvicinity']
        }
    },
    fn: {
        getWeatherClass: function (weatherCondition) { 
            weatherCondition = weatherCondition.toLowerCase().replace(/\W*/g,'');
			weatherCondition = weatherCondition.replace('chance','');
			weatherCondition = weatherCondition.replace('likely','');
			weatherCondition = weatherCondition.replace('slight','');
            for (prop in VAIL.data.weatherConditions) if (VAIL.data.weatherConditions.hasOwnProperty(prop)) {
                if (VAIL.data.weatherConditions[prop].indexOf(weatherCondition) !== -1) { return prop; }
            }
            return '';
        }
    },
    debug: false,
    errors: []
};

// Button init needs to be available in the global namespace
var buttonInit;

// Error alert suppression
window.onerror = VAIL.debug ? window.onerror : function () { return true; };


/* DOM Ready
=========================================================================================== */
$(document).ready(function () { 
	/* image flicker fix: mister-pixel */ 
	if($.browser.msie && $.browser.version == '6.0'){
		try { 
			document.execCommand("BackgroundImageCache", false, true); 
		} catch(err) {} 
	}
    
    /* Browser class detection
    ======================================================================= */
    for (name in $.browser) if ($.browser.hasOwnProperty(name) && name !== 'version') {
        if ($.browser[name] == true) { 
            $('body').addClass(name).addClass(name + parseFloat($.browser.version).toString().replace('.', '_'));
        }
    }

	// Buttons
    (buttonInit = function (context) {
        var btns = $(context ? context + ' .btn' : '.btn');
        btns.append('<div class="edge"></div>').css('visibility','visible');
    })();
    
    /* Inits
    ======================================================================= */
	//Page Header Photo Pager
	$('#headPhotoPager').headPhotoPager();
	
    // Tabs
    $.vail_tabs._init();
    
    // General content media margin fix
	$.generalContentFix = {
	    genContElems: null,
	    fix: function () {
	        if (!$.generalContentFix.genContElems) {
	            $.generalContentFix.genContElems=$('.generalContent');
	        }
            $.generalContentFix.genContElems.each(function(){
                var content = $(this);
                var media = content.find('.media');
                var body = content.find('.body');

                if(media.hasClass('right')) {
                    body.css('padding-right', ( (media.width()||168) + parseInt(media.css('margin-left')) ) + 'px');
                } else if(media.length > 0 ) { //default is left aligned, but make sure we have a media element!
                    body.css('padding-left', ( (media.width()||168) + parseInt(media.css('margin-right')) ) + 'px');
                    if ($.browser.msie) { //fix left alignment bug in IE
                        media.css('position','absolute');
                        body.css('min-height',media.height()+'px');
                        if ($.browser.version == '6.0') { // Min-height hack for IE6
                            body.css('height', media.height());
                        }
                    }
                }
            });
	    }
	};
	if ($.browser.msie) { //Initial IE fix dosent work if elements are display:none. We need rerun to ensure new visible elements are fixed
        $('div.vailTabs').bind('vail:tabs:activated', $.generalContentFix.fix);
    }
	if(!$('#homePage').length){$.generalContentFix.fix();};
    

    /* Top nav
    ------------------------------------------------- */
    // Do not follow href="#" links in top / tertiary nav
    $('#topnav ul.links a[href="#"]').css('cursor','default').click(function () { return false; });
    $('#sectionNav a[href="#"]').css('cursor','default').click(function () { return false; });
    
    // Disable superfish opacity animation for homepage and Mac OSX/FF2
    var runAnimation = ( $('#homePage').length || (($.browser.mozilla && parseFloat($.browser.version) < 1.9) && (navigator.userAgent.indexOf('Mac') !== -1)) ) ? true : false;
    
    // Superfish init
    $('.noFlash ul.links').superfish({ delay: 200, speed: "fast", animate: runAnimation });
	var _topNavLinks = $("#topnav ul.links").superfish({ 
        delay: 200, 
        speed: "fast",
        animate: runAnimation,
        onBeforeShow: function () { //For IE we keep dropshadows off by default
            if ($.browser.msie && !$('#homePage').length) {
                $('#topnav ul.links ul.menu').removeClass('shadow');             
            } else if ($.browser.msie && $.browser.version == '6.0'){               
                $('#topnav ul.links ul.menu').removeClass('shadow');
            }
            
            try { // Disable flash flash menu
                $('#homePage #flashObj').get(0).activateMenus(false);
            } catch(e) {}
              
        },
        onShow: function () { //For IE7 we show dropshadows after animation. IE7 cant animate opacity of 24bit PNGs
            
            if($.browser.msie && $.browser.version == '7.0') {
                $('#topnav ul.links ul.menu').addClass('shadow');
            }
            // MJS, 9/6/08 - VR-330 - hide select lists for ie6
            else if($.browser.msie && $.browser.version == '6.0') {       
                $("#form1 select").css({ visibility: "hidden" });
            }
             
        },
        onHide: function () {
            if($.browser.msie && $.browser.version == '6.0'){       
                $("#form1 select").css({ visibility: "visible" });
            }
        }
    });
    //dhtml over flash menu activation fix
    $("#homePage .middle-wrapper").mouseover(function(){
        try { // Enable flash flash menu
            $('#flashObj').get(0).activateMenus(true);
        } catch(e) {}
        _topNavLinks.hideSuperfishUl()
    });
    
    // Blur input fields on menu show (blinking caret shows through menu)
    $('ul.superfish').mouseover(function () { $('input').trigger('blur'); });
    
    
    // Thinbox
    $('._email').thinbox({ callback: function () { buttonInit('#overlay'); } });
    $('._tourOperator, ._overlay, .thinbox').thinbox({ escapeURL: false, callback: function () { buttonInit('#overlay'); } });
    $('._openComparator').thinbox({ escapeURL: false, callback: function () { buttonInit('#overlay'); } });
	$('._tourOperator, ._overlay, .thinbox, ._email, ._openComparator').css('visibility','visible');
	
	
    
    // Autocomplete search initialization
    try {
        //$("#TopNav_txtSearchInput").autocompleteArray(VAIL.data.autocompleteList);    
        $("#txtSearchInput").autocompleteArray(VAIL.data.autocompleteList);     
        $("#columnCenter_ctl00_txtSearchTerm").autocompleteArray(VAIL.data.autocompleteList);   
    } catch (e) { VAIL.errors.push(e); }
     
    /*
    // DON'T UNCOMMENT W/O CONTACTING OTHER DEVS.
    
    // Lift Tickets Page : Buy Now
    $('.buy > .btn').click(function () {
        if ($('.buy > select').val().length) {
           window.location = $('.buy > select').val();
        }
        return false;
    });

    // Lift Tickets Page : Check Prices
    $('.check > .btn').click(function () {
        if ($('.check > select').val().length) {
           window.location = $('.check > select').val();
        }
        return false;
    });
    */
    
    /* Event Listeners
    ======================================================================= */
    // Print
    $('a[href=#print]').click(function () { window.print(); return false; });
    
    
    /* Internet Explorer
    ======================================================================= */
    // IE*
    if ($.browser.msie) {
        // Makes indexOf for Arrays work in Internet Explorer.
        if (!Array.indexOf) {
            Array.prototype.indexOf = function (obj) {
                for (var i = 0; i < this.length; i++) { if (this[i] == obj) { return i; } }
                return -1;
            }
        }

        // IE6
        if ($.browser.version < 7) {
            // Fix for IE6 no multi class selector issue (tabs)
            $('div.vailTabs').bind('vail:tabs:activated', function (event, msg) {
                $('.vailTabs li.first').css({ 'background-position' : (msg.linkElement.parent('.first').length ? 'left -210px' : 'left -140px') });
                $('.vailTabs li.last a').css({ 'background-position' : (msg.linkElement.parent('.last').length ? 'right -210px' : 'right -140px') + ' !important' });
            });
            // Manually clean up memory leaks for IE6 (it doesn't like closures)
            $(window).bind('unload',function () {
                try { $('*').add(window).add(document).unbind(); } catch (e) { }
            });
        }
    }
});

window.onbeforeunload = function(){
	$('._tourOperator, ._overlay, .thinbox, ._email, ._openComparator').css('visibility','hidden');
};

function xreplace(checkMe, toberep, repwith) {
	var temp = checkMe;
	var i = temp.indexOf(toberep);
	while(i > -1) {
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep, i + repwith.length + 1);
	}
	return temp;
}