/* function tagopen
Sätter ihop och skickar den URL som behövs för att öppna templaten för att visa utskriftslista med flera artiklar. Tittar i cookien articles_Cookie för att se vilka artiklar som är markerade för utskrift och hur många de är.
*/
//function tagopen(prefix, suffix)
function tagopen(page,toctype,doctype)
{
    var newlocation;
    if (articles_Cookie.get())
	if (articles_Cookie.number!="0")
	    {
		//newlocation=prefix + articles_Cookie.tagged + suffix + articles_Cookie.number;
		
		newlocation=page + ".jsp?search1_id=" + articles_Cookie.tagged + "&op1=eller&from=1&toc_length=" + articles_Cookie.number + "&currdoc=0&toctype=" + toctype + "&doctype=" + doctype + "&format=normal&selection=yes";
		location=newlocation;
		return;
	    }
    
    alert('Inga dokument markerade.');
}

/* function update_number
Uppdaterar siffran som visar hur många artiklar som är markerade.
*/
function update_number(elemid)
{
    var numberelem;
    var loop=1;
    numberelem=document.getElementById(elemid + loop);
    while(numberelem!=null) {
	if(articles_Cookie.get()) {
	    if(typeof(articles_Cookie.number)!="undefined") {
		numberelem.firstChild.data=articles_Cookie.number;
	    } else {
		numberelem.firstChild.data="0";
	    }
	} else {
	    numberelem.firstChild.data="0";
	}
	loop++;
	numberelem=document.getElementById(elemid + loop);
    }
}

/* function clear_checkboxes
Avmarkerar alla checkboxar på träfflistan för att markera artiklar för utskrift. Genom att köra denna funktion efter att cookien articles_Cookie nollställts (genom att användaren trycker på Rensa-knappen på träfflistan), undviker man att behöva ladda om sidan också. 
*/
function clear_checkboxes(form)
{
    for(i=0;i<form.elements.length;i++)
	{
	    if(form.elements[i].type=="checkbox")
		form.elements[i].checked=false;
	}
}

/* function clear_checkboxes_on_page
Avmarkerar alla checkboxar på en sida träfflistan för att markera artiklar för utskrift. Skiljer sig från funktionen clear_checkboxesgenom att respektive artikel också tas bort ur cookien articles_Cookie. Detta är nödvändigt för att kunna ta bort artiklar på EN sida av träfflistan, utan att radera hela articles_Cookie.
*/
function clear_checkboxes_on_page(form)
{
    var i;
    for(i=0;i<form.elements.length;i++)
	{
	    if(form.elements[i].type=="checkbox"&&form.elements[i].checked==true)
		{
		    article=form.elements[i].value;
		    del_artn(article);
		    form.elements[i].checked=false;
		}
	}
}

/* function fill_checkboxes_on_page(form)
Markerar alla checkboxar på en sida träfflistan för att markera artiklar för utskrift. Först tas alla enstaka markerade artiklar på sidan bort och sedan markeras alla. Detta är för att inte få dubletter ifall användaren först markerar enstaka artiklar och sedan trycker på "Markera alla"-knappen.
*/
function fill_checkboxes_on_page(form)
{
    var article;
    var i;

    // slinga för att ta bort markerade artiklar från cookien

    for(i=0;i<form.elements.length;i++)
	{
	    if(form.elements[i].type=="checkbox"&&form.elements[i].checked==true)
		{
		    article=form.elements[i].value;
		    article=article.substring(0,article.indexOf("."));
		    del_artn(article);
		}
	}

    // slinga för att markera alla checkboxar och skriva dem i cookien 

    for(i=0;i<form.elements.length;i++)
	{
	    /*	    if(form.elements[i].type=="checkbox")
		{
		    article=form.elements[i].value;
		    article=article.substring(0,article.indexOf("."));
		    form.elements[i].checked=true;
		    add_artn(article);
		    }*/

	    if(form.elements[i].type=="checkbox")
		{
		    article=form.elements[i].value;
		    article=article.substring(0,article.indexOf("."));
		    if(add_artn(article)=="cookiefull")
			{
			    form.elements[i].checked=false;
			    break;
			}
		    else
			form.elements[i].checked=true;

		}
	}
}

/* function check
Används för att avgöra om artikelnummer ska läggas till eller tas bort i cookien articles_Cookie,när checkboxen för artikeln på träfflistan markeras eller avmarkeras. 
*/

function check(artn, chkbox)
{
    if (chkbox.checked==true)
	{
	    if(add_artn(artn)=="cookiefull")
		chkbox.checked=false;
	}
    else
	{
	    del_artn(artn);
	}
}

