/* global helper functions and shortcuts */

function getAjax(url, callback) {
	$.get(url, function(data, status, request){
		checkAjax(data, status, request, callback);
	});
}

function checkAjax(data, status, request, callback){
	if (status != "success"){
		alert( data + "[HTTP:" + status + "]" );
		return false;
	}
	if (typeof callback == 'function')
		callback(data, status, request);
	return true;
}

function setContent( id, content ) {
	var obj = document.getElementById(id);
	obj.innerHTML = content;
}

function getAttributes(element, match) {
	m=typeof(match)==undefined?"":match;
	attributes = element.attributes;
	res=new Array();
	for(i=0;i<attributes.length;i++)
		if(attributes[i].name.match(match))
			res[attributes[i].name.replace(match,"")] = attributes[i].value;
	return res;
}

function arrayTable(arr) {
	var s="<table>";
	for(key in arr)
		s += "<tr><th>" + key + "</th><td>" + arr[key] + "</td></tr>\n";
	return s + "</table>\n";
}

/* tabs */
function initTabs() {
	divs = document.getElementsByTagName("div");
	tabs=new Array();
	for(i=0;i<divs.length;i++) {
		if(divs[i].className == "tab") {
			tab = divs[i];
			segments = tab.id.split("-");
			tabGroup=segments[1];
			tabName = segments[2];
			if(tabs[tabGroup] == undefined)
				tabs[tabGroup]=new Array();
			tabs[tabGroup].push({"name":tabName, "node":tab});
		}
	}
	for(group in tabs) {
		newL = document.createElement("menu");
		newL.setAttribute("class", "tabs");
		for(i=0;i<tabs[group].length;i++) {
			ul = document.createElement("li");
			t=document.createTextNode(tabs[group][i]["name"]);
			ul.onclick=function(){
				for(i=0;i<tabs[group].length;i++) {
					if(tabs[group][i]["name"] == this.innerHTML) {
						tabs[group][i]["node"].style.display="block";
					} else {
						tabs[group][i]["node"].style.display="none";
					}
				}
			}
			ul.appendChild(t);
			newL.appendChild(ul);
		}
		tabs[group][0]["node"].parentNode.insertBefore(newL, tabs[group][0]["node"]);
		for(i=1;i<tabs[group].length;i++) {
			tabs[group][i]["node"].style.display="none";
		}
	}
}


/* menu-related functionality */
function reloadMenu(data, status, request) {
	checkAjax(data, status, request);
	$.get( "/ajax/menu/reload/", function(data){
		clear_loading("#main-menu");
		$("#main-menu").replaceWith(data);
		menuEventInit();
	});
}

function menuEditHandler(event){
	event.stopPropagation();
	data = $(this).attr("id").split("-");
	if(data[0] != "menu")
		return;
	pk = data[2];
	switch(data[1]) {
		case "up":
			set_loading("#main-menu");
			$.get("/ajax/menu/" + pk + "/up/", reloadMenu);
			break;
		case "down":
			set_loading("#main-menu");
			$.get("/ajax/menu/" + pk + "/down/", reloadMenu);
			break;
		case "delete":
			set_loading("#main-menu");
			$.get("/ajax/menu/" + pk + "/delete/", reloadMenu);
			break;
		case "edit":
			window.open( "/menu/" + pk + "/edit/", "Edit Menu", "menubar=no,status=no,toolbar=no,height=400,height=600" );
			break;
	}
}

function menuEventInit(){
	$("#main-menu").find("ul.edit").find("img").each(function(){
		$(this).unbind("click")
		$(this).bind("click", menuEditHandler);
	});
	init_menu();
}


