//preload images
var image1=new Image();
image1.src="images/default/home.jpg";
var image2=new Image();
image2.src="images/default/members-on.jpg";
var image3=new Image();
image3.src="images/default/services-on.jpg";
var image4=new Image();
image4.src="images/default/support-on.jpg";
var image5=new Image();
image5.src="images/default/links-on.jpg";
var image6=new Image();
image6.src="images/default/sitemap-on.jpg";
var image7=new Image();
image7.src="images/default/contact1.jpg";
var image8=new Image();
image8.src="images/default/contact1.jpg";
var count_favorites = 2;

	var current_engine = "google";




function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

var foldout_timer;
var speed = 15;
var width_closed = 25;
var width_open = 187;
var delay = 5;
var expdate = new Date();
expdate.setTime(expdate.getTime() + (10 * 365 * 24 * 60 * 60 * 1000));
function toggle_foldout() {
	var f = document.getElementById("foldout");
	window.clearTimeout(foldout_timer);
	if(parseInt(f.style.width) > width_closed) {
		setCookie('foldout', 'closed', expdate, '', 'greatlakes.net', false);
		foldout_timer = window.setTimeout("fold_in('"+speed+"','"+width_closed+"')", delay);	
	} else {
		setCookie('foldout', 'open', expdate, '', 'greatlakes.net', false);
		document.getElementById("foldoutsign").style.display = "none";
		f.style.display = "block";
		foldout_timer = window.setTimeout("fold_out('"+speed+"','"+width_open+"')", delay);
	}
}

function fold_in(spd, wdth) {
	var f = document.getElementById("foldout");
	var c = document.getElementById("content");
	if(parseInt(f.style.width) <= wdth) {
		f.style.width = wdth+"px";
		window.clearTimeout(foldout_timer);
		f.style.display = "none";
		document.getElementById("foldoutsign").style.display = "block";
	} else {
		var newwidth = (parseInt(f.style.width) - spd);
		var newwidth2 = parseInt(c.style.width) - (-1* spd);
		f.style.width = newwidth + "px";
		c.style.width = newwidth2 + "px";
		foldout_timer = window.setTimeout("fold_in('"+spd+"','"+wdth+"')", delay);
	}
}

function fold_out(spd, wdth) {
	var f = document.getElementById("foldout");
	var c = document.getElementById("content");
	if(parseInt(f.style.width) >= wdth) {
		f.style.width = wdth+"px";
		window.clearTimeout(foldout_timer);
	} else {
		var newwidth = parseInt(f.style.width) - (-1* spd);
		var newwidth2 = parseInt(c.style.width) - spd;
		f.style.width = newwidth + "px";
		c.style.width = newwidth2 + "px";
		foldout_timer = window.setTimeout("fold_out('"+spd+"','"+wdth+"')", delay);
	}
}

function toggle_rollup(rol) {
	var content = document.getElementById(rol);
	var sign = document.getElementById(rol+'-sign');
	var expdate = new Date();
	expdate.setTime(expdate.getTime() + (10 * 365 * 24 * 60 * 60 * 1000));
	if(content.style.display == 'none') {
		content.style.display='inline';
		sign.innerHTML='-';
		setCookie(rol, 'open', expdate, '', 'greatlakes.net', false);
	} else {
		sign.innerHTML='+'; 
		content.style.display='none';
		setCookie(rol, 'closed', expdate, '', 'greatlakes.net', false);
	}
}

function updateFavorites() {
	var nf = document.getElementById("num_favs");
	var val = parseInt(nf.innerHTML);
	for(var i = 0; i < count_favorites; i++) {
		var fav = document.getElementById("fav"+i);
		if(i >= val) {
			fav.style.display = "none";
		} else {
			fav.style.display = "inline";
		}
	}
}

