﻿/// <reference path="../../_Common/Include/js/jquery-1.6.2.debug.js" />
/// <reference path="../../_Common/Include/js/jquery-ui-1.8.2.custom.js" />
/// <reference path="../../_Common/Include/js/jquery.json-2.2.debug.js" />
/// <reference path="../../_Common/Include/js/swfobject.js" />



/* jQuery modules */
(function ($) {

    /* object logger */
    $.fn.log = function (msg) {
        if (window.console) {
            if ($.browser.msie) {
                console.log('Hello IE!'); // TODO: fix this!
            } else {
                console.log("%s: %o", msg ? msg : 'log', this);
            }
        }
        return this;
    };

    /* image preloader */
    var imgage_cache = [];
    $.fn.preload = function (options) {
        var settings = {
            init: function (loaded, total) { },
            loaded: function (image, loaded, total) { },
            complete: function (loaded, total) { }
        };
        var total = this.length;
        var loaded = 0;
        if (options) $.extend(settings, options);
        settings.init(0, total);
        return this.each(function (index, value) {
            imgage_cache.push($("<img />").attr("src", value).load(function () {
                loaded++;
                settings.loaded(this, loaded, total);
                if (loaded == total) settings.complete(loaded, total);
            }));
        });
    };

})(jQuery);




/* jQuery main */
$(function () {
    // console.log('DOM ready event: '+new Date().getTime());
    initSetup();
    initGroups();
    initFacebook();
    initSystemDialogs();
    initRedirects();

    $(window).load(function () {
        // console.log('window load event: '+new Date().getTime());
        balanceHeight();
        initTeasers();
        initHtmlGames();
        initPopupScripts();
        initPrizePopup();
        initPreventPaste();
        initFacebookElements();
        animateBerlinLevel();
        animateTop10();
        initFlatscreen();
        
        $('body.codeeingabe a[href=#tvspot]').click(function (e) {
            e.preventDefault();
            viewTvspot();
        });

        /*  if ($('body').hasClass('default')) {
            $('#bp_main').prepend('<div class="bp_box" style="width: 480px; padding: 0 12px 12px 0; position: absolute; top: 415px; left: 200px; z-index: 99;" id="stoerer"><div class="bp_inner_1 bp_content" style="width: 468px; height: 260px;"><div id="stoerer_close" style="cursor: pointer; z-index: 200; position: absolute; background: #000; width: 24px; height: 24px; top: 12px; right: 12px; text-align: center; font-size: 18px; font-weight: normal;">x</div><h2 class="bp_headline_rotate" style="margin-top: -10px; margin-left: 10px;"><span style="font-size: 45px; margin-left: -88px;color: red;">Berlin, Du gewinnst</span><br><span style="font-size: 45px; margin-left: -8px; color: red;">so wunderbar!</span></h2><div class="bp_crown rot30m" style="background: transparent url(\'../../Images/crown_cap.png\') no-repeat scroll top left; width: 87px; height: 89px; position: absolute; top: -18px;left: 280px;"></div><h3 style="margin: 20px 20px 7px 20px; font-size: 25px;">Auf zahlreichen Wunsch von Euch haben wir es möglich gemacht: Alle übrig gebliebenen Gewinn-Codes aus unserer letzten Aktion können jetzt noch <span style="color: red;">bis zum 29.06.2012</span> eingelöst werden!</h3></div></div>');
            $('#stoerer').css('opacity', '0').animate({ 'opacity': '1' }, 'slow');
            $('#stoerer, #stoerer_close').click(function (e) { e.preventDefault(); $('#stoerer').animate({ 'opacity': '0' }, 'slow', function () { $('#stoerer').remove(); }); });
        } */
    });

});

/* Ergänzung für Asynchrone Aufrufe */
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerBerliner);
function EndRequestHandlerBerliner(sender, args) {
    if (args.get_error() == undefined) {
        FB.XFBML.parse();
        rebalanceHeight();
    }
}


