/**
 * 	This script fetchs the $_GET['partnerId].
 * 	If partnerID=X is found (and valid), a background is added to body (class="partner_X"), and a centered <a><span class="partnerHeader_X"></span></a> is also
 * 	added.
 * 	I have to call getPartner with a delay otherwise document.body is null
 *
 * 	@author Yvan Volochine . 200902
 *
 */

$(document).ready(function(){
	loadRequiredPluginsAndExecute(getPartner);
});

function getPartner() {

    if (typeof(partnerShown) == 'undefined') {
        partnerShown = true;
    } else {
        return;
    }

    var spil = {
        501: {
            RU: {
                header: 'http://www.flashgames.ru/integration/1/headers/930/panfu',
                footer: 'http://www.flashgames.ru/integration/1/footers/930/panfu'
            },

            NL: {
                header: 'http://www.spel.nl/integration/1/headers/900/panfu'
            },

            DE: {
                header: 'http://www.spielen.com/integration/1/headers/900/panfu'
            },

            FR: {
                header: 'http://www.jeu.fr/integration/1/headers/900/panfu'
            },

            SE: {
                header: 'http://www.spel.se/integration/1/headers/900/panfu'
            },

            ES: {
                header: 'http://www.zapjuegos.com/integration/1/headers/900/panfu'
            },

            COM: {
                header: 'http://www.agame.com/integration/1/headers/900/panfu'
            }
        },

        502: {
            FR: {
                header: 'http://www.jeux.fr/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.jeux.fr/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            DE: {
                header: 'http://www.jetztspielen.de/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.jetztspielen.de/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            NL: {
                header: 'http://www.spelletjes.nl/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.spelletjes.nl/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            COM: {
                header: 'http://www.games.co.uk/integration/2/headers/100/60bdfa/panfu',
                footer: 'http://www.games.co.uk/integration/2/footers/100/60bdfa/panfu'
            },

            ES: {
                header: 'http://www.juegos.com/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.juegos.com/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            SE: {
                header: 'http://www.spela.se/integration/2/headers/100/60bdfa/panfu',
                footer: 'http://www.spela.se/integration/2/footers/100/60bdfa/panfu'
            },

            RU: {
                header: 'http://www.ourgames.ru/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.ourgames.ru/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            AE: {
                header: 'http://www.dailygame.com/integration/1/headers/100/60bdfa/panfu',
                background: '#60BDFA'
            },

            PL: {
                header: 'http://www.gry.pl/integration/1/headers/100/60bdfa/panfu',
                background: '#60BDFA'
            }
        },

        503: {
            DE: {
                header: 'http://www.girlsgogames.de/integration/1/headers/100/000000/panfu',
                height: '58'
            }
        },

        504: {
            COM: {
                header: 'http://www.gamesgames.com/integration/1/headers/100/60bdfa/panfu',
                footer: 'http://www.gamesgames.com/integration/1/footers/100/60bdfa/panfu',
                background: '#60BDFA'
            }
        }
    };

	var partner = getGet("partnerId"); // get $_GET
	var domain = locale2domain(getLocaleForPartners());
	var links = new Object();
	links.com = new Array();
	links.de = new Array();
	links.es = new Array();
	links.fr = new Array();
	links.nl = new Array();
	links.pl = new Array();
	links.PL = new Array();
	links.se = new Array();
	links.pt = new Array();
	links.ru = new Array();
	links.com[1] = 'http://www.mygames.co.uk';
	links.com[3] = 'http://www.agame.com';
	links.com[4] = 'http://www.onrpg.com';
	links.de[1] = 'http://www.spielen.com';
	links.de[2] = 'http://www.spielaffe.de';
	links.de[4] = 'http://www.spielaffe.de';
	links.es[1] = 'http://www.zapjuegos.com';
	links.fr[1] = 'http://www.jeu.fr';
	links.nl[1] = 'http://www.spel.nl';
	links.pl[1] = 'http://www.minigry.pl';
	links.se[1] = 'http://www.spel.se';

    debug('Showing partner integration for [partner=' + partner + "] [domain=" + domain + "]");

    if (partner && partner in spil && domain.toUpperCase() in spil[partner]) {
        var partnerData = spil[partner][domain.toUpperCase()];

        showHeaderAndFooter(partnerData);
    }

	if ( typeof(links[domain]) != 'undefined' && typeof(links[domain][partner]) != 'undefined' ) { // Current partner exists with current locale

        if ((partner == 1 && (domain == 'de' || domain == 'se' || domain == 'es' || domain == 'fr' || domain == 'nl' || domain == 'com')) || (partner == 3 && domain == 'com')) {

            var dir = '/partners/spielen-com/' + domain + '/';

            if (inBlog()) {
                dir = 'http://www.panfu.' + domain + dir;
            }

            showHeaderAndFooter({header: dir + 'header.html', footer: dir + 'footer.html'});
        } else {
            var link = links[domain][partner];

            // Special case DE (Moritz asked for partnerId=4 and all was already setup for partnerId=2)
            // Also, CSS class 'partner_4' has a different background (forr .com) so I keep 'partner_2' class for DE partnerId=4
            // Be careful if you have to implement a partnerId=2 on DE then !
            var special_span = ( (partner == 4) && (domain == 'de') ) ? ' style="background: transparent url(http://cdn.kaisergames.de/images/affiliate/header1px.gif) repeat scroll; width: 100%;"><img src="http://cdn.kaisergames.de/images/affiliate/sa_head_bg.gif" alt="" />' : '>';
            partner = ( (partner == 4) && (domain == 'de') ) ? 2 : partner;

            var span_name = '';

            var url_prefix = '';

            if (inBlog()) {
                url_prefix = 'http://www.panfu.' + domain;
            }

            span_name = (partner == 1)
                ? '<img src="' + url_prefix + '/images/partners/partner'+partner+'_header_'+domain+'.gif" alt="" /></a></center>'
                : '<span class="partnerHeader_'+partner+'"'+special_span+'</span></a></center>';

            var header = '<center><a href="'+links[domain][partner]+'" target="_blank">';
            header += span_name;

            // AAAAAAAAAAAAAAAARGHHHHHHHHHHHHHH!!!!!!!!! Otherwise it's too nested, so the link doesn't work in IE.. Fix in a nicer way someday!
            if (domain == 'de' && partner == 2) {
                header = '<center><span style="background: transparent url(http://cdn.kaisergames.de/images/affiliate/header1px.gif) repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 100%;" class="partnerHeader_2"><a target="_blank" href="http://www.spielaffe.de"><img alt="" src="http://cdn.kaisergames.de/images/affiliate/sa_head_bg.gif"/></a></span></center>';
            }

            if (domain =='pl' && partner == 1) {
                header ='<center id="grypl"><div id="menu_container"><div id="menu"><ul><li><a target="_parent" href="http://www.gry.pl/">Strona główna</a></li><li><a target="_parent" href="http://www.gry.pl/gry/nowe.html">Nowe Gry</a></li><li><a target="_parent" href="http://www.gry.pl/gry/popularne.html">Popularne</a></li><li><a target="_parent" href="http://www.gry.pl/gry/mojegry.html">Moje Gry</a></li></ul></div><div id="menu2"><ul><li><div id="navisearch"><form onsubmit="return checkSearchField(\'searchtopmenu\', \'search\', 3);" target="_parent" action="http://www.gry.pl/search.php" method="get" name="searchtopmenu" id="searchtopmenu"><table width="100%" cellspacing="3" cellpadding="0" border="0"><tbody><tr><td width="65"><img height="10" width="65" border="0" title="" alt="" src="' + url_prefix + '/images/partners/partner_grypl/spacer.gif"/></td><td width="85"><div class="google_search_input"><input type="text" value="" class="input" maxlength="255" name="search"/></div></td><td width="50"><div class="search_btns"><input type="submit" style="height: 21px; width: 87px;" value="Szukaj" id="sbb"/></div></td></tr></tbody></table></form></div></li></ul></div><div class="menuhover"><a target="_parent" href="http://www.gry.pl"><img height="100%" width="100%" border="0" title="Zagraj w darmowe gry online na Gry.pl" alt="Zagraj w darmowe gry online na Gry.pl" src="' + url_prefix + '/images/partners/partner_grypl/spacer.gif"/></a></div><div class="menutext"><h1><b>Zagraj w darmowe gry online na Gry.pl</b></h1></div><div id="dragon"/><div id="site_top_right"></div></div></center>';
                $('body').addClass('partner_grypl');
            } else {
                $('body').addClass('partner_'+partner);
            }

            if ($('#main').length) {
                $('#main').before(header);
            } else if ($("#header").length) {
                $("#header").before(header);
            } else {
                $('body').prepend(header);
            }
        }

        addPartnerIdToLinks();
	}
}


