// Versionskontroll: Tagg-relaterat
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

// Globala variabler

// (nä, inga globala variabler än)


page_on_display = 0;

// === Skapa fönster för resultat av bib-sökning =========================================================

function create_searchbib (x,y) {
	window.open('','searchbib','location=0,resizable=yes,status=1,titlebar=1,directories=0,toolbar=0,menubar=0,scrollbars=1,left=0,top=0,width='+x+',height='+y);
}


// === Kontrollera att ev. obligatoriska fält fyllts i =========================================================

function check_form(form) {
	for (x = 0; x < form.elements.length; x++) {
		n = form.elements[x].name
		v = form.elements[x].value
		if (n.substr(n.length-2,n.length) == "_o" && v == "") {			// Finalt "_o" = obligatoriskt
			alert("Du måste fylla i samtliga obligatoriska fält!")
			form.elements[x].focus()
			return false;
		}
	}
	return true;
}

// === Hantering av taggar, inkl. bilder =========================================================

function tagga(tagg,antal) {
	var txtarea = document.page.text

	var theSelection = false
	var tagg1 = "<"+tagg+">"
	var tagg2 = "</"+tagg+">"

	if (tagg == "tabell") { tagg1 = "[[\n [  |  ]\n [  |  ] \n]]\n" }

	if (antal == 1) {
		insert(tagg1,'text')
		return
	}

	if (clientVer >= 4 && is_ie && is_win) {
		theSelection = document.selection.createRange().text; // Get text selection
		if (theSelection) {
			// Add tags around selection
			document.selection.createRange().text = tagg1 + theSelection + tagg2
			txtarea.focus()
			theSelection = ''
			return;
		}
	}
	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) {
		mozWrap(txtarea,tagg1,tagg2)
		return
	}

	storeCaret(txtarea)
}

function h2bild(id,namn,target) {
	insert('<bild id=' + id + ' namn="' + namn + '">',target)
}

function h2doc(id,namn,target) {
	insert('<dokument fil=' + id + ' namn="' + namn + '">',target)
}

function h2link(id,namn,target) {
	insert('<länk sida=' + id + ' namn="' + namn + '">',target)
}

function insert(text,target) {
	var txtarea = document.page.text
	if (target == "right") { txtarea = document.page.right }
	if (target == "left")  { txtarea = document.page.left  }
	if (target == "ads")   { txtarea = document.page.ads   }

	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text
		txtarea.focus()
	} else {
		txtarea.value  += text
		txtarea.focus()
	}
}

// From http://www.massless.org/mozedit/
function mozWrap(txtarea, open, close) {
	var selLength = txtarea.textLength
	var selStart = txtarea.selectionStart
	var selEnd = txtarea.selectionEnd
	if (selEnd == 1 || selEnd == 2) selEnd = selLength

	var s1 = (txtarea.value).substring(0,selStart)
	var s2 = (txtarea.value).substring(selStart, selEnd)
	var s3 = (txtarea.value).substring(selEnd, selLength)
	txtarea.value = s1 + open + s2 + close + s3
	return
}

// Insert at Claret position. Code from
// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
function storeCaret(textEl) {
	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate()
}



// === Aktivering av redigeringsrutan (ed_menu) ==========================================

