
var podRules = 
{
    'body' : function(el)
    {
        var preferedContent = CheckCookie("PreferedContent");
        if( typeof(registeredPods) !== "undefined" && ( preferedContent == "2" || preferedContent == "1") )
            gameselect_allpods(parseInt(preferedContent));
    }
    ,
	/* General prev/next behaviour for pods */
    'a.next' : function(e)
	{
		e.onclick = function(event)
		{           
			if(!event) var event = window.event;
			var pageNav = this.parentNode.parentNode;
			if(this.className.match(/off/)) return(false);
			var nextPage = parseInt(pageNav.getAttribute("currentpage")) + 1;
			var url = pageNav.getAttribute("url");
			if(url.substr(url.length-1,1)=='/')
				url = url.substr(0,url.length-1);
			url = url + "/page/" + nextPage;
			var div = pageNav.parentNode.parentNode; 
			var parent = pageNav.parentNode;
			ShowThrobber(pageNav.parentNode);
			new Ajax.Request(url,
			{
				onSuccess : function(r)
				{
					var newNode = document.createElement("DIV");
					newNode.innerHTML = r.responseText;
					try
					{						
						div.replaceChild(newNode.childNodes[0], parent);
						Behaviour.apply();
					}
					catch(e)
					{
						alert(e);
					}					
					HideThrobber();
				}
				,
				onFailure : function(r)
				{
					parent.innerHTML = 'Failed to get content:<br />' + r.responseText;
				}
			});
			return(false);
		}
	}
	,
	'a.prev' : function(e)
	{
		e.onclick = function(event)
		{
			if(!event) var event = window.event;
			var pageNav = this.parentNode.parentNode;
			if(this.className.match(/off/)) return(false);
			var nextPage = parseInt(pageNav.getAttribute("currentpage")) - 1;
			var url = pageNav.getAttribute("url");
			if(url.substr(url.length-1,1)=='/')
				url = url.substr(0,url.length-1);
			url = url + "/page/" + nextPage;			
			var div = pageNav.parentNode.parentNode; 
			var parent = pageNav.parentNode;
			ShowThrobber(pageNav.parentNode);	
			new Ajax.Request(url,
			{
				onSuccess : function(r)
				{
					var newNode = document.createElement("DIV");
					newNode.innerHTML = r.responseText;
					try
					{
						div.replaceChild(newNode.childNodes[0], parent);
						Behaviour.apply();
					}
					catch(e)
					{
						alert(e);
					}	
					HideThrobber(); 				
				}
				,
				onFailure : function(r)
				{
					parent.innerHTML = 'Failed to get content';
				}				
			});
			return(false); 
		}
	}
	,
	'div.pod' : function(e)
	{
	 	e.onmouseover = function(event)
	 	{
	 	    if(!event) var event = window.event;
	 	    ShowPodBar(e);
	 	    event.cancleBubble = true;
		}
	}
	,
	'div.podwrap': function(e)
	{
		e.onmouseover = function(event)
	 	{
	 	    if(!event) var event = window.event;
	 	    var target = event.target;
	 	    if(!target) target = event.srcElement;
	 	    if(target==e)
	 	    	HidePodBar();	 	    
		}
	}	
	,
	'a.podlink' : function(e)
	{
		e.onclick = function(event)
		{
		 	if(!event) var event = window.event;
		 	if(this.getAttribute("url"))
		 	{
				if(this.className.match(/off/)) return(false);
				var url = this.getAttribute("url");
				var div = $(this.getAttribute("podId"));
				if(div) 
				{
					new Ajax.Request(url,
					{
						onSuccess : function(r)
						{
							var newNode = document.createElement("DIV");
							newNode.innerHTML = r.responseText;
							try
							{							
								div.parentNode.replaceChild(newNode.childNodes[0], div);
								Behaviour.apply();
							}
							catch(e)
							{
					 			alert(e);
							}					
						}
					});
				}
				return(false); 
			}
		}
	}
}

Behaviour.register(podRules);

function HidePodBar()
{
    if(podbar)
    	podbar.style.display = "none";
}

function ConfigurePod(podId)
{
 	LightBox.LoadTemplate("/pod/configure/podId/" + podId);
 	return false;
}

function MovePod(podId,direction)
{
	var pods = CollectPods(new Array());
 	for(var i=0;i<pods.length;i++)
 	{
 		if(parseInt(pods[i].obj.getAttribute("podid"))==podId)
 		{
 		 	var node = $(pods[i].obj);
 		 	if(direction>0)
 		 	{
 		 	 	if(node.previous())
 		 	 		node.parentNode.insertBefore(node,node.previous());
			}
			else
			{
				if(node.next())
 		 	 		node.parentNode.insertBefore(node.next(),node);
			}
			ShowPodBar(node);
		}
	}
	SavePodPositions();
}

function SavePodConfig(podId,form)
{
 	new Ajax.Request("/pod/save-config/podId/" + podId,
 	{
 		postBody : Form.serialize(form),
 		onSuccess : function(r)
 		{
 		 	alert(r.responseText);
 		 	LightBox.Close();
		},
		onFailure : function(r)
		{
		 	alert('Fail: ' + r.responseText);
		}
	});
	return false;
}

