document.onclick = function(e){
	//hide smiley mood menu
	//Mood.HideDropDown();
		
	//box delegation
	//if(EventDelegation.GetTarget(e).className == "box-header-closed" || EventDelegation.GetTarget(e).className == "box-header-open")
	//	Box.ToggleOpenClose(EventDelegation.GetTarget(e));
	
	//Nice event delegation
	if(EventDelegation.GetTarget(e).className == "nice" || EventDelegation.GetTarget(e).parentNode.className == "nice"){
		if(EventDelegation.GetTarget(e).className == "nice")
			Nice.Save(EventDelegation.GetTarget(e));
		if(EventDelegation.GetTarget(e).parentNode.className == "nice")
			Nice.Save(EventDelegation.GetTarget(e).parentNode);
		
		return false;
	}
	if(EventDelegation.GetTarget(e).className == "nice nice-dis" || EventDelegation.GetTarget(e).parentNode.className == "nice nice-dis"){
		if(EventDelegation.GetTarget(e).className == "nice nice-dis")
			Nice.AllreadySaved(EventDelegation.GetTarget(e));
		if(EventDelegation.GetTarget(e).parentNode.className == "nice nice-dis")
			Nice.AllreadySaved(EventDelegation.GetTarget(e).parentNode);
		return false;
	}
	
	if(EventDelegation.GetTarget(e).className == "nice nice-del"){
		Nice.Delete(EventDelegation.GetTarget(e));
		return false;
	}
	
	//disabled links in extras menu
	if(/-disabled/i.test(EventDelegation.GetTarget(e).parentNode.className)){
		Extras.Disabled(EventDelegation.GetTarget(e).parentNode);
		return false;
	}
	//add friend events
	if(/become-friend/i.test(EventDelegation.GetTarget(e).parentNode.className)){
		//attach event
		//check if the user allready added member to friend list
		if(EventDelegation.GetTarget(e).parentNode.className != "become-friend-disabled"){
			Extras.AddFriend(EventDelegation.GetTarget(e).parentNode);
			return false;
		}	
	}
	
	
	
	
	//if(EventDelegation.GetTarget(e).id == "friends-next-link"){
	//	ToggleFriends.Next();
	//	return false;
	//}
	//if(EventDelegation.GetTarget(e).id == "clubs-next-link"){
	//	ToggleClubs.Next();
	//	return false;
	//}
	
	//if(EventDelegation.GetTarget(e).className == "tag"){
	//	TagList.Set(EventDelegation.GetTarget(e));
	//	return false;
	//}
	//if(EventDelegation.GetTarget(e).className == "tag-selected"){
	//	TagList.UnSet(EventDelegation.GetTarget(e));
	//	return false;
	//}
		
	//if(document.all){
		//fix broken image gallery links in IE
	//	if(EventDelegation.GetTarget(e).nodeName.toLowerCase() == "img" && EventDelegation.GetTarget(e).className == "thumb")
	//		window.location = EventDelegation.GetTarget(e).parentNode.parentNode.href;
	//}
	
	AvatarList.HideItem();
}

var EventDelegation = {
	GetTarget : function(e){
		e = e || window.event;
    	return e.target || e.srcElement;
	}
}

/*AJAX obj*/
var Community = {
	path : ""
}

var AvatarList = {
	item : null,
	avatarItems : [],
	Init : function(){
		var ulElmColl = document.getElementsByTagName("*"), liItems;
		for(var i=0,ulElm;ulElm=ulElmColl[i];i++){
			if(/avatar-item/i.test(ulElm.className)){
				AvatarList.avatarItems.push(ulElm);
				ulElm.onmouseover = AvatarList.ShowLiItem;
			}
		}
	},
	ShowLiItem : function(){
		//remove all visible classes and set lower zindex on all non visible
		AvatarList.item = this;
		AvatarList.HideItem();
				
		var ulChild = this.getElementsByTagName("ul")[0];
		ulChild.className = "visible";
		this.style.zIndex = "10";
	},
	HideItem : function(){
		if(AvatarList.item != null){
			var parentUl = AvatarList.item.parentNode;
			for(var i=0,liElm;liElm=AvatarList.avatarItems[i];i++){
				if(/avatar-item/i.test(liElm.className)){
					liElm.style.zIndex = 1;
				
					var ulColl = liElm.getElementsByTagName("ul");
					for(var x=0,ulElm;ulElm=ulColl[x];x++){
						ulElm.className = "hidden";
					}
				}
			}
		}
	}
}


