
// Original JavaScript code by Duncan Crombie: dcrombie@chirp.com.au
// Please acknowledge use of this code by including this header.

  var bites = document.cookie.split("; "); // break cookie into array of bites

  function getCookie(name) { // use: getCookie("name");
    for (var i=0; i < bites.length; i++) {
      nextbite = bites[i].split("="); // break into name and value
      if (nextbite[0] == name) // if name matches
        return unescape(nextbite[1]); // return value
    }
    return null;
  }

  var today = new Date();
  var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days

  function setCookie(name, value) { // use: setCookie("name", value);
    if (value != null && value != "")
      document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString();
    bites = document.cookie.split("; "); // update cookie bites
	//window.status = document.cookie;
  }
///
/// Artturi laitakari osio:
///

  var thispage = null;//document.URL;	// tämä sivu on docukentin URL oliossa. getStateCookie() parsii sen.
  var SEPARATOR = "¤";		// sivun ja elementin erotin merkki.
  var TABON  = "../images/tabon.gif";
  var TABOFF = "../images/taboff.gif";


  var today = new Date();
  var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days
  var trouble = "false";

// Original JavaScript code by Artturi Laitakari: artist@iki.fi
// Please acknowledge use of this code by including this header.
function sniffer()
{
	var userAgent=navigator.userAgent.toLowerCase();
	var trouble = "false";
	if (typeof window.opera!="undefined") { trouble = "true"; }
	//if ((userAgent.indexOf('mozilla')!=-1)&&(parseInt(navigator.appVersion)>=4)) trouble = "true";
	return trouble;
}
  // Toggle hakee Cookiesta elementin tilan. return state.
  function getShadeState(element)
  {
	var Page= "false";
	var Elem= "false";
 	var bites = document.cookie.split("; "); // break cookie into array of bites
	for (var i=0; i < bites.length; i++) 
	{
		nextbite = splitString(bites[i], "="); // break into name and value
		//alert("getShadeState("+thispage+SEPARATOR+element +"="+nextbite[0]+")");
		if (nextbite[0].lastIndexOf(thispage) >-1) 
		{
			Page="true"; 
		}
		if (nextbite[0].lastIndexOf(element)  >1)
		{
			Elem="true";
		}
		if(Page == "true" && Elem == "true") 
		//if (nextbite[0] == thispage+SEPARATOR+element) // if name matches Mozilla does not understand this!
		//if(Page == "true" && Elem == "true")		
		{
			//alert("osuma:"+nextbite[0]+"-- "+nextbite[1]);
			var elements = splitString(nextbite[1], "%26"); // &
			Page= "false";
			Elem="false";
			return getState(elements);
		}
	}
	Page= "false";
	Elem="false";
    return null;
  }
	// asetetaan kookien määrittelemä shade oikeaan tilaan.
	// alkutilan metodi, protected
	// palauttaa tietyn shaden tilan. return state
    function getState(elements)
    {
      //alert("getState("+elements);
      //var img, element, state, items;
	  var state;
      state   = splitString(elements[1], "%3A"); 
      //alert(state[1]);
	  return state[1];
    }
	// protected apufunktio, return array
    function splitString(str, separator)
	{
			var sub;
		  if(str != null)
			sub = str.split(separator);
			////alert("splitString("+str+")");			
			return sub == null ? "" : sub;
	}
	// asettaa shaden auki/kiinni.
	function setToggle(img, state) 
	{
		//alert("setToggle(img, state) "+img+" "+state);
		// ottaa vastaan escapettettuja ja unescapetettuja
		if(img.lastIndexOf("¤") < 0) img = unescape(img);// separator = SEPARATOR;
		var element = img.split(SEPARATOR);
		element = element[0];
		i = document.getElementById(img);
		e = document.getElementById(element);
		  if(i == null) return null;
		  if(e == null) return null;
		if (state == "0" || state == 0) 
		{
			e.style.display = "none";
			state = "0";			
			i.src=TABOFF;
		}
		else 
		{
			e.style.display = "";
			state = "1";
			i.src=TABON;
		}
	}
	// shaden oma tilan vaihto funktio.
	function Toggle(img, element) 
	{
    // jos kookiet ovat pois päältä!
	  if(document.cookie == null || document.cookie == "undefined" || trouble == "true") 
    {
      toggle(img, element);
    }

    i = document.getElementById(img);
    e = document.getElementById(element);
    if(thispage == null)
    {
      thispage = document.URL.split("/");
      var num = thispage.length-1;
      thispage = thispage[num].split("?"); //? merkkiä ennen tulee sivu urlissa
      thispage = thispage[0];
    }


    //state = getShadeState(element);
    if(e.style.display == "none")
      state = "1";
    else
      state = "0";
    //  state = (state == "0" ? 1 : 0 );

    setToggle(img,state);
      if(img != null)
    setCookie(thispage+SEPARATOR+element,"img:"+img+"&state:"+state);
	}

	// if all else fails, use this.
	function toggle(img, element) {
	  i = document.getElementById(img)
	  e = document.getElementById(element)
	  if (e.style.display != "none") {
		e.style.display = "none";
		i.src=TABOFF;
	  }
	  else {
		e.style.display = "";
		i.src=TABON;
	  }
	  //setCookie("editperson.aspx", buildCookieString());
	}



function Poing(e) {
  var c=false;
  if(e) c=e.ctrlKey; 
    else if(event) c=event.ctrlKey;
  alert(c);
}