function ed_menu(p,name,flikstatus,statustext,aktiv_sida,vald_flik,vald_underflik,can_move_left,can_move_right,visible,usr,callme,flikcall,lang,style,x) {
//
// p				sida som anropet sker från
// name				sidans namn
// aktiv_sida		sida som SYNS
// vald_flik		huvudflik som är VALD = som anropet sker från
// vald_underflik	underflik som är VALD = som anropet sker från
// flikstatus		vald_flik/underflik - 1=huvudflik 2=underflik 3=u2-flik
// statustext		"Huvudflik" alt. "[huvudflik] - underflik" alt. "[huvudflik] - underunderflik"
// callme			$callme från huvudscriptet
// flikcall			callme + parametrar för snabbanrop till edpage
//
// h2|edpage kan anropas antingen som länk eller via SUBMIT; parametern how visar hur anropet gjorts.
//
//alert("ed_menu("+p+","+name+","+can_move_left+","+can_move_right+")")

	var html = ""
	var flikcallwhich = ""
	if (p == page_on_display) { page_on_display = 0; ed_menuLayer.hide(); return; }
	flikcallwhich = flikcall + "&w=" + p

	html += "<FORM NAME=ed ACTION="+callme+" METHOD=GET>"
	html += "<INPUT TYPE=HIDDEN NAME='do' VALUE='edshow'>"
	html += "<INPUT TYPE=HIDDEN NAME='how' VALUE='form'>"
	html += "<INPUT TYPE=HIDDEN NAME='w' VALUE='"+p+"'>"
	html += "<INPUT TYPE=HIDDEN NAME='thenshow' VALUE='"+aktiv_sida+"'>"
	html += "<INPUT TYPE=HIDDEN NAME='i' VALUE='"+usr+"'>"
	html += "<INPUT TYPE=HIDDEN NAME='l' VALUE='"+lang+"'>"
	html += "<INPUT TYPE=HIDDEN NAME='s' VALUE='"+style+"'>"
	html += "<TABLE BGCOLOR="+text_ed+" BORDER=0 CELLSPACING=0 CELLPADDING=1><TR><TD>"
	html += "<TABLE WIDTH="+(bigtablewidth-2)+" BORDER=0 CELLSPACING=1 CELLPADDING=1>"
	html += "<TR BGCOLOR="+bg_ed+"><TD>";
	html += "<TABLE border=0 WIDTH=100%><TR><TD ALIGN=LEFT>"
	html += "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR VALIGN=MIDDLE>";
	html += "<TD>"+statustext+":&nbsp;</TD>";
	html += "<TD><INPUT TYPE=TEXT NAME=newname VALUE='"+name+"'</TD><TD>&nbsp;</TD>";
	html += "<TD>Bredd:&nbsp;</TD><TD><INPUT TYPE=TEXT NAME=x VALUE="+x+" SIZE=3></TD><TD>&nbsp;</TD>";
	html += "<TD><INPUT TYPE=SUBMIT VALUE='Ändra namn/bredd'></TD>";
//	html += "<TD ALIGN=RIGHT><I>id "+p+"; fs "+flikstatus+"; akt "+aktiv_sida+"; v_f "+vald_flik+"; v_u-f "+vald_underflik+"</I></TD>";
	html += "</TR></TABLE>"
	html += "</TD><TD ALIGN=RIGHT VALIGN=TOP><A HREF='' onClick='ed_menuLayer.hide(); page_on_display = 0; return false;'>x</A></TD>"
	html += "</TR></TABLE>"
	html += "</TD></TR>";
	html += "<TR BGCOLOR="+bg_ed+"><TD><FONT COLOR="+text_ed+">"
	if (can_move_left)  { html += "[ <A HREF=" + flikcallwhich + "&what=mvlft>&lt;</A> ]" } else { html += "[ &nbsp; ]" }
	if (can_move_right) { html += "[ <A HREF=" + flikcallwhich + "&what=mvrgt>&gt;</A> ]" } else { html += "[ &nbsp; ]" }
	if (can_move_left)  { html += "[ <A HREF=" + flikcallwhich + "&what=mvfrlft>&lt;&lt;</A> ]" } else { html += "[ &nbsp; ]" }
	if (can_move_right) { html += "[ <A HREF=" + flikcallwhich + "&what=mvfrrgt>&gt;&gt;</A> ]" } else { html += "[ &nbsp; ]" }
	if (flikstatus != 1) { html += "[ <A HREF=" + flikcallwhich + "&what=mksup>Gör till huvudflik</A> ]" }
	if (flikstatus != 2 && p != vald_flik) { html += "[ <A HREF=" + flikcallwhich + "&what=mksub&where=" + vald_flik + ">Gör till underflik</A> ]" }
	if (flikstatus != 3 && p != vald_flik && p != vald_underflik && vald_underflik != 0) { html += "[ <A HREF=" + flikcallwhich + "&what=mksubsub&where=" + vald_underflik + ">Gör till underunderflik</A> ]" }
	html += "[ <A HREF=" + flikcallwhich + "&what=rmv&confirm=1>Ta bort</A> ]"
	if (visible == "Nej") { html += "[ <A HREF=" + flikcallwhich + "&what=mkvis>Visa</A> ]" }
					 else { html += "[ <A HREF=" + flikcallwhich + "&what=mkinv&where=" + vald_flik + ">Dölj</A> ]" }
	if (flikstatus == 1) { where = 1; flik = "huvudflik"; }
	if (flikstatus == 2) { where = vald_flik; flik = "underflik"; }
	if (flikstatus == 3) { where = vald_underflik; flik = "underunderflik"; }
	html += "[ <A HREF=" + flikcall + "&w=" + where + "&what=add>Ny " + flik + "</A> ]"
	where = 0; flik = "";
	if (flikstatus == 1) { where = p; flik = "underflik"; }
	if (flikstatus == 2) { where = p; flik = "underunderflik"; }
	if (where) { html += "[ <A HREF=" + flikcall + "&w=" + where + "&what=add>Ny " + flik + "</A> ]" }
	html += "</FONT></TD></TR>"
	html += "</TABLE>"
	html += "</TD></TR></TABLE>"
	html += "</FORM>"

	ed_menuLayer.writeLayer(html)
	page_on_display = p

	ed_menuLayer.show()
}