function AjaxObj(){
	this.xmlHttp = null;
	this.CreateXmlHttp();
	this.method = "GET";
	this.url = "";
	this.parameters = null;
	this.callBack = null;
}

AjaxObj.prototype.CreateXmlHttp = function(){
		if(typeof XMLHttpRequest != "undefined"){
			this.xmlHttp = new XMLHttpRequest();
		}
		else if(typeof window.ActiveXObject != "undefined"){
			try{
				this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
			}
			catch(e){
				try{
					this.xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
				}
				catch(e){
					try{
						this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e){
						this.xmlHttp = null;
					}
				}
			}
		}
	};
AjaxObj.prototype.ClearXmlHttp = function(){
	this.xmlHttp = null;
};
AjaxObj.prototype.Fetch = function(){
	this.xmlHttp.open(this.method, this.url , true);
	this.xmlHttp.send(this.parameters);
	var obj = this;
	this.xmlHttp.onreadystatechange = function (){
		if(obj.xmlHttp && obj.xmlHttp.readyState == 4){
			if(obj.callBack != null){
				eval(obj.callBack);
			}
		}
	}

	return false;
};

/*My presentation*/
var ToggleWysiwyg = {
	formObj : null,
	buttonObj : null,
	Init : function(){
		var buttons = document.getElementsByTagName("*");
		for(var i=0,button;button=buttons[i];i++){
			if(/wysiwyg/i.test(buttons[i].className)){
				ToggleWysiwyg.formObj = buttons[i].parentNode;
				//attach events
				ToggleWysiwyg.buttonObj = buttons[i];
				buttons[i].onclick = ToggleWysiwyg.AddRemoveWysiwyg;
			}
		}	
	},
	AddRemoveWysiwyg : function(){
		//remove save class
		var editorId;
		if(this.className.indexOf("save") != -1){
			var normalClass = this.className.substring(0, this.className.indexOf("save")-1);
			editorId = normalClass.substring(8,normalClass.length); 
		}
		else{
			editorId = this.className.substring(8,this.className.length);
		}
		if (tinyMCE.getInstanceById(editorId) == null){
			this.parentNode.className = "wys-form presentation-filled";
			tinyMCE.execCommand('mceAddControl', false, editorId);
			var buttons = document.getElementsByTagName("button");
			for(var i=0,button;button=buttons[i];i++){
				if(/wysiwyg/i.test(button.className))
					buttons[i].className += " save";
					//alert(buttons[i].innerHTML);
					buttons[i].innerHTML  = "<span>Spara</span>";
			}
		}
		else{
			tinyMCE.execCommand('mceRemoveControl', false, editorId);		
			ToggleWysiwyg.Save();
			this.className = normalClass;
			this.innerHTML = "<span>Ändra</span>";
		}
		return false;
	},
	Save : function(){
		var presentation = document.getElementById("presentation").innerHTML;
		var ajaxSave = new AjaxObj();
		ajaxSave.method = "POST";
		ajaxSave.url = Community.path + "installningar/set-presentation-data.xml";
		
		//build parameter, obs hardcoded, change!
		var formItems = document.getElementById("presentation-form").getElementsByTagName("input");
		ajaxSave.parameters = "&"
		for(var i=0, formItem;formItem=formItems[i];i++){
			ajaxSave.parameters += formItems[i].getAttribute("name") + "=" + formItems[i].value + "&";
		}

		ajaxSave.parameters += "presentation-data=" + presentation;
		ajaxSave.parameters += "&hijax=1";
		ajaxSave.Fetch();
		
		if(presentation != ""){
			this.formObj.className = "wys-form presentation-filled";
		}
		else{
			this.formObj.className = "wys-form presentation-empty";
		}
		
		//ajaxSave.ClearXmlHttp();
	}
}

var Extras = {
	ajaxAddFriend : null,
	AddFriend : function(obj){
		var url = obj.href;
		//make ajax call
		Extras.ajaxAddFriend = new AjaxObj();
		Extras.ajaxAddFriend.url = url + "&ajaxcall=1";
		Extras.ajaxAddFriend.callBack = "Extras.Message()";
		Extras.ajaxAddFriend.Fetch();
	},
	Message : function(){
		//fix icon status disable/enable
		document.getElementById("skrubb-become-friend").className="become-friend-disabled";
		
		alert(Extras.ajaxAddFriend.xmlHttp.responseText.replace("\n\t",""));
		Extras.ajaxAddFriend.ClearXmlHttp();
	},
	Disabled : function(obj){
		alert(obj.getAttribute("title"));
	}
}

