var currentLvl = {"lvl1" : false, "lvl2" : false, "lvl3" : false, "lvl4" : false};
var firstClose = true;
var menurules =
{
	'body' : function(el)
	{
		if($('intro'))
		{
			if(CheckCookie("hideintro_" + $('intro').className)!="1")
			{
				$('intro').style.display = "block";
			}	
		};
        if($('updateditemsnotification'))
        {   
            var numUpdatedSims3Items = parseInt(CheckCookie("numUpdatedSims3Items"));
            //alert(numUpdatedSims3Items);
            if ( numUpdatedSims3Items > 0 )
            {
                $('updateditemsnotification').style.display = "";
            }    
        };        
	}
	,
	'a.pm' : function(el)
	{
		var data = CheckCookie('pmandguestbookinfo').split("%2C");
		var lastChecked = (data[2]*1000);
		if(new Date().getTime() > (lastChecked+1000*60*10) || data=="")
		{
			new Ajax.Request("/account/checkpmandguestbook",
			{
				onSuccess : function(e)
				{
				 	data = CheckCookie('pmandguestbookinfo').split("%2C");
				}				
			});
		}
        var apa = el;
        //$(apa).update(data[0]);
	}
	,
	'a.ajump' : function(el)
	{
		el.onclick = function()
		{
			var width = 180;
			var height = 20;
			var xPos = findPosX(this);
			var yPos = findPosY(this);
		 	var d = document.createElement("div");
		 	d.style.padding = "3px";
		 	d.style.position = "absolute";
		 	d.style.zIndex = 100000;
		 	d.style.left = (xPos - width/2) + "px";
		 	d.style.top = (yPos + 20) + "px";
		 	d.style.width = width + "px";
		 	d.style.height = height + "px";
		 	d.style.border = "1px solid #000";
		 	d.style.background = "#FFF";
		 	document.body.appendChild(d);
		 	var input = document.createElement("INPUT");
		 	var link = document.createElement("A");
		 	var close = document.createElement("A");
		 	close.href = "javascript:;";
		 	close.appendChild(document.createTextNode("Close"));		 	
		 	close.onclick = function()
		 	{
		 	 	document.body.removeChild(d);
			}
		 	input.style.width = "20px";
		 	input.style.margin = "2px 5px 2px 5px";
		 	input.onkeydown = function(e)
		 	{
		 		if(!e) var e = window.event;
		 		if(e.keyCode==13)
		 		{
		 			link.onclick();	 	
				}
			}		 	
		 	link.href = "javascript:;";
		 	link.appendChild(document.createTextNode("Go"));
		 	link.onclick = function()
		 	{
		 		if(parseInt(input.value)<1)
		 		{
		 			return alert('Pagenumber must be 1 or higher.');
				}
		 	 	var nav = $$('.pnav');
		 	 	if(nav.length>0)
		 	 	{
		 	 	 	var links = nav[0].getElementsByTagName("li");
		 	 	 	for(var i=0;i<links.length;i++)
		 	 	 	{
		 	 	 	 	if(!links[i].className.match("first"))
		 	 	 	 	{
		 	 	 	 	 	var anchors = links[i].getElementsByTagName("a");
		 	 	 	 	 	if(anchors.length>0)
		 	 	 	 	 	{
		 	 	 	 	 	 	var a = anchors[0];
		 	 	 	 	 	 	var href = a.href;
		 	 	 	 	 	 	href = href.replace(/page\/([0-9]*)/i,"page/" + input.value);
		 	 	 	 	 	 	document.location.href = href;
							}
						}
					}
				}
			}
		 	d.appendChild(document.createTextNode("Jump to page:"));
		 	d.appendChild(input);
		 	d.appendChild(link);
		 	d.appendChild(document.createTextNode(" | "));
		 	d.appendChild(close);
		 	input.focus();
		}
	}
	,
	'a.basket' : function(el)
	{
		el.onclick = function()
		{
			LightBox.LoadTemplate("/downloads/basket/", false, checkBasketItems);
			return false;
		}
	}
	,
	'a.introlink' : function(el) {
		el.onclick = function(e) {
			var nodes = $('intro').getElementsByTagName("div");
			for(var i = 0;i<nodes.length;i++) {
				if(nodes.item(i).id != "inav")
				nodes.item(i).className = 'hidden';
			}
			var nodes = $('inav').getElementsByClassName('introlink');
			for(var i = 0;i<nodes.length;i++) {
				nodes[i].className = 'introlink';
			}
			$(this.rel).className = '';
			this.className = 'introlink on';
			//$('intro').className = this.rel;
		}
	},
	'img#introview' : function(el) {
		el.onclick = function(e)
		{
			this.src = (this.src.match("intro.png"))?"/images/icons/intro_on.png":"/images/icons/intro.png";
			//$('userview').src = "/images/icons/userpanel.png";
			$('intro').className = ($('intro').className == 'hidden')?"":"hidden";
			$('up').className = "hidden";
			return false;
		}
	},
	'#userview' : function(el)
	{
		el.onclick = function(e)
		{
			loadView("/account/userview/");
		}
	}
	,
	'#mytsrview' : function(el)
	{
		el.onclick = function(e)
		{
		 	loadView("/account/mytsr/");
		}
	}
	,
	'img.showlinks' : function(el) {
		el.onmouseover = function(e)
		{
			this.style.filter = "alpha(opacity=100)";
			this.style.opacity = 1;
		},
		el.onmouseout = function(e)
		{
			this.style.filter = "alpha(opacity=100)";
			this.style.opacity = 1;
		}
	},
	'div#up' : function(el) {
		el.fadeIn = function(val)
		{
			if(!this.fading)
			return false;
			el.style.filter = "alpha(opacity = "+val+")";
			el.style.opacity = val/100;
			if(val == 100) {
				this.fading = false;
				$("userview").src = ($("userview").src.match("userpanel.png"))?"/images/icons/userpanel_on.png":"/images/icons/userpanel.png";
				return false;
			}
			setTimeout(function() {el.fadeIn(val+10)},5);
		};
		el.fadeOut = function(val)
		{
			if(!this.fading)
			return false;
			el.style.filter = "alpha(opacity = "+val+")";
			el.style.opacity = val/100;
			if(val == 0) {
				this.fading = false;
				$("userview").src = ($("userview").src.match("userpanel.png"))?"/images/icons/userpanel_on.png":"/images/icons/userpanel.png";
				return false;
			}
			setTimeout(function() {el.fadeOut(val-10)},5);
		};
		el.initFade = function()
		{
			if(el.fading)
			return false;
			if(el.style.filter == "alpha(opacity = 100)" || el.style.opacity == 1) {
				el.fading = true;
				el.fadeOut(100);
			} else {
				el.fading = true;
				el.fadeIn(0);
			}
		}
	},
	'#cats li' : function(el) {
		el.onclick = function(e)
		{
			if (!e) var e = window.event;
			e.cancelBubble = true;
			if (e.stopPropagation) e.stopPropagation();

			var ulClass = $(el).up('ul',0).className;
			//Turn the previous selection off
			var current = currentLvl[ulClass];
			if(current) $(current).toggleClassName($(current).hasClassName('leaf') ? 'active' : 'on');
			else if(firstClose) 
			{
				var onLis = $('cats').select('ul.lvl1 li.onload');
				if(onLis[0] && !$(el).descendantOf(onLis[0])) 
				{
					onLis[0].toggleClassName($(onLis[0]).hasClassName('leaf') ? 'active' : 'on');	
					firstClose = false; 
				}
			}
			//Turn the new selection on
			if(current != el) {
				$(el).toggleClassName($(el).hasClassName('leaf') ? 'active' : 'on');
				current = el;
			} else current = false;
			currentLvl[ulClass] = current;

			//Load subcategories?
			if(el.getAttribute("load") && !el.getAttribute("loaded")) {
				new Ajax.Request('/downloads/ajax-get-subcategories?category='+el.getAttribute("load"), {
					method:'get',
					onSuccess: function(transport)
					{
						var response = transport.responseText.evalJSON(true) || new Array();
						var nodes = $(el).down('ul').immediateDescendants();
						for(var i = 0; i < nodes.length; i++)
						{
							var child = nodes[i];
							//var label = $(child).down('a').firstChild.nodeValue;
	                        var category = $(child).down('a').getAttribute("cat");
 						    if( category != null && response[category]) child.appendChild(setCategories(response[category], 3));
						}
						el.setAttribute("loaded", "1");
						Behaviour.apply();
					},
					onFailure: function() { console.error('Something went wrong...') }
				});
			}
		}
	},
	'#scats' : function(el) {
		el.onclick = function(e)
		{
			var cdiv = $('content');
			//cdiv.toggleClassName('hcat'); //nice if IE would have worked with multiple selectors
			//this looks a bit messy but i want to be able to preserve any other class that might be set from the .tpl side of things
			//if anyone can rewrite this while keeping that critera feel free :) /Johan
			if( cdiv.hasClassName("hcat") ) cdiv.removeClassName('hcat');
			else if( cdiv.hasClassName("hbut") ) cdiv.removeClassName('hbut').addClassName("fs");
			else if( cdiv.hasClassName("fs") ) cdiv.removeClassName("fs").addClassName("hbut");
			else cdiv.addClassName('hcat');
			SetCookie('cdivclass',cdiv.className,0,"/");
			return false;
		}
	},
	'#sbut' : function(el) {
		el.onclick = function(e)
		{
			var cdiv = $('content');
			//cdiv.toggleClassName('hbut'); //nice if IE would have worked with multiple selectors
			if( cdiv.hasClassName("hbut") ) { cdiv.removeClassName('hbut'); cdiv.removeClassName('hcat'); cdiv.removeClassName('fs'); cdiv.addClassName('scat');}
			else { cdiv.addClassName('hbut'); cdiv.addClassName('hcat'); cdiv.addClassName('fs'); cdiv.removeClassName('scat'); }
			/*
			if( cdiv.hasClassName("hbut") ) cdiv.removeClassName('hbut');
			else if( cdiv.hasClassName("hcat") ) cdiv.removeClassName('hcat').addClassName("fs");
			else if( cdiv.hasClassName("fs") ) cdiv.removeClassName("fs").addClassName("hcat");
			else cdiv.addClassName('hbut');
			*/
			SetCookie('cdivclass',cdiv.className,0,"/");			
			return false;
		}
	}
	,
	'#closeIntro' : function(el)
	{
		el.onclick = function(e)
		{
			$('introview').onclick(e);
		}
	},
	//Emulate hoover for div's with class fb (downloads)
	//CSS och HTML måste skrivas om, detta är för segt!!
	/*
	'div.fb' : function(el)
	{
		if(auth_isSubscriber())
		{
			el.onclick = function(e)
			{
				//alert("Lightbox??");
			}
			el.onmouseover = function(e)
			{
				var ele = $(el);
				ele.style.zIndex = 99;
				ele.addClassName('fbon');
			}
			el.onmouseout = function(e)
			{
				var ele = $(el);
				ele.style.zIndex = 0;
				ele.removeClassName('fbon');
			}
		}
	},
	*/
	'#bookmarkme' : function(e)
	{
		e.onclick = function(event)
		{
		 	var url = this.rel + "/bookmark-me";
		 	new Ajax.Request(url,
		 	{
		 		onSuccess : function(r)
		 		{
		 			alert(r.responseText);
				}
				,
				onFailure : function(r)
				{
				 	alert(r.responseText);
				}
			});
			return false;
		}
	},	
	'span.comment_can_unpublish' : function(e)
	{
		if(auth_isModerator('comments'))
			e.style.display = '';
	},
	'span.comment_can_delete' : function(e)
	{
		var mid = auth_getMemberID();
		if(mid < 1) return;
		if(mid == e.getAttribute('by') || mid == e.getAttribute('itemOwner'))
			e.style.display = '';
	},
	'span.loggedin' : function(e)
	{
		if(auth_isLoggedIn())
			e.style.display = '';
	},
	'span.notloggedin' : function(e)
	{
		if(!auth_isLoggedIn())
			e.style.display = '';
	}		
}


