// hide any DOM element by ID name
function hide(element) 
{
	try
	{
		document.getElementById(element).style.display='none';
	}
	catch(ex)
	{
		alert("could not hide '" + element + "'");
	}
}

// show (un-hide) any DOM element by ID name
function show(element) 
{
	document.getElementById(element).style.display='';
}

//function show_layover(l_type, calling_object, expand_to_side, l_title,l_image, l_sub_title, l_text, l_extras) 
function showLoginLayover(l_type, calling_object, expand_to_side, l_title, l_image, l_sub_title, l_text, l_extras) 
{

	// add an 'onmouseout' event to the calling object (usually an anchor tag)
	// onmouseout, hide the layover
	// this will overwrite any existing onmouseout functionality for the calling object (possibly a problem with .net)
	//calling_object.onmouseout = function () { hide('loginLayover'); } 
	
	// l_ represents layover - should help prevent name collision
	
	// make sure that the layover is hidden
	hide('loginLayover');
	// get the position of the calling object (the anchor tag)
	object_position = find_position(calling_object);	
	
	
	// reposition the layover
	if (expand_to_side == "right") 
	{
		// left -- left edge of calling_object, plus the width of the calling object
		// top -- top of calling_object, minus a number to roughly position the 'point' in the correct position
		document.getElementById('loginLayover').style.left = object_position[0] + calling_object.offsetWidth + 5 + 'px';
		document.getElementById('loginLayover').style.top = object_position[1] - 65 + 'px';	

		// hide the right pointer, show the left
		hide('loginLayover_pointer_right');
		show('loginLayover_pointer_left');
	} 
	
	else if (expand_to_side == "left")
	{
		document.getElementById('loginLayover').style.left = object_position[0] - 330 + 'px';
		document.getElementById('loginLayover').style.top = object_position[1] - 65 + 'px';	

		// hide the left pointer, show the right
		hide('loginLayover_pointer_left');
		show('loginLayover_pointer_right');
	}
	
	else
	{
		document.getElementById('loginLayover').style.left = (GetWidth()/2) - 220 + 'px';
		document.getElementById('loginLayover').style.top = 65 + 'px';	
		document.getElementById('pageMask').style.display = 'block';

		hide('loginLayover_pointer_left');
		hide('loginLayover_pointer_right');
		show('loginLayover_welcome');
	}
		
	// update the content of the window
	document.getElementById('loginLayover_title_text').innerHTML = l_title;
	//document.getElementById('loginLayover_image').src=l_image;
	document.getElementById('loginLayover_sub_title').innerHTML = l_sub_title;
	document.getElementById('loginLayover_text').innerHTML = eval("\"" + l_text + "\"");
	document.getElementById('loginLayover_extras').innerHTML = l_extras;
	
	// what type of layover is this?
	/*
		1 - directory => title, address, image on right w border, copy, optional extras in footer
		2 - destination => title, empty, image on left no border, copy, empty
		3 - maps and guides => title, empty, image on right w border, copy, empty
		4 - welcome center => title, address, image on left no border, copy, empty
		5 - simple (subscriptions => title, empty, empty, copy, empty
		6 - snow report => title, location, image with border on right, copy, icons
		999 - page preview ==> page url, large image
	*/
	
	switch(l_type) 
	{
		case 1:
			//document.getElementById('loginLayover_image_container').className = 'dir'
			//document.getElementById('loginLayover_image').className = 'dir'; // border and positioning
			document.getElementById('loginLayover_sub_title').className = 'bold'; // address is bold
			break;
		case 2:
			//document.getElementById('loginLayover_image').className = 'dest'; // border and positioning
			//document.getElementById('loginLayover_text').className = 'first_line'; // first line is bold
			//document.getElementById('loginLayover_text').style.marginLeft = '65px';
			
			//document.getElementById('loginLayover_image_container').className = 'float_left';
			document.getElementById('loginLayover_text').className = 'first_line float_right';
			document.getElementById('loginLayover_text').style.width = '215px';			
			
			hide('loginLayover_sub_title');
			hide('loginLayover_extras');
			break;
		case 3:
			//document.getElementById('loginLayover_image_container').className = 'mg float_right';
			//document.getElementById('loginLayover_image').className = 'mg'; // border and positioning
			//document.getElementById('loginLayover_image').style.border = '4px solid #999999'; // ie6 is great!
			hide('loginLayover_sub_title');
			hide('loginLayover_extras');
			break;
		case 4:
			//document.getElementById('loginLayover_image').className = 'dest'; // border and positioning
			//document.getElementById('loginLayover_image_container').className = 'dest float_left';
			document.getElementById('loginLayover_sub_title').className = 'float_right first_line'; // first line of address is bold
			document.getElementById('loginLayover_sub_title').style.height = '40px'; // clear the image - make room for the description
			document.getElementById('loginLayover_sub_title').style.width = '210px';
			document.getElementById('loginLayover_text').style.clear = 'both';
			//hide('loginLayover_extras');
			//document.getElementById('loginLayover_text').style.clear = 'left';
			document.getElementById('loginLayover_text').innerHTML = '<strong>Description</strong><br /> ' + l_text; // prepend
			break;
		case 5:
			hide('loginLayover_sub_title');
			hide('loginLayover_image');
			hide('loginLayover_extras');
			document.getElementById('loginLayover_body').style.paddingBottom = '1px'; // tighten up the bottom
			break;
		case 6:
			//document.getElementById('loginLayover_image_container').className = 'dir' // image on the right
			//document.getElementById('loginLayover_image').className = 'dir'; // border
			document.getElementById('loginLayover_sub_title').className = 'bold inline ie6'; // address is bold
			break;
		case 999:		
			// strip off the http:// ....com/ portion of the name
			l_position = l_title.indexOf('.com');
			document.getElementById('loginLayover_title_text').innerHTML = l_title.substring(l_position + 4);
			hide('loginLayover_sub_title');
			hide('loginLayover_text');
			hide('loginLayover_extras');

			// brief time delay
			//time_delay(500);
			break;
	}
	
	// display the layover
	show('loginLayover');
}

