//// Onload Events

var onload_events = new Array();

function set_onload(f)
{
	var i = onload_events.length;
	onload_events[i] = f;
}

function do_onload()
{
	if(onload_events.length == 0) return;

	for(var i=0; i<onload_events.length; i++)
	{
		eval(onload_events[i] + "()");
	}
}

onload=do_onload;

//// Return an Elements Position;

function find_pos(obj)
{
	var cur_left = cur_top = 0;

	if(obj.offsetParent)
	{
		cur_left = obj.offsetLeft;
		cur_top = obj.offsetTop;

		while (obj = obj.offsetParent)
		{
			cur_left += obj.offsetLeft;
			cur_top += obj.offsetTop;
		}
	}
	return [cur_left,cur_top];
}

//// Get A CSS Value

function get_style(el,el_css)
{
	var css_value = el.style[el_css];

	if(!css_value) // If it's not an inline style
	{
		if(el.currentStyle)
		{
			css_value = el.currentStyle[el_css];
		}
		else if(window.getComputedStyle)
		{
			css_value = document.defaultView.getComputedStyle(el,null).getPropertyValue(el_css);
		}
		else
		{
			css_value = null;
		}
	}

	return css_value;
}

///// Form Functions

function trim(s)
{
	return s.replace(/^\s+|\s+$/g, '');
}

function valid_email(ea)
{
	var email_reg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(email_reg);
	return regex.test(ea);
  }

function validate(f,el,captcha)
{
	var address = trim(document.getElementById(el).value);
	var valid = (valid_email(address)) ? 1 : 0;

	if(!valid)
	{
		alert("\"" + address + "\" is not a valid email address. A valid email address is required to submit this form.");
		f.focus();
		f[el].select();
		return false;
	}
	else return true;
}

///// Table Row Shading

function zebra_table()
{
	var t = document.getElementsByTagName("table");

	for(var i=0; i<t.length; i++)
	{
		if((t[i].className && t[i].className.indexOf("listing-table") > -1 || t[i].className && t[i].className.indexOf("option-table") > -1) &&  t[i].className && t[i].className.indexOf("no-zebra") < 0)
		{
			var r = t[i].rows;

			for(var j=0; j<r.length; j++)
			{
				if(r[j].className.indexOf("shade") > -1) r[j].className = r[j].className.replace("shade","");
				if(j%2 == 0) r[j].className+= " shade";
			}
		}
	}
}

set_onload("zebra_table");

///// Table Row Highlighting

function highlight_row()
{
	var t = document.getElementsByTagName("table");

	for(var i=0; i<t.length; i++)
	{
		if(t[i].className && t[i].className.indexOf("listing-table") > -1 || t[i].className && t[i].className.indexOf("border-table") > -1 || t[i].className && t[i].className.indexOf("grid-table") > -1)
		{
			var table = t[i];

			for(var j=0; j<table.rows.length; j++)
			{
				table.rows[j].onmouseover = function()
				{
					if(this.className.length > 0)
					{
						this.className = this.className + " liter";
					}
					if(this.className == "")
					{
						this.className = "liter";
					}
					//alert("onmouseover: " + this.className);
				}
				table.rows[j].onmouseout = function()
				{
					//alert("onmouseout BEFORE: " + this.className);
					if(this.className.indexOf("liter") == 0)
					{
						//alert("liter");
						this.className = "";
					}
					if(this.className.indexOf(" liter"))
					{
						//alert(" liter");
						this.className = this.className.replace(" liter","");
					}
				}
			}
		}
	}
}

set_onload("highlight_row");

function get_window()
{
	// Window inner dimensions
	var window_x, window_y;

	if(self.innerHeight) // all except Explorer
	{
		//window_x = self.innerWidth;
		window_x = document.body.offsetWidth;
		window_y = self.innerHeight;
	}
	else if(document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
	{
		window_x = document.documentElement.clientWidth;
		window_y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		window_x = document.body.clientWidth;
		window_y = document.body.clientHeight;
	}

	var window_dim = new Array(window_x, window_y);
	return window_dim;
}

function text_size(el,ix)
{
	var sizes = new Array(".85em","1em","1.15em");
	var article = document.getElementById("c-article");
	article.style.fontSize = sizes[ix];

	var div = document.getElementById("text-size");
	var a = div.getElementsByTagName("a");

	for(var i=0; i<a.length; i++)
	{
		a[i].className = "";
	}

	el.className = "on";
}

// Page Tools: Print Page

function print_page()
{
	if(window.print)
	{
		window.print();
		return;
	}
}

// Page Tools: Email Link

function email_link()
{
	var page_url = window.location.href;
	var page_title = document.getElementsByTagName("h1");
	var site = "Bucks County Assosiation of Township Officials (BCATO)";

	if(page_title[0].innerText)
	{
		page_name = page_title[0].innerText;
	}
	else
	{
		page_name = page_title[0].textContent;
	}

	var email_subject = "A Link To The " + site + " Website";
	var email_body = "A link to the '" + escape(page_name) + "' page at the " + site + " website has been sent to you. %0D%0DYou can visit this page at: " + page_url + "%0D%0DThank you.%0D%0D------------------------%0DThis email was auto generated from the " + site + " website.";
	window.open("mailto:?subject=" + email_subject + "&body=" + email_body);
	return;
}

// Home Photograph

function set_photograph()
{
	var container = document.getElementById("f-content");
	var photo = document.getElementById("c-text");
	var photos = get_photographs();
	var path = "/images/photographs/";

	// Set the photograph
	var r_number = Math.floor(Math.random() * photos.length);
	photo.style.backgroundImage = "url(" + path + photos[r_number] + ")";

	// Create the caption
	var caption = document.createElement("div");
	caption.id = "p-caption";

	var caption_text = document.createTextNode(photos[r_number].replace(/-/g," ").split(".")[0]);
	caption.appendChild(caption_text);
	container.appendChild(caption);
}