function animateTop10() {
    $('.bp_top10').each(function (index, value) {
        var thisRef = $(this);
        var sw = 0;

        var div = thisRef
			.find('.none').remove().end()
			.next('.bp_teaser_caption').remove().end()
        // .attr('class', 'bp_teaser_caption bp_top10_inline')
			.removeClass('bp_top10')
			.addClass('bp_teaser_caption')
			.addClass('bp_top10_inline')
			.find('div span').map(function () { sw += $(this).width(); }).end().end()
			.find('div').css({ 'width': sw + 'px', 'position': 'relative' });

        var cw = thisRef.width();
        var tw = sw + cw;
        var tf = 0.1;
        var timing = tw / tf;
        function scrollTicker(sDiff, sTime) {
            div.animate({ left: '-=' + sDiff }, sTime, "linear", function () {
                div.css('left', cw + 'px');
                scrollTicker(tw, timing);
            });
        }
        scrollTicker(tw, timing);
        div.hover(function (e) { $(this).stop(); }, function () {
            var offset = $(this).offset();
            var rest = offset.left + sw;
            var restTime = rest / tf;
            scrollTicker(rest, restTime);
        });
    });
}

function initFlatscreen() {
    if ($('body.shop').length > 0 && window.location.href.match(/Shop.aspx/)) {

        $('<div id="bp_campaign"></div>')
			.css({
			    'background-color': 'rgba(0,0,0,0.5)',
			    'width': 195,
			    'height': 110,
			    'position': 'absolute',
			    'top': 73,
			    'left': 359,
			    'overflow': 'hidden'
			})
			.appendTo($('.bp_header'));

			var images = ['07_screen_gastro', '01_screen_plattenladen', '06_screen_brauerrei', '02_screen_schuhe', '05_screen_kino', '03_screen_werkstatt', '04_screen_union'];
        for (var i = 0; i < images.length; i++) {
            $('<img src="' + g_hostName + '/Images/' + images[i] + '.jpg" width="195" height="110" alt="">')
				.css({
				    'position': 'absolute',
				    'left': (i == 0 ? 0 : 195)
				})
				.appendTo($('#bp_campaign'));
        }

        var animateFunction = function (i) {
            var dt = 2500;
            var j = ((i + 1) < images.length ? (i + 1) : 0);
            $('#bp_campaign img:eq(' + i + ')').delay(dt).animate({ 'left': -195 });
            $('#bp_campaign img:eq(' + (j) + ')').css({ 'left': 195 }).delay(dt).animate({ 'left': 0 }, function () {
                animateFunction(j);
            });
        };

        animateFunction(0);
    }
}


function animateBerlinLevel() {

    $('#bp_level_value').contents().filter(function () {
        return this.nodeType === 3; // == Node.TEXT_NODE;
    }).wrap($('<span id="bp_level_percentage"></span>'));

    $('.bp_badge img').hide();

    var dChart = $('#bp_level_chart > div');
    var sValue = $('#bp_level_percentage');

    var level = dChart.text().replace(/[^-\d\.]/g, '');

    dChart.css('width', '0%');
    sValue.text('0%');

    dChart.animate({ 'width': level + '%' }, {
        'duration': 1000,
        'easing': 'linear',
        'step': function (value) {
            sValue.text(Math.round(value) + '%');
        },
        'complete': function () {
            sValue.text(level + '%');
            $('.bp_badge img').fadeIn('fast');
        }
    });
}




function initSetup() {
    $('#bp_show_ds').click(function (e) {
        e.preventDefault();
        var rel = $(this).attr('rel');
        $(this).attr('rel', $(this).text());
        $(this).text(rel);
        $('#bp_ds').slideToggle();
    });
}

