/* news.js */

var popup_hidden = true;
var warn_on_submit="";

var newsItemArray = new Array();

nMenuItems = new Array();
nMenuItems['addNews'] = new Array(addNews, 'nMenuAddNews', 'Lägg till nyhet');
nMenuItems['delNews'] = new Array(delNews, 'nMenuDelNews', 'Radera nyhet');
nMenuItems['editNews'] = new Array(editNews, 'nMenuEditNews', 'Editera nyhet');
nMenuItems['addNewsgroup'] = new Array(newNewsgroup, 'nMenuAddNewsgroup', 'Ny Nyhetsgrupp');
nMenuItems['editNewsgroup'] = new Array(editNewsgroup, 'nMenuEditNewsgroup', 'Editera Grupp');
nMenuItems['delNewsgroup'] = new Array(delNewsgroup, 'nMenuDelNewsgroup', 'Radera Grupp');

nMenuDef = new Array();
nMenuDef['shownewsgroup'] = new Array('addNews', 'editNewsgroup', 'delNewsgroup');
nMenuDef['shownewsitem'] = new Array('delNews', 'editNews');
nMenuDef['mainview'] = new Array('addNewsgroup');


var nEditItems = new Array();
nEditItems['heading']= new Array('text', 'Rubrik', ['name', 'size', 'maxlength'], ['heading', 50, 50]);
nEditItems['newstext'] = new Array('textarea', 'Text', ['name', 'cols', 'rows'], ['newstext', 60, 3]);
nEditItems['image'] = new Array('file', 'Bild', ['name', 'size'], ['image', 30]);
nEditItems['newimage'] = new Array('file', 'Ny Bild', ['name', 'size'], ['newimage', 30]);
nEditItems['delimage'] = new Array('checkbox', 'Ta bort bild', ['name', 'value'], ['delimage', 1]);
nEditItems['showdate'] = new Array('checkbox', 'Visa datum', ['name', 'value'], ['showdate', 1]);



var nEditItemUse = new Array();
//Fösrsta arrayen definierar vilka element som skall vara med.
//Andra arrayen och fältet är obligatoriskt eller inte.
//Strängen i fält tre anger den text som ges som felmeddelande om det saknas obligatorisk info
nEditItemUse['addnews'] = new Array(['heading', 'newstext', 'image'], [1, 1, 0], 'Fälten Rubrik och Text måste fyllas i');
nEditItemUse['editnews'] = new Array(['heading', 'newstext', 'newimage', 'delimage'], [1, 1, 0, 0], 'Fälten Rubrik och Text måste fyllas i');
nEditItemUse['addnewsgroup'] = new Array(['heading', 'showdate'], [1], 'Fältet Rubrik måste fyllas i');
nEditItemUse['editnewsgroup'] = new Array(['heading', 'showdate'], [1], 'Fältet Rubrik måste fyllas i');



function news_startup(newsId, newsGroup){
	news_popup_build();

	//Set the file id
	var nId = document.getElementById('news_id');
	nId.setAttribute('value', newsId);

	var nGrp = document.getElementById('news_group');
	nGrp.setAttribute('value', newsGroup);
}


function drawNewsMenu(menuMode){
	var menuElements = nMenuDef[menuMode];
	var nMenu = document.createElement("DIV");
	IE_setClass( nMenu, 'menu_bar');
	nMenu.setAttribute('id', 'nMenuRoot');

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

		nMenu.appendChild(nMenuElement);
	}

	var pr = document.getElementById(target_div);
	pr.appendChild(nMenu);
}



function addNews(event){
	if(popup_hidden == true){
		news_popup_elements_draw(nEditItemUse['addnews'][0]);

		
		var todo = document.getElementById('news_todo');
		todo.setAttribute('value', 'addnews');

		placePopup('news_popup', 'nMenuRoot');
	}
}


function delNews(){
	if(confirm("Är du säker på att du vill ta bort denna nyhet?.")){
		var todo = document.getElementById('news_todo');
		todo.setAttribute('value', 'deletenews');

		var fForm = document.getElementById('news_form');
		fForm.submit();
	}
}


function editNews(event){
	if(popup_hidden == true){
		news_popup_elements_draw(nEditItemUse['editnews'][0]);
		var todo = document.getElementById('news_todo');
		todo.setAttribute('value', 'editnews');

		//Now put values in the elements
		var headerE = document.getElementById('news_heading');
		var textE = document.getElementById('news_newstext');
		var imgE = document.getElementById('news_image');

		headerE.value = item_header;
		textE.value = item_text;
		
		placePopup('news_popup', 'nMenuRoot');
	}
}


function newNewsgroup(){
	if(popup_hidden == true){
		news_popup_elements_draw(nEditItemUse['addnewsgroup'][0]);
	
		var todo = document.getElementById('news_todo');
		todo.setAttribute('value', 'addnewsgroup');

		var showdateE = document.getElementById('news_showdate');
 		showdateE.checked=true;

		placePopup('news_popup', 'nMenuRoot');
	}
}