// from http://www.quirksmode.org/js/findpos.html#
function find_position(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

// this is used on pages with search filtering that can expand/collapse
function toggle_filter_display(element, calling_item) 
{
	if (document.getElementById(element).style.display == 'none') 
	{
		document.getElementById(element).style.display = '';
		calling_item.className = 'form_label_open';
	}
	else
	{
		document.getElementById(element).style.display = 'none';
		calling_item.className = 'form_label_closed';
	}
}

// makes text search fields nice to use
function smart_clear(element) 
{
	if (element.defaultValue == element.value) 
	{
		element.value = '';
	}
}

function smart_restore(element) 
{
	if (element.value == '') 
	{
		element.value = element.defaultValue;
	}
}

// popup window function 
function popUp(URL) 
{
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=465,height=450,left = 346,top = 135');");
	return false;
}


// time delay borrowed from www.sean.co.uk
function time_delay(millis) 
{

	var the_date = new Date();
	var current_date = null;

	do 
	{
		current_date = new Date(); 
	}
	
	while(current_date-the_date < millis);
}

// find the height of the current browser window
// modified version - original from www.howtocreate.co.uk
function find_window_height() 
{
  	var myHeight = 0;
  	if( typeof( window.innerWidth ) == 'number' ) 
	{
    	//Non-IE
    	myHeight = window.innerHeight;
  	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
    	//IE 6+ in 'standards compliant mode'
    	myHeight = document.documentElement.clientHeight;
  	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
	{
    	//IE 4 compatible
    	myHeight = document.body.clientHeight;
  	}
  	return myHeight;
}

function GetWidth()
{
	var x = 0;
	if (self.innerHeight)
	{
		x = self.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		x = document.documentElement.clientWidth;
	}
	else if (document.body)
	{
		x = document.body.clientWidth;
	}
	return x;
}


