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/fontbook.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)
        }
    }
}


