// POPUP WINDOWS
// object creator for handling image swappers
function swapImg(url, width, height, rate, parent, interval) {
    root = this;
    // globals
    root.docsArr = [];
    root.current = false;
    root.total = false;
    root.timer = false;
    interval = (interval) ? interval * 1000: 10000;
    // determine placement
    root.swapQry = new queryHandler(url)
    switch (root.swapQry.pos) {
    case 'right':
        root.pos = 'promo_rightnav';
        break;
    case 'bottom':
        root.pos = 'bottomnav_banner';
        break;
    }
    // populates docs array
    root.init = function(arrayData, interval) {
        if (typeof(arrayData) == 'string') {
            try {
                arrayData = eval(arrayData)
            } catch(e) {}
            // randomize sequence
            arrayData.sort(randOrd);
        }
        // create DOM structure
        root.domStruct = document.createElement('a');
        root.domStruct.setAttribute('arrayData', arrayData);
        root.domStruct = parent.appendChild(root.domStruct);
        root.domStruct.style.width = width + 'px';
        root.domStruct.style.height = height + 'px';
        // safari bug
        if (client.engine == 'webkit') {
            parent.style.width = width + 'px';
            parent.style.height = height + 'px';
            parent.style.overflow = 'hidden';
        }
        root.domStruct.href = '#';
        root.domStruct.className = 'imgFadeSwap';
        // set custom attributes
        // set initial values
        root.domStruct.docsArr = arrayData;
        root.domStruct.current = 0;
        root.domStruct.total = arrayData.length;
        root.domStruct.interval = interval;
        //				root.domStruct.name     = '&lpos=' + root.pos + '&lid=' + arrayData[0][0].split('/')[arrayData[0][0].split('/').length-1].split('.')[0];
        root.domStruct.setAttribute('name', '&lpos=' + root.pos + '&lid=' + arrayData[0][0].split('/')[arrayData[0][0].split('/').length - 1].split('.')[0]);
        root.domStruct.onclick = function() {
            var lid = this.getAttribute('name').split('&lid=')[1];
            var lpos = this.getAttribute('name').split('&lid=')[0].split('=')[1];
            goLink(lid, lpos);
        }
        // make botttom image
        var botImage = document.createElement('img');
        botImage.src = '/global/assets/images/bg/blank.gif'
        botImage = root.domStruct.appendChild(botImage);
        botImage.width = width;
        botImage.height = height;
        botImage.className = 'bottom';
        botImage.style.position = 'absolute';
        // initiates an image swap
        botImage.onload = function() {
            if (client.engine != 'gecko') {
                motion.set(this.nextSibling, 'opacity', ['1.0', '0.0'], 0.1);
            } else {
                this.style.visibility = 'hidden';
            }
        }
        // make top image
        var topImage = document.createElement('img');
        topImage.src = '/global/assets/images/bg/blank.gif'
        topImage = root.domStruct.appendChild(topImage);
        topImage.width = width;
        topImage.height = height;
        topImage.className = 'top';
        topImage.style.position = 'absolute';
        // set initial appearance.
        topImage.src = root.domStruct.docsArr[0][0];
        root.domStruct.href = root.domStruct.docsArr[0][1];
        handleLinkage();

        // initiates an image swap
        // topImage.onload = function() {
        // 	var src    = this.getAttribute('src');
        // 	var top    = this;
        // 	var parent = this.parentNode;
        // 	var bottom = this.previousSibling;
        // 	// do it
        // 	// if (client.engine != 'gecko') {
        // 	// 	motion.set(this, 'opacity', ['0.0', '1.0'], 0.5, setBase);
        // 	// } else {
        // 	// 	this.style.visibility = 'visible';
        // 	// }
        // 	// root.timer = setTimeout(nextImage, this.parentNode.interval);
        // }
        topImage.nextImage = function() {
            var parent = topImage.parentNode;
            var top = topImage;
            var bottom = topImage.previousSibling;
            var src = parent.docsArr[parent.current][0];
            var name = src.split('/')[src.split('/').length - 1].split('.')[0];
            top.src = src;
            parent.href = parent.docsArr[parent.current][1];
            parent.name = parent.name.split('&lid=')[0] + '&lid=' + name;
            parent.current = (parent.current + 1) % parent.total;
            // add hitbox tracking by event
            parent.onclick = function() {
                var lid = this.getAttribute('name').split('&lid=')[1];
                var lpos = this.getAttribute('name').split('&lid=')[0].split('=')[1];
                goLink(lid, lpos);
            }
            handleLinkage();
        }
        topImage.nextImage();
        setInterval(topImage.nextImage, topImage.parentNode.interval);
    }
    // make reqest and initialize
    ajax.get(url, root.init, [interval]);
    return false;
}