function editNewsgroup(){
	if(popup_hidden == true){
		// Get group id from form
		var id_elem = document.getElementById('news_group');
		var id = id_elem.value;
		var eId = 'news_item_'+id;

		news_popup_elements_draw(nEditItemUse['editnewsgroup'][0]);
		var todo = document.getElementById('news_todo');
		todo.setAttribute('value', 'editnewsgroup');

		//Now put values in the elements
		var headerE = document.getElementById('news_heading');
		headerE.value = newsItemArray[eId].header;

		if(newsItemArray[eId].showdate == 1){
			var showdateE = document.getElementById('news_showdate');
 			showdateE.checked=true;
		}

		placePopup('news_popup', 'nMenuRoot');
	}
}


function delNewsgroup(){
	if(confirm("Är du säker på att du vill ta bort denna nyhetsgrupp?\nAlla nyheter i Gruppen kommer att raderas!")){
		if(confirm("Är du aldeles säker?")){
			var todo = document.getElementById('news_todo');
			todo.setAttribute('value', 'deletenewsgroup');
	
			var fForm = document.getElementById('news_form');
			fForm.submit();
		}
	}
}

/******************************************************************************
 *
 *                          POPUP
 *
******************************************************************************/

/*
 * Bygger popupfönstrets grund
 */
function news_popup_build(){

	hiddenElem = new Array(
		['news_id', 'news_id'],
		['news_group', 'news_group']);
	
	buildEditPopup('news', nSpara, nAvbryt, hiddenElem);
	
	IE_formEnctype(document.getElementById('news_form'));
}


/*
 * Fyller popupfönstret med element
 */
function news_popup_elements_draw(e_array){
	var nPopTable = document.getElementById('news_table');
	
	var l = e_array.length;

	for(var i=0; i<l; i++){
		this_item_array = nEditItems[e_array[i]];
		ntr = nPopTable.insertRow(i);
		ntd1 = ntr.insertCell(-1);
		ntd2 = ntr.insertCell(-1);
		ntxt = document.createTextNode(this_item_array[1]);
		ntd1.appendChild(ntxt);
		if(this_item_array[0] == 'textarea'){
			ninp = document.createElement('TEXTAREA');
		} else {
			ninp = document.createElement('INPUT');
			ninp.setAttribute('type', this_item_array[0]);
		}
		// Set other attributes
		var att_name = this_item_array[2];
		var att_val = this_item_array[3];
		var attl = att_name.length;
		for(var ii=0; ii<attl; ii++){
			ninp.setAttribute(att_name[ii], att_val[ii]);
			if(att_name[ii] == 'name'){
				ninp.setAttribute('id', 'news_'+att_val[ii]);
			}
		}
		ntd2.appendChild(ninp);
	}
}


/*
 * Plockar bort element och gömmer popupfönstret
 */

function nAvbryt(){
	// Ta bort elementen från edit_popup och göm den
	var np = document.getElementById('news_popup');
	var nptable = document.getElementById('news_table');

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

	warn_on_submit = "";
	popup_hidden=true;
}


/*
 * Kollar att alla obligatoriska fält fyllts i och gör en submit på
 * formuläret i popupfönstret
 */
function nSpara(){
	// Kolla först att alla obligatoriska fält har värden
	var todo = document.getElementById('news_todo').value;
	//alert('todo:'+todo);
	var elem = nEditItemUse[todo][0];
	var oblig = nEditItemUse[todo][1];
	var warn = nEditItemUse[todo][3];
	var l = elem.length;
	var err = 0;
	for(var i=0; i<l; i++){
		//alert("söker: news_"+elem[i]);
		var el = document.getElementById('news_'+elem[i]);
		if(el.value == '' && oblig[i] == 1){
			err=1;
		}
	}
	// Om kollen inte gav några problem, submitta!
	if(err == 0){
		var npForm = document.getElementById('news_form');
		// Men kolla förs om användaren skall få en varning!
		if(warn_on_submit != ""){
			if(confirm(warn_on_submit)){
				npForm.submit();
			} else {
				nAvbryt();
			}
		}else{
			npForm.submit();
		}
	} else {
		alert(nEditItemUse[todo][2]);
	}
}



function show_news(event){
	show_prepare(event, 'news_item');
}



function show_newsgroup(event){
	show_prepare(event, 'link');
}


function show_prepare(event, className)
{
	var todo_elem = document.getElementById('news_todo');
	var news_form = document.getElementById('news_form');
	var grp_elem = document.getElementById('news_group');
	var id_elem = document.getElementById('news_id');
	
	var src_ = IE_getSrc(event, className);
	var id = src_.id;
	
	if(className == 'link')
		todo_elem.setAttribute('value', 'shownewsgroup');
	else if(className == 'news_item'){
		todo_elem.setAttribute('value', 'shownewsitem');
		id_elem.setAttribute('value', newsItemArray[id].id);
	} else {
		alert('Fel!: Ett id som inte existerar har angivits. Kontakta webmaster');
		return;
	}
	
	grp_elem.setAttribute('value', newsItemArray[id].group);
	news_form.submit();
	
}



