function tClearDefaultValue(elemId, defaultValue, activeColor) {
  elem = document.getElementById(elemId);
  if(elem.value == defaultValue) {
    elem.value = '';
    elem.style.color = activeColor;
  }
}

function tRestoreDefaultValue(elemId, defaultValue, inactiveColor) {
  elem = document.getElementById(elemId);
  if(elem.value == '') {
    elem.value = defaultValue;
    elem.style.color = inactiveColor;
  }
}


function reveal(blockId) {
  myBlock = document.getElementById(blockId)
  myBlock.style.display = 'block'
}

function toggleVisibility(elem) {
  elem = document.getElementById(elem);
  if(elem.style.display == 'block') elem.style.display = 'none';
  else if(elem.style.display == 'none') elem.style.display = 'block'
}

function tAddSlashes( str ) {  
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");  
} 

var tooltip=function(){
 var id = 'tt';
 var top = 3;
 var left = 3;
 var maxw = 300;
 var speed = 20;
 var timer = 20;
 var endalpha = 95;
 var alpha = 0;
 var tt,t,c,b,h;
 var ie = document.all ? true : false;
 return{
  show:function(v,w){
   if(tt == null){
    tt = document.createElement('div');
    tt.setAttribute('id',id);
    t = document.createElement('div');
    t.setAttribute('id',id + 'top');
    c = document.createElement('div');
    c.setAttribute('id',id + 'cont');
    b = document.createElement('div');
    b.setAttribute('id',id + 'bot');
    tt.appendChild(t);
    tt.appendChild(c);
    tt.appendChild(b);
    document.body.appendChild(tt);
    tt.style.opacity = 0;
    tt.style.filter = 'alpha(opacity=0)';
    document.onmousemove = this.pos;
   }
   tt.style.display = 'block';
   c.innerHTML = v;
   tt.style.width = w ? w + 'px' : 'auto';
   if(!w && ie){
    t.style.display = 'none';
    b.style.display = 'none';
    tt.style.width = tt.offsetWidth;
    t.style.display = 'block';
    b.style.display = 'block';
   }
  if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
  h = parseInt(tt.offsetHeight) + top;
  clearInterval(tt.timer);
  tt.timer = setInterval(function(){tooltip.fade(1)},timer);
  },
  pos:function(e){
   var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
   var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
   tt.style.top = (u - h) + 'px';
   tt.style.left = (l + left) + 'px';
  },
  fade:function(d){
   var a = alpha;
   if((a != endalpha && d == 1) || (a != 0 && d == -1)){
    var i = speed;
   if(endalpha - a < speed && d == 1){
    i = endalpha - a;
   }else if(alpha < speed && d == -1){
     i = a;
   }
   alpha = a + (i * d);
   tt.style.opacity = alpha * .01;
   tt.style.filter = 'alpha(opacity=' + alpha + ')';
  }else{
    clearInterval(tt.timer);
     if(d == -1){tt.style.display = 'none'}
  }
 },
 hide:function(){
  clearInterval(tt.timer);
   tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
  }
 };
}();


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

function tReadCookie(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;
}

function tEraseCookie(name) {
	tCreateCookie(name,"",-1);
}

// -------------------------- backpack functionality begins here
window.onload = function() {
  bpUpdatePage();
}
var bpSchools = new Array();
var maxSchools = 5;
var bpCount = 0;


function setBpCount() {
  var count = 0;
  for(var i = 0; i < maxSchools; ++i) {
    if(tReadCookie('sname' + i) != null) {
      ++count;
    }
  }
  bpCount = count;
}

function updatePack() {
  var backpackList = document.getElementById('backpackList');
  if(backpackList != null) {
    backpackList.innerHTML = '';
    var count = 0;
    for(var i = 0; i < maxSchools; ++i) {
      if(tReadCookie('sname' + i) != null) {
        backpackList.innerHTML += '<li>' + tReadCookie('sname' + i) +' [<a href="javascript:void(0)" onclick="removeFromPack(\'' + tAddSlashes(tReadCookie('sname' + i)) + '\', '+ tReadCookie('sid' + i)+ ')">x</a>]</li>';
        ++count;
      }
    }
    if(count == 0) backpackList.innerHTML += '<li>There are no schools in your compare list.</li>';
    bpCount = count;
  
    var bpAddMore = document.getElementById('bpAddMore');
    var bpCompareNow = document.getElementById('bpCompareNow');
    if(bpCount < 2) {
      if(bpAddMore != null) bpAddMore.style.display = 'inline';
      if(bpCompareNow != null) bpCompareNow.style.display = 'none';
    } else {
      if(bpAddMore != null) bpAddMore.style.display = 'none';
      if(bpCompareNow != null) bpCompareNow.style.display = 'block';
    }
  }
  
  setBpCount();
}

function updatePackLink(id, added) {
  var updateLink = document.getElementById('packAddLink' + id);
  var addedText = document.getElementById('inPack' + id);
  var removeText = document.getElementById('removePack' + id);
  if(updateLink != null) {
    if(added) {
      updateLink.style.display = 'none';
      addedText.style.display = 'block';
      removeText.style.display = 'block';
    } else {
      updateLink.style.display = 'block';
      removeText.style.display = 'none';
      addedText.style.display = 'none';
    }
  }
}

function updatePackLinks() {

  for(var i = 0; i < maxSchools; ++i) {
    var id = tReadCookie('sid'+i);
    if(id != null) {
      updatePackLink(id, true);
    }
  }

}

function addToPack(school, id) {
  var exists = false;
  var success = false;

  // first check to see if this school is there already
  for(var i = 0; i < maxSchools; ++i) {
    if(tReadCookie('sname' + i) == school) {
      exists = true;
      success = true;
    }
  }  

  if (!exists) {
    for(var i = 0; i < maxSchools; ++i) {
      if(tReadCookie('sname' + i) == null) {
        tCreateCookie('sname' + i, school, 120);
        tCreateCookie('sid' + i, id, 120);
        success = true; 
        updatePackLink(id, true)
        break;
      }
    }
  }
    
  if(exists) alert('You already have '+school+' in your compare list.');
  if(!success) alert('You can only have '+maxSchools+ ' in your compare list.  You must remove one before adding another.');
  else updatePack();
}

function removeFromPack(school, id) {
  for(var i = 0; i < maxSchools; ++i) {
    if(tReadCookie('sname' + i) == school) {
      tEraseCookie('sname' + i);
      tEraseCookie('sid' + i);
      updatePackLink(id, false)
    }
  }
  updatePack();
}

function compareClicked() {
  if(bpCount < 2) alert('You must first add 2 or more schools to your compare list.');
  if(bpCount >= 2) {
    setTimeout(function() {
      window.location.href = 'http://www.getdegrees.com/compare-schools/';
    },0);
  }
}

function bpUpdatePage() {
  setBpCount();
  updatePack();
  updatePackLinks();
}