function initGroups() {

    // member requests
    var per_page = 5;
    var page;
    var current_page = 0;
    if ($('.bp_member_requests').length > per_page) {
        $('.bp_member_requests ~ hr').remove();
        var len = $('.bp_member_requests').length;
        $('.bp_member_requests').each(function (index, value) {
            console.log('index', index);
            if (index % per_page == 0) {
                page = $('<div class="bp_mrp" id="bp_mrp_' + Math.round(index / per_page) + '" style="display: none;"></div>');
                $(this).before(page);
            }
            page.append(this);
            if ((index + 1) % per_page != 0 && index != (len - 1)) page.append($('<hr />'));
        });
        $('#bp_mrp_0').css('display', 'block');

        $('.bp_member_requests_multiple').before('' +
			'<div id="bp_member_requests_pager" class="clr">' +
			'	<a href="#" class="bp_button_inline_small" id="bp_member_requests_previous"><img src="Images/arrow_small_white_reversed.png" alt="previous"/></a>' +
			'	<span id="bp_memebrs_pager">' + '1/' + $('.bp_mrp').length + '</span>' +
			'	<a href="#" class="bp_button_inline_small" id="bp_member_requests_next"><img src="Images/arrow_small_white.png" alt="next"/></a>' +
			'</div>');

        $('#bp_member_requests_next, #bp_member_requests_previous').bind('click', function (e) {
            e.preventDefault();

            var np = current_page + ($(e.currentTarget).attr('id') == 'bp_member_requests_next' ? +1 : -1);
            if (np < 0 || np >= $('.bp_mrp').length) return;

            $('#bp_mrp_' + current_page).find('input[type=checkbox]').attr('checked', false);
            $('#bp_mrp_' + current_page).css('display', 'none');
            current_page = np;
            $('#bp_mrp_' + current_page).css('display', 'block');

            rebalanceHeight();

            $('#bp_memebrs_pager').text((current_page + 1) + '/' + $('.bp_mrp').length);
        });
    }


    // members
    if ($('.bp_members li').length > 5) {

        $('.bp_members')
			.parent('.bp_special')
				.css('position', 'relative')
				.end()
			.after('<div id="bp_members_pager" class="clr">' +
				'<a href="#" class="bp_button_inline_small" id="bp_members_previous"><img src="Images/arrow_small_white_reversed.png" alt="previous"/></a>' +
				'<a href="#" class="bp_button_inline_small" id="bp_members_next"><img src="Images/arrow_small_white.png" alt="next"/></a>' +
				'</div>')
			.wrap('<div id="bp_members_mask" style="position: relative;"></div>')
			.css('width', ($('.bp_members > li').length * 60) + 'px')
			.css('position', 'relative')
			.css('margin-left', '-5px')
			.css('left', '0px');

        // $('#bp_members_next, #bp_members_previous').unbind('mouseover mouseout');
        $('#bp_members_next, #bp_members_previous').bind('mouseover mouseout', function (e) {
            e.preventDefault();

            var cnt = $('.bp_members');
            var dir = ($(e.currentTarget).attr('id') == 'bp_members_next' ? -60 : +60);
            var ani = function () {
                var chk = 1 * cnt.css('left').replace(/[^-\d\.]/g, '');
                if (dir > 0 && chk >= 0) return;
                if (dir < 0 && chk <= (cnt.find('li').length - 5) * -60) return;
                if (cnt.data('over')) cnt.animate({ 'left': '+=' + dir }, 'slow', arguments.callee);
            }
            if (e.type == 'mouseover') {
                cnt.data('over', true);
                if (cnt.queue("fx").length <= 0) ani();
            } else {
                cnt.data('over', false);
            }
        });
    }
}




function initRedirects() {
    $('.bp_login_register').each(function (index, value) {
        var oldHref = $(this).attr('href');
        var newRedirect = window.location.href.replace(/.*Redirect=(.*)/, '$1');
        var newHref = oldHref.replace(/(.*Redirect=).*/, '$1' + newRedirect);
        $(this).attr('href', newHref);
    });
}




function initPreventPaste() {
    $('.bp_prevent_paste').bind('paste', function (e) {
        e.preventDefault();
        // Message('warn', 'bitte benutzen sie kein Copy&Paste um Schreibfehler auszuschließen');
    });
}




