// Create global variables
var img_dir = "/portal/bilder/";

var active_id=0;
var menu_hidden=true;
var popup_hidden=true;

//The items for out top menu
topMenuItems = new Array();
topMenuItems[0] = new Array(addHeadline, 'tMenuAddHead', 'Ny Rubrik');
//topMenuItems[1] = new Array(addDocCol, 'tMenuAddDocCol', 'Ny doksamling');


// All options for edit_menu
var edit_menu_array = new Array();
edit_menu_array['ed'] = new Array('edit_menu_edit', 'Editera');
edit_menu_array['de'] = new Array('edit_menu_del', 'Ta Bort');
edit_menu_array['nu'] = new Array('edit_menu_edit', 'Ny Länk');
edit_menu_array['nh'] = new Array('edit_menu_new_html', 'Ny Sida');
edit_menu_array['eh'] = new Array('edit_menu_edit_html', 'Editera');
edit_menu_array['nm'] = new Array('edit_menu_edit', 'Ny Mapp');
edit_menu_array_names = new Array('ed', 'de', 'nu', 'nh', 'eh', 'nm');


// An array to hold our edit_menu items
var item_array = new Array();

// Skapa array med info om de olika menyalternativen
menu_array = new Array();

//setup all for menu type "url"
menu_array['url'] = new Array();
menu_array['url']['menu'] = new Array('ed', 'de');
menu_array['url']['element'] = new Array();
menu_array['url']['element'][0] = new Array('text', 'Namn', ['name'], ['names']);
menu_array['url']['element'][1] = new Array('text', 'Url', ['name'], ['datas']);
menu_array['url']['img'] = new Image();
menu_array['url']['img'].src = img_dir+"/rightpil.gif";
menu_array['url']['col_over']="#999999";
menu_array['url']['col_out']="#E9E9E9";

//setup all for menu type "rub"
menu_array['rub'] = new Array();
menu_array['rub']['menu'] = new Array('ed', 'de', 'nu', 'nh', 'nm');
menu_array['rub']['element'] = new Array();
menu_array['rub']['element'][0] = new Array('text', 'Rubrik', ['name'], ['names']);
menu_array['rub']['img'] = new Image();
menu_array['rub']['col_out']="#800000";
menu_array['rub']['col_over']="#800000";

//Setup for menu type "html";
menu_array['htm'] = new Array();
menu_array['htm']['menu'] = new Array('eh', 'de');
menu_array['htm']['element'] = new Array();
menu_array['htm']['element'][0] = new Array('text', 'Namn', ['name'], ['names']);
menu_array['htm']['element'][1] = new Array('textarea', 'Kod', ['name', 'cols', 'rows'],['datas', 80, 30]);
menu_array['htm']['img'] = new Image();
menu_array['htm']['img'].src = img_dir+"/rightpil.gif";
menu_array['htm']['col_over']="#999999";
menu_array['htm']['col_out']="#E9E9E9";


//Setup all for menu type "dok"
menu_array['dok']=new Array();
menu_array['dok']['menu'] = new Array('ed', 'de', 'nm');
menu_array['dok']['element'] = new Array();
menu_array['dok']['element'][0] = new Array('text', 'Namn', ['name'], ['names']);
menu_array['dok']['img'] = new Image();
menu_array['dok']['col_out']="#800000";
menu_array['dok']['col_over']="#800000";


//Setup for menu type "map";
menu_array['map'] = new Array();
menu_array['map']['menu'] = new Array('ed', 'de');
menu_array['map']['element'] = new Array();
menu_array['map']['element'][0] = new Array('text', 'Namn', ['name'], ['names']);
menu_array['map']['element'][1] = new Array('textarea', 'Info:', ['name', 'cols', 'rows'], ['datas', 50, 10]);
menu_array['map']['img'] = new Image();
menu_array['map']['img'].src = img_dir+"/rightpil.gif";
menu_array['map']['col_over']="#999999";
menu_array['map']['col_out']="#E9E9E9";




//Startup - build edit_menu and edit_popup
function menu_startup(edithtm, edithtm_id){
	edit_menu_build();
	edit_popup_build();
	/*
	if(edithtm == 1){
		active_id = edithtm_id;
		edit_popup_elements('ed');

		setElementValue('edit_todo', 'ed');
		
		// Place and show popup	
		placePopup('edit_popup', 'item'+edithtm_id);
		toggleEditor('epform_datas');
	}
	*/
}