function addRating(form)
{
 	form.request(
 	{
 		onSuccess : function(r)
 		{
 		 	if(r.responseText=="")
 		 	{
 		 		alert('Thank you for your feedback!\n\nPlease note the rating is recalculated every hour.');
 		 		$('ratinginfo').innerHTML = "You have rated this item!";
			}
			else
			{
				alert('Error:\n\n' + req.responseText);
			}
		}
	});
}

function thankyou(itemid, typeid, link)
{
	var req = new Ajax.Request("/feedback/ax-thankyou/item/" + itemid + "/type/" + typeid, 
	{
		method: 'post', 
		onSuccess: function(req)
		{
			if(req.responseText=="")
			{
				/* update the counter ? */
				//document.getElementById("numthanks_" + itemId).innerHTML = req.responseText;
				alert('Thank you for your feedback!\n\nPlease note the number of thank you´s is recalculated every hour.');
			 	link.innerHTML = "&raquo; You\'ve thanked the Artist!";
			 	link.disabled = true;
			 	link.onclick = function() { }
			}
			else
			{
				alert('Error:\n\n' + req.responseText);
			}
		}
		,
		onFailure: function(req)
		{
			alert('Error:\n\n' + req.responseText);
		}
	});
}

var lastView = null;
function loadView(view)
{
	if(lastView==view)
		$('up').className = ($('up').className == 'hidden')?"":"hidden";
	else
		$('up').className = "";
	if($('intro'))
		$('intro').className = "hidden";
	if($('up').className != "hidden")
	{
		$('up').innerHTML = '<img style=\"margin:20px;\" src="/images/ajax-loader_black.gif"/>';
		new Ajax.Request(view,
		{
			onSuccess : function(r)
			{
				$('up').innerHTML = r.responseText;
			}
			,
			onFailure : function(r)
			{
				alert('Error: ' + r.responseText);
			}
		});
	}
	lastView = view;
}