function initFacebook() {
    if (!$('body').hasClass('alterskontrolle') && window.fb_init) {
        var fb_app_id = '270727232954031';
        // window.hostName = 'http://www.berlin-wunderbar.de';
        window.hostName = window.location.protocol + "//" + window.location.host;
        fb_init(fb_app_id, hostName + '/channel.html');
        $('.bp_login_facebook').click(function (e) {
            e.preventDefault();
            fb_login(facebookLogin);
        });
        $('.bp_merge_facebook').click(function (e) {
            e.preventDefault();
            fb_login(facebookLoginForMerge);
        });
    }
}
function initFacebookElements() {
    // like-box
    $('.bp_facebook iframe').attr('style', '');
    $('.bp_fb_send').click(function (e) {
        e.preventDefault();
        var trophy = $(this).siblings('.bp_badge').find('img').attr('src').replace(/.*\/(\d*).png/gi, '$1');
        shareBadge(trophy, false);
    });
    $('.bp_fb_share').click(function (e) {
        e.preventDefault();
        shareGroup();
    });

    replaceFacebookIdWithName('.spieler .bp_name_placeholder');
}

function shareGroup() {
    var nameText = "Es geht um maximal 5.000,- Euro für euer Vereinsheim! {SammelrundeName} hat bereits {SammelrundeCodes} für die wunderbare Berliner Pilsner Codeaktion gesammelt.";
    nameText = nameText.replace("{SammelrundeName}", $('#bp_main .current_group_name').text());
    nameText = nameText.replace("{SammelrundeCodes}", $('#bp_main .current_group_codes').text());

    fb_post({
        name: nameText,
        description: "Hilf uns beim Sammeln! Jeder Code zählt, und vielleicht räumen wir als Verein die 5.000,- Euro ab!",
        link: window.location.href,
        picture: window.hostName + "/Images/facebook_share/gruppe.jpg",
        caption: "Komm in unsere Berliner Pilsner Vereins-Gruppe!"
    }, false);
}


function shareBadge(trophy, automatic) {
    if (automatic == undefined) {
        automatic = true;
    }
    // alert("Flash: shareBadge "+trophy);
    // automatic Share
    // trophy = 0,1,2,3 (worst - best)

    var bl = ['TOURIST', 'ZUGEZOGEN', 'BERLINER', 'UR-BERLINER'];

    if (automatic == true && fb_authorized == false) return;

    fb_post({
        name: "{user} hat einen neuen Level im Berlin-O-Meter von Berliner Pilsner erreicht und ist jetzt '" + bl[trophy] + "'!",
        description: "Spiele die Games der Berliner Pilsner Codeaktion und teste dein eigenes Berlin-Level auf www.berlin-wunderbar.de.",
        link: g_hostName,
        picture: g_hostName + "/Images/facebook_share/badge_" + trophy + ".jpg",
        caption: "Wie viel Berliner bist du?"
    }, automatic);
}
function shareReaction(copy, level) {
    // alert("Flash: shareReaction '"+copy+"', "+level);
    // click inside flash share
    // copy = text to share
    // level = 3 good, 2 middle, 1 bad, 0 none

    if (!level || level == 0) level = 1;

    game = window.location.href.replace(/.*\/(\w*).aspx/gi, '$1').toLowerCase();

    fb_post({
        name: "{user} hat folgendes Ergebnis erzielt: " + copy,
        description: "Wenn auch Du wissen willst, wie viel Berliner in Dir steckt, dann komm auf berlin-wunderbar.de",
        link: window.location.href,
        picture: g_hostName + "/Images/facebook_share/" + game + "_" + level + ".jpg",
        caption: "Wie viel Berliner bist du?"
    });

}


/*
"gruppen_einladung":{
"link_text":"Kommt in meine Gruppe auf Berlin-Wunderbar.de!",
"url":"http://whatever.url.com/gruppenseite",
"picture":"http://flickholdr.com/50/50/bier",
"caption_text":"{user} hat soeben die Sammelgruppe {gruppenname} für die wunderbare Berliner Pilsner Codeaktion gegründet.",
"description_text":"Hilf {user} beim Sammeln: Jeder Code gewinnt, und vielleicht räumt ihr als Gruppe die 50 Kästen Bier ab auf www.berlin-wunderbar.de."
*/