var SkrubbShout = {
	skrubbShoutContent : null,
	skrubbShoutInput : null,
	skrubbShoutSubmit : null,
	skrubbShoutForm : null,
	Init : function(){
		SkrubbShout.skrubbShoutContent		=	document.getElementById("skrubb-shout-content");
		if(SkrubbShout.skrubbShoutContent){
			SkrubbShout.skrubbShoutInput	=	document.getElementById("skrubb-shout-input");
			SkrubbShout.skrubbShoutSubmit	=	document.getElementById("shout-submit");
			SkrubbShout.skrubbShoutForm 	=	document.getElementById("shout");
			SkrubbShout.skrubbShoutContent.onclick = SkrubbShout.Toggle;
			SkrubbShout.skrubbShoutSubmit.onclick = SkrubbShout.Save;
			SkrubbShout.skrubbShoutForm.onsubmit =  SkrubbShout.Save;
		}
	},
	Toggle : function(){
		SkrubbShout.skrubbShoutContent.style.display = "none";
		SkrubbShout.skrubbShoutInput.style.display = "block";
		SkrubbShout.skrubbShoutSubmit.style.display = "block";
		
	},
	Save : function(){
		SkrubbShoutAjax = new AjaxObj();
		SkrubbShoutAjax.url = Community.path + "installningar/set-presentation-data.xml";
		SkrubbShoutAjax.method = "POST";
		//collect all input fields
		var inputs = document.getElementById("shout").getElementsByTagName("input");
		SkrubbShoutAjax.parameters = "";
		for(var i=0,input;input=inputs[i];i++){
			SkrubbShoutAjax.parameters += "&" + inputs[i].name + "=" + escape(inputs[i].value);
		}
		SkrubbShoutAjax.parameters += "&hijax=1";
		SkrubbShoutAjax.Fetch();
		var safeContent = SkrubbShout.skrubbShoutInput.value.replace("<","&lt;")
		safeContent = safeContent.replace(">","&gt;");
		
		SkrubbShout.skrubbShoutContent.innerHTML = safeContent;
		SkrubbShout.skrubbShoutContent.style.display = "block";
		SkrubbShout.skrubbShoutInput.style.display = "none";
		SkrubbShout.skrubbShoutSubmit.style.display = "none";
		return false;
	}
}

var Mood = {
	currentForm : null,
	currentMood : null,
	dropDown :  null,
	Init : function(){
		var divColl = document.getElementsByTagName("div");
		for(var i=0,divElm;divElm=divColl[i];i++){
			if(/mood-selector/i.test(divElm.className)){
				//set radio button when image clicked
				var imgColl = divElm.getElementsByTagName("img");
				for(var x=0,imgElm;imgElm=imgColl[x];x++){
					if(/mood-radio/i.test(imgElm.className)){
						imgElm.onclick = Mood.SetRadio;
					}
				}
			}
			if(/mood-select/i.test(divElm.className)){
				divElm.onclick = Mood.ShowDropDown;
			}
		}	
	},
	SetRadio : function(e){		
		var radioButton = this.parentNode.getElementsByTagName("input")[0];
		//wich form are we changing? itterate up in dom and find the form tag
		var inForm = this.parentNode;
		while(!/form/i.test(inForm.nodeName)){
			inForm  = inForm.parentNode;
		}
		Mood.currentForm = inForm;
		//remove old checked attributes
		var inputs = Mood.currentForm.getElementsByTagName("input");
		for(var i=0,input;input=inputs[i];i++){
			if(input.getAttribute("checked") != null)
				input.removeAttribute("checked");
		}
		radioButton.setAttribute("checked","checked");
		Mood.currentMood = radioButton.value;
		Mood.Save();
	},
	Save : function(){
		SkrubbMoodAjax = new AjaxObj();
		SkrubbMoodAjax.url = Community.path + "installningar/set-presentation-data.xml";
		SkrubbMoodAjax.method = "POST";
		SkrubbMoodAjax.callBack = "Mood.SetAllMoodForms()";
		//collect all input fields
		var inputs = Mood.currentForm.getElementsByTagName("input");
		SkrubbMoodAjax.parameters = "";
		for(var i=0,input;input=inputs[i];i++){
			if(input.getAttribute("type") == "radio"){
				if(input.getAttribute("checked"))
					SkrubbMoodAjax.parameters += "&" + inputs[i].name + "=" + inputs[i].value;
			}
			else
					SkrubbMoodAjax.parameters += "&" + inputs[i].name + "=" + inputs[i].value;
			
		}
		SkrubbMoodAjax.parameters += "&hijax=1";
		SkrubbMoodAjax.Fetch();
	},
	SetAllMoodForms : function(){
		//mood saved and now we need to set all the mood forms to current mood
		var imgColl = document.getElementsByTagName("img");
		for(var i=0,imgElm;imgElm=imgColl[i];i++){
			if(/current-mood/i.test(imgElm.className)){
				imgElm.src = "/img/icons/" + Mood.currentMood;
			}
		}
	},
	ShowDropDown : function(e){
		//hide all menus
		Mood.HideDropDown();
		
		//stop eventbubbling
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
		
		//event delegation
		var t = e.target || e.srcElement;
		if(t.className == "mood-select" || t.className == "current-mood")
			this.nextSibling.style.display = "block";
	},
	HideDropDown : function(){
		var divColl = document.getElementsByTagName("div");
		for(var i=0,divElm;divElm=divColl[i];i++){
			if(/mood-select-dropdown/i.test(divElm.className)){
				divElm.style.display = "none";
			}
		}
	}
}