function drawTopMenu(){
	var tMenu = document.createElement("DIV");
	IE_setClass( tMenu, 'menu_bar');
	tMenu.setAttribute('id', 'tMenuRoot');

	var loops = topMenuItems.length;
	for(i=0; i<loops; i++){
		//alert(menuElements[i]);
		var thisElement = topMenuItems[i];
		var tMenuElement = document.createElement("DIV");
		IE_setClass( tMenuElement, 'menu_bar_item');
		IE_addEventListener(tMenuElement, 'click', thisElement[0]);
		tMenuElement.setAttribute('id', thisElement[1]);
	
		var tMenuElementTxt = document.createTextNode(thisElement[2]);
		tMenuElement.appendChild(tMenuElementTxt);	

		tMenu.appendChild(tMenuElement);
	}

	var pr = document.getElementById('menu');
	pr.appendChild(tMenu);
}


/******************************************************************************
 *
 *        Allt som har med edit popup att göra                               
 *
/*****************************************************************************/

/***
	Bygger edit popup grundstruktur. Alla element som alltid är med initieras
***/
function edit_popup_build(){
	hiddenElem = new Array(['edit_id', 'element_id']);
	buildEditPopup('edit', spara, avbryt, hiddenElem);
}



/***
	Bestämmer vilken typ av menu_item som skall användas till den
	mode som anvgivits, kallar också edit_popup_elements_draw.
***/
function edit_popup_elements(mode){
	//Set active id in form
	var idElement = document.getElementById('edit_id');
	idElement.setAttribute('value', active_id);

	//Now find out what elements to put in the popup
	if(mode == 'ed' || mode =='de'){
		var item = item_array['item'+active_id];
		var typ = item.typ;
	}
	else if(mode == 'nu')
		var typ = 'url';
	else if(mode == 'nh' || mode == 'eh')
		var typ = 'htm';
 	else if(mode == 'nm')
		var typ = 'map';
	else if(mode == 'nr')
		var typ = 'rub';
	else if(mode == 'nd')
		var typ = 'dok';

	var e_array = menu_array[typ]['element'];
	edit_popup_elements_draw(e_array, mode, item);
}


/***
	Fyller edit_popup med element, angivna av e_array, som motsvarar
	meny_array[elementtyp][elements]
***/
function edit_popup_elements_draw(e_array, mode, item){

	var eptable = document.getElementById('edit_table');
	
	var l = e_array.length;

	for(var i=0; i<l; i++){
		eptr = eptable.insertRow(i);
		eptd1 = eptr.insertCell(-1);
		eptd2 = eptr.insertCell(-1);
		eptxt = document.createTextNode(e_array[i][1]);
		eptd1.appendChild(eptxt);
		eptd1.setAttribute('valign', 'top');
		if(e_array[i][0] == 'textarea'){
			epinp = document.createElement('TEXTAREA');
		} else {
			epinp = document.createElement('INPUT');
			epinp.setAttribute('type', e_array[i][0]);
		}
		// Set other attributes
		var att_name = e_array[i][2];
		var att_val = e_array[i][3];
		var attl = att_name.length;
		for(var ii=0; ii<attl; ii++){
			epinp.setAttribute(att_name[ii], att_val[ii]);
			if(att_name[ii] == 'name'){
				epinp.setAttribute('id', 'epform_'+att_val[ii]);
				if(mode == 'ed'){
					var v = eval('item.'+att_val[ii]);
					epinp.value = v;
				}
			}
		}
		eptd2.appendChild(epinp);
	}
}


/***
	Anropas då användaren klickar på "spara" i edit popup
	Gör bara en submit på formuläret i edit popup.
***/
function spara(){
	var epForm = document.getElementById('edit_form');
	epForm.submit();
}