function initPopupScripts() {
    //-- Karten-Popup (Shop)
    $('.bp_map_popup').click(function (e) {
        e.preventDefault();
        openMap($(e.currentTarget).attr('href'));
    });
    //-- Gewinne-Popup (Meine Gewinne)
    $('.bp_prizes').click(function (e) {
        e.preventDefault();
        openPrize($(e.currentTarget).attr('href'));
    });
}
function openMap(url) {
    if (window.bp_popup) {
        window.bp_popup.close("mapPopup");
    }
    window.bp_popup = window.open(url, "mapPopup", "location=0,status=0,menubar=0,toolbar=0,directories=0,resizable=0,scrollbars=1,width=900,height=700");
}
function openPrize(url) {
    if (window.bp_popup) {
        window.bp_popup.close("prizePopup");
    }
    window.bp_popup = window.open(url, "prizePopup", "location=0,status=0,menubar=0,toolbar=0,directories=0,resizable=0,scrollbars=1,width=815,height=561");
}




function initPrizePopup() {
    if ($('#bp_prizes_popup')) {
        var h = $('#bp_prizes_popup .bp_content').height() + 48;
        if (h > 561) {
            $('#bp_prizes_popup').height(h);
        }

        $('.bp_print').click(function (e) {
            e.preventDefault();
            if (e.metaKey) {
                $('link[title=bp_print]').attr('media', '');
                $('link[title^=bp_default]').attr('disabled', 'true');
            } else {
                window.print();
            }
        });
    }
}




function initTeasers() {

    $('.bp_teaser_button:not(.bp_all_games)').parents('.bp_teaser')
		.css('cursor', 'pointer')
		.filter(function (index) {
		    return ($(this).find('h1[class^=bp_teaser_image_game]').length != 0);
		})
			.find('h1').hide().end()
			.find('img').show().end()
			.css('overflow', 'hidden')
			.each(function (index, value) {
			    animateTeasers([this]);
			})
		.end()
		.mouseover(function (e) {
		    $(this).find('.bp_teaser_arrow').addClass('hover');
		    $(this).find('.bp_teaser_button').addClass('hover');
		})
		.mouseout(function (e) {
		    $(this).find('.bp_teaser_arrow').removeClass('hover');
		    $(this).find('.bp_teaser_button').removeClass('hover');
		})
		.click(function (e) {
		    window.location.href = $(this).find('a.bp_teaser_button').attr('href');
		});

    var teaser = $('.bp_teaser_image_games').parent('.bp_teaser');
    if (teaser.length == 0) return;

    var css_map = {
        'position': 'absolute',
        'overflow': 'hidden',
        'cursor': 'pointer',
        'width': teaser.width() + 'px',
        'height': teaser.height() + 'px'
    };

    var game_teasers = [
		'Include/html/TeaserSpielSchnipper.html',
		'Include/html/TeaserSpielQuiz.html',
		'Include/html/TeaserSpielTaxi.html'
	];

    //-- DER FOLGENDE TEIL IST SEHR SCHLECHT GELÖST UND SOLLTE NÄCHSTES MAL NEU PROGRAMMIERT WERDEN!
    //-- der Text muss aus dem HTML-Dokument, nicht aus Include-Dateien geholt werden.
    //-- darin ist dann auch das Auflösen der ~ kein Problem und es steht kein Code doppelt.
    var load_requests = game_teasers.length;
    $(game_teasers).each(function (index, value) {
        $('<div id="game_' + index + '" class="game"></div>')
			.css(css_map)
			.css('left', (index != 0 ? -teaser.width() : 0) + 'px')
			.load(g_hostName + '/' + value, function () {
			    $(this).html(bpReplaceAll($(this).html(), '~', g_hostName));
			    $(this).html(bpReplaceAll($(this).html(), '%7E', g_hostName)); //-- Fix für Firefox
			    game_teasers[index] = this;
			    if ((load_requests -= 1) == 0) {
			        teaser
						.css({
						    'position': 'relative',
						    'overflow': 'hidden'
						})
						.empty()
						.append(game_teasers);

			        $(game_teasers)
						.find('h1').hide().end()
						.find('img').show().end()
						.mouseover(function (e) {
						    $(this).find('.bp_teaser_arrow').addClass('hover');
						    $(this).find('.bp_teaser_button').addClass('hover');
						})
						.mouseout(function (e) {
						    $(this).find('.bp_teaser_arrow').removeClass('hover');
						    $(this).find('.bp_teaser_button').removeClass('hover');
						})
						.click(function (e) {
						    window.location.href = $(this).find('a').attr('href');
						});

			        animateTeasers(game_teasers);
			    }
			});
    });
}
function animateTeasers(teasers, current) {
    //console.log('animateTeasers ', teasers.length, teasers);

    var dr = 0;
    if (!current) {
        current = 0;
        dr = Math.floor(Math.random() * 5000);
    }

    var dt = 1000 + Math.floor(Math.random() * 1000);

    $(teasers[current])
		.find('img:eq(1)')
			.delay(dr)
			.delay(dt)
			.fadeOut('slow')
			.delay(dt)
			.fadeIn('slow')
		.end()
		.find('h2')
			.delay(dr)
			.delay(dt)
			.fadeOut('slow')
			.delay(dt)
			.fadeIn('slow', function () {
			    rotateTeasers(teasers, current);
			})
		.end();
}
function rotateTeasers(teasers, current) {
    if (teasers.length == 1) {
        animateTeasers(teasers, 0);
    } else {
        var t1 = $(teasers[current]);
        current = ((current == (teasers.length - 1)) ? 0 : current + 1);
        var t2 = $(teasers[current])
        t1.animate({ left: '+=' + t1.width() }, 'fast');
        t2.animate({ left: '+=' + t2.width() }, 'fast', function () {
            t1.css('left', (-t1.width()) + 'px');
            animateTeasers(teasers, current)
        });
    }
}
function initHtmlGames() {
    var dt = 3000;
    var imgs = $('.bp_game_image');
    imgs.eq(1)
		.delay(dt)
		.fadeOut('slow')
		.delay(dt)
		.fadeIn('slow', initHtmlGames);
}