function removeSelectedFromBasket(form)
{
	$(form).request(
	{
		onSuccess : function(r)
		{
			try
			{
				var response = r.responseText.evalJSON(true) || new Array();
				var item = null;
				for(var i=0;item=response.removedItems[i];i++)
				{
					var node = $('basketitem_' + item);
					if(node)
						node.parentNode.removeChild(node);
				}
				$('basket').innerHTML = response.numItems;
				if(response.numItems==0)
				{
				 	$('basketEmpty').style.display = "";
				}
			}
			catch(e)
			{
				alert(e.message);
			}
		},
		onFailure : function(r)
		{
		    LightBox.Show(r.responseText);
		}
	});	
	return false;
}

function removeAllFromBasket(form)
{
	$(form).request(
	{
		onSuccess : function(r)
		{
			try
			{
				var response = r.responseText.evalJSON(true) || new Array();
				var item = null;
				for(var i=0;item=response.removedItems[i];i++)
				{
					var node = $('basketitem_' + item);
					if(node) 
						node.parentNode.removeChild(node);
				}
				$('basket').innerHTML = response.numItems;
				if(response.numItems==0)
				{
				 	$('basketEmpty').style.display = "";
				} 	
			}
			catch(e)
			{
				alert(e.message);
			}
		},
		onFailure : function(r)
		{
		    LightBox.Show(r.responseText);
		}
	});	
	return false;
}

