/* 
   Package: SV ver 1.2
   File: styleswitcher.js
   Ver.: 1.0
   Date: 14.01.2006
   Desc: javascript per lo switching dello style sheet
         Lo stylesheet di tipo media="screen" utilizzato viene memorizzato in chiusura in un cookie.
         Se il cookie non ? presente, viene utilizzato lo stile di default.
         Attualmente il cookie e le funzioni gestiscono la memorizzazione di un solo stylesheet di tipo screen per volta.
         E' necessario quindi dichiarare nell'head della pagina html:
         - lo stylesheet di default (1)
         - gli stylesheet alternativi (1..n)
         Siccome le funzioni lavorano solo sugli stylesheet di tipo media="screen", gli altri stylesheet non vengono
         modificati (es. se presenti uno o pi? stylesheet di tipo media="print" essi non vengono modificati nell'uso:
         se per esempio si dichiarano di tipo "stylesheet" saranno attivi (attivati dal browser)
         mentre se dichiarati di tipo "alternate stylesheet" saranno disattivati (sempre dal browser)
         Stessa sorte per gli stylesheet linkati ma senza attributo title settato.
         Per esempio:
         <head>
           <--! stili screen (attivi in alternanza) -->
	   <link rel="stylesheet" type="text/css" href="./style/screen.css" media="screen" title="sv-default-1-0" />
	   <link rel="alternate stylesheet" type="text/css" href="./style/text.css" media="screen" title="sv-textonly-1-0" />
	   
	   <--! stili print (sempre attivi)-->
	   <link rel="stylesheet" type="text/css" href="./style/print.css" media="print" title="sv-print-1-0" />
	 
	   <--! include questo js -->
	   <script type="text/javascript" src="./script/styleswitcher.js"></script>
	 </head>
   Note: Thanks to Peter-Paul Koch and Sowden who have written the core of the original free script code, here modified
*/

function SetStyleOnLoad()
{
	var cookie = readCookie("style");
	var title = cookie ? cookie : getDefaultStyleSheet();
	setActiveStyleSheet(title);
}




function setActiveStyleSheet(title) 
{
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1 
    	&& a.getAttribute("title") 
    	&& (a.getAttribute("media")=="screen"))		//lavora solo sui media==screen (print non viene preso in considerazione)
    {
      a.disabled = true;
      if(a.getAttribute("title") == title) 
      	a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  var style = null;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1 
    	&& a.getAttribute("title") 
    	&& (a.getAttribute("media")=="screen")
    	&& !a.disabled
       ) 
    {
    	style = a.getAttribute("title"); //ne ritorna solo uno, non l'array... da modificare in seguito
    }
  }
  return style;
}

function getDefaultStyleSheet() {
  var i, a;
  var style = null;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("rel").indexOf("alt") == -1
        && a.getAttribute("title")
        && (a.getAttribute("media")=="screen")
       ) 
      {
        style = a.getAttribute("title"); //ritorna quello settato per primo, di tipo "stylesheet","screen" e dotato di nome (title)        
      }
  }
  return style;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getDefaultStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}
