var titleTag = "title";

function startsWith(str, strStart)
{
  return (str.match("^"+strStart)==strStart)
}

function endsWith(str, strEnd)
{
  return (str.match(strEnd+"$")==strEnd)
}

function includes(arr, obj) 
{ 
  for(var i=0; i<arr.length; i++) 
  { 
    if (arr[i] == obj) return true; 
  }
  return false;
} 

function getGroups()
{
  var i, a, group;
  var groups=[];
  var groupLen;

  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1 
    && a.getAttribute(titleTag) 
    && a.getAttribute(titleTag).indexOf("_") != -1)
//    && !a.disabled)
    {
      group = a.getAttribute(titleTag).split("_")[0];
      groupLen=groups.length;

      if(!includes(groups, group))
      {
        groups[groupLen] = group;
      }
    }
  }

  return groups;
}

function getTitleStart(group)
{
  return group + "_";
}

function getFullTitle(group, name)
{
  return group + "_" + name;
}



function setActiveStyleSheet(group, name) 
{
  var i, a, main;
  var titleStart = getTitleStart(group);
  var fullTitle = getFullTitle(group, name);

  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1 
    && a.getAttribute(titleTag) 
    && startsWith(a.getAttribute(titleTag), titleStart) )
    {
      a.disabled = true;
      if(a.getAttribute(titleTag) == fullTitle)
      {
	 a.disabled = false;
	//alert("-> " +fullTitle+" "+a.disabled);
      }
    }
  }
}


function getActiveStyleSheet(group) 
{
  var i, a;
  var titleStart = getTitleStart(group);
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1 
    && a.getAttribute(titleTag) 
    && startsWith(a.getAttribute(titleTag), titleStart)
    && !a.disabled) 
    {
      return a.getAttribute(titleTag);
    }
  }
  return null;
}

function getPreferredStyleSheet(group) {
  var i, a;
  var titleStart = getTitleStart(group);
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
  {
    if(a.getAttribute("rel").indexOf("style") != -1
    && a.getAttribute("rel").indexOf("alt") == -1
    && a.getAttribute(titleTag)
    && startsWith(a.getAttribute(titleTag), titleStart))
    {
      return a.getAttribute(titleTag);
    }
  }
  return null;
}

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;
}


//jQuery(document).ready(function(){ startup(); });

window.onload = function(e) 
//function startup()
{
  var title, name;
  var groups = getGroups();
  for(var i=0; i<groups.length; i++) 
  {
    name = readCookie(groups[i]);
    title = name ? getFullTitle(groups[i],name) : getPreferredStyleSheet(groups[i]);
	
	//title = getPreferredStyleSheet(groups[i]);
	
    name = title.split('_')[1];
    setActiveStyleSheet(groups[i], name);
  }
}

window.onunload = function(e) 
{
  var title, groupAndName;
  var groups = getGroups();
  for(var i=0; i<groups.length; i++) 
  {
    title = getActiveStyleSheet(groups[i]);
    groupAndName = title.split('_');
    createCookie(groupAndName[0], groupAndName[1], 365);
  }
}



//var title, name;
//var groups = getGroups();
//for(var i=0; i<groups.length; i++) 
//{
//  name = readCookie(groups[i]);
//  title = name ? getFullTitle(groups[i],name) : getPreferredStyleSheet(groups[i]);
//  name = title.split('_')[1];
//  setActiveStyleSheet(groups[i], name);
//}