/*  Admin  */

 // Ange värde på fält
function a_set(id,f,currval,falt,namn,x) {
//	alert("a_set(" + id + "," + f + "," + currval + "," + falt + "," + namn + "," + x + ")");

	if (x) { val = x }
	  else { val = prompt("Ange " + falt + " för " + namn,currval) }

	if (typeof(val) == "string") {
		document.admin.a_d.value = "set"
		document.admin.a_u.value = id
		document.admin.a_f.value = f
		document.admin.a_v.value = val
		document.admin.submit()
	}
}



/*	Bildhantering	*/

 // Byt namn på bild
function rename_img(id,namn) {
	if (nyttnamn = prompt("Byt namn på bilden:",namn)) {
		document.rename_b.b_which.value = id
		document.rename_b.b_what.value  = nyttnamn
		document.rename_b.submit()
	}
}

 // Borttagning av bilder metod 2: En masse.
function remove2_img() {
	var antal = 0
	var remove = 'remove2'
	for (x = 0; x < bilder.elements.length; x++) {
		n = bilder.elements[x].name
		c = bilder.elements[x].checked
		if (n.substr(0,6) == 'check_' && c) {
			bilder.elements[x].focus()
//			if (confirm('Ta bort den här?')) { antal++ } else { alert('Bildborttagningen avbröts'); return }
			antal++
		}
	}
	if (antal == 1) { bildord = 'bild' } else { bildord = 'bilder' }
	if (! antal) { alert('Inga bilder har markerats för borttagning'); return }
	if (confirm("Du kommer nu att ta bort "+antal+" "+bildord+" - fortsätt?")) {
		document.bilder.b_do.value = 'remove2'
		document.bilder.submit()
	}
}

 // Flytta bilder
function move_img() {
	var antal = 0
	var error = 0
	for (x = 0; x < bilder.elements.length; x++) {
		n = bilder.elements[x].name
		c = bilder.elements[x].checked
		if (n.substr(0,6) == 'check_' && c) { antal++ }
	}
	if (antal == 1) { bildord = 'bild' } else { bildord = 'bilder' }
	if (! antal) { alert('Inga bilder har markerats'); return }
	bilder.b_where.value = bilder.moveto.options[bilder.moveto.selectedIndex].value
	if (bilder.b_where.value == 0) { alert("Du måste välja vart du vill flytta bilderna!"); error = 1; }
	if (error == 0 && confirm("Du kommer nu att flytta "+antal+" "+bildord+" - fortsätt?")) {
		bilder.b_do.value = 'move'
		bilder.submit()
	}
}



/*	Dokumenthantering	*/

 // Byt namn på dokument
function rename_doc(id,namn) {
	if (nyttnamn = prompt("Byt namn på dokumentet:",namn)) {
		document.rename_d.d_which.value = id
		document.rename_d.d_what.value  = nyttnamn
		document.rename_d.submit()
	}
}

 // Borttagning av dokument metod 2: En masse.
function remove2_doc() {
	var antal = 0
	var remove = 'remove2'
	for (x = 0; x < dokument.elements.length; x++) {
		n = dokument.elements[x].name
		c = dokument.elements[x].checked
		if (n.substr(0,6) == 'check_' && c) {
			dokument.elements[x].focus()
			antal++
		}
	}
	if (! antal) { alert('Inga dokument har markerats för borttagning'); return }
	if (confirm("Du kommer nu att ta bort "+antal+" dokument - fortsätt?")) {
		document.dokument.d_do.value = 'remove2'
		document.dokument.submit()
	}
}