if( document.captureEvents ) {
    //non IE
    if( Event.MOUSEMOVE ) {
        //NS 4, NS 6+, Mozilla 0.9+
        document.captureEvents( Event.MOUSEMOVE );
    }
    if( Event.MOUSEDOWN ) {
        //NS 4, NS 6+, Mozilla 0.9+
        document.captureEvents( Event.MOUSEDOWN );
    }
    if( Event.MOUSEUP ) {
        //NS 4, NS 6+, Mozilla 0.9+
        document.captureEvents( Event.MOUSEUP );
    }
    if( Event.SELECTSTART ) {
        //NS 4, NS 6+, Mozilla 0.9+
        document.captureEvents( Event.SELECTSTART );
    }
}
/* this next line tells the browser to detect a keyup
event over the whole document and when it detects it,
it should run the event handler function 'alertkey' */
var mousex = 0;
var mousey = 0;
var omx = 0;
var omy = 0;
var sx = 0;
var sy = 0;
var opentip = "";
var ie_obj = "";
var drag_obj = "";
var drop_obj = "";
var orig_obj = "";
var obj_width = 0;
var select = true;
var mouse_direction = "";
document.onmousemove = update_mouse;
document.onmousedown = mouse_down;
document.onmouseup = mouse_up;
document.onselectstart = select_start;

function select_start(event) {
	event = event || window.event;
	var root = document.documentElement || document.body;
	if(!select) {
		return false;
	}
	return true;
}

function update_mouse(event) {
	event = event || window.event;
	var root = document.documentElement || document.body;
	var x = event.clientX;
	var y = event.clientY;
	mousex = x + root.scrollLeft + 20;
	mousey = y + root.scrollTop;
	if(opentip != "") {
		opentip.style.left = mousex + "px";
		opentip.style.top = mousey + "px";
	}
	if(drag_obj != "" && !drop_obj) {
		var dmx = omx - mousex; // Find difference in mouse x from grab
		var dmy = omy - mousey; // Find difference in mouse y from grab
		var newx = sx - dmx;
		var newy = sy - dmy;
		if(dmy > 0) {
			mouse_direction = "down";
		} else {
			mouse_direction = "up";
		}
		var w = drag_obj.offsetWidth;
		var h = drag_obj.offsetHeight;
		if(newx < 0) { newx = 0; }
		if(newy < 0) { newy = 0; }
		var bw = document.documentElement.offsetWidth;
		var bh = document.documentElement.offsetHeight;
		if((newx+w) > bw) { newx = bw-w-5; }
		if((newy+h) > bh) { newy = bh-h-5; }
		drag_obj.setAttribute('style', 'left: '+newx+'px; top: '+newy+'px;');
		drag_obj.style.left = newx + "px";
		drag_obj.style.top = newy + "px";
		repositionElements(event, root);
	}
}

function findPosition( obj ) {
	if(obj && obj != 0) {
		if( obj.offsetParent ) {
			for( var posX = 0, posY = 0; obj.offsetParent; obj = obj.offsetParent ) {
				posX += obj.offsetLeft;
				posY += obj.offsetTop;
			}
			return [ posX, posY ];
		} else {
			return [ obj.x, obj.y ];
		}
	}
	return [ 0, 0 ];
}

function repositionElements(event, root) {
	var nx = parseInt(drag_obj.style.left);
	var ny = parseInt(drag_obj.style.top);
	var orig = document.getElementById(orig_obj);
	var opos = findPosition(orig);
	var ox = opos[0];
	var oy = opos[1];
	var rollouts = new Array();
	var l = document.getElementById('left');
	var l_elems = l.getElementsByTagName('div');
	var rollout_reg = /.*_rollup$/i;
	for(var i = 0; i < l_elems.length; i++) {
		var this_elem = l_elems.item(i);
		var id = this_elem.getAttribute('id');
		if(rollout_reg.test(id)) {
			rollouts.push(this_elem);
		}
	}
	
//alert(rollouts.length);
	// We now have an array of rollout elements
	for(var i = 0; i < rollouts.length; i++) {
		// Find the position of the current element
		var e = rollouts[i];
		var pos = findPosition(e);
		var ex = pos[0];
		var ey = pos[1];
		// Find width/height
		var ew = e.offsetWidth || parseInt(e.style.width);
		var eh = e.offsetHeight || parseInt(e.style.height);

		// Check to see if we are more than half way in its bounding box
		if(oy > ey) {
			// If the original y is > than the element y that we are working with,
			// we would need to move it up to reposition the element.
			if(ny < (ey + eh - (eh/3)) && mouse_direction == "down") {
				// If we have moved it up more than half the height of the
				// current element, we can swap them.
				swapElements(orig, e);
				i = rollouts.length;
			}
		} else {
			if(oy < ey) {
				// If the original y is < than the element y that we are working with,
				// we would need to move down to reposition the element.
				if(ny > (ey + (eh/3)) && mouse_direction  == "up" ) {
					// If we have moved it down mor than half the height of the current
					// element, we can swap them.
					swapElements(orig, e);
					i = rollouts.length;
				}
			}
		}
	}

}

