/* Quicklinks Script for Virginia Tech *//* ----- GLOBAL VARIABLES ------ */// MAX_QL_ITEMS: maximum number of items that can be stored in quicklinks//   Note: the maximum size a cookie is 4KB var MAX_QL_ITEMS = '30';// COOKIE_DOMAIN: Host/ Domain for which the cookie appliesvar COOKIE_DOMAIN = "vt.edu";// QL_ID: ID of the list (UL) that will contain the quicklinksvar QL_ID = "vt_ql_list";// QL_COOKIE_NAME: Name of the cookie that will be storedvar QL_COOKIE_NAME = "vt_quick_links";// names of Default and all items (used as a selector to determine//    what array to use in function createQL() )var QL_DEFAULT_NAME = "default_ql";var QL_ALL_NAME = "all_ql";// name of the Customize Quicklinks labelvar CUSTOMIZE_NAME = "Customize Quicklinks";// URL to the Quicklinks customize page// Set to '' if you don't want to automatically add it to QL_IDvar CUSTOMIZE_URL = "http://www.vt.edu/customize_quicklinks.php";// default_ql and az_index are predefined 2d arrays with a list of urls and titles// this checks to see if it exists, else sets the global var to be blank if it doesn't// az_index is defined in quicklinks_customize.jsif (typeof(qldefaults)!="undefined"){	var QL_DEFAULT = qldefaults;}else{	var QL_DEFAULT = '';}// ----- END GLOBAL VARIABLE DEFINITIONS -----addLoadEvent(checkQLCookie);// will check to see if a quicklink cookie exists, if not will load defaultsfunction checkQLCookie(){	var quicklinks=readCookie(QL_COOKIE_NAME);	if (quicklinks!=null && quicklinks!="")		{loadQLCookie();}	else 		{createQL();}}function createQL(){	qlItemArray = QL_DEFAULT;	if (qlItemArray.length > (MAX_QL_ITEMS)){		alert("You are only allowed to have " + MAX_QL_ITEMS + " in your quicklinks");	}else{		// Don't set a cookie unless they specifically save it, hence next line is commented out		// setQLCookie(qlItemArray);		if(document.getElementById(QL_ID)){createQLList(qlItemArray, QL_ID);}	}}// Given a string and preset format (currently only cookie)//   will break that string appropriately and return an arrayfunction createItemArrayFromStr(docStr, format){	if (format == "cookie"){	  // unescape cookie before splitting it		var splitStr = (unescape(docStr)).split("<i>");		var numItems = (splitStr.length-1)/2;		var qlItems = new Array(numItems);		for (i = 0; i<numItems; i++){			qlItems[i] = new Array(2);			// Need offset by one b/c first element in split is empty			qlItems[i][0]=splitStr[(i*2)+1];			qlItems[i][1]=splitStr[(i*2)+2];		}		return qlItems;	}else{		alert("unrecognized format");	}}function loadQLCookie(){	var qlCookie = readCookie(QL_COOKIE_NAME);	var qlItems = createItemArrayFromStr(qlCookie, "cookie");	createQLList(qlItems, QL_ID);}function setQLCookie(qlItemArray){	var cookieStr = '';	for (i = 0; i <qlItemArray.length; i++)	{		//escape before placing it into the cookie (addresses safari error)		cookieStr += '<i>'				+ escape(qlItemArray[i][0])				+ '<i>'				+ escape(qlItemArray[i][1]);	}	createCookie(QL_COOKIE_NAME, cookieStr, 60);}// Given an array of items and a ul id, will add lis of the item to the ul // qlItemArray is a 2d array of a title and URLfunction createQLList(qlItemArray, elementId){// element must exist before we do anything to it  if (document.getElementById(elementId)){		var qlList = document.getElementById(elementId);		// clear out anything that may already be there.		qlList.innerHTML = '';		var newNode, newItem;		for (i = 0; i < qlItemArray.length; i++){					newNode = document.createElement("li"); 					newItem = '<a href="'					+ qlItemArray[i][1]					+ '">'					+ qlItemArray[i][0]					+ '</a>';					newNode.innerHTML = newItem;					qlList.appendChild(newNode);		}		// append the customize name & link to the end of QL_ID		if (elementId == QL_ID && CUSTOMIZE_URL != '' && CUSTOMIZE_NAME != ''){					newNode = document.createElement("li"); 					newItem = '<a href="'					+ CUSTOMIZE_URL					+ '">'					+ CUSTOMIZE_NAME					+ '</a>';					newNode.innerHTML = newItem;					qlList.appendChild(newNode);		}	}}/* -------------------------Generic Cookie Functions -------------------------*/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 var expires = "";	document.cookie = name+"="+value+expires+"; path=/; domain="+COOKIE_DOMAIN;}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;}function eraseCookie(name) {	createCookie(name,"",(-1));}// ----- END Generic Cookie Functions -----function addLoadEvent(func) {	var oldOnLoad = window.onload	if (typeof window.onload != 'function') 	{		window.onload = func;	}	else {		window.onload = function() {			oldOnLoad();			func();		}	}}// ------ END DomReady Code -----