/*
quicklinks.js
v 1.1
3/11/2003 9:30:42 AM
Need to add functionality to deliver/write cookie based on
VIEW_AS session cookie.

westr1
----------------------------------------------
Allows users to customize the quick links menu.
*/
// looks for and reads ql cookie on script load
var links_array = new Array();
var ql_cookie = document.cookie;
var links_str = "";
if (ql_cookie) {
	ql_cookie = unescape(ql_cookie);
	var ql_str = ql_cookie.indexOf("::qlstart=");
	if (ql_str == -1) {
	} else {
		links_start = ql_str + 10;
		links_end = ql_cookie.indexOf("::qlend::");
		links_length = links_end - links_start;
		links_str = ql_cookie.substr(links_start, links_length);
		if (links_str == "") { // Keep links_array empty for admin purposes
		} else {
			links_array = links_str.split(",,");
		}
		//window.alert(links_array.toString());
	} // end if cookie else
} else {
}

function writeql() { // Adds page params to cookie; called by link on any page.
var ql_ptitle = window.prompt("Enter a title, up to 20 characters, for this page.", document.title);
if (ql_ptitle) {
	if (ql_validate(ql_ptitle)) {
		cookiearray = new Array();
		if (links_array.length > 1) { // case n links
			// HERE IS WHERE WE'LL SORT THE LINKS ALPHABETICALLY
			var sorted = "n";
			i = 0;
			while(sorted == "n") {
				if (ql_ptitle < links_array[0].toString()) { // Case ptitle is first
					cookiearray[i] = ql_ptitle + "," + document.location.toString();
					cookiearray[i+1] = links_array[i];
					sorted = "y";
				} else if (ql_ptitle > links_array[links_array.length-1]) { // Case ptitle is last
					cookiearray = links_array.concat(ql_ptitle + "," + document.location.toString());
					sorted = "y";
				} else if (ql_ptitle > links_array[i].toString() && ql_ptitle < links_array[i+1].toString()) { // Case ptitle is middle
					cookiearray[i] = links_array[i];
					cookiearray[i+1] = ql_ptitle + "," + document.location.toString();
					sorted = "y";
				} else { // Keep looking
					cookiearray[i] = links_array[i];
					i++;
				}
			}
			for (i=cookiearray.length; i<links_array.length+1; i++) {
				cookiearray[i] = links_array[i-1];
			}
		} else if (links_array.length == 1) { // case 1 link
			// SORT ALPHABETICALLY
			if (ql_ptitle < links_array[0].toString()) {
				cookiearray[0] = ql_ptitle + "," + document.location.toString();
				cookiearray[1] = links_array[0];
			} else {
				cookiearray[0] = links_array[0];
				cookiearray[1] = ql_ptitle + "," + document.location.toString();
			}
		} else { // case no links
			cookiearray[0] = ql_ptitle + "," + document.location.toString();
		}
		var cookietowrite = "::qlstart=" + cookiearray.join(",,") + "::qlend::";
		//window.alert(cookietowrite);
		cookietowrite = escape(cookietowrite);
		var today = new Date();
		var datenum = today.getTime();
		var expdate = new Date();
		expdate.setTime(datenum + 31536000000); // expdate = +1 year
		var expdatestr = expdate.toGMTString();
		cookietowrite += ";EXPIRES=" + expdatestr + 
					";DOMAIN=" + document.location.hostname + 
					";PATH=/";
		document.cookie = cookietowrite;
		window.alert("Added '" + ql_ptitle + "' to QuickLinks.");
		document.location.reload(); // Reload script and cookie
	} else {
		window.alert("Did not add '" + ql_ptitle + "' to QuickLinks!");
	}
} else {
// do nothing if they hit 'cancel'
}
} // end function writeql

function writelinks() { // adds QLs to navform; called onload from a page w/ql menu
	if (links_array.length > 0) {
		newoption = new Option("", "x", false, false);
		document.navform.program.options[document.navform.program.length] = newoption;
		newoption = new Option(">> My QuickLinks", "x", false, false);
		document.navform.program.options[document.navform.program.length] = newoption;
		var linktext;
		var linkurl;
		var ql_array;
		for (i = 0; i < links_array.length; i++) {
			ql_array = links_array[i].split(",");
			linktext = ql_array[0];
			linkurl = ql_array[1];
			//window.alert("text=" + linktext + " url=" + linkurl);
			newoption = new Option(linktext, linkurl, false, false);
			document.navform.program.options[document.navform.program.length] = newoption;
		} // end for
		newoption = new Option("[ edit QuickLinks ]", "javascript:window.open\('/lfg/qlform.htm','','width=400,height=300,left=25,top=25,screenX=25,screenY=25,toolbar,status,menubar,resizable,scrollbars'\)\;document.location.reload\(\)", false, false);
		document.navform.program.options[document.navform.program.length] = newoption;
	} else {
	} // end if/else
} // end function writelinks

function ql_validate(wptext) { // validates QL input; called by function writeql
	var loc = document.location.toString();
	if (wptext.length > 20) {
		window.alert("The QuickLinks page title cannot be more than 20 characters.");
		return(false);
	}
	for (i=0; i<links_array.length; i++) {
		ql_array = links_array[i].split(",");
		if (links_array[i].indexOf(loc) != -1) {
			if (loc == ql_array[1]) {
				window.alert("This page has already been saved to your QuickLinks menu as " + 
				"'" + ql_array[0] + ".'");
				return(false);
			}
		}
		if (links_array[i].indexOf(wptext) != -1) {
			if (wptext == ql_array[0]) {
				window.alert("You already have a QuickLink named '" + wptext + 
				".' Please choose a unique name for this QuickLink.");
				return(false);
			}
		}
	}
	return(true);
} // end function ql_validate


// **************** QL ADMIN FUNCTIONS ****************************

function setlinkvalues() { // called on ql edit page
	if (links_array.length > 0) {
		for (i = 0; i < links_array.length; i++) {
			ql_array = links_array[i].split(",");
			linktext = ql_array[0];
			newoption = new Option(linktext, i, false, false);
			document.ql.qlselect.options[i] = newoption;
		}
	} else {
		//newoption = new Option("No QuickLinks Set", "x", false, false);
		//document.ql.qlselect.options[i] = newoption;
	}
} // end function setlinkvalues

function delete_ql() { // called by delete button on ql edit page
	if (document.ql.qlselect.selectedIndex != -1) {
		var ql_index = document.ql.qlselect.options[document.ql.qlselect.selectedIndex].value;
		var cookiearray = new Array();
		var cookieindex = 0;
		for (i=0; i<links_array.length; i++) {
			if (i == ql_index) {
			} else {
				cookiearray[cookieindex] = links_array[i];
				cookieindex++;
			}
		}
		var cookietowrite = "::qlstart=" + cookiearray.join(",,") + "::qlend::";
		cookietowrite = escape(cookietowrite);
		var today = new Date();
		var datenum = today.getTime();
		var expdate = new Date();
		expdate.setTime(datenum + 31536000000); // expdate = +1 year
		var expdatestr = expdate.toGMTString();
		cookietowrite += ";EXPIRES=" + expdatestr + 
					";DOMAIN=" + document.location.hostname + 
					";PATH=/";
		document.cookie = cookietowrite;
		document.location.reload(); // Reload script and cookie
		window.opener.location.reload(); // Load changes in nav menu page
	} else {
	}
} // end function delete_ql