function getGet( name ) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return null;
	else
		return results[1];
}


function getLocaleForPartners() {
    var locale;
    var host = $.url.attr('host');

    if ((host.indexOf('localhost') >= 0 || host.indexOf('debby') >= 0) && getGet('langId') != null) {
        locale = getGet("langId").toLowerCase();
    } else if (new RegExp('\\.dev[0-9]*\\.debby').exec(host) != null) {
        locale = host.substring(0, host.indexOf('.'));
    } else {
        locale = host.substring(host.lastIndexOf('.')+1);
    }

	return locale;
}

function inBlog() {
    var url = window.location.href;
    var regex = new RegExp("blog.panfu");
    var result = regex.exec(url);

    return result != null && result.length != 0;
}

function locale2domain(locale) {
    if (locale == 'pt') {
        return 'com.br';
    }

    if (locale == 'en') {
        return 'com';
    }

    if (locale == 'ar') {
        return 'ae';
    }

    return locale;
}

var checkSearchField = function(formname, searchfield, length) { 
	var temp = eval('document.'+formname+'.elements[\''+searchfield+'\']').value; 
	temp = temp.replace(/ /g, '');
	if( temp.length < length ) {
		alert('Please enter at least 3 characters');
		return false; }
	return true;
}

function addPartnerIdToLinks() {
    $("a").each(function(value) {
        var partnerId = $.url.param("partnerId");

        if (partnerId && $(this).attr("href") && $(this).attr("href").indexOf("partnerId") == -1) {
            var url = $(this).attr("href");
            var anchor = '';

            if (url.indexOf("#") > 0) {
                anchor = url.substring(url.indexOf("#") + 1);
                url = url.substring(0, url.indexOf("#"));
            }

            if (url.indexOf("?") == -1) {
                url += '?';
            } else {
                url += '&';
            }

            $(this).attr("href", url + "partnerId=" + partnerId + (anchor.length ? '#' + anchor : ''));
        }
    });
}