function swapElements(o, e) {
	// Start by removing the old object from its parent
	var opos = findPosition(o);
	var epos = findPosition(e);
	var parent = o.parentNode || document.getElementById('left');
	// Insert a new one before the other element
	if(opos[1] > epos[1]) {
		var n = o.cloneNode(true);
		parent.insertBefore(n, e);
		parent.removeChild(o);
		var c = n;
	} else {
		var n = e.cloneNode(true);
		parent.insertBefore(n, o);
		parent.removeChild(e);
		var c = o;
	}

	// Set the start x and y to the x and y of the element after swapping
	// them
	var npos = findPosition(c);
	sx = npos[0];
	sy = npos[1];

	// Update our original mouse x and y positions so we don't jump up and
	// down on the screen on next mouse movement
	var dsx = Math.abs(opos[0] - sx);
	var dsy = Math.abs(opos[1] - sy);
	if(opos[1] > epos[1]) {
		omx = omx - dsx;
		omy = omy - dsy;
	} else {
		omx = omx + dsx;
		omy = omy + dsy;
	}

	// This is where we update the cookie reflecting the new order
	var order = "";
	var children = parent.getElementsByTagName('div');
	var regexp = /.*_rollup$/i;
	for(var i = 0; i < children.length; i++) {
		var cnode = children.item(i);
		if(cnode) {
			var cid = cnode.getAttribute('id');
			if(regexp.test(cid)) {
				// This item is a rollup
				order = order + cid + ";";
			}
		}
	}
	// Now we have the order of the rollups
	setCookie('rollup_order', order, expdate, '', 'greatlakes.net', false);
}

function mouse_down(event) {
	if(opentip) {
		opentip.style.display = "none";
		opentip = "";
	}
	if(drag_obj) {
		select = false;
	}
	if(!select) {
		return false;
	}
}
function mouse_up(event) {
	if(drag_obj) {
		finish_drag(orig_obj);
	}
	select = true;
}

function toggle_help(hlp) {
	var hlptxt = document.getElementById(hlp);
	if(hlptxt.style.display == "none" || !hlptxt.style.display) {
		opentip = hlptxt;
		hlptxt.style.position = "absolute";
		hlptxt.style.left = mousex + "px";
		hlptxt.style.top = mousey + "px";
		hlptxt.style.display = "inline";
	} else {
		opentip = "";
		hlptxt.style.display = "none";
	}
}

function display_search() {
	var cengine = false;
	var sterm = false;
	var sinput = false;
	var engine = false;
	var eng = false;
	if(current_engine) {
		cengine = document.getElementById(current_engine);
	}
	engine = document.getElementById("search_engine");
	eng = engine.value;
	engine = document.getElementById(eng);
	if(cengine) {
		cengine.style.display = "none";
		sterm = document.getElementById(current_engine + "_input");
		sinput = eng + "_input";
		sinput = document.getElementById(sinput);
		sinput.value = sterm.value;
	}
	engine.style.display = "inline";
	current_engine = eng;
	setCookie('search_engine', eng, expdate, '', 'greatlakes.net', false);
}

function start_drag(elem) {
	var e = document.getElementById(elem);
	var l = document.getElementById('left');
	if(!drag_obj) {
		orig_obj = elem;
		drag_obj = document.createElement('div');
		var divIdName = elem+'_copy';
		obj_width = parseInt(e.offsetWidth);
		var pos = findPosition(e);
		sx = pos[0] - 5;
		sy = pos[1] - 5;
		omx = mousex;  // Set the original mouse x position on grab
		omy = mousey;  // Set the original mouse y position on grab
		if(document.all) {
			// IE is broken. It doesn't support setAttribute properly
			drag_obj.innerHTML = "\
				<div id='"+divIdName+"' class='rollup_copy' style='left: "+sx+"px; top: "+sy+"px; position: absolute;'>\
				"+e.innerHTML+"\
				</div>";
		} else {
			drag_obj.setAttribute('id', divIdName);
			drag_obj.setAttribute('class', 'rollup_copy');
			drag_obj.setAttribute('style', 'left: '+sx+'px; top: '+sy+'px; position: absolute;');
			drag_obj.innerHTML = e.innerHTML;
		}
		drag_obj.style.left = sx + "px";
		drag_obj.style.top = sy + "px";
		l.appendChild(drag_obj);
		orig_obj = elem;
		if(document.all) {
			ie_obj = drag_obj;
			drag_obj = document.getElementById(divIdName);
		}
	}
	return false;
}