// FLASH LINKS
function goLink(position, link, url) {
    if (position && link) {
        // _hbLink(position, link);
        try {
            sc.flashLink(link, position);
        } catch (e) {
            
        }
    }
    if (link.indexOf('_video_') != -1) {
        try {
            if (hbxMediaPlay !== undefined) {
                hbxMediaPlay(link, hbxCurrentPos)
            }
        } catch(e) {}
    }
    if (arguments.length == 3) {
        if (url.indexOf('//') != -1) {
            var thsDomain = document.location.href.split('//')[1].split('/')[0];
            var thsProtoc = document.location.href.split('//')[0];
            var lnkDomain = url.split('//')[1].split('/')[0];
            ///lnkDomain = lnkDomain.split('.')[lnkDomain.split('.').length-2];
            if (lnkDomain == 'tickets.sixflags.com') {
                thsDomain = 'tickets.sixflags.com';
            }
            // exception
            lnkPath = url.split('sixflags.com/')[1];
            if (lnkDomain == 'sixflags') {
                url = thsProtoc + '//' + thsDomain + '/' + lnkPath;
            }
        }
        handleLinkage(url);
    }
}



function externalLink(thisUrl) {
    thisUrl = thisUrl.toLowerCase();
    if (thisUrl.indexOf('samewindow=true') != -1) {
        return false;
    } else {
        var thisDomain = document.location.href.split('//')[1].split('/')[0];
        if (thisUrl.indexOf('//') != -1) {
            var thisDomain = document.location.href.split('//')[1].split('/')[0].toLowerCase();
            var linkDomain = thisUrl.split('//')[1].split('/')[0].toLowerCase();
            if (thisUrl.indexOf('://tickets.sixflags.com') != -1) {
                return true;
            }
            // tickets.sixflags.com
            else if (thisUrl.indexOf('://laronde.com') != -1) {
                return false;
            }
            // hotels.sixflags.com
            else if (thisUrl.indexOf('://www.laronde.com') != -1) {
                return false;
            }
            // hotels.sixflags.com
            else if (thisUrl.indexOf('://hotels.sixflags.com') != -1) {
                return false;
            }
            // hotels.sixflags.com
            else if (thisUrl.indexOf('://investors.sixflags.com') != -1) {
                return false;
            }
            // investors.sixflags.com
            else if (thisUrl.indexOf('://www.sixflags.com') != -1) {
                return false;
            }
            // www.sixflags.com
            else if (thisUrl.indexOf('://sixflags.com') != -1) {
                return false;
            }
            // sixflags.com
            else if (linkDomain != thisDomain) {
                return true;
            }
            // external links
            else {
                return false;
            }
            // all other links
        } else {
            return false;
        }
    }
}




function handleLinkage(url) {
    if (url) {
        if (externalLink(url)) {
            window.open(url)
        } else {
            document.location.href = url;
        }
    } else {
        var allLinks = document.getElementsByTagName('a');
        for (var loop = 0; loop < allLinks.length; loop++) {
            var thisLink = allLinks[loop];
            if (externalLink(thisLink.href)) {
                thisLink.setAttribute('target', '_blank');
            }
            // funplanner addition
            if (!document.getElementById('pulldown_wrapper')) {
                if (thisLink.innerHTML.toLowerCase().indexOf('fun planner') != -1) {
                    thisLink.style.display = 'none';
                    thisLink.style.visibility = 'hidden';
                }
            }
        }
    }
}



// PROMO CODE
function processPromo(promoSite, promoCode) {
    var fullUrl = promoSite + "&promo_code=" + promoCode;
    handleLinkage(fullUrl);
}
// PRINT FUNCTIONS
function PageQuery(q) {
    this.queryString = (q.indexOf("?") == 0 ? q.substring(1, q.length) : q);
    this.nameValuePairs = this.queryString.split("&");
    this.getValue = function(s) {
        for (var i = 0; i < this.nameValuePairs.length; i++) {
            if (this.nameValuePairs[i].split("=")[0] == s) {
                return this.nameValuePairs[i].split("=")[1];
            }
        }
        return "";
    }
}



function sendFriend() {
    var url = escape(location.href);
    var title = document.title;
    window.open('/global/asp/sendfriend/sendfriend.aspx?url=' + url + "&parkname=" + parkname + "&title=" + title, 'sendfriend', 'height=420,width=375,resizable=0,scrollbars=0,location=0,toolbar=0,status=0,left=100,top=100,screenX=100,screenY=100').focus;
}



var qs = (location.search) ? new PageQuery(location.search) : new PageQuery('');



var nationalFlashDiv = false;
var nationalFlashMov = false;



