initFooter = new Object();

initFooter = {
    append_div: new String,
    absolute_ajax: new String,
    //hardcoded_ajax: new String, // define own AJAX-url
    //hardcoded_ajax: "http://localhost/microsites/trixiefont.com/html/external_footer/",

    initFooter: function(div_id, absolute_ajax) {
        if (typeof div_id == 'undefined') div_id = 'default';
        if (div_id != 'default') { this.append_div = div_id; }

        if (typeof absolute_ajax == 'undefined') absolute_ajax = 'default';
        if (absolute_ajax != 'default') { this.absolute_ajax = absolute_ajax; }

        var url = location.href; // getting the base url
        /*var last_slash = url.lastIndexOf('.com/');
        var base_url = url.substring(0, last_slash);*/
        var hostname = url.match(/http:\/\/(.*?)[?^\/]/g);
        ajax_url = hostname + 'external_footer/';

        if (this.hardcoded_ajax) { // hardcoded ajax_request in folder-structure
            ajax_url = this.hardcoded_ajax;
        }
        if (this.absolute_ajax != '') { // individual site request as an attribute
            ajax_url = this.absolute_ajax;
        }
        
        xhr.xhr(ajax_url, function(text) { initFooter.processJson(text) });
    },

    processJson: function(json_response) { // init function
        json_object = eval('(' + json_response + ')'); // converting json string to javascript array
        this.addJavaScript(json_object.js); // adding JS

        if (json_object.css_path) { // adding CSS-link
            this.addCSSLink(json_object.css_path);
        }
        if (json_object.css) { // adding pure CSS
            this.addCSS(json_object.css);
        }

        this.addContent(json_object.html); // adding HTML

        if (json_object.twitter) { // adding Twitter
            this.addTwitterStatus(json_object.twitter);
        }
    },
    addJavaScript: function(js_code) { // adding JavaScript
        // http://www.phpied.com/dynamic-script-and-style-elements-in-ie/
        var js_output = document.createElement('script');
        js_output.setAttribute('type', 'text/javascript');
        js_output.setAttribute('id', 'footerjsonscript');
        document.body.appendChild(js_output);

        var scr = js_code; // the IE and FF-way
        js_output.text = scr;
        var hh = document.getElementsByTagName('head')[0];
        hh.appendChild(js_output);
    },

    addCSS: function(css_code) { // inserting the CSS-Code
        // http://www.phpied.com/dynamic-script-and-style-elements-in-ie/
        var ss1 = document.createElement('style');
        var def = css_code;
        ss1.setAttribute("type", "text/css");
        if (ss1.styleSheet) {   // IE
            ss1.styleSheet.cssText = def;
        } else {				// the world
            var tt1 = document.createTextNode(def);
            ss1.appendChild(tt1);
        }
        var hh1 = document.getElementsByTagName('head')[0];
        hh1.appendChild(ss1);
    },

    addCSSLink: function(css_source) { // inserting CSS-link
        var ss1 = document.createElement('style');
        var def = "@import url('" + css_source + "');";
        ss1.setAttribute("type", "text/css");

        if (ss1.styleSheet) {   // IE
            var styleSheetsNum = document.styleSheets.length;
            document.styleSheets[styleSheetsNum - 1].addImport(css_source);
        } else {				// the world
            var tt1 = document.createTextNode(def);
            ss1.appendChild(tt1);
        }

        var hh1 = document.getElementsByTagName('head')[0];
        hh1.appendChild(ss1);
    },

    addContent: function(content_code) {// creating a div element for html output
        var html_output = document.createElement("div");
        html_output.setAttribute("id", "external-footer");

        if (this.append_div != '') {
            document.getElementById(this.append_div).appendChild(html_output);
        } else {
            document.body.appendChild(html_output);
        }

        content_code = content_code.replace(/&quot;/g, '"'); // normalizing quotes from array2json function
        // inserting the html
        document.getElementById('external-footer').innerHTML = content_code;
    },
    addTwitterStatus: function(twitter) { // adding the Twitter status in div 'twitter_div'
        document.getElementById('twitter_div').innerHTML = twitter;
    }
}

/**
* Worls smallest Ajax library
* http://pastie.org/52045
*
*/

xhr = new Object();
xhr = {
    xhr: function(j, k) {
        var w = window, r = w.XMLHttpRequest ? new XMLHttpRequest() : (w.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : 0)
        if (r) {
            r.onreadystatechange = function() { r.readyState == 4 ? k(r.responseText, r.responseXML) : 0 }
            r.open('GET', j, !0)
            r.send(null)
        }
    }
}