var Nice = {
	niceObj : null,
	niceAjaxObj : null,
	Save : function(obj){
		Nice.niceObj = obj;
		var url = obj.href;
		//make ajax call
		Nice.niceAjaxObj = new AjaxObj();
		Nice.niceAjaxObj.url = url; 
		Nice.niceAjaxObj.callBack = "Nice.Callback()";
		Nice.niceAjaxObj.Fetch();
		return false;
	},
	Delete : function(obj){
		var answer = confirm("Vill du ta bort " + obj.title + " från listan?")
		if (answer){
			Nice.niceObj = obj;
			var url = obj.href;
			//make ajax call
			Nice.niceAjaxObj = new AjaxObj();
			Nice.niceAjaxObj.url = url + "&__toolbar=0"; 
			Nice.niceAjaxObj.callBack = "Nice.Callback()";
			Nice.niceAjaxObj.Fetch();
		}	
	},
	Callback : function(){
		if(Nice.niceAjaxObj.xmlHttp.responseText==1){
			Nice.niceObj.className="nice nice-dis";
			Nice.niceObj.href="#";
			alert(Nice.niceObj.title);
		}
		else if(Nice.niceAjaxObj.xmlHttp.responseText==0){
			Nice.niceObj.parentNode.parentNode.style.display = "none";
		}
		else{
			alert("Något gick på tok!");
		}
	},
	AllreadySaved : function(obj){
		alert(obj.title);
	}
}

var SlideUserImages = {
	galleryList : null,
	galleryListWidth : 0,
	nexLink  : null,
	slideStep : 0,
	currentSlideStep : 0,
	xPos : 0,
	slideTimer : null,
	tiles : [],
	Init : function(){
		if(document.getElementById("user-images-next-link")){
			SlideUserImages.nexLink = document.getElementById("user-images-next-link");
			SlideUserImages.galleryList = document.getElementById("image-gallery-list");
			SlideUserImages.galleryListWidth = SlideUserImages.galleryList.offsetWidth;
			SlideUserImages.galleryList.style.width = SlideUserImages.galleryListWidth + "px";
			//create tiles
			SlideUserImages.CreateTiles();
			SlideUserImages.nexLink.onclick = SlideUserImages.SlideNext;
		}
	},
	CreateTiles : function(){
		var liNodes = this.galleryList.getElementsByTagName("li");
		var cord = 0;
		for(var i=0,linode;linode=liNodes[i];i++){
			this.tiles.push(liNodes[i]);
		}
	},
	ChangeTileOrder : function(){
		//extract the first item in array and put it at last pos
		var firstTile = this.tiles.shift();
		this.tiles.push(firstTile);
		//rebuild list
		var currentliNodes = this.galleryList.getElementsByTagName("li");
		//this.galleryList.innerHTML = "";
		for(var i=0,linode;linode=this.tiles[i];i++){
			//this.galleryList.removeChild(currentliNodes[i]);
			this.galleryList.appendChild(linode);
		}
	},
	SlideNext : function(){
		SlideUserImages.ChangeTileOrder();
		return false;
	},
	easeInOut : function(minValue,maxValue,totalSteps,actualStep,powr) { 
	    var delta = maxValue - minValue; 
	    var stepp = minValue+(Math.pow(((1 / totalSteps) * actualStep), powr) * delta);
		return Math.ceil(stepp) 
    }
}
SafeOnload.AddFunction(SlideUserImages.Init);
SafeOnload.AddFunction(Mood.Init);
SafeOnload.AddFunction(SkrubbShout.Init);
SafeOnload.AddFunction(ToggleWysiwyg.Init);
SafeOnload.AddFunction(AvatarList.Init);