function nationalFlash() {
    var pageQuery = new queryHandler(document.location.href);
    // set default flashvars
    var flashQuery = '?bg_xml=%2Fglobal%2Fasp%2Fcode%2Fhomepageheroxml.aspx%3Fpage%3D%7Cglobal%7Cxml%7CactivatePromo%7Cnational%7CHomepageHero.xml&promo_xml=%2Fglobal%2Fasp%2Fcode%2Fhomepagerightpromo.aspx%3Fparkname%3Dnational&ticker_xml=%2Fglobal%2Fasp%2Fcode%2Fticker.aspx%3Fparkname%3Dnational';
    /// uhhh ... yeah.
    var flashQuery = new queryHandler(flashQuery);
    // override flashvars with any supplied values
    if (pageQuery.bg_xml) {
        flashQuery.bg_xml = pageQuery.bg_xml;
    }
    if (pageQuery.promo_xml) {
        flashQuery.promo_xml = pageQuery.promo_xml;
    }
    if (pageQuery.ticker_xml) {
        flashQuery.ticker_xml = pageQuery.ticker_xml;
    }
//	flashQuery.promo_video = 'Ribbon_2009';
    // construct screwy qs for flash
    var flashVars = 'bg_xml=' + unescape(flashQuery.bg_xml) + '&promo_xml=' + unescape(flashQuery.promo_xml) + '&ticker_xml=' + unescape(flashQuery.ticker_xml) + '&BaseURL=' + window.location.href;// + '&promo_video=Ribbon_2009';
    if (qrystr.fm) {
        flashVars += '&fm=' + unescape(qrystr.fm);
    }
    if (arguments.length == 1 && arguments[0]) {
        flashVars += "&promo_video=" + arguments[0];
    }
    // for deeplinking to flash movie for frightfest
    // make and set
    nationalFlashDiv = document.getElementById('flash-home');
    nationalFlashMov = swf.movie('/global/assets/swf/sixflags_national.swf', 965, 377, 10, '/noflash.aspx');
    nationalFlashMov.setParam('wmode', 'opaque');
    nationalFlashMov.setParam('AllowScriptAccess', 'always');
    nationalFlashMov.setParam('flashvars', flashVars);
    nationalFlashMov.style.overflow = 'hidden'
    nationalFlashMov = nationalFlashDiv.appendChild(nationalFlashMov);
}

function updateNationalSwf(varValue) {
    if (nationalFlashDiv && nationalFlashDiv) {
        nationalFlashMov.setVar('a.bgxml_', varValue);
    }
}



// RETURNS CURRENT MOUSE POSITION IN VIEWPORT
function mouseCoords() {
    // globals
    var root = this;
    // gets the coords
    root.get = function(e) {
        // get coords
        root.X = (client.engine != 'msie') ? e.pageX: event.clientX;
        root.Y = (client.engine != 'msie') ? e.pageY: event.clientY;
        // limit coords to sensible values
        if (root.X < 0) {
            root.X = 0;
        }
        if (root.Y < 0) {
            root.Y = 0;
        }
        return [root.X, root.Y]
    }
}



// real offset in pixels from one object to another (parent) of it.
function getObjOffset(thisObj, stopAt) {
    stopAt = (stopAt) ? stopAt: document.getElementsByTagName('body')[0];
    var parentNode = thisObj;
    var offsets = [0, 0];
    while (parentNode != stopAt) {
        if (parentNode) {
            offsets[0] += parentNode.offsetLeft;
            offsets[1] += parentNode.offsetTop;
        }
        try {
            parentNode = parentNode.parentNode;
        } catch(e) {
            parentNode = null;
        }
    }
    return offsets;
}

function findPos(obj) {
    var curLeft = 0;
    var curTop = 0;
    
    if (obj.offsetParent) {
        do {
            curLeft += obj.offsetLeft;
            curTop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }

    return [curLeft, curTop];
}



// INITIALIZE
var mouse = new mouseCoords();
document.onmousemove = function(event) {
    window.mouseX = mouse.get(event)[0];
    window.mouseY = mouse.get(event)[1];
}


// utility, randomizes array order
function randOrd() {
    return (Math.round(Math.random()) - 0.5);
}

// pick a park pulldown onclick event
function pickpulldown(thisObj) {
    var thisName = thisObj.getAttribute('name')
    var thisHref = thisObj.getAttribute('value')
    //			var parentObj = thisObj.parentNode.parentNode.parentNode.parentNode;
    //			if (parentObj.getAttribute('pos')) {
    //				var lpos    = hbxStrip(parentObj.getAttribute('pos'));
    //				var link    = hbxStrip(thisObj.innerHTML.split(' ').join('+').split(',').join(''));
    //				try { _hbLink(link, lpos) } catch (e) {  }
    //			}
    if (externalLink(thisHref)) {
        window.open(thisHref)
    } else {
        document.location.href = thisHref;
    }
}


function hbxStrip(a) {
    if (a) {
        a = a.split("|").join("");
        a = a.split("/").join("");
        a = a.split("\"").join("");
        a = a.split(" ! ").join("");
        a = a.split(" & ").join("");
        a = a.split("'").join("");
        a = a.split("#").join("");
        a = a.split("$").join("");
        a = a.split("%").join("");
        a = a.split("^").join("");
        a = a.split("*").join("");
        a = a.split(":").join("");
        a = a.split("~").join("");
        a = a.split(";").join("");
        a = a.split(">").join("");
        a = a.split("<").join("");
        a = a.split(" ").join("+");
        return a;
    }
}
