var mstartbutton = null; //$.flash.create({ swf: 'http://nxcache.nexon.net/dungeonfighter/swf/m-start-game.swf', width: 300, height: 147, params: { allowScriptAccess: "always", wmode: "transparent"} });
var startGameMaintenence = $.flash.create({ swf: 'http://nxcache.nexon.net/dungeonfighter/swf/m-start-game-maintenance.swf', width: 300, height: 147, params: { allowScriptAccess: "always", wmode: "transparent"} });
var mnxlinksgames = $.flash.create({ swf: 'http://nxcache.nexon.net/dungeonfighter/swf/m-nxlinks-games.swf', width: 262, height: 62, params: { allowScriptAccess: "always", wmode: "transparent"} });
var mnxlinkscards = $.flash.create({ swf: 'http://nxcache.nexon.net/dungeonfighter/swf/m-nxlinks-cards.swf', width: 262, height: 62, params: { allowScriptAccess: "always", wmode: "transparent"} });
var fun_stuff = {
    'sub_categories': ['Polls', 'Videos', 'Screenshots', 'Wallpapers'],
    'urls': ['/FunStuff/Poll.aspx', '/FunStuff/Videos.aspx', '/FunStuff/Screenshots.aspx', '/FunStuff/Wallpapers.aspx']
};
var site_map = [
	{
	    'main_category': 'News',
	    'sub_categories': ['Notices', 'Events', 'Updates', 'Maintenance'],
	    'urls': ['/News/Content.aspx?boardNo=101', '/News/Content.aspx?boardNo=200',
				'/News/Content.aspx?boardNo=102', '/News/Content.aspx?boardNo=103']
	},
	{
	    'main_category': 'Guides',
	    'sub_categories': ['Introduction', 'Beginner\'s Guide', 'Characters', 'Skills', 'Items', 'Dungeons', 'Arena', 'Community'],
	    'urls': ['/GameGuide/Intro.aspx?Lref=ANA-4&Lref=ANA-5', '/GameGuide/BeginnersGuide.aspx', '/GameGuide/Characters.aspx', '/GameGuide/SkillsDynamic.aspx', '/GameGuide/Items.aspx', '/GameGuide/Dungeons.aspx', '/GameGuide/Arena.aspx', '/GameGuide/Community.aspx']
	},
	{
	    'main_category': 'Magazine',
	    'sub_categories': ['Magazine', 'Chronicles of DFO', 'Arad Post', 'DFO TV'],
	    'urls': ['/Magazine/Content.aspx?boardNo=600', 'http://dungeonfighter.nexon.net/chronicles/?cat=16&Lref=ANA-120&Lref=ANA-128', '/Magazine/Content.aspx?boardNo=602', '/Magazine/Content.aspx?boardNo=603']
	},
	{
	    'main_category': 'Shop',
	    'sub_categories': ['Showcase', 'Item Guides', 'How to Use NX', 'Review Purchases'],
	    'urls': ['/ItemShop/Showcase.aspx', '/ItemShop/ItemGuides.aspx', '/ItemShop/NXGuide.aspx', 'http://www.nexon.net/nx/review-purchases/']
	},
	{
	    'main_category': 'Rankings',
	    'sub_categories': ['Dungeons', 'Arena'],
	    'urls': ['/Rankings/Dungeon.aspx', '/Rankings/Arena.aspx']
	},
	{
	    'main_category': 'Forums',
	    'sub_categories': ['Forums', 'Fansites'],
	    'urls': ['/Community/Default.aspx', '/FanSite/FanSites.aspx']
	},
	{
	    'main_category': 'Support',
	    'sub_categories': ['Game Downloads', 'Character Info', 'Item Redemption', 'Invite Your Friends!', 'Account Settings', 'FAQ', 'Customer Support', 'User Abuse', 'Security'],
	    'urls': ['/Support/Client.aspx', '/Support/Info.aspx', '/Support/ItemRedemption.aspx', '/FriendReferral/ReferFriend.aspx?Lref=ANA-125&Lref=ANA-127', 'http://www.nexon.net/account/account-settings/', '/Support/FAQ.aspx', 'http://support.dungeonfighter.nexon.net/', '/Support/UserAbuse.aspx', '/Support/Security.aspx']
	}
];

