﻿var _FLIPTO_DOMAIN = document.location.protocol + '//flip.to';
var _FLIPTO_JQUERY_URL = document.location.protocol + '//ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js';
var _FLIPTO_JQUERY_POSTMESSAGE_URL = _FLIPTO_DOMAIN + '/media/js/jquery.postmessage.min.js';
var _FLIPTO_PAGE_URL = _FLIPTO_DOMAIN + '/external/signup.aspx';
var _FLIPTO_STYLESHEET_URL = _FLIPTO_DOMAIN + '/external/stylesheet.aspx';

var _FLIPTO_PARAMETER = 'flipto';
var _FLIPTO_PARAMETER_URL = 'url';

var _DIVLOCATION_PARAMETER = 'loc';
var _FLIPTO_MAIN_IFRAME_ID = 'fliptoFrame';

var _fliptoCode = '';
var _fliptoDivId = '';
var _fliptoIsPostMessageScriptAdded = false;

var _CSS_PARAMETER_CODE = 'flipto';
var _CSS_PARAMETER_TYPE = 'type=3';

var _FLIPTO_POSTMESSAGE_MESSAGE_ID_PAGE_LOADED = '1';
var _FLIPTO_POSTMESSAGE_MESSAGE_ID_REDIRECT = '2';

//window.onload = fliptoInitialize;
fliptoAddLoadEvent(fliptoInitialize);

try {
    var ftScripts = document.getElementsByTagName('script');
    var ftScript = ftScripts[ftScripts.length - 1];
    var ftQueryString = ftScript.src.replace(/^[^\?]+\??/, '');

    var ftParams = fliptoParseQuery(ftQueryString);

    _fliptoDivId = ftParams[_DIVLOCATION_PARAMETER];
}
catch (e) { }

function fliptoAddLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function fliptoInitialize() {
    _fliptoCode = fliptoGetUrlParameterValue(_FLIPTO_PARAMETER);
    if (_fliptoDivId == null || _fliptoDivId == '' || _fliptoCode == null || _fliptoCode == '')
        return;

    fliptoConfigurePageStyleSheet(_fliptoCode);

    if (!fliptoIsJQueryLoaded()) {
        fliptoAddScriptFile(_FLIPTO_JQUERY_URL);
    }

    fliptoLoad()
}
function fliptoLoad() {
    if (!fliptoIsJQueryLoaded()) {
        setTimeout("fliptoLoad()", 20);
        return;
    }

    if (!fliptoIsJQueryPostMessageLoaded()) {
        if (!_fliptoIsPostMessageScriptAdded) {
            fliptoAddScriptFile(_FLIPTO_JQUERY_POSTMESSAGE_URL);
            _fliptoIsPostMessageScriptAdded = true;
        }

        setTimeout("fliptoLoad()", 20);
        return;
    }

    //var iframeSrc = _FLIPTO_DOMAIN + '/' + _fliptoCode + _FLIPTO_EXTENSION + '?' + _FLIPTO_PARAMETER_URL + '=' + encodeURIComponent(document.location.href);
    var iframeSrc = _FLIPTO_PAGE_URL + '?' + _FLIPTO_PARAMETER + '=' + _fliptoCode + '&' + _FLIPTO_PARAMETER_URL + '=' + encodeURIComponent(document.location.href);

    jQuery(document.createElement('iframe'))
        .attr("id", _FLIPTO_MAIN_IFRAME_ID)
        .attr("src", iframeSrc)
        .attr("scrolling", 'no')
        .attr("border", '0')
        .attr("frameBorder", '0')
        .appendTo('#' + _fliptoDivId)
        .hide();

    //hook up the notifications from the iframe
    if (window.postMessage) {
        jQuery.receiveMessage(
          function(e) { fliptoOnPageReceiveJQueryMessage(e) },
          _FLIPTO_DOMAIN
        );
    }
    else {
        fliptoOnPageReceiveJQueryMessage(null);
    }
}
function fliptoOnPageReceiveJQueryMessage(e) {

    try {
        if (e == null) {
            jQuery('#' + _FLIPTO_MAIN_IFRAME_ID).show();
            return;
        }

        var data = e.data;
        var params = fliptoParseQuery(data);

        var msgId = params['id'];
        if (msgId == undefined || msgId == null || msgId == '')
            return;

        switch (msgId) {
            case _FLIPTO_POSTMESSAGE_MESSAGE_ID_REDIRECT:
                var url = params['info'];
                if (url!=undefined && url != null && url != '')
                    window.location = url;
                break;

            default:
                jQuery('#' + _FLIPTO_MAIN_IFRAME_ID).show();
                break;

        }
    }
    catch (er) { }
}
function fliptoIsJQueryLoaded() {
    return typeof jQuery != 'undefined';
}
function fliptoIsJQueryPostMessageLoaded() {
    return typeof jQuery.receiveMessage != 'undefined';
}
function fliptoAddScriptFile(url) {
    var script = document.createElement("script");
    script.setAttribute("src", url);
    script.setAttribute("type", "text/javascript");
    document.body.appendChild(script);
}
function fliptoParseQuery(query) {
    var Params = new Object();
    if (!query) return Params; // return empty object
    var Pairs = query.split(/[;&]/);
    for (var i = 0; i < Pairs.length; i++) {
        var KeyVal = Pairs[i].split('=');
        if (!KeyVal || KeyVal.length != 2) continue;
        var key = unescape(KeyVal[0]);
        var val = unescape(KeyVal[1]);
        val = val.replace(/\+/g, ' ');
        Params[key] = val;
    }
    return Params;
}
function fliptoGetUrlParameterValue(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = '[\\?&]' + name + '=([^&#]*)';
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);

    if (results == null)
        return '';
    else
        return encodeURIComponent(results[1]);
}
function fliptoConfigurePageStyleSheet(code) {
    if (!document.styleSheets)
        return;

    if (code == null || code == '')
        return;

    var cssUrl = _FLIPTO_STYLESHEET_URL + '?' + _CSS_PARAMETER_CODE + '=' + code + '&' + _CSS_PARAMETER_TYPE;
    fliptoAddDomStyleSheet(cssUrl);
}
function fliptoAddDomStyleSheet(cssUrl) {
    var head = document.getElementsByTagName("head")[0];
    var cssNode = document.createElement('link');
    cssNode.type = 'text/css';
    cssNode.rel = 'stylesheet';
    cssNode.href = cssUrl;
    cssNode.media = 'screen';
    head.appendChild(cssNode);
}