var podbar = null;
function ShowPodBar(pod)
{	
	if(!isOwner) return;
	var podId = pod.getAttribute("podid");
	if(!podbar)
	{
	 	podbar = document.createElement("DIV");
	 	podbar.className = "podedit";
	 	podbar.style.position = "absolute";
	 	podbar.style.zIndex = 10000;
	 	document.body.appendChild(podbar);
	}
	podbar.innerHTML = '<a href="#" OnClick="return MovePod(podbar.currentPodId,-1);" class="moveright" title="Move this pod to the left/up"></a>';
	podbar.innerHTML = podbar.innerHTML + '<a href="/pod/configure/podid/' + podId + '" OnClick="return ConfigurePod(podbar.currentPodId);" class="configure" title="Configure this pod"></a>';
	podbar.innerHTML = podbar.innerHTML + '<a href="/pod/remove-pod/podid/' + podId + '" OnClick="return RemovePod(podbar.currentPodId);" class="remove" title="Delete this pod"></a>';
	podbar.innerHTML = podbar.innerHTML + '<a href="#" OnClick="return MovePod(podbar.currentPodId,1);" class="moveleft" title="Move this pod to the right/down"></a>';
	podbar.currentPodId = podId;
	podbar.style.width = (pod.clientWidth-4) + "px";
	podbar.style.left = findPosX(pod) + "px";
	podbar.style.top = findPosY(pod) + "px";
	podbar.style.display = "block";
}