/***
	Anropas om användaren väljer att avbryta i edit popup
	Tar bort elementen och gömmer edit popup
***/
function avbryt(){
	// Ta bort elementen från edit_popup och göm den
	var ep = document.getElementById('edit_popup');
	var eptable = document.getElementById('edit_table');

	var noRows = eptable.rows.length;
	for(var i = 0; i < noRows-1; i++)
		eptable.deleteRow(0);
	
	ep.style.visibility='hidden';

	popup_hidden=true;
}










/******************************************************************************
 *
 *                             EDIT MENYN
 *
******************************************************************************/
function edit_menu_build(){
	
	var em = document.createElement('DIV');
	em.setAttribute('id', 'edit_menu');
	IE_setClass(em, 'edit_menu');
	//var em = document.getElementById('edit_menu');	
	
	IE_addEventListener(em, 'mouseover', edit_menu_over);
	IE_addEventListener(em, 'mouseout', edit_menu_out);
	
	
	for(var i=0; i < edit_menu_array_names.length; i++){
		var mi = document.createElement('DIV');
		mi.setAttribute('id', edit_menu_array_names[i]);
		IE_setClass(mi, 'edit_menu_item');
		IE_addEventListener(mi, 'click', eval(edit_menu_array[edit_menu_array_names[i]][0]) );
		
		txt=document.createTextNode(edit_menu_array[edit_menu_array_names[i]][1]);
		mi.appendChild(txt);
		
		em.appendChild(mi);
	}
	document.body.appendChild(em);
}



function menu_show(event)
{
	if(!popup_hidden){
		return;
	}
	var src_ = IE_getSrc(event, 'menu_item');
	if(!src_) src_ = IE_getSrc(event, 'menu_header');
	
	var item = item_array[src_.id];
	var typ = item.typ;
	var ch = menu_array[typ]['menu'];
	var l = ch.length;
	
	var menu_width=60;
	var menu_height=16;
	
	if((event.altKey || event.shiftKey) && global_admin){
		active_id=item.id;	
	
		//show menu
		var xPos=event.clientX-10;
		var yPos=event.clientY-10;

		var menu=document.getElementById('edit_menu');
		menu.style.left=xPos+'px';
		menu.style.top=yPos+'px';
		menu.style.width=(menu_width+2)+'px';
		menu.style.height=(1+(menu_height+1)*l)+'px';
		menu.style.visibility="visible";
		
		for(var i=0; i<l; i++){
			var c=document.getElementById(ch[i]);
			c.style.left=1+'px';
			c.style.top=(i+1+(i*menu_height))+'px';
			c.style.width=menu_width+'px';
			c.style.height=menu_height+'px';
			c.style.zIndex=10000;
			c.style.visibility='visible';
		}
		menu_hidden=false;
	} else {
		if(typ == 'url')
			window.open(item.datas);
		if(typ == 'htm'){
			showpage('showhtm', src_.id);
		}
		if(typ == 'map'){
			showpage('showmap', src_.id);
		}
	}
}

function showpage(t, i)
{
	var todo = document.getElementById('edit_todo');
	var id = document.getElementById('edit_id');
	todo.value=t;
	id.setAttribute('value', item_array[i].id);
	spara();
}


function edit_menu_edit(event)
{
	var src_ = IE_getSrc(event, 'edit_menu_item');
	var act = src_.getAttribute('id');
	
	// Define elements in popup
	edit_popup_elements(act);
	
	// Define what to when submitted
	var todo = document.getElementById('edit_todo');
	
	//If we're to edit a html page, reload with that page
	var typ = item_array['item'+active_id].typ;
	if(typ == 'htm'){
		todo.setAttribute('value', 'eh');
		spara();
	} else {
	
		todo.setAttribute('value', act);
		
		// Place and show popup
		var xPos=event.clientX;
		var yPos=event.clientY;
		
		ep = document.getElementById('edit_popup');
		ep.style.left=xPos+'px';
		ep.style.top=yPos+'px';
		ep.style.visibility='visible';
		
		popup_hidden=false;
		
		// Hide edit menu
		edit_menu_hide();
	}
}


function edit_menu_del(event)
{

	// Build popup (sets id)
	edit_popup_elements('de');

	//Hide edit_menu
	edit_menu_hide();
		
	// Define what to when submitted
	var todo = document.getElementById('edit_todo');
	todo.setAttribute('value', 'de');
	if(confirm("Vill du verkligen ta bort detta menyval?")){
		spara();
	} else {
		avbryt();
	}
}