/******************************************************************************
                       NEWS ITEM OBJEKTET
******************************************************************************/

function news_item(id, group, header, newstext, date, showdate, typ, hojd, bredd){
	this.id=id;
	this.group=group;
	this.header=header;
	this.newstext=newstext;
	this.date=date;
	this.showdate=showdate;
	this.typ=typ;
	this.hojd=hojd;
	this.bredd=bredd;
	this.paint=paint_news_item;
}

function new_news_item(id, group, header, newstext, date, showdate, typ, hojd, bredd){
	var n = 'news_item_'+id;
	newsItemArray[n] = new news_item(id, group, header, newstext, date, showdate, typ, hojd, bredd);
	newsItemArray[n].paint();
}

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

	
	
	if(this.typ == 'header'){
		IE_setClass(item_, 'news_header');
		var hstyle = 'news_header_head';
	} else {
		IE_addEventListener(item_ , 'click', show_news);
		IE_setClass(item_, 'news_item');
		IE_addEventListener(item_ , 'mouseover', item_over);
		IE_addEventListener(item_ , 'mouseout', item_out);
		var hstyle = 'news_item_head';
	}

	var headTxt=document.createTextNode(this.header);
	var headSpan=document.createElement('SPAN');
	IE_setClass(headSpan, hstyle);
	headSpan.appendChild(headTxt);

	var dt = this.date;
	if(this.showdate == 0)
		dt = "";
	var dateTxt=document.createTextNode(' '+dt);
	var dateSpan=document.createElement('SPAN');
	IE_setClass(dateSpan, 'news_item_date');
	dateSpan.appendChild(dateTxt);

	//var txt=document.createTextNode(this.newstext);
	var txtSpan=document.createElement('SPAN');
	IE_setClass(txtSpan, 'news_item_text');
	txtSpan.innerHTML = this.newstext;
	//txtSpan.appendChild(txt);

	tbl = document.createElement("TABLE");
	tbl.setAttribute('border', 0);
	tbl.setAttribute('cellpadding', 0);
	tbl.setAttribute('cellspacing', 0);
	row1 = tbl.insertRow(0);
	td1 = row1.insertCell(0);
	td1.appendChild(headSpan);
	td1.appendChild(dateSpan);
	
	
	if(this.typ != 'header'){
		if(this.bredd > 0){
			var img_src = './uppladdade_filer/newsimages/'+this.id;
				
			var image1 = document.createElement('IMG');
			image1.setAttribute('src', img_src);
			image1.setAttribute('width', this.bredd);
			image1.setAttribute('height', this.hojd);
			image1.setAttribute('alt', 'visa i full storlek');
			td3 = row1.insertCell(1);
			td3.setAttribute('vAlign', 'top');
			td3.setAttribute('rowSpan', '2');
			td3.appendChild(image1);
		}
		
		row2 = tbl.insertRow(1);
		td2 = row2.insertCell(0);
		td2.setAttribute('vAlign', 'top');
		td2.appendChild(txtSpan);
	}
	item_.appendChild(tbl);

	var news = document.getElementById(target_div);
	news.appendChild(item_);
}



function item_over(event){
	var src_ = IE_getSrc(event, 'news_item');
	if(menu_hidden && popup_hidden){
		var t = src_.firstChild.firstChild;
		var s1 = t.firstChild.firstChild.firstChild;
		var s2 = t.firstChild.nextSibling.firstChild.firstChild;
		s1.style.textDecoration = 'underline';
		s2.style.textDecoration = 'underline';
	}
}

function item_out(event){
	var src_ = IE_getSrc(event, 'news_item');
	if(menu_hidden && popup_hidden){
		var t = src_.firstChild.firstChild;
		var s1 = t.firstChild.firstChild.firstChild;
		var s2 = t.firstChild.nextSibling.firstChild.firstChild;
		s1.style.textDecoration = 'none';
		s2.style.textDecoration = 'none';
	}
}


function create_more_link(id)
{
	var news = document.getElementById(target_div);

	var mn = document.createElement('DIV');
	var mns = document.createElement('SPAN');
	IE_setClass(mns, 'link');
	mns.setAttribute('id', 'news_item_'+id);
	IE_addEventListener(mns , 'mouseover', link_over);
	IE_addEventListener(mns , 'mouseout', link_out);
	IE_addEventListener(mns, 'click', show_newsgroup);
	var mnt = document.createTextNode('Fler Nyheter');
	mns.appendChild(mnt);
	mn.appendChild(mns);
	news.appendChild(mn);
}



function link_over(event){
	var src_ = IE_getSrc(event, 'link');
	if(menu_hidden && popup_hidden){
		src_.style.textDecoration = 'underline';
	}
}

function link_out(event){
	var src_ = IE_getSrc(event, 'link');
	if(menu_hidden && popup_hidden){
		src_.style.textDecoration = 'none';
	}
}