//document.getElementById("diu").onclick=Poing;


ShadeList=new Array();

var UseShadeQuickKeys = "true";

function RegisterShade(DomID, State, Remember, Callback, ImagePath, IsTab) {
//  if(ShadeList==undefined) 
  var s=document.getElementById(DomID+"_Header");
  ShadeList.push(s);
  s.DomID=DomID;
  s.State=State;
  s.Remember=Remember;
  s.Callback=Callback;
  s.ImagePath=ImagePath;
  s.IsTab = IsTab;
  s.onclick=DoShading;
}

function DoShading(e) {
  var element;
  var clickevent;
  if(e)
  {
    element = e.target;
    clickevent = e;
  }
  else
  {
    element = event.srcElement;
    clickevent = event;
  }

  if (element.IsTab == undefined)
    element = element.parentNode;

  DoShading2(clickevent, element);
}

function DoShading2(e, t) {

//  var s="";
//  for(p in document.selection) s+=p+" ";
//  alert(s);
  if (t.IsTab == true) {
    CloseAllButOne(t.DomID);
    return;
  }

  if(!UseShadeQuickKeys || (!e.ctrlKey && !e.shiftKey && !e.altKey)) {
    Shade(t.DomID, t.State, t.Remember, t.Callback, t.ImagePath, false, t.IsTab);
    return;
  }

  if (UseShadeQuickKeys) {
    if(e.altKey) OpenAllShades(); // expand all
    if(e.shiftKey) CloseAllShades(); // collapse all
    if(e.ctrlKey) CloseAllButOne(t.DomID); // expand clicked, collapse others
  }
}
function CloseAllButOne(shadeID) {
  for(var i=0;i<ShadeList.length;i++) {
    var n=ShadeList[i];
    Shade(n.DomID, n.DomID!=shadeID, n.Remember, n.Callback, n.ImagePath, true, n.IsTab); 
  }
}
function OpenAllShades() {
  for(var i=0;i<ShadeList.length;i++) {
    var n=ShadeList[i];
    Shade(n.DomID, false, n.Remember, n.Callback, n.ImagePath, true, n.IsTab);
  }
}

function CloseAllShades() {
  for(var i=0;i<ShadeList.length;i++) {
    var n=ShadeList[i];
    Shade(n.DomID, true, n.Remember, n.Callback, n.ImagePath, true, n.IsTab);
  }
}
function DisableShadeQuickKeys() {
  UseShadeQuickKeys = false;
}


function Shade(domid, state, remember, callback, imagepath, force, isTab) {
  var CookieExpires=new Date(new Date().getTime()+31449600000);

  var t=document.getElementById(domid+"_Normal");
  var st;

  if(t.Shaded!=undefined && !force) {
    st=!t.Shaded;
  } else st=state;

  t.style.display=st ? "none" : "";
  t.Shaded=st;

  if(remember) SetCookieItem("Shader", domid, state ? "1": "0", CookieExpires);

  var t=document.getElementById(domid+"_Img");
  if(t!=null) t.src=imagepath+"tab"+(st ? "off" : "on")+".gif";

  var h=document.getElementById(domid+"_Header");
  if(h!=null) h.className="shader_"+(isTab ? "tab_" : "")+(st ? "off" : "on");

  if(callback!="") eval(callback+"("+state+");");

  try {
  	AdjustMozillaMainArea();
  } catch(E) {}
}


function GetCookieItem(CookieName, ItemName) {
  var Crumbs=GetCookie(CookieName);
  for(var i=0;i<crumbs.length;i++) {
    var b=Crumbs[i].split("=");
    if(b[0]==ItemName) return unescape(b[1]);
  }
}

function SetCookieItem(CookieName, ItemName, Value, Expiry) {
  var Bake="";

  var c=GetCookie(CookieName);
  if(c==null) {
    Bake=ItemName+"="+escape(Value);
    SetCookie(CookieName, Bake, Expiry);
    return;
  }

  //make a lower case string for comparison
  var ItemNameLow=ItemName.toLowerCase();

  var Crumbs=c.split("&");
  var found=false;
  for(var i=0;i<Crumbs.length;i++) {
    var b=Crumbs[i].split("=");
    var bb=b[0].toLowerCase();
    //compare the lower case names
    if(bb==ItemNameLow) {
      if(found==false)
      {
        //but insert the original names
        Bake+=ItemName+"="+Value;
        found=true;
      }
      else { 
        //do nothing for duplicates
        //alert( ItemName+ " found more than once"); 
      }
    } else {
      Bake+=Crumbs[i];
    }
    //var boo=b[0]==ItemName;
    //alert(i+": "+(boo)+"\n"+b[0]+"\n"+ItemName);
    if(i<Crumbs.length-1) Bake+="&";
  }
  if(!found) Bake+="&"+ItemName+"="+escape(Value);
  SetCookie(CookieName, Bake, Expiry);
}

function GetCookie(Name) {
  var Crumbs=document.cookie.split("; ");
  for(var i=0;i<Crumbs.length;i++) {
    var b=Crumbs[i].indexOf("=");
    if(Crumbs[i].substr(0,b)==Name) return Crumbs[i].substr(b+1);
  }
  return null;
}

function SetCookie(CookieName, Value, Expiry) {
  if(Value=="") return;
  if(Value==null) return;
  if(Value==undefined) return;
  document.cookie=CookieName+"="+Value+"; expires="+Expiry.toGMTString();
}
