﻿// General JS functions

// Browser flags
var bIsMozilla = false;
var bIsIE = false;
var bIsSafari = false;          // Google chrome etc
var bDOCUMENT_READY = false;    // indicator we're good to go
jQuery(document).ready(
    function()
    {
        // Browser sniff
        jQuery.each(jQuery.browser, 
            function(i, val) {
              if(i=="mozilla" && val==true) bIsMozilla = true;
              if(i=="msie" && val==true) bIsIE = true;
              if(i=="safari" && val==true) bIsSafari = true;
            }
        );
        
        // Update any links to zeus (entered via cms) to call google analytics...
        // issue with GA where by if target="_blank" using .__link() does NOT open in new browser, hence
        // use of the .__getLinkerUrl method instead and window.open!
        jQuery("a[href*=secure.thedungeons.com]").click(function(){ 
            if (this.target.toLowerCase() == "_blank")
                window.open(pageTracker._getLinkerUrl(this.href),this.target);
            else
                pageTracker._link(this.href);
            return false;
        }); 
        
        // initialise shadowbox
        Shadowbox.init({
            skipSetup: false,
            animSequence: 'sync',
            autoplayMovies: false,
            slideshowDelay: 0,
            resizeDuration: 0.5,
            fadeDuration: 0.8,
            continuous: true,
            handleOversize: 'none',
            overlayColor: '#6F0000',
            overlayOpacity: 0.70,
            flashBgColor: '#ffffff',
            counterType: 'skip',
            displayNav: true//,
            //onOpen: sb_open,
            //handleException: errorshow
            
            // Need to hide fog when showing lightbox as messes with IE otherwise!
            //onOpen: function(v) {
                //jQuery('#AllFog').hide();
            //},
            //onClose: function(v) {
                //jQuery('#AllFog').show();
            //}
        });        
        // Correct version of flash installed?
        if (IsRightVersionOfFlashInstalled() == true) {
            // Add roach swf to bottom of scrolls...
            jQuery('#scroll_bottom').prepend("<div class='roaches'>"+GetTransparentFlashCode('/swf/roaches.swf', 643, 65, true)+"</div>");
            // Add flash lamp
            jQuery('#TheLamp').append(GetTransparentFlashCode('/swf/lamp.swf', 88, 90, true));
        }
        
        // ACCORDION SETUP
        jQuery('#accordion,.accordion').accordion({ 
            autoheight: false, 
            alwaysOpen: false,
            header: ".header"
        }).activate(-1);        // default all closed

//        jQuery(window).resize(function(){UpdatePositionalElements();});
        jQuery(window).wresize(UpdatePositionalElements);
        UpdatePositionalElements();

		// Tickets modal set up
		/*jQuery(".bookNowModal").click(function() {
			jQuery.fancybox({
				'href'				: '/semantic/modal/buy-now.aspx' + getTicketsCode(this.href),
				'overlayOpacity'	: 0.8,
				'overlayColor'		: '#000',
				'width'				: 550,
				'height'			: 570,
				'autoScale'			: false,
				'hideOnOverlayClick': false,
				'type'				: 'iframe',
				'scrolling'			: 'no'
			});
			return false;
		});*/
		
        // We're go...
        bDOCUMENT_READY = true;
    }
);
// function to return a tickets code that is relevant to the 'buy now' modal box
function getTicketsCode(myHref) {
	var hrefCode = myHref.match(/[\?#]{1}code\=([\w\d\-]+)/);
	var returnCode = "";
	if (hrefCode instanceof Array) {
		switch (hrefCode[1]) {
			case "tickets": // General admission (tickets)
				returnCode = "tickets";
				break;
		}
	}
	if (returnCode.length > 0) return "?t=" + returnCode;
	else return "";
}
function UpdatePositionalElements() {
    var bw = jQuery(window).width();
    // The Lamp
    var t = jQuery('#TheLamp');
    if (t) {
        t.css('left', ((bw/2)+426)+'px');
    }
}

/* Browser resize function */
( function( jQuery )  
{ 
    jQuery.fn.wresize = function( f )  
    { 
        version = '1.1'; 
        wresize = {fired: false, width: 0}; 
 
        function resizeOnce()  
        { 
            if ( jQuery.browser.msie ) 
            { 
                if ( ! wresize.fired ) 
                { 
                    wresize.fired = true; 
                } 
                else  
                { 
                    var version = parseInt( jQuery.browser.version, 10 ); 
                    wresize.fired = false; 
                    if ( version < 7 ) 
                    { 
                        return false; 
                    } 
                    else if ( version == 7 ) 
                    { 
                        //a vertical resize is fired once, an horizontal resize twice 
                        var width = jQuery( window ).width(); 
                        if ( width != wresize.width ) 
                        { 
                            wresize.width = width; 
                            return false; 
                        } 
                    } 
                } 
            } 
 
            return true; 
        } 
 
        function handleWResize( e )  
        { 
            if ( resizeOnce() ) 
            { 
                return f.apply(this, [e]); 
            } 
        } 
 
        this.each( function()  
        { 
            if ( this == window ) 
            { 
                jQuery( this ).resize( handleWResize ); 
            } 
            else 
            { 
                jQuery( this ).resize( f ); 
            } 
        } ); 
 
        return this; 
    }; 
 
} ) ( jQuery );


/* IE6 MENU FIX */
sfHover = function() {
     if (document.getElementById("Hdr_Menu") != null) {
         var sfEls = document.getElementById("Hdr_Menu").getElementsByTagName("LI");     
         for (var i=0; i<sfEls.length; i++) {         
            sfEls[i].onmouseover=function() {             
                this.className+=" sfhover";         
            }         
            sfEls[i].onmouseout=function() {             
                this.className=this.className.replace(new RegExp(" sfhover\\b"), "");         
            }     
         } 
     }
} 
if (window.attachEvent) window.attachEvent("onload", sfHover); 

function ShowHPMovie() {
    if (!bDOCUMENT_READY) return;
    Shadowbox.open  ({
        content: '/swf/trailer.swf',
        player: "swf",
        width: 680,
        height: 425
    });
}

function ShowAmsterdamHPMovie() {
    if (!bDOCUMENT_READY) return;
    Shadowbox.open  ({
        content: '/swf/trailerNL.swf',
        player: "swf",
        width: 680,
        height: 425
    });
}

function SwapImage(w, img) {
    try {
        jQuery('#'+w).attr('src', img);
    }
    catch (ex) {}
}

// Ensure we post back to correct url and not underlying template...
function SubmitForm() {
    var form = document.forms[0];
    form.submitted.value = "1";
    form.action = document.location.href;
    form.submit();
}

// Open a new window
function OpenPopup(url, w, h) {
    var op = window.open(url, "popup", "menubar=0,resizable=0,width="+w+",height="+h+",scrollbars=1,location=0");
    op.focus();
}

// Select an item in <select>ion list or radio group by its value
function SelectByValue(src, val) {
    var type = (src.type) ? src.type : (src.length>0) ? src[0].type : "";
    if (type=="select-one") {
        for (var x=0;x<src.length;x++) {
            if (src[x].value == val) {
                src[x].selected = true;
                break;
            }
        }
    } else if (type=="radio") {
        for (var x=0;x<src.length;x++) {
            if (src[x].value == val) {
                src[x].checked = true;
                break;
            }
        }
    }
}

// Catch enter key for search submission
function CatchEnter(event) {
	if ((window.event && window.event.keyCode == 13) || 
		(event && event.which == 13)) {
		SubmitForm();
	} else {
		return true;
	}
	return false;
}

// Allow preview popup to link to admin console
function GoAdminURL(url) {
    // Allows preview window to update admin window
    if (window.opener && !window.opener.closed) {
        try {
            window.opener.document.location.href = url;
            window.opener.focus();
            window.close();
        }
        catch (e) {window.close();}
    } else {
        document.location.href = url;        
    }
}

// urlencode a string
function urlencode (str) {
    str = escape(str);
    return str.replace(/[*+\/@]|%20/g,
        function (s) {
            switch (s) {
                case "*": s = "%2A"; break;
                case "+": s = "%2B"; break;
                case "/": s = "%2F"; break;
                case "@": s = "%40"; break;
                case "%20": s = "+"; break;
            }
            return s;
        }
    );
}
