//
//	Configuration
//
var inputID = "q";//id of input box
var submitID = "submitBtn" //id of button to submit form
var defaultText = "enter search terms...";
var expanding = false;

//---------------------------------------------------------------------------------------------


var searchlight = Class.create();

searchlight.prototype = {
	
	initialize: function(){
		if (!document.getElementsByTagName){ return; }
		var searchBox = document.getElementById(inputID);
		searchBox.value = defaultText;
		searchBox.onfocus =function(){ mySearchLight.focusHandler(this)};
		searchBox.onblur =function(){ mySearchLight.blurHandler(this)};
	}, 
	focusHandler: function(obj){
		if(obj.value == defaultText){
			obj.value = "";
		}
	},
	blurHandler: function(obj){
		if(obj.value == "" || obj.value.length < 1){
			obj.value = defaultText;
		}
	}
	
};


//---------------------------------------------------------------------------------------------

// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func){	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}
}
function expandDiv(element){
	elementID = element.id
	if (!expanding){
		expanding = true;
		//check if its expanded
		var height = Element.getHeight(element);
		if(height < 30){//Expand it
			//change class of a		
			//find height of child div
			for( var x = 0; element.childNodes[x]; x++ ){
				if( element.childNodes[x].tagName == 'A' ) { 
					Element.addClassName(element.childNodes[x], 'active');
				}
				if( element.childNodes[x].tagName == 'DIV' ) { 
					var innerHeight = Element.getHeight(element.childNodes[x]);
				}
			}
			//change height of element
			var myEffect = new fx.Height(elementID , {duration: 500, onComplete: function(){
				expanding = false;
				}
			});
			myEffect.custom(26, (innerHeight + 46));
		}else{//Collapse it
			for( var x = 0; element.childNodes[x]; x++ ){
				if( element.childNodes[x].tagName == 'A' ) { 
					Element.removeClassName(element.childNodes[x], 'active');
				}
			}
			var myEffect = new fx.Height(elementID , {duration: 500, opacity: true, onComplete: function(){
				expanding = false;
				}
			});
			myEffect.custom(height, 26);
		}
	}
}


//ADD BREADCRUMB NAVIGATION
function breadcrumbs(){
  sURL = new String;
  bits = new Object;
  var x = 0;
  var stop = 0;
  var output = "<a href=\"/\">Home</a> &nbsp;>&nbsp; ";
  sURL = location.href;
  sURL = sURL.slice(8,sURL.length);
  chunkStart = sURL.indexOf("/");
  sURL = sURL.slice(chunkStart+1,sURL.length)
  while(!stop){
    chunkStart = sURL.indexOf("/");
    if (chunkStart != -1){
      bits[x] = sURL.slice(0,chunkStart)
      sURL = sURL.slice(chunkStart+1,sURL.length);
    }else{
      stop = 1;
    }
    x++;
  }
  for(var i in bits){
    output += "<a href=\"";
    for(y=1;y<x-i;y++){
      output += "../";
    }
    output += bits[i] + "/\">" + bits[i] + "</a> &nbsp;>&nbsp; ";
  }
  if($("breadCrumbs")){ 
 	 $("breadCrumbs").innerHTML = (output);
  }
}

/* DOCK CODE */




DockMark = {

	getMyDock: function(){
		var myDockItems = Cookie.read('cliDock');
		if(myDockItems){
			readDockHash = unescape(myDockItems);
			DockMark.addFullMarkup(readDockHash);
		}else{
			readDockHash = 'undefined';
		}
	},
	
	addPage: function(){
		if(readDockHash.indexOf(location.href) < 0){//make sure its not already added
			var title = document.title;
			var output = location.href + "|" + title;
			fullDockHash = (readDockHash != 'undefined') ? output + "," + readDockHash : output;
			Cookie.create('cliDock',fullDockHash, 1000);
			DockMark.getMyDock();
		}
	},
	
	addFullMarkup: function(dockHash){
		var items = dockHash.split(",");
		newMarkup = '';
		for(var i = 0; i < items.length; i++){
			tmpStr = items[i];
			el = tmpStr.split("|");
			newMarkup += DockMark.getanchor(el[0],el[1]);
		}
		$('dockItems').innerHTML = newMarkup;
	},
	
	getanchor: function(theLink, theTitle){
		return("<span onmouseover='javascript:DockMark.linkOver(this);'><a class='dockremovelink' title='remove from dock' onclick=javascript:DockMark.removeItem(this); href='javascript:void(0);'><img src='/images/bt_del.gif' /></a><a class='dockItem' href='"+theLink+"' title=\"" + theTitle + "\">"+ DockMark.formatTitle(theTitle) + "</a></span>")
	},
	
	formatTitle: function(title){
		if(title){
			maxChars = 30
			newTitle = title.replace("Children's Learning Institute - ",'');
			if(newTitle.length > maxChars){
				append = '...';
			}else{
				append = '';
			}
			newTitle = newTitle.substr(0,maxChars);
			newTitle += append;
			return(newTitle);
		}else{
			return('');
		}
	}, 
	
	linkOver: function(el){
		container = el
		Element.addClassName(container,'darkBg');
		delbtn = DockMark.findDeleteButton(container);
		container.onmouseout = DockMark.containerBlur;
		delbtn.style.display = "block";
	}, 
	
	findDockItemHash: function(container){
		ndList = container.childNodes;
		for(var i= 0 ;i < ndList.length; i++){
			if(ndList[i].className == "dockItem"){
				theLink = ndList[i];
			}
		}
		return(theLink.attributes.href.value + "|" + theLink.attributes.title.value);
	},
	
	findDeleteButton: function(container){
		ndList = container.childNodes;
		for(var i= 0 ;i < ndList.length; i++){
			if(ndList[i].className == "dockremovelink"){
				return(ndList[i]);
			}
		}
	},
	
	containerBlur: function(){
		container = this;
		delbtn = DockMark.findDeleteButton(container);
		delbtn.style.display = 'none';
		Element.removeClassName(container,'darkBg');
	}, 
	
	removeItem: function(el){
		if(confirm("Are you sure you want to delete this link?")){
			container = el.parentNode;
			removeHash = DockMark.findDockItemHash(container);
			saveHash = readDockHash.replace(removeHash,'');
			saveHash = saveHash.replace(',,',',');
			if(saveHash[0] == ",") saveHash = saveHash.substr(1,saveHash.length);
			Cookie.create('cliDock',saveHash, 1000);
			DockMark.getMyDock();
		}
	}
}

Cookie = {
	create: function(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=/";
	},
	
	read: function(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;
	},
	
	erase: function(name) {
		create(name,"",-1);
	}
}



function addPageToDock(){
	DockMark.addPage();
}

/* end dock code */

// ---------------------------------------------------

function initUtils() { 
	mySearchLight  = new searchlight();
	breadcrumbs();
	DockMark.getMyDock();
	finit();//program selector
}

addLoadEvent(initUtils);	// run initSearch onLoad