/* function add_artn
Lägger till ett artikelnummer i cookien articles_Cookie.
*/
function add_artn(artn)
{	
    if (articles_Cookie.get())
	{	
	    if (articles_Cookie.tagged=="undefined"||articles_Cookie.tagged=="")
		articles_Cookie.tagged=artn;
	    else if (articles_Cookie.number=="180")
		{
		    alert("Du kan högst markera 180 artiklar i taget för utskrift.");
		    return("cookiefull");
		}
	    else
		articles_Cookie.tagged+='+'+artn;
	}
    else
	articles_Cookie.tagged=artn;

    articles_Cookie.number=articles_Cookie.tagged.split('+').length; 

    articles_Cookie.put();
}

/* function del_artn
Tar bort ett artikelnummer ur cookien articles_Cookie.
*/
function del_artn(artn)
{
    var i;

    if (articles_Cookie.get())
	{
	    if (articles_Cookie.tagged)
		{
		    piece=articles_Cookie.tagged.split('+');
		    
		    articles_Cookie.tagged="";
		    
		    for(i=0;i<piece.length;i++)
			{
			    if (piece[i]!=artn)
				{
				    if (articles_Cookie.tagged!="")
					articles_Cookie.tagged+='+';
				    articles_Cookie.tagged+=piece[i];
				}
			}
		    if(articles_Cookie.tagged=="")
			articles_Cookie.number='0';
		    else
			articles_Cookie.number=articles_Cookie.tagged.split('+').length;
		    articles_Cookie.put();
		}	 
	}
}

/* function checked_artn
Kontrollerar ifall ett artikelnummer finns med i cookie articles_Cookie. Används för att kunna fylla i checkboxar för de artiklar på träfflistan som användaren markerat tidigare när han återvänder till sidan.
*/ 
function checked_artn(artn)
{
    if (articles_Cookie.get()) {
	if (articles_Cookie.tagged) {
	    piece=articles_Cookie.tagged.split('+');
	    articles_Cookie.tagged='';
	    for(i=0;i<piece.length;i++) {
		if (piece[i]==artn) {
		    return(true);
		}
	    }
	}
    }
    return(false);
}

/* function Cookie
Constructor-funktion för klassen Cookie
*/
function Cookie(document, name, days)
{
    this._document=document;
    this._name=name;
    if (days)
	this._expiration=new Date((new Date()).getTime()+days*24*60*60*1000);
}

/* function _CookiePut
Sparar innehållet i ett JavaScript-objekt av klassen Cookie till en cookie i browsern.
*/
function _CookiePut()
{
    value="";
    for(var property in this)
	{
	    if((property.charAt(0)=='_') || ((typeof this[property]) == 'function'))
		continue;
	    if (value!="") value+='&';
	    value+=property+':'+escape(this[property]);
	}
    
    if (this._expiration)
	this._document.cookie=this._name+'='+value+'; expires='+this._expiration.toGMTString();
    else
	this._document.cookie=this._name+'='+value;
}

/* function _CookieGet
Läser in innehållet från en cookie i browsern till ett JavaScript-objekt av klassen Cookie.
*/
function _CookieGet()
{
    allcookies=this._document.cookie;
    
    if (allcookies=="") return false;
    
    start=allcookies.indexOf(this._name+'=');
    if (start==-1) return false;
    
    start+=this._name.length+1;
    end=allcookies.indexOf(';',start);
    if (end==-1) end=allcookies.length;
    
    value=allcookies.substring(start,end);
    
    piece=value.split('&');
    for(i=0;i<piece.length;i++)
	piece[i]=piece[i].split(':');
    
    for(i=0;i<piece.length;i++)
	this[piece[i][0]]=unescape(piece[i][1]);
    
    return true;
}

/* function _CookieErase
Raderar en cookie i browsern för motsvarande JavaScript-objekt av klassen Cookie.
*/

function _CookieErase()
{
    var cookie;

    cookie=this._name + "=";
    if(this._path)
	cookie+= "; path=" + this._path;
    if(this._domain)
	cookie+= "; domain=" + this._domain;
    cookie+= "; expires=Fri, 02-Jan-1970 00:00:00 GMT";
    this._document.cookie=cookie;
}

/* Metod-specifikation för klassen Cookie */ 
new Cookie();
Cookie.prototype.put=_CookiePut;
Cookie.prototype.get=_CookieGet;
Cookie.prototype.erase=_CookieErase;