//common functions
function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        if (pair[0] == variable) { return pair[1]; }
    }
    return null;
}
function makeBreadcrumbs(index, current, funstuff, extra) {
    var map = site_map;
    if (funstuff) {
        map[0] = fun_stuff;
        map[0].main_category = "Fun Stuff";
    }
    var els = $('<div>').attr('id', 's-breadcrumb').append($('<a>').text('Home').attr('href', '../Default.aspx')).append(' &gt; ')
        .append($('<a>').text(map[index].main_category).attr('href', map[index].urls[0])).append(' &gt; ');
    if (extra)
        els.append($('<a>').text(extra.text).attr('href', extra.url)).append(' &gt; ');
    els.append($('<span>').text(current));
    $('#s-catheader').append(els);
}
var formatImageName = function (string) {//returns a string in lowercase, without apostrophes, and with underscores replacing whitespace and hyphens
    var regExp = /\s|[-]/g;
    var regExp2 = /[^\w_]/g;
    var str = string.toLowerCase().replace(regExp, "_").replace(regExp2, "");
    return str;
};
function getCookie(c_name) { //relies on cookie plugin
    return $.cookie(c_name) !== null ? $.cookie(c_name) : "";
}
function getDownloadLinks(callback) {
    var downloadUrl = 'http://nxcache.nexon.net/dungeonfighter/js/download_data.js';
    return $.getScript(downloadUrl, function () {
        if (typeof dl == 'undefined') {
            dl = { pandoLink: "#", manualLink: "#" };
        }
        callback.apply(dl);
    });
}
function commaFormat(s) { //formats numbers with commas (e.g. 2000 becomes 2,000)
    //var t = s.length;
    //if (t < 4) return s;
    //var m = t % 3;
    //var n = Math.floor((t - 1) / 3);
    //var st = s.split('');
    //for (var i = 0; i < n; i++) {
    //    if (m == 0 && i == 0)
    //        st.splice(0, 0, ' ');
    //    else
    //        st.splice((i * 3 + m + i), 0, ',');
    //}
    //s = st.join('');
    //return s;

    s += '';
    var x = s.split('.');
    var x1 = x[0];
    var x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function startGameCheck() {
    $.getJSON('../JS/publisher_startGame.js', function (d) {
        if (d[0].content_category == '3' || (d[0].content_category == '1' && d[0].progress_type == '1')) {

            $("#m-start-button").popup({
                width: 400,
                contents: "<div class='pts-popup'><p>" + d[0].content_title + "</p></div>",
                type: 'static'
            });

            $('#m-ticker').removeClass('dn').find('a').attr('href', d[0].content_text).text(d[0].content_title);
            $("#m-play-loggedin").addClass('maintenance').unbind('click').css('cursor', 'default');
            $("#m-play-loggedout").addClass('maintenance').unbind('click').css('cursor', 'default');
        }
    });
}
// google analytics code
function gaLoad(gaId) {
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    $.ajax({
        url: gaJsHost + "google-analytics.com/ga.js",
        complete: function () {
            try {
                pageTracker = _gat._getTracker(gaId);
                pageTracker._initData();
                pageTracker._trackfPageview();
            } catch (err) { }
        },
        dataType: "script"
    });
}

function gaTrackEvent(group, title) {
    _gaq = (typeof _gaq != "undefined") ? _gaq : [];
    _gaq.push(['cdt._trackEvent', group, title]);
    _gaq.push(['sdt._trackEvent', group, title]);
}


//NGM functions
function NxLaunchGame() {
    _gaq = (typeof _gaq != "undefined") ? _gaq : [];
    _gaq.push(["sdt._trackEvent", "DFOWebLaunch", "StartGame"]);
    _gaq.push(["cdt._trackEvent", "DFOWebLaunch", "StartGame"]);

    var game = "33563153";
    var arg = "http://download2.nexon.net/Game/DFO/ngm/DFOLauncher/version.ini";
    var error = 0;

    try {
        nexon.play(game, arg);
    } catch (err) {
        //alert('err : '+err.message);
        error = 1;
    }
    if (error > 0) {
        //alert('error : '+error);
        nexon.play(game);
    }
} 

function DownloadGame() {
    getDownloadLinks(function () { location.href = this.pandoLink; });
}
function ManualDownload() {
    getDownloadLinks(function () { location.href = this.manualLink; });
}
function NxLaunchGameMain() {

    $.getJSON('../JS/publisher_startGame.js', function (d) {
        switch (d[0].content_category) {
            case '1':
                if (d[0].progress_type != '1') {
                    NxLaunchGame();
                } else {
                    alert(d[0].content_title);
                }
                break;
            case '2':
                NxLaunchGame();
                break;
            case '3':
                alert(d[0].content_title);
                break;
        }
    });
}


function newTaging(funstuff) {
    $.getJSON('../JS/publisher_whatsNewFunstuff.js', function (d) {
        if (d == null || d.length < 1)
            return;

        for (var i = 0; i < d.length; i++) {
            if (d[i].is_new == "1") {
                newIcon = $("<div>").attr("id", "funstuff-newicon");
                $(funstuff).append(newIcon);
                break;
            }
        }
        for (var i = 0; i < d.length; i++) {
            $(funstuff).find("li").each(function () {
                if (d[i].is_new == "1" && $(this).text() == d[i].content_category) {
                    n_mark = $("<span>").addClass("funstuff-n");
                    $(this).append(n_mark);
                }
            });
        }
    });
}

function pageLoad() {
    $('#nav').navBuilder(site_map);
    $('#funstuff').navBuilder(fun_stuff, { listID: "funstuff-links", buildMenu: false });
    newTaging($('#funstuff')); // update for newTaging
    $('#drop').sameheight();
    $('#main, #drop').hoverdropdown({
        timeout: 500,
        oHeight: 0,
        eHeight: $('#drop ul').height() + 21,
        expandThese: '#drop'
    });
    $('#drop ul').pseudohover({
        hover: '#drop ul',
        pseudo: '#main li',
        className: 'hover'
    });
    $('#funstuff-trigger').funexpand({ expandThese: '#funstuff' });
    /*$('#m-play-loggedout a, #m-play-loggedin a').click(function (e) {
        NxLaunchGameMain();
    });*/
    $('#m-play-loggedout a, #m-play').click(function (e) {
        e.preventDefault();
        NxLaunchGameMain();
    });

    if (mnxlinksgames) { $('#m-nxlinks-games').html(mnxlinksgames); }
    if (mnxlinkscards) { $('#m-nxlinks-cards').html(mnxlinkscards); }
    $('#m-nxlinks-free2play').popup({
        width: 600, //width of screenshot or video
        contents: "<p class='question'>What is free to play?</p>\
                     <p class='answer'>All of Nexon's games are free to play. Players can download, install, and play any game, completely free of charge. You will need a Nexon Passport to login to a game, but that is free too!</p>\
                     <p class='question'>If all your games are free, then how do you make money?</p>\
                     <p class='answer'>Nexon makes money by selling items in its games such as a new hairstyle for your character, a cool pet, or a different finish on a weapon. However, the game can still be fully enjoyed without spending any money. In fact, most players do not purchase anything at all. Our philosophy is that players will buy items if they are having fun.</p>\
                     <p class='question'>Aren't free games free for a reason? They suck!</p>\
                     <p class='answer'>Generally, yes. But, Nexon games are awesome! Did you know that millions of players around the world play Nexon games? Don't take our word for it, go find out for yourself and ask the thousands of players online right now.</p>",
        type: 'static'
    });


    $('a[href][href!=#]').each(function () {
        //if ($(this).parents('#GNB').length < 1 && $(this).attr('href').indexOf('nexon.net') > -1 && $(this).attr('href').indexOf('/Logout') < 0 && $(this).attr('href').indexOf('/Registration') < 0) {
        if ($(this).parents('[id$=gnt_bar]').length < 1 && $(this).attr('href').indexOf('nexon.net') > -1 && $(this).attr('href').indexOf('/Logout') < 0 && $(this).attr('href').indexOf('/Registration') < 0) {
            $(this).attr('target', '_blank');
        }
    });

    // BP changes
    $("#m-start-welcome-logout").click(function () {
        nexon.sso.logout();
        return false;
    });
    $("#m-dlsu-su").click(function () {
        NxLaunchGameMain();
        return false;
    });

    startGameCheck();
}