// Flytta dokument
function move_doc() {
	var antal = 0
	var error = 0
	for (x = 0; x < document.dokument.elements.length; x++) {
		n = document.dokument.elements[x].name
		c = document.dokument.elements[x].checked
		if (n.substr(0,6) == 'check_' && c) { antal++ }
	}
	if (! antal) { alert('Inga dokument har markerats'); return }
	document.dokument.d_where.value = document.dokument.moveto.options[document.dokument.moveto.selectedIndex].value
	if (document.dokument.d_where.value == 0) { alert("Du måste välja vart du vill flytta dokumenten!"); error = 1; }
	if (error == 0 && confirm("Du kommer nu att flytta "+antal+" dokument - fortsätt?")) {
		document.dokument.d_do.value = 'move'
		document.dokument.submit()
	}
}


// Hantering av lager

function createlayerObj(id, i) {
	theLayer = document.all[id].style
	theLayer.access = document.all[id]
	this.css = document.all[id].style

	this.id = i
	this.x = this.css.pixelLeft
	this.y = this.css.pixelTop
	this.w = this.css.pixelWidth
	this.h = this.css.pixelHeight
}
{
	p = createlayerObj.prototype
	p.writeLayer = writeLayer
	p.loadInLayer = loadInLayer
	p.show = showLayer
	p.hide = hideLayer
}

///
function loadInLayer(url) {
	transferObj=this
	this.srcURL = url
	document.all['bufferFrame'].src = url
}

///
function writeLayer(htmlContent) {
	this.css.access.innerHTML = htmlContent
}

///
function showLayer() {
	this.css.visibility = "visible"
}

///
function hideLayer() {
	this.css.visibility = "hidden"
}




// Onload-fokusering på namn-fältet.
function autorun_namn() { document.doc.namn.focus() }

// Onload-fokusering på text-fältet.
function autorun_text() { document.doc.text.focus() }


// Submitter-funktion för ed/mkdoc.
function submitter(form) {
   error = "";
   if (form.namn.value == "") {error = "Du måste ange ett namn!"}
   if (error) { alert(error); exit }
   form.submit();
}


// === Fönster ==========================================

// Fönster: "Resizable" med rullningslister och statusfält på X x Y pix
function openWinRSSt(url,x,y) {
   window.open(url,'','location=0,resizable=yes,status=1,titlebar=1,directories=0,toolbar=0,menubar=0,scrollbars=1,left=0,top=0,width='+x+',height='+y);
}

// Fönster: "Resizable" med rullningslister på X x Y pix
function openWinRS(url,x,y) {
   window.open(url,'','location=0,resizable=yes,status=0,titlebar=1,directories=0,toolbar=0,menubar=0,scrollbars=1,left=0,top=0,width='+x+',height='+y);
}

// Fönster: "Resizable" på 500x300 pix
function openWinR(url) {
   window.open(url,'','location=0,resizable=yes,status=0,titlebar=1,directories=0,toolbar=0,menubar=0,scrollbars=0,left=0,top=0,width=500,height=300');
}

// Fönster: "resizable" på X x Y pix
function openWin(url,x,y) {
   window.open(url,'','location=0,resizable=yes,status=0,titlebar=1,directories=0,toolbar=0,menubar=0,scrollbars=0,left=0,top=0,width='+x+',height='+y);
}


// === Inloggnings-sidan ==========================================

function autorun_login() {
	document.myForm.password.focus()
	if (document.myForm.formusr.value != "") {				// Har användarnamnet skickats som parameter?
		document.myForm.usr.value = document.myForm.formusr.value
	} else {
		cookiename = getCookie("usr")
		if (cookiename != null) {							// Finns användarnamnet i en kaka?
			document.myForm.usr.value = cookiename
		} else {
			document.myForm.usr.focus()						// Varken eller = tomt namnfält.
		}
	}
}

function login_submitter() {
	var nu = new Date(); fixDate(nu); nu.setTime(nu.getTime()+365*24*60*60*1000);
	setCookie("usr",document.myForm.usr.value,nu)

	document.myForm.submit()
}


// === Kakor ==========================================

function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires)	? "; expires = " + expires.toGMTString() : "") +
      ((path)		? "; path = " + path : "") +
      ((domain)		? "; domain = " + domain : "") +
      ((secure)		? "; secure" : "");
  document.cookie = curCookie;
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf(prefix);
  if (begin == -1)
    return null;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" + 
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function fixDate(date) {
  var base = new Date(0); var skew = base.getTime();
  if (skew > 0) date.setTime(date.getTime() - skew);
}





