window.onload_list = new Array();

function add_onload(method) {
	window.onload_list[window.onload_list.length] = method;
}

function do_onload() {
	for (var i=0; i<window.onload_list.length; i++) {
		var method = window.onload_list[i];
		method();
	}
}

function set_cookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function read_cookie(name,defvalue) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return defvalue;
}

function erase_cookie(name) {
	set_cookie(name,"",-1);
}

function set_menu(menuid,collapsed,alreadysaved) {
	var buttonel = document.getElementById('menu_button_'+menuid);
	if (!buttonel) return;
	
	var itemsel = document.getElementById('menu_items_'+menuid);
	if (!itemsel) return;
	
	itemsel.style.display = collapsed ? 'none' : '';
	buttonel.src = '../images/arrow-' + (collapsed ? 'down' : 'up') + '.png';
	window.menucollapsed[menuid] = collapsed;
	
	if (!alreadysaved) save_menu_states();
}

function toggle_menu(menuid) {
	var currentstate = isNaN(window.menucollapsed[menuid]) ? 0 : window.menucollapsed[menuid];
	var newstate = 1 - currentstate;
	set_menu(menuid,newstate);
}

function save_menu_states() {
	var collapsedlist = '';
	for (menuid in window.menucollapsed) {
		if (window.menucollapsed[menuid]) collapsedlist += menuid+',';
	}
	//alert('setting cookie: '+collapsedlist);
	set_cookie(window.menucookie,collapsedlist);	
}
function load_menu_states() {
	window.menucollapsed = new Array();
	var adminmenustates = read_cookie(window.menucookie,'');
	var statelist = adminmenustates.split(',');
	for (i in statelist) {
		if (statelist[i]) set_menu(statelist[i],true,true);
	}
}

function hide_help() {
	window.help_visible = false;
	
	var el = document.getElementById('content');
	if (el) el.className = '';
	var el = document.getElementById('helpbar');
	if (el) el.className = 'helpbar_hidden';
}

function launch_help(topic) {
	if (window.help_visible && (window.help_topic==topic) ) return hide_help();
	if (!window.help_visible) {
		window.help_visible = true;
		
		var el = document.getElementById('content');
		if (el) el.className = 'content_with_helpbar';
		var el = document.getElementById('helpbar');
		if (el) el.className = 'helpbar_visible';
	}
	
	set_help_content('<div style="text-align: center"><img src="../images/loading.gif" alt="..."></div>');
	load_help_topic(topic);
}

function set_help_content(topic,text) {
	var el = document.getElementById('help_content');
	el.innerHTML = text;
	window.help_topic = topic;
	
}

function load_help_topic(topic) {
	var pbody = document.getElementsByTagName('BODY')[0];
	var hts = document.createElement('script');
	hts.type = 'text/javascript';

	hts.src = 'index.php?page=help&topic='+topic;
	pbody.appendChild(hts)
}

function hide_panels() {
	var tallest = 0;
	
	for (var i in window.tabset_tabs) {
		var panelid = 'page_' + window.tabset_tabs[i]+'_section';
		var el = document.getElementById(panelid);
		if (el) {
			if (!window.sized_tab_panels) {
				var panelheight = parseInt(el.offsetHeight);
				if (panelheight>tallest) tallest = panelheight;
			}
			el.style.display = 'none';
		}

		var tabid = 'tab_' + window.tabset_tabs[i];
		var el = document.getElementById(tabid);
		if (el) el.className = 'tab';
		
	}
	
	if (!window.sized_tab_panels) {
		for (var i in window.tabset_tabs) {
			var panelid = 'page_' + window.tabset_tabs[i]+'_section';
			var el = document.getElementById(panelid);
			if (el) {
				el.style.height = tallest+'px';
				for (var j=0; j<el.childNodes.length; j++) {
					var node = el.childNodes[j];
					if (!node || !node.className) continue;
					if (!node.className.match(/^sectioncontent/)) continue;
					node.style.height = tallest+'px'
				}
			}
		}
	
		window.sized_tab_panels = true;
	}
}

function show_tab(tabid) {
	var panelid = 'page_' + tabid+'_section';

	var el = document.getElementById(panelid);
	if (el) el.style.display = '';

	var tabid = 'tab_' + tabid;
	var el = document.getElementById(tabid);
	if (el) el.className = 'tabactive';

}

function set_tab(el) {
	if (!el) return;
	if (!el.id) return;
	
	hide_panels();

	var panelid = el.id;
	show_tab(panelid.substring(4));
}

function activate_tabs_go() {
	hide_panels();
	show_tab(window.tabset_tabs[0]);
}

function activate_tabs() {
	if (document.all) {
		add_onload(activate_tabs_go);
	} else {
		activate_tabs_go();
	}
}

if( typeof XMLHttpRequest == "undefined" ) XMLHttpRequest = function() {
  try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
  throw new Error( "This browser does not support XMLHttpRequest." )
};

function json_request(url,callback) {
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open( "GET", url, true );
	xmlhttp.send(null);
	xmlhttp.onreadystatechange = function () {
	    if ( xmlhttp.readyState == 4 ) {
	        if ( xmlhttp.status == 200 ) {
				var jsonobj = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(xmlhttp.responseText.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + xmlhttp.responseText + ')');
				if (jsonobj.type=='error') {
					alert('Error: '+jsonobj.error);
				} else {
	            	callback(jsonobj.data);
	            }
	        } else {
	            alert( "AJAX request failed." );
	        }
	        xmlhttp = null;
	    }
	};
}