/**
 * returns the absolute Y position of the object
 **/
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/**
 * returns the absolute X position of the object
 **/
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
        
function getBodySize()
{
	var s = new Object();   
	var rightColSize = 0;  
	if($('rightcol'))
		rightColSize = ($('rightcol').style.display=="block"?223:33);
	s.width = document.documentElement.clientWidth - rightColSize;
	s.height = document.documentElement.clientHeight;
	return(s);
}

function getScrollTop()
{
	var isSafari = navigator.userAgent.match(/WebKit/);
 	var scrollTop = parseInt(isSafari ? document.body.scrollTop : document.documentElement.scrollTop);
 	return scrollTop;
}
   
function ShowThrobber(obj)
{
	obj.innerHTML = '<div id="throbber" style="text-align:center;padding:20px;"><img src="/images/ajax-loader-small.gif"></div>';
}

function HideThrobber()
{
 	if($('throbber')) document.body.removeNode($('throbber'));
}

Behaviour.register(menurules);

Event.observe(window,'load',function()
{
	var options = {
		script: "/search/quicksearch/",
		varname: "keyword",
		json: true,
		cache : false,
		maxresults: 35,
		timeout : 10000
	};    
	var as = new bsn.AutoSuggest('quicksearch', options);
	if($('ad468'))
		$('ad468').src = "/ads/ad468/"; 
	if($('leaderboard'))
		$('leaderboard').src = "/ads/leaderboard/";
	if($('inline'))
		$('inline').src = "/ads/inline/";
	if($('glinks'))
		$('glinks').src = "/ads/links/";
	if($('skyscraper'))
		$('skyscraper').src = "/ads/skyscraper/";		
});

function featureIndex(type, id)
{
	LightBox.LoadTemplate('/index/feature-item/id/' + id + '/type/' + type);
}

function featureOldItems(type, id)
{
	LightBox.LoadTemplate('/index/feature-old-items/id/' + id + '/type/' + type);
}

function featureMinisite(type, id)
{
	LightBox.LoadTemplate('/member/feature-item/id/' + id + '/type/' + type);
}

function downloads_featureOnMinisite(id)
{
	featureMinisite('ITEM', id);
}

function downloads_featureMain(id)
{
	featureIndex('ITEM', id);
}

function downloads_featureOld(id)
{
	featureOldItems('ITEM', id);
}

function stories_featureMain(id)
{
	featureIndex('STORY', id);
}
        
function stories_featureOld(id)
{
	featureOldItems('STORY', id);
}

function screenshots_featureMain(id)
{
	featureIndex('SCREENSHOT', id);
}

function screenshots_featureOld(id)
{
	featureOldItems('SCREENSHOT', id);
}

function previewTheme(theme)
{
	var podPreview = $('podPreview');
	podPreview.src = "/members/" + podPreview.getAttribute("username") + "/member/previewpod/theme/" + theme;
}


function recommend(itemId, typeId)
{
	LightBox.LoadTemplate("/downloads/recommend/itemId/" + itemId + "/typeId/" + typeId);
}

function recommendItem(form)
{
	form.request(
	{
		onSuccess : function(r)
		{                         
		 	alert(r.responseText);
		}
	});              
	LightBox.Close();
}
    
function addToBasket(button)
{
	new Ajax.Request("/downloads/addtobasket/itemId/" + button.getAttribute("itemId") + "/t/" + new Date().getTime(),
	{
		onSuccess : function(r)
		{
			var response = r.responseText.evalJSON(true) || new Array();
			var element = document.getElementById("basket");
			if(!element && parent.opener)
				element = parent.opener.document.getElementById("basket");
			if(response.error)
			{
				LightBox.Show('<a href="javascript:void(0);" class="oclb" onclick="LightBox.Close()" title="Close this">&nbsp;</a>' + response.message);
			}
			else
			{
				if(!element)
				{
					LightBox.Show('<a href="javascript:void(0);" class="oclb" onclick="LightBox.Close()" title="Close this">&nbsp;</a>' + response.message);
				}
				else
				{
					LightBox.Show('<a href="javascript:void(0);" class="oclb" onclick="LightBox.Close()" title="Close this">&nbsp;</a>' + response.message);
					element.innerHTML = response.basketcount;
					button.className = "bsk added";
				}
			}
		}			
	});
}
   