function RemovePod(podId)
{
	if(!confirm('Are you sure you want to remove this pod, this can not be undone!')) return(false);
	new Ajax.Request("/pod/remove-pod/podId/" + podId,
 	{
 		onSuccess : function(r)
 		{
 			try
 			{
 		 		var pods = CollectPods(new Array());
 		 		for(var i=0;i<pods.length;i++)
 		 		{
 		 	 		if(parseInt(pods[i].obj.getAttribute("podid"))==podId)
 		 	 		{
 		 	 			pods[i].obj.parentNode.removeChild(pods[i].obj,true);
					}
				}
			}
			catch(e)
			{
			 	alert(e.message);
			}
			HidePodBar();
 		 	LightBox.Close();
		},
		onFailure : function(r)
		{
		 	alert('Fail: ' + r.responseText);
		}
	});
	return false;
}


function CollectPods(pods)
{                               
	var thePods = document.getElementsByTagName("div");
	for(var i=0;i<thePods.length;i++)
	{
	 	if($(thePods[i]).hasClassName("pod"))
	 	{
	 		pods.push({
	 			obj:thePods[i],
	 			x : findPosX(thePods[i]),
	 			y : findPosY(thePods[i]),
	 			w : parseInt(thePods[i].scrollWidth),
	 			h : parseInt(thePods[i].clientHeight)
			});
		}
	}
 	return(pods);
}

function SavePodPositions(alertMe)
{
 	var pods = CollectPods(new Array());
 	var body = "";
 	for(var i=0;i<pods.length;i++)
 	{
 		var podId = pods[i].obj.getAttribute("podid");
 		body = body + (body==""?"":"&") + "position[" + podId + "]=" + (i+1);
	}	
 	var url = Root + "/position-pod";
 	new Ajax.Request(url,
 	{
 		asynchronous : false,
 		postBody : body,
 		onSuccess : function(r)
 		{
 			if(alertMe)
 				alert('Settings saved!');
 			//alert(r.responseText);
		}
		,
		onFailure : function(r)
		{
			alert('Error saving pod positions:+n\n' + r.responseText);
		}
	});	
	return false;
}


function getNextPage(pod) {
	/* URL to connect to */
	var url = '/pod/podData/podName/'+pod.rel+'/page/'+pod.currentPage;
	/* Form vars that tell getPodContent which data to fetch and which page to select */
	/* The actual request */
	new Ajax.Request(url,{method: 'post',
		onSuccess: function(req) {
			/* Debug */
			//alert(req.responseText);
			//alert(pod.currentPage);
			/* Return false during development */
			
			/* Do some shit with the result */
			var data = eval('('+req.responseText+')');
			$(pod.rel).innerHTML = data.html;
			if(data.firstPage)
				pod.disabled = true;
			if(data.lastPage)
				pod.disabled = true;
			return false;
		},
		onFailure: function(req) {
			/* Show error message if a 404 or 500 occurs*/
			alert(req.responseText);
		}

	});
}

var prevActiveImage = null;
function Pod_Items_changeActiveItem(pod,index,img,title,creatorLink,creatorName,date,largeSrc,href,prevActive) {
    // Keep track of previously active image for all pods using the function
    if ( prevActiveImage == null )
        prevActiveImage = new Array();
    if ( prevActiveImage[pod] == null )
        prevActiveImage[pod] = prevActive;
    $(pod + '_largeScaledImage').style.background = 'url(' + img + ') 50% 50% no-repeat';
   	$(pod + '_largeScaledImage').href = href; 
    $(pod + '_title').innerHTML = title;
    $(pod + '_title').href = href;
    $(pod + '_creatorLink').href = creatorLink;
    $(pod + '_creatorName').innerHTML = creatorName;
    $(pod + '_publishDate').innerHTML = date;
    $(pod + '_smallScaledImage_' + prevActiveImage[pod]).className = "dls";
    $(pod + '_smallScaledImage_' + index).className = "dls on";
    prevActiveImage[pod] = index;
}

var dbg = "";
function setCategories(data, level)
{
	var ul = document.createElement("ul");
	ul.className = "lvl"+level;
	var li = document.createElement("li");
	var a = document.createElement("a");
	li.className = 'leaf';
	//a.href = "javascript:void(0);";
    a.href = downloadsRoot + "category/" + data.Category + "/" +urlParamsWithCategoryRemoved;
	$(a).update("Show all");
	li.appendChild(a);
	ul.appendChild(li);
	if(data.sub != null) {
		var ar = Object.values(data.sub);
		for(var i = 0; i < ar.length; i++) {
			var child = ar[i];
			var myli = document.createElement("li");
			var mya = document.createElement("a");
			myli.appendChild(mya);
			if (child.sub === null) {
                myli.className = "leaf";
                mya.href = downloadsRoot + "category/" + child.Category + "/" +urlParamsWithCategoryRemoved;
            } else {
                myli.appendChild(setCategories(child, level + 1));
			    mya.href = "javascript:void(0);";
            }
			$(mya).update(child.Label);
			ul.appendChild(myli);
		}
	}
	return ul;
}