var k = {
	/* k */
	initiate: function(){
		/* k.initiate() */
		this.content.setHeaders();
		this.content.setLinks();
		this.content.setNotifications();
	},
	id: function(id) {
		/* k.id(id) */
		if(document.createElement && document.getElementById) return document.getElementById(id);
	},
	tag: function(tag){
		/* k.tag(tag) */
		if(document.createElement && document.getElementsByTagName) return document.getElementsByTagName(tag);
	},
	live: {
		/* k.live */
		insert: {
			/* k.live.insert */
			initiate: function(object){
				/* k.live.insert.initiate(object) */
			}
		},
		edit: {
			/* k.live.edit */
			initiate: function(object){
				/* k.live.edit.initiate(object) */
			}
		},
		view: {
			/* k.live.view */
			initiate: function(object){
				/* k.live.view.initiate(object) */
			}
		}
	},
	content: {
		make_id_attribute: function(object,i){
			var id_to_return;
			if(!k.id(object.innerHTML.replace(/\W/g, '').toLowerCase()+i)){
				id_to_return = object.innerHTML.replace(/\W/g, '').toLowerCase()+i;
			}
			return id_to_return;
		},
		setHeaders: function(){
			var h3Length = k.tag("h3").length,
					h4Length = k.tag("h4").length,
					h5Length = k.tag("h5").length;
			for(var i=0;i<h3Length;i++){ k.tag("h3")[i].setAttribute("id",this.make_id_attribute(k.tag("h3")[i],i)); }
			for(var i=0;i<h4Length;i++){ k.tag("h4")[i].setAttribute("id",this.make_id_attribute(k.tag("h4")[i],i)); }
			for(var i=0;i<h5Length;i++){ k.tag("h5")[i].setAttribute("id",this.make_id_attribute(k.tag("h5")[i],i)); }
		},
		setLinks: function(){
			var linksLength = k.tag("a").length;
			for(var i=0;i<linksLength;i++){
				if(k.tag("a")[i].className.indexOf('close') !=-1 && k.tag("a")[i].parentNode.className.indexOf("closenotifications") !=-1){
					k.tag("a")[i].setAttribute("onclick","return k.content.getClose(k.id('notifications'));");
				}else if(k.tag("a")[i].className.indexOf('close') !=-1){
					k.tag("a")[i].setAttribute("onclick","return k.content.getClose(this);");
				}
			}
		},
		getClose: function(object){
			if(object){
				object.setAttribute("class","hide");
			}
			return false;
		},
		setNotifications: function(){
			if(k.id("notifications_identifier_link")){
				k.id("notifications_identifier_link").setAttribute("onclick","return k.content.getNotifications();");
			}
		},
		getNotifications: function(){
			if(k.id("notifications")){
				/* test */
				k.id("notifications").setAttribute("class","show");
				xhr.get(k.id("notifications"), "/backinfo.php", false);
			}
		}
	}
};
var xhr_reqs = new Array();
var xhr = {
	initiate: function(type, xhrobj){
		this.type = type;
		this.xhrobj = xhrobj;
	},
	post: function(object,url,parameters,focus){
		/* xhr.post(object, url, parameters, focus); */
		var xhrobj = false;
		if(window.XMLHttpRequest){
			xhrobj=new XMLHttpRequest();
			if(xhrobj.overrideMimeType){
				/* xhrobj.overrideMimeType('text/xml'); */
				xhrobj.overrideMimeType('text/html');
			}
		}else if(window.ActiveXObject){
			try{
				xhrobj = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xhrobj = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e) {}
			}
		}
		if(!xhrobj){
			alert('Cannot create XMLHTTP instance'); return false;
		}
		if(xhrobj){
			xhrobj.onreadystatechange = function(){
				xhr.set(object,focus);
			};
			xhrobj.open('POST', url, true);
			xhrobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xhrobj.setRequestHeader("Content-length", parameters.length);
			xhrobj.setRequestHeader("Connection", "close");
			xhrobj.send(parameters);
		}
		var xmlreq = new xhr.initiate('', xhrobj);
		xhr_reqs.push(xmlreq);
	},
	get: function(object,url,focus){
		/* xhr.get(object,url,focus) */
		var xhrobj=false;
		if(window.XMLHttpRequest){
			xhrobj=new XMLHttpRequest();
			xhrobj.onreadystatechange = function(){
				xhr.set(object,focus);
			};
			xhrobj.open("GET",url,true);
			xhrobj.send(null);
		}else if(window.ActiveXObject){
			try{
				xhrobj = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xhrobj = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){}
			}
			if(xhrobj){
				xhrobj.onreadystatechange = function(){
					xhr.set(object,focus);
				};
				xhrobj.open("GET",url,true);
				xhrobj.send();
			}
		}
		var xmlreq = new xhr.initiate('', xhrobj);
		xhr_reqs.push(xmlreq);
	},
	set: function(object,focus){
		if(typeof(window['xhr_reqs']) == "undefined") return;
		var xhr_doc = null;
		for(var i=0; i<xhr_reqs.length; i++){
			if(xhr_reqs[i].xhrobj.readyState == 4){
				if(xhr_reqs[i].xhrobj.status == 200 || xhr_reqs[i].xhrobj.status == 304){
					if(document.implementation && document.implementation.createDocument){
						xhr_doc = document.implementation.createDocument("", "", null);
					}else if(window.ActiveXObject){
						xhr_doc = new ActiveXObject("Microsoft.XMLDOM");
					}
					xhr_doc = xhr_reqs[i].xhrobj.responseText;
					xhr_reqs.splice(i,1);
					i--;
					var responses=xhr_doc;
					this.response(object, responses, focus);
				} else {
					xhr_reqs.splice(i,1);
					i--;
				}
			}
		}
	},
	response: function(object, responses, focus){
		var msg = '',url='';
		if(object.nodeName.toLowerCase() == "input"){
			object.value=responses.replace(/&quot;/g,"\"");
		}else{
			object.innerHTML=responses;
		}
		k.initiate();
	}
};
function addListener(element, type, expression, bubbling){
	bubbling = bubbling || false;
	if(window.addEventListener){
		element.addEventListener(type, expression, bubbling);
		return true;
	}else if(window.attachEvent){
		element.attachEvent("on" + type, expression);
		return true;
	}else{
		return false;
	}
}
addListener(window, "load", function(){ k.initiate(); });