function nonSubscriberLightbox(link)
{
	var href = link.getAttribute("href");
 	LightBox.LoadTemplate("/downloads/non-subscriber/?downloadurl=" + href);
 	return(false);
}
   
var requirementsCheckButton = null;
function checkRequirements(button, noLightbox)
{
	if(ignoreRequirements()) return true;
	var requiredEps = button.getAttribute("epmask");
	var gamemask = button.getAttribute("gamemask");
	var myEps = getExpansionPacks(gamemask);
	requirementsCheckButton = button;
	var result = true;
	if((requiredEps & myEps)!=requiredEps)
	{
		if(!noLightbox)
	 		LightBox.LoadTemplate("/account/my-expansions/epmask/" + requiredEps + "/myeps/" + myEps + "/gamemask/" + gamemask);
	 	result = false;
	}
	return result;
}

function ignoreRequirements()
{
 	if(CheckCookie("IgnoreRequirements")=="ignore") return true;
 	return false;
}

function ignoreRequirementsForever()
{
	setIgnoreRequirements(true);
	ignoreRequiredExpansions();
}

function setIgnoreRequirements(ignore)
{                               
	SetCookie( "IgnoreRequirements", ignore ? "ignore":"check" );
	ignoreRequiredExpansions();
}

function ignoreRequiredExpansions()
{
	LightBox.Close();
	if(requirementsCheckButton.className=="bsk")
	{
	 	addToBasket(requirementsCheckButton);
	 	return;
	}
	if(requirementsCheckButton.getAttribute("wizard_itemid")>0)
	{
	 	installWizardItem(requirementsCheckButton);
	 	return;
	}
	document.location.href = requirementsCheckButton.href;
}

function setRequiredExpansions()
{
 	var div = $('expansionForm');
 	div.style.display = div.style.display=="block"?"none":"block";
 	LightBox.Position();
}

function setHaveEp(epmask,gamemask)
{
	new Ajax.Request("/account/set-have-ep/epmask/" + epmask + "/gamemask/" + gamemask,
	{
		onSuccess : function(r)
		{
			$('ep_' + epmask).className = "checkok";
			$('epl_' + epmask).style.display = "none";
			if(checkRequirements(requirementsCheckButton, true))
		 	{
		 	 	$('requiredExpansions').style.display = "none";
		 	 	$('requiredExpansionsOk').style.display = "block";
			}			
		}
	});
}

function saveExpansionInformation(form)
{
	form.request(
	{
		onSuccess : function(e)
		{
		 	alert('Settings changed!');
		 	LightBox.Close();
		 	if(requirementsCheckButton.onclick())
		 		ignoreRequiredExpansions();
		}
	});
}

var displayedInfoBox = null;
var displayedLabel = null;
var displayedButton = null;

function toggleInfoBox(parent, infoDivClass, button, label)
{
	var toShow = $(parent).select('div.'+infoDivClass)[0];
	if(!toShow) return;
	if(displayedInfoBox)
	{
		displayedInfoBox.hide();
		displayedButton.update('Show '+displayedLabel);
		if(toShow == displayedInfoBox)
		{
			displayedInfoBox = null;
			return;
		}
	}
	displayedInfoBox = toShow;
	displayedInfoBox.show();
	$(button).update('Hide '+label);
	displayedLabel = label;
	displayedButton = button;
}

function hideIntro()
{
	SetCookie("hideintro_" + $('intro').className, "1", 2000, "/", ".thesimsresource.com");   
	$('intro').style.display = "none";
}

function showIntro()
{
	SetCookie("hideintro_" + $('intro').className, "", 2000, "/", ".thesimsresource.com");   
	$('intro').style.display = "block";	
}