

(function() {

var productReg = /santu.com\/(([a-z]{3,4}[\-\_]?[0-9]{3,4})|([0-9]{3,4}[\-\_]?[a-z]{3,4}))/;
var merchantUrl = 'santu.com/studium';
var domain = 'santu.com';
var excludeUrl = /(app.santu.com)|(app.santu.com)|(forums.santu.com)|(support.santu.com)|([^a-z0-9]i.santu.com)|(santu.com\/en$)|(santu.com\/en\/)|([^.]santu.com$)|([^.]santu.com\/$)|(santu.com\/de$)|(santu.com\/de\/)|uat.santu.com\/new/;
var santuHost = 'http://app.santu.com';
var santuSess = 'sgok2sbnsf1rrnc63gq6vg5na7';
if(!iframeMode)
    var iframeMode = false;
var customizeMode = false;
var hp = false;
var ismobile   = false;

SantuCart = {
    iframeMode: false,
    iframeElement: null,
    SantuIframeUrlToShow: '',
    loaded: false,
    browser: {},

    domready: function(){
        if (SantuCart.loaded)
            return;
        //if iframeMode
        if (hp){
            if(document.location.href.indexOf(hp) == 0){
                var urls=document.location.search.match(/santulink=(.*)$/);
                if(urls) SantuIframeUrlToShow = urls[1];
            }
        }
        SantuCart._defineIframeMode();
        SantuCart.parse();
        SantuCart.loaded = true;

        if (SantuCart.iframeMode){
            SantuCart.iframeInit((typeof(SantuCart.SantuIframeUrlToShow)!='undefined' && ((SantuCart.SantuIframeUrlToShow.indexOf(merchantUrl) != -1) || (SantuCart.SantuIframeUrlToShow.indexOf(domain) != -1)))? SantuCart.SantuIframeUrlToShow:null);
        }
    },

    isIE: function(){
        if (SantuCart.browser.msie) return SantuCart.browser.msie;
        var rv = false; // Return value assumes failure.
        if (navigator.appName == 'Microsoft Internet Explorer')
        {
            var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
            if (re.exec(navigator.userAgent) != null)
                rv = parseFloat( RegExp.$1 );
        }
        SantuCart.browser.msie = rv;
        return rv;
    },

    isWebKit: function(){
        if (SantuCart.browser.webkit) return SantuCart.browser.webkit;
        var rv = false;
        var re = new RegExp("Mozilla/5.0 \\(.*\\) AppleWebKit/(.*)");
        if (re.exec(navigator.userAgent) != null) {
            rv = parseFloat( RegExp.$1 );
        }
        SantuCart.browser.webkit = rv;
        return rv;
    },
    _defineIframeMode: function()
    {
        SantuCart.iframeMode  = iframeMode;
        //SantuCart.SantuIframeUrlToShow  = SantuIframeUrlToShow;
        var els = document.getElementsByTagName('a');
        for(var i = 0, n = els.length; i < n; i++) {
            if(!els[i].href)
                continue;
            if (
                    (merchantUrl && els[i].href.indexOf(merchantUrl) !== -1)
                    || productReg.test(els[i].href)
                    ||  ( els[i].href.indexOf(domain) !== -1  )
                    ||  ( els[i].href.indexOf('santu.com') !== -1 )
               )
            {

                if (els[i].href.indexOf('embeded') > 0){
                    SantuCart.iframeElement = els[i];
                    SantuCart.iframeMode = true;
                    SantuCart.SantuIframeUrlToShow = els[i].href;
                    return true;
                }
            }
        }
    },
    _parse: function (els)
    {
        for (var i = 0, n = els.length; i < n; i++) {
            if (!els[i].href)
                continue;
            if (excludeUrl.test(els[i].href))
                continue;
            if( -1 != merchantUrl.indexOf('/') ){

                var urls=document.location.search.match(/santulink=(.*)$/);
                if(urls) merchantUrl = urls[1];
            }

            if (
                    (merchantUrl && els[i].href.indexOf(merchantUrl) !== -1)
                    || productReg.test(els[i].href)
                    ||  ( els[i].href.indexOf(domain) !== -1  )
                    ||  ( els[i].href.indexOf('santu.com') !== -1 )
                )
            {

                var ap = els[i].href.indexOf('?') > 0 ? '&' : '?';
                if (els[i].href.indexOf('embed=') == -1) {
                    var embmode=1;
                    if(SantuCart.iframeMode){
                        embmode=3;
                    }else if(els[i].href.indexOf('/store')!=-1){
                        embmode=2;
                    }
                    ap = ap + 'embed=' + embmode + '&';
                }
                if (els[i].href.indexOf('mobile=1') == -1) ap = ap + 'mobile=1';
                els[i].href += ap.length > 1 ? ap : '';
                SantuCart.addEvent(els[i], 'click', SantuCart.add);
            }
        }
    },
    parse: function()
    {
        // Add onclick handlers to 'a' elements
        var els = document.getElementsByTagName('a');
        SantuCart._parse(els);
        var els = document.getElementsByTagName('area');
        SantuCart._parse(els);
    },

    /**
     * X-browser event handler attachment and detachment
     * @argument obj - the object to attach event to
     * @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
     * @argument fn - function to call
     */
    addEvent: function(obj, evType, fn){
        if (obj.addEventListener){
            obj.addEventListener(evType, fn, false);
            return true;
        } else if (obj.attachEvent){
            var r = obj.attachEvent("on"+evType, fn);
            return r;
        } else {
            return false;
        }
    },
    add: function (e) {
        e = e || window.event;

        var targ = e.target || e.srcElement;
        if (targ.nodeName != 'A' && targ.nodeName != 'AREA')
            while (targ && targ.nodeName != 'A' && targ.nodeName != 'AREA')
                targ = targ.parentNode;
        if (SantuCart.iframeMode) {
            if (hp){
                if (document.location.href.indexOf(hp) != 0) {
                    var q = hp.indexOf('?') == -1 ? '?' : '&';
                    targ.href = hp + q + 'santulink=' + targ.href;
                    return true;
                } else {
                    SantuCart.iframeHandler.src = targ.href;
                    SantuCart.iframeHandler.contentWindow.postMessage('ping|' + document.location.href, SantuCart.iframeHandler.src); // do not wait for interval
                }
            }else{
                SantuCart.iframeHandler.src = targ.href;
                SantuCart.iframeHandler.contentWindow.postMessage('ping|' + document.location.href, SantuCart.iframeHandler.src); // do not wait for interval
            }
            if (e.preventDefault) {
                e.stopPropagation();
                e.preventDefault();
            }
            return false;
        }
    },
    iframeHandler: null,
    iframeInit: function (url) {
        if (!url){
            url = 'about:blank';
        } else {
            if (url.indexOf('embed=') == -1) {
                var ap = url.indexOf('?') > 0 ? '&' : '?';
                var embmode=1;
                if(SantuCart.iframeMode){
                    embmode=3;
                }else if(url.indexOf('/store')!=-1){
                    embmode=2;
                }
                //if(url.indexOf('/store')!=-1)embmode=2;
                ap = ap + 'embed=' + embmode + '&sessid=' + santuSess + '&';
                if (url.indexOf('mode=embed') == -1) ap = ap + 'mode=embed';
                url = url+ap;
            }
        }
        if (!SantuCart.iframeElement){
            return false;
        }

        var i=0; while(document.getElementById('ifr'+i))i++;

        var iframe = document.createElement('iframe');
        var src_attr = document.createAttribute('src');
        src_attr.nodeValue = url;
        iframe.setAttributeNode(src_attr);
        var style_attr = document.createAttribute('style');
        style_attr.nodeValue = 'width:100%; min-width:350px; height:0; border:none; background-color:#fff; overflow:hidden;';
        iframe.setAttributeNode(style_attr);
        var id_attr = document.createAttribute('id');
        id_attr.nodeValue = 'ifr' + i;
        iframe.setAttributeNode(id_attr);
        var scroll_attr = document.createAttribute('scrolling');
        scroll_attr.nodeValue = 'no';
        iframe.setAttributeNode(scroll_attr);

        var parentNode = SantuCart.iframeElement.parentNode;
        parentNode.replaceChild(iframe, SantuCart.iframeElement);

        //SantuCart.iframeElement = iframe;
        //document.write('<iframe src="' + url + '" style="width:100%; min-width:350px; height:0; border:none; background-color:#fff; overflow:hidden;" id="'+('ifr' + i)+'" scrolling="no"></iframe>');
        //document.getElementById("myList").appendChild('<iframe src="' + url + '" style="width:100%; min-width:350px; height:0; border:none; background-color:#fff; overflow:hidden;" id="'+('ifr' + i)+'" scrolling="no"></iframe>');
        SantuCart.iframeHandler = document.getElementById('ifr' + i);
        SantuCart.iframeHandler.id = '';
        SantuCart.addEvent(window, "message", SantuCart.embedReceiveMessage);
        SantuCart.addEvent(window, "resize", SantuCart.embedNotifyResize);
        SantuCart.addEvent(window, "load", SantuCart.embedPing);
    },
    embedReceiveMessage: function (e)
    {
        e = e || window.event();
        if (0 != e.data.indexOf('santuiframe')) return;
        var dt = e.data.split('|');
        if (!dt[1] || dt[1].indexOf('h') == -1) return;
        dth = dt[1].split('=');
        height = dth[1];
        if (SantuCart.iframeHandler) {
            if (SantuCart.iframeHandler.style.height)SantuCart.iframeHandler.style.height = '';
            SantuCart.iframeHandler.height = height;
        }
    },
    embedNotifyResize: function ()
    {
        if (SantuCart.iframeHandler){
            SantuCart.iframeHandler.contentWindow.postMessage('resize', SantuCart.iframeHandler.src);
        }
    },
    embedPing: function ()
    {
        setInterval(function ()
        {
            if (SantuCart.iframeHandler && SantuCart.iframeHandler.src.indexOf('http') == 0)
                SantuCart.iframeHandler.contentWindow.postMessage('ping|' + document.location.href, SantuCart.iframeHandler.src);
        }, 800);
    }
}
// Try and run this as soon as possible
SantuCart.addEvent(window, "load", SantuCart.domready);

(function(){
    if (SantuCart.isIE()){
// Only works if you document.write() it
        document.write("<scr" + "ipt id=__santu_ie_init defer=true " + "src=//:><\/script>");

// Use the defer script hack
        var script = document.getElementById("__santu_ie_init");
        script.onreadystatechange = function() {
            if ( this.readyState != "complete" ) return;
            this.parentNode.removeChild( this );
            SantuCart.domready();
        };

// Clear from memory
        script = null;

    } else if (SantuCart.isWebKit() && SantuCart.browser.webkit < 525){
        (function(){
            (['loaded', 'complete'].contains(document.readyState)) ? SantuCart.domready() : arguments.callee.delay(50);
        })();
    } else {
        document.addEventListener("DOMContentLoaded", SantuCart.domready, false);
    }
})();

})();