var step = 15;
var xstep = step;
var ystep = step;
var obj_timer = 0;
function finish_drag(elem) {
	drop_obj = true;
	var ny = drag_obj.offsetTop || parseInt(drag_obj.style.top);
	var nx = drag_obj.offsetLeft || parseInt(drag_obj.style.left);
	var dx = Math.abs(nx - sx);
	var dy = Math.abs(ny - sy);
	xstep = step;
	ystep = (dy/dx)*step;
	if(ystep > step) { ystep = step; }
	obj_timer = window.setTimeout("move_obj('"+elem+"')", delay);
}

function move_obj(elem) {
	var e = document.getElementById(elem);
	var l = document.getElementById('left');
	if(drag_obj) {
		var c = drag_obj;
		var el = e.pixelLeft;
		var et = e.pixelTop;
		var eh = e.offsetHeight;
		var ew = e.offsetWidth;
		var cl = parseInt(c.style.left);
		var ct = parseInt(c.style.top);
		var ch = c.offsetHeight;
		var cw = c.offsetWidth;
		if(Math.abs(cl - sx) < Math.abs(step) && Math.abs(ct - sy) < Math.abs(step)) {
			// We are back where we are supposed to be
			orig_obj = false;
			drag_obj = false;
			drop_obj = false;
			if(document.all) {
				l.removeChild(ie_obj);
			} else {
				l.removeChild(c);
			}
			window.clearTimeout(obj_timer);
		} else {
			// We need to move it
			if(Math.abs(cl - sx) > Math.abs(step)) {
				if(cl > sx) {
					var newx = cl - xstep;
				} else {
					var newx = cl + xstep;
				}
				var newpos = newx.toString() + "px";
				c.style.left = newpos;
			} else {
				c.style.left = sx + "px";
			}
			if(Math.abs(ct - sy) > Math.abs(step)) {
				if(ct > sy) {
					var newy = ct - ystep;
				} else {
					var newy = ct + ystep;
				}
				var newpos = newy + "px";
				c.style.top = newpos;
			} else {
				c.style.top = sy + "px";
			}
			obj_timer = window.setTimeout("move_obj('"+elem+"')", delay);
		}
	}
}

function calcHeight(elem) {
  //find the height of the internal page
	var e = document.getElementById(elem);
  var height = e.contentWindow.document.documentElement.scrollHeight;

  //change the height of the iframe
  e.height = height;
}

// ==========================
// (C) 2000 by CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this  header

// blink speed in miliseconds
var rate = 500;

// the three blink colors
var Color1 = "#FF0000"
var Color2 = "#FF0000"
var Color3 = "#0000FF"

// the color if/when turned off (no-blink color)
var ColorX = "#0000FF"

// set this to true for auto start; else, false
var DoIt = true

// do not edit below this line
// ---------------------------

bV  = parseInt(navigator.appVersion)
bNS = navigator.appName=="Netscape"
bIE = navigator.appName=="Microsoft Internet Explorer"
ok = false

var i=0;
function doTriStateRainbowLink(){
	ok =  true
	if ((bNS && bV >= 5) || (bIE && bV >= 4)){
		i++;
		if (i==1) C = Color1
		if (i==2) C = Color2
		if (i==3) C = Color3  
		if (!DoIt) C = ColorX       
		if (bIE) BlinkLink.style.color=C
		if (bNS) document.getElementById('BlinkLink').style.color = C
		if (i > 2) i = 0
		if (DoIt) timer=setTimeout('doTriStateRainbowLink()', rate)
	}      
}

function doOnOff(a){
	if (ok){
		if (a =="off") {DoIt = false}
		if ((a =="on")&&(!DoIt)) {
			DoIt = true
			doTriStateRainbowLink()
		}
	}
}