function rebalanceHeight() {
    $('.bp_balancer_left').css('height', 'auto');
    $('.bp_balancer').remove();
    balanceHeight();
}

function balanceHeight() {
    var pad = 12;
    $('.bp_full:has(.bp_full_left)').each(function (ind, elem) {
        var elemL = $(elem).find('.bp_full_left');
        var elemR = $(elem).find('.bp_full_right');
        var hDiff = elemL.height() - elemR.height();
        if (hDiff > 0) {
            elemR.append('<div class="bp_balancer bp_inner_1 bp_sidebar" style="height: ' + (hDiff - pad) + 'px;"></div>')
        } else {
            // elemL.find('> div:last').height(elemR.height() - pad);
            var elemL_last = elemL.find('> div:last');
            if (!elemL_last.attr('class') || elemL_last.attr('class').indexOf('bp_inner') == -1)
                elemL_last = elemL_last.find('div[class*=bp_inner]:last');
            elemL_last.addClass('bp_balancer_left').height(elemL_last.height() - hDiff);
        }
    });
}



//-- Wird nicht benutzt, da Kommunikation jetzt direkt Flash > Web Service
function saveScore(badge, berlinLevel, punkte1, punkte2, punkte3) {

    // var parameters = "{'badge':'" + badge + "','eDate':'" + eDate + "'}"
    var params = {
        badge: badge,
        berlinLevel: berlinLevel,
        punkte1: punkte1,
        punkte2: punkte2,
        punkte3: punkte3
    };

    // alert($.toJSON(params));

    $.ajax({
        type: "POST",
        url: g_hostName + "/Services/BerlinerService.asmx/SetScore",
        data: $.toJSON(params), // "{ badge: 123, auto: 'b-sd 7130' }"
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            Message("error", msg.d);
        },
        error: function (e) {
            Message("error", "Ein Fehler ist aufgetreten. Die Punkte konnten nicht gespeichert werden.");
        }

    });

}