function edit_menu_new_html(event)
{
	// Build popup (sets id)
	edit_popup_elements('nh');
	edit_menu_hide();
	setElementValue('edit_todo', 'newHTML');
	
	spara();
}


function edit_menu_edit_html(event)
{
	// Build popup (sets id)
	edit_popup_elements('nh');
	edit_menu_hide();
	setElementValue('edit_todo', 'editHTML');
	
	spara();
}


function addHeadline(event)
{
	if(popup_hidden){
		edit_popup_elements('nr');
		// Define what to when submitted
		
		setElementValue('edit_todo', 'nr');
		placePopup('edit_popup', 'tMenuRoot');
	}
}

function addDocCol(event) 
{
	if(popup_hidden){
		edit_popup_elements('nd');
		// Define what to when submitted
		var todo = document.getElementById('edit_todo');
		todo.setAttribute('value', 'nd');

		placePopup('edit_popup', 'tMenuRoot');
	}
}



/**
 * anropas då muspekaren förs over ett menu_item
 **/
function edit_menu_over()
{
	menu_wait=1;
}

/**
 * anropas då muspekaren förs ut från ett menu item
 **/
function edit_menu_out(event)
{
	var src_ = IE_getSrc(event, 'edit_menu');
	if(src_.id == 'edit_menu'){
		menu_wait=0;
		setTimeout("edit_menu_hide_wait()",100);
	}
}

/***
Anropar menu_hide men bara om muspekaren inte hamnat på ett nytt menu_item,
dvs då muspekaren helt lämnat menyn.
***/
function edit_menu_hide_wait()
{
	if(menu_wait==0){
		edit_menu_hide();
	}
}


function edit_menu_hide()
{
	var menu=document.getElementById('edit_menu');
	menu.style.visibility="hidden";
	menu.style.zIndex=0;
	var l = edit_menu_array_names.length;
	for(var i=0; i<l; i++){
		c=document.getElementById(edit_menu_array_names[i]);
		c.style.visibility='hidden';
	}
	// Återställ färgen på det aktiva menyvalet
	var mItem = document.getElementById('item'+active_id);
	var typ = item_array[mItem.id].typ;
	mItem.style.backgroundColor=menu_array[typ]['col_out'];
	
	menu_hidden=true;
}



/******************************************************************************
	MENU ITEMS
******************************************************************************/

function menu_item(id, names, datas, typ)
{
	this.id=id;
	this.names=names;
	this.datas=datas;
	this.typ=typ;
	this.paint=paint_menu_item;
}

function new_menu_item(id, names, datas, typ)
{
	var n = 'item'+id;
	item_array[n] = new menu_item(id, names, datas, typ);
	item_array[n].paint();
}

function paint_menu_item()
{
	
	var item_ = document.createElement('DIV');
	item_.setAttribute('id', 'item'+this.id);

	IE_addEventListener(item_ , 'click', menu_show);
	
	if(this.typ == 'rub' || this.typ == 'dok'){
		IE_setClass(item_, 'menu_header');
	} else {
		IE_setClass(item_, 'menu_item');
		IE_addEventListener(item_ , 'mouseover', item_over);
		IE_addEventListener(item_ , 'mouseout', item_out); 
	}

	//if(img_array[this.typ].src){
	if(menu_array[this.typ]['img'].src){
		img = document.createElement('IMG');
		img.setAttribute('src', menu_array[this.typ]['img'].src); 
		item_.appendChild(img);
	}
	
	var txt=document.createTextNode(this.names);
	item_.appendChild(txt);
	
	var menu = document.getElementById('menu');
	menu.appendChild(item_);
	
	
}


function item_over(event)
{
	var src_ = IE_getSrc(event, 'menu_item');
	
	if(menu_hidden && popup_hidden){
		var item = item_array[src_.id];
		src_.style.backgroundColor = menu_array[item.typ]['col_over'];
	}
}

function item_out(event)
{
	var src_ = IE_getSrc(event, 'menu_item');
	
	if(menu_hidden && popup_hidden){
		var item = item_array[src_.id];
		src_.style.backgroundColor = menu_array[item.typ]['col_out'];
	}
}