function loadRequiredPluginsAndExecute(method) {
    if (!$.url) {
        var scriptUrl = '/js/jquery.url.packed.js';

        if (inBlog()) {
            scriptUrl = 'http://www.panfu.' + locale2domain(getLocaleForPartners()) + scriptUrl;
        }

        $.getScript(scriptUrl, function() {
            setTimeout(method, 100);
        });
    } else {
        method();
    }
}

function showHeaderAndFooter(parameters) {
    if (parameters['header']) {
        debug('Showing header: ' + parameters['header']);
    }

    if (parameters['footer']) {
        debug('Showing footer: ' + parameters['footer']);
    }

    if (!('height' in parameters)) {
        parameters['height'] = 106;
    }

    if ('background' in parameters) {
        $("body").css('background-image', 'none')
                 .css('background-color', parameters['background']);

        debug("Changing background color to [" + parameters['background'] + "]");
    }

    var iframeHeader = parameters['header'] ? '<iframe id="integrationHeader" src="' + parameters['header'] + '" style="position: absolute; left: 0;" width="100%" height="' + parameters['height'] + '" border="0" style="border: 0;" scrolling="no" frameBorder="0" marginwidth="0" marginheight="0"></iframe><div style="height: ' + parameters['height'] + 'px; clear: both;">&nbsp;</div>' : '';
    var iframeFooter = parameters['footer'] ? '<iframe id="integrationFooter" src="' + parameters['footer'] + '" style="position: absolute; left: 0;" width="100%" height="148" border="0" style="border: 0;" scrolling="no" frameBorder="0" marginwidth="0" marginheight="0"></iframe>' : '';

    if ($("#boxPage").length) {
        // shop

        $("#boxPage").prepend(iframeHeader);
        $("#boxPage").append(iframeFooter);
    } else {

        $("body").prepend(iframeHeader);

        if ($("#header .payment").length) {
            // delete margin for payment
            $("body").css('marginTop', '0');
        }

        if ($("#anmeldung_wrapper").length) {
            // anmeldung page
            $("body").css('marginTop', '0');
            $("#anmeldung_wrapper").css('marginTop', '5px');
        }

        $("body").append(iframeFooter);
    }

    // fix for IE6
    if ($.browser.msie && $.browser.version == "6.0" && $("body").css('direction') != 'rtl') {
        $("#integrationHeader").css("width", $(document).width() - 21);
        $("#integrationFooter").css("width", $(document).width() - 21);
    }
}

function debug(message) {
    /* try { console.log(message); } catch (e) { } */
}