var is_ie = navigator.userAgent.indexOf("MSIE") != -1;

var buffered = false;
var small=false;
var last_style="";
var fade_timeout = new Array();

var hyphen = {width:"25px",alt:" / ",name:"hyphen"};
var items = {audio:{width:"80px"},hyphen_one:hyphen,development:{width:"160px"},hyphen_two:hyphen,design:{width:"90px"}};

var elements;
	        
window.onresize=adjust; 
if(document.addEventListener) document.addEventListener("DOMContentLoaded",init,false);
else document.onreadystatechange = function(){ readyState(init); };

function init() {
	if(!document.readyState in {interactive:null,complete:null,loaded:null}) return;    		
	elements = {center:document.getElementsByTagName("div")[0]};
	elements.page = elements.center.firstChild;
	elements.logo = elements.page.firstChild;
	elements.toggle = elements.center.nextSibling.nextSibling;
	paint(); adjust();
};
    
function toggle() {
  var style = getCookie("style","white");
  setCookie("style",style!="white"?"white":"black",360,"/","","");
  paint();
}

function paint() {	
  var folder = "";
  var style = getCookie("style","white");
  buffer(folder);
  
  if(last_style!=style)
  	last_style = style;
    
  if(style!="white") {
  	document.fgColor = "#FFFFFF";
    document.bgColor = "#000000";
    elements.toggle.innerHTML = "Simply White";
    folder = "./black/";
  } else {
  	document.fgColor = "#000000";
    document.bgColor = "#FFFFFF";
    elements.toggle.innerHTML = "Paint it Black";
    folder = "./white/";
  }
  
  elements.logo.src = folder + "logo.png";
  
  var head = document.getElementsByTagName("head")[0];
  var link = head.getElementsByTagName("link")[0];
 	if(link) head.removeChild(link);
	link = document.createElement("link");
	link.rel = "shortcut icon";
  link.type = "image/x-icon";
  link.href = folder +"favicon.ico";
  head.appendChild(link);
  
  var img = null;
  while(img = elements.page.firstChild.nextSibling)
  	elements.page.removeChild(img);
  if(is_ie) elements.page.appendChild(document.createElement("br"));
  for(var item in items) {
  	if(!items[item].name) items[item].name = item;
  	if(!items[item].alt ) items[item].alt  = item;
  	img = document.createElement("img");
  	img.id = item;
  	img.alt = items[item].alt;
  	img.setAttribute("width",items[item].width);
  	img.src = folder + items[item].name + ".png";
  	img.style.display = "inline";
  	img.style.marginTop = img.style.marginBottom = 0;
  	elements.page.appendChild(img);
  }
  
  fade(elements.logo);
}

function buffer(folder,addition) {
  if(buffered) { return; }
  
  (new Image()).src = folder + "logo.png";
  for(var item in items)
  	(new Image()).src = folder + (items[item].name?items[item].name:item) + ".png";
  
  if(!addition) {
	  if(folder.indexOf("white") != -1) folder = "./black/";
	  else folder = "./white/";
	  buffer(folder,true);
	} else buffered = true;
}

function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element=="string")
    element = document.getElementById(element);
  return element;
}

function adjust() { 
  var width = window.innerWidth, height = window.innerHeight;
  if(is_ie) {
    if(!width)
      if(document.body.clientWidth) width = document.body.clientWidth;
      else width = window.document.documentElement.clientWidth;
    if(!height)
      if(document.body.clientHeight) height = document.body.clientHeight;
      else height = window.document.documentElement.clientHeight;
  }

  //var img = document.images; for (var i=0;i<img.length;i++)
  if(small==false && ((width<1017) || (height<551))) {
		elements.logo.style.width=elements.logo.width/2+"px";
    small=true;
  } else if(small==true && ((width>=1017) && (height>=551))) {
    elements.logo.style.width=new String();
    small=false;
  }
}

function fade(wait_element) {
  var img = document.images,imgs = new String();
  for (var i=0;i<img.length;i++) {	
    if(fade_timeout[img[i].id]) { window.clearTimeout(fade_timeout[img[i].id]); }
    changeOpacity(img[i],0);
    if(imgs&&imgs.length) imgs += ";";
    if(!img[i].id)
    	img[i].id = parseInt(Math.random()*Math.pow(10,10));
    imgs += img[i].id;
  }
  fadeIn(imgs,wait_element);
}

function fadeIn(id,wait_element) {
  if(wait_element&&!wait_element.complete)
  	setTimeout(function(){fadeIn(id,wait_element);},250);
  else {
    var elements = id.split(";"),again=false;
    for(element in elements) {
      element = $(elements[element]);
      if(getOpacity(element) < 100) {
        changeOpacity(element,getOpacity(element)+5);
        again = true;
      }
    }
    if(again) setTimeout('fadeIn("'+id+'")',50);
  }
}

function fadeOut(id) {
  var e = $(id);
  if(getOpacity(e) > 0) {
    changeOpacity(e,getOpacity(e)-5);
    setTimeout('fadeOut("'+id+'")',50);
  } else {
    e.style.visibility = "hidden";
    changeOpacity(e,0);
  }
}

function getOpacity(e) {
  var s = e.style;
       if(s.opacity)      { return parseInt(s.opacity*100); }
  else if(s.MozOpacity)   { return parseInt(s.MozOpacity*100); }
  else if(s.KhtmlOpacity) { return parseInt(s.KhtmlOpacity*100); }
  else if(s.filter) {
    return parseInt(s.filter.substring(s.filter.indexOf("=")+1,s.filter.length-1)*100);
  } else return 100;
}

function changeOpacity(e,opacity) {
  var s = e.style;
  s.opacity = (opacity / 100);
  s.MozOpacity = (opacity / 100);
  s.KhtmlOpacity = (opacity / 100);
  s.filter = "alpha(opacity=" + opacity + ")";
}

function setCookie(name,value,expires,path,domain,secure) {
  var today = new Date(); today.setTime(today.getTime());
  if(expires) { expires = expires * 1000 * 60 * 60 * 24; }
  var expires_date = new Date(today.getTime()+(expires));
  document.cookie = name+"="+escape(value)+(expires ? ";expires="+expires_date.toGMTString() : "")+
                                            ";path="+(path ? path : "/")+
                                           (domain  ? ";domain="+domain : "")+
                                           (secure  ? ";secure" : "");
}

function getCookie(name,default_value) {
  if(document.cookie.length>0) {
	  var cookie = document.cookie.split(";");
	  for(position = 0;position<cookie.length;position++) {
	    if(cookie[position].indexOf('=') == -1) { continue; }
	    cookie[position] = cookie[position].split('=');
	    if(cookie[position][0].replace(/^\s+|\s+$/g,'') == name) {
	      return unescape(cookie[position][1].replace(/^\s+|\s+$/g, ''));
	    }
	  }
	} return (typeof default_value!="undefined" ? default_value : "");
}