/// Wird nach dem Facebook-Login aufgerufen und meldet den Spieler in der Session an
function facebookLogin(fb_response) {

    //console.log(fb_response);
    // alert('jetzt kommt das backend' + fb_response.authResponse.userID);

    if (!fb_response) {
        Message("error", "Du wurdest nicht bei Facebook angemeldet!");
        return;
    }

    var params;

    if (!fb_response.authResponse) {
        //-- nur wahr im DebugModus
        var facebookId = window.location.href.replace(/.*DebugId=(.*)/, '$1');

        params = {
            'facebookId': facebookId,
            'accessToken': 100002879915300
        };

    } else {

        params = {
            'facebookId': fb_response.authResponse.userID,
            'accessToken': fb_response.authResponse.accessToken
        };

    }

    $.ajax({
        type: "POST",
        url: g_hostName + "/Services/BerlinerService.asmx/FacebookLogin",
        data: $.toJSON(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d.Status == 1) {
                // msg.d.StatusMessage
                if (window.location.href.indexOf('Redirect=') != -1) {
                    // window.location.href = window.location.href.replace(/.*Redirect=(.*)/, '$1'); // redirect
                    var newUrl = window.location.href.replace(/.*Redirect=([^&]*)&?(.*)/, '$1?$2').replace('~/', '');
                    // alert(newUrl);
                    window.location.href = newUrl;
                } else {
                    window.location.href = window.location.href; // page reload
                }
            } else if (msg.d.Status == -2) {
                //	            var message = "Die beiden Konten konnten nicht verbunden werden. Es existieren bereits getrennte Benutzeranmeldungen.";
                //	            message = message + "<br />&nbsp;<br />";
                //	            message = message + "Mächtest du die getrennten Konten zusammenführen?";
                //	            message = message + "<a href='KontenVerbinden.aspx'>Just Do It!</a>'";
                //	            Message("error", message);
                $(".link_kontenverbinden").show();
            }
            else {
                Message("error", "Du konntest nicht angemeldet werden. Versuche es später bitte erneut!");
            }
        },
        error: function (e) {
            Message("error", "Es ist ein Serverproblem aufgetreten.");
        }
    });

}



/// "Merkt" die Facebook-ID des Logins
function facebookLoginForMerge(fb_response) {


    if (!fb_response) {
        Message("error", "Du wurdest nicht bei Facebook angemeldet!");
        return;
    }

    var params;

    if (!fb_response.authResponse) {
        //-- nur wahr im DebugModus
        var facebookId = window.location.href.replace(/.*DebugId=(.*)/, '$1');

        params = {
            'facebookId': facebookId,
            'accessToken': 100002879915300
        };

    } else {

        params = {
            'facebookId': fb_response.authResponse.userID,
            'accessToken': fb_response.authResponse.accessToken
        };

    }


    $.ajax({
        type: "POST",
        url: g_hostName + "/Services/BerlinerService.asmx/FacebookStoreForMerge",
        data: $.toJSON(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d.Status == 1) {
                $('.facebook_id_target').text(params.facebookId);
                replaceFacebookIdWithName('.facebook_id_target');
                $('.facebook_id_target_container').show();
                $('.bp_merge_facebook').hide();
            }
            else {
                Message("error", "Es ist ein Problem aufgetreten, bitte versuche es später noch einmal.");
            }
        },
        error: function (e) {
            Message("error", "Es ist ein Serverproblem aufgetreten.");
        }
    });

}




function initSystemDialogs() {
    if ($('.bp_system > div').css('visibility') != "hidden") {
        var bpsOffset = $('.bp_system').offset();
        if (!bpsOffset) return;
        $('.bp_system').css({
            // 'left': (-225-bpsOffset.left)+'px',
            'left': '-450px',
            'top': -bpsOffset.top + 'px',
            'width': '1350px', // '1480px',
            'height': Math.max(1652, ($('body').height() + 50)) + 'px',
            'background-color': 'rgba(0,0,0,0.5)'
        });
        $('.bp_system > div').css({
            'position': 'relative',
            'left': '450px',
            'top': bpsOffset.top + 'px'
        });
        $('div.messages')
			.attr('onclick', '')
			.click(function (e) {
			    e.preventDefault();
			    $('.bp_system p').remove();
			    $('.bp_system object').remove();
			    // $('.bp_system').hide();
			    hideSystemDialogs();
			});
        $('.bp_system a[href^=JavaScript]').click(function (e) {
            e.preventDefault();
            $('.bp_system p').remove();
            $('.bp_system object').remove();
            // $('.bp_system').hide();
            hideSystemDialogs();
        });
    }
}
function hideSystemDialogs() {
    $('.bp_system').css({
        'left': 'auto',
        'top': 'auto',
        'width': 'auto',
        'height': 'auto',
        'background-color': 'none',
        'visibility': 'hidden'
    });
    $('.bp_system > div').css({
        'position': 'relative',
        'left': 'auto',
        'top': 'auto'
    });

}
function Debug(message) {
    Message("debug", message);
}
function Message(type, message) {
    var html = '<p class="' + type + '">' + message + '</p>';
    $('div.messages').attr("style", "");
    $('div.messages').append(html);

    $('.bp_system').show();
    initSystemDialogs();
}

function viewTvspot() {
    var html = '<div id="tvspot" style="margin: 12px 0 0 12px;"></div>';
    $('div.messages').attr("style", "");
    $('div.messages').append(html);
    $('.bp_system').css('visibility', 'visible').show();
    initSystemDialogs();
    swfobject.embedSWF("/Include/swf/tvspot.swf", "tvspot", "520px", "350px", "10", "/_Common/Include/swf/expressInstall.swf", {}, {'wmode': 'opaque'}, { 'style': 'margin: 12px 0 0 12px;' });
}


/* image preload snippet: */
function preloadImages() {
    images_to_preload = ["Images/image1.jpg", "Images/image2.jpg", "Images/image3.jpg"];

    $(images_to_preload).preload({
        init: function (loaded, total) {
            $(arguments).log("init");
        },
        loaded: function (image, loaded, total) {
            $(arguments).log("loaded");
            img.before(image);
        },
        complete: function (loaded, total) {
            $(arguments).log("complete");
        }
    });
}

//-- Payload is something like '12 Codes|5 Codes'
function fillAnzahlCodes(payload) {

    // var payload = msg.d.Payload.toString();
    var indexOfSeperator = payload.indexOf('|');
    var codesPlayer = payload.substring(0, indexOfSeperator);
    var codesGroup = payload.substring(indexOfSeperator + 1, payload.length);
    var chance = codesPlayer.substring(0, codesPlayer.indexOf(' '));

    $('div.bp_user_codes span.player_code_info').text(codesPlayer);
    $('div.bp_user_codes span.group_code_info').text(codesGroup);
    $('div.bp_user_chance span.chance_info').text(chance);
}



//-- Wird nicht benutzt, da Kommunikation jetzt direkt Flash > Web Service
function updateAnzahlCodes() {
    // var parameters = "{'badge':'" + badge + "','eDate':'" + eDate + "'}"
    var params = "{}";
    // alert($.toJSON(params));
    $.ajax({
        type: "POST",
        url: g_hostName + "/Services/BerlinerService.asmx/GetCurrentCodes",
        // data: $.toJSON(params), // "{ badge: 123, auto: 'b-sd 7130' }"
        data: params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d.Status == 1) {
                fillAnzahlCodes(msg.d.Payload);
            } else if (msg.d.Status < 0) {
                var errorText = "Fehler beim Aktualisieren der Anzahl Codes: " + msg.d.StatusMessage;
                Message("error", errorText);
            }
        },
        error: function (e) {
            Message("error", "Ein Fehler ist aufgetreten. Die Anzeige der Codes konnte nicht aktualisiert werden.");
        }
    });
}




function replaceFacebookIdWithName(targetSelector) {
    $(targetSelector).each(function (index, value) {
        var cb_this = $(this);
        var facebookId = $(this).text();
        $.ajax({
            url: myurl = 'https://graph.facebook.com/' + facebookId + '?callback=?',
            dataType: "json",
            success: function (msg) {
                cb_this.text(msg.name.replace(/(\w+) .*/gi, '$1'));
            }
        });
    });
}


function bpReplaceAll(txt, replace, with_this) {
    return txt.replace(new RegExp(replace, 'g'), with_this);
}
