/*				global.js
				dandemutande.org
				created 3 July 2004 by Paul Novitski
*/


//------------------------------
//	global variables
//------------------------------

var bDebugFlag = 0;
//var bErrorState = 0;


//=========================
// execute on page load
//=========================
AddEvent(window, "load", jsExtLinks);




//=========================
function AddEvent(oElement, sEventName, fnFunction)
//=========================
{
	if (oElement)
	{
		if (oElement.attachEvent)
		{
			oElement.attachEvent("on" + sEventName, fnFunction);
		}
		else
		{
			oElement.addEventListener(sEventName, fnFunction, true);
		}
	}
}


/*
		Form Validation
		by Paul Novitski
		www.juniperwebcraft.com
		last revised July 2008
*/

//=========================
// execute on page load
//=========================
//AddEvent(window, "load", FormValid_Init);

//var sFormValid_FormId = 'blah-blah';

// set behaviors
//=========================
function FormValid_Init()
//=========================
{
		if (!document.getElementById) return;
		if (!document.getElementsByTagName) return;

	// look for the form
	var oForm = document.getElementById(sFormValid_FormId);
		if (!oForm) return;

	oForm.onsubmit = FormValid_ValidateForm;
}


/*		externallinks.js
		by Paul Novitski - www.juniperwebcraft.com
		February 2007

This script converts all absolute URL hyperlinks to open in a new window.
19 April 2007 - also any link with the class "external"
*/

//=========================
function jsExtLinks()
//=========================
{
	//alert("function jsExtLinks()");

		// check for DOM-awareness
		if (!document.getElementById) return;
		if (!document.getElementsByTagName) return;

	var sPrompt = "(Opens in a new window)";

	var aLinks = document.getElementsByTagName("A");
	
	//alert("aLinks.length = " + aLinks.length);
	
	for (var iLink = 0; iLink < aLinks.length; iLink++)
	{
		var bExternal = false;
		var bPopup = false;
		
		var sClass = aLinks[iLink].className;		
		//var sClass = aLinks[iLink].getAttribute("class");
			if (sClass && sClass == 'popup')
			{
				bPopup = true;
			}
			else if (sClass && sClass == 'external')
			{
				bExternal = true;
			}
			else
			{		
				var sHref = aLinks[iLink].getAttribute("href");
				//alert(iLink + ": " + sHref);
				
					if (!sHref) continue;
					if (sHref == "") continue;

					if (sHref.substring(0, 4) == "http") bExternal = true;
					
					// don't open new window for any page in this website family
					if (sHref.indexOf("//dandemutande.") >= 0
					 || sHref.indexOf("//www.dandemutande.") >= 0
					)
					{
						bExternal = false;
					}
			}
		
			if (!bExternal && !bPopup) continue;
		
			if (bExternal)
			{
				var sClickFunction = jsExtLinksClick;
			}
			else if (bPopup)
			{
				var sClickFunction = jsPopupLinksClick;
			}
			else
			{
				continue;
			}
		
		aLinks[iLink].onclick = sClickFunction;

		var sTitle = aLinks[iLink].getAttribute("title");
		
			if (!sTitle) sTitle = '';
			if (sTitle.indexOf("new window") >= 0) continue;

			if (sTitle == "")
			{
				sTitle = sPrompt;
			}
			else
			{
				sTitle = sTitle + " " + sPrompt;
			}
		
		aLinks[iLink].setAttribute("title", sTitle);
		//alert("title: " + iLink + ": " + sTitle);
	}
}


//=========================
function jsExtLinksClick(evt)
//=========================
{
	// cancel event-bubbling
		if (evt) { event = evt; }
	event.cancelBubble = true;

	var sHref = this.getAttribute("href");

	window.open (sHref, "_blank");	

	return false;
}



//=========================
function jsPopupLinksClick(evt)
//=========================
{
	// cancel event-bubbling
		if (evt) { event = evt; }
	event.cancelBubble = true;
	
	// see if it's an image
	var rCheckImage = /\.(jpg|jpeg|gif|png)$/i;
	var rGetDims = /-(\d+)x(\d+)\.(jpg|jpeg|gif|png)$/i;
	
	var sPopupHref = 'popupImage.php?img=';
	
	var sHref = this.getAttribute("href");

	var bIsImage = rCheckImage.test(sHref);
	
	//alert((bIsImage) ? 'An image' : 'Not an image');

		if (bIsImage)
		{
			var aMatches = rGetDims.exec(sHref);
			//alert(aMatches.join('\n'));
			sHref = sPopupHref + encodeURIComponent(sHref);
			var sWindowName = "Image Pop-up";
			var sFeatures = "menubar=no,toolbar=no,directories=no,personalbar=no,scrollbars=no";
				if (aMatches) sFeatures += ",width=" + aMatches[1] + ",height=" + aMatches[2];
		}
		else
		{
			var sWindowName = "New Window";
			var sFeatures = '';
		}

	window.open(sHref, sWindowName, sFeatures);

	return false;
}


//==============================
function jsDebugAlert(argText)
//==============================
{
	if (bDebugFlag && (bDebugFlag == 1))
	{
		alert(argText);
	}
}


/*=============================
	page startup tasks
=============================*/
function jsPageInit()
{
//alert("break 1");
	// initialize the pop-up navigation menu
	jsInitNavMenu();

//alert("break 2");
	// run local startup if exists
	try
	{
//alert("break 3");
		jsLocalPageInit();
//alert("break 4");
	}
	catch(e)
	{
	}
}

/*=============================
	initialize navigation menu
=============================*/
function jsInitNavMenu()
{
	var oMenu = document.getElementById("navmenu");
	//alert("oMenu:\n" + oMenu.outerHTML);

	var oLink = document.getElementById("logolink");
	//alert("oLink:\n" + oLink.outerHTML);

	//var aLinks = oLink.childNodes;
	var oAnchor = oLink.firstChild;
	//alert("oAnchor:\n" + oAnchor.outerHTML);

	var oHead = oAnchor.firstChild;
	//alert("oHead:\n" + oHead.outerHTML);


	// add show/hide behavior	
	
	oLink.onmouseover = jsNavmenuShow;
	oLink.onmouseout = jsNavmenuHide;

		//if (oAnchor) oAnchor.onmouseover = jsNavmenuShow;
		//if (oAnchor) oAnchor.onmouseout = jsNavmenuHide;

	oMenu.onmouseover = jsNavmenuShow;
	oMenu.onmouseout = jsNavmenuHide;

	// position menu under link
		//if (oAnchor) oMenu.style.top = findPosY(oAnchor) + oHead.offsetHeight;
		//if (oAnchor) oMenu.style.pixelLeft = findPosX(oAnchor);

	var oThang = document.getElementById("contentwrapper");
	oThang.onmouseover = jsNavmenuHide;


	// hide menu
	//oMenu.style.display = "none";

}

/*=============================
	show navigation menu
=============================*/
function jsNavmenuShow()
{
	var oMenu = document.getElementById("navmenu");
	oMenu.style.display = "block";
}

/*=============================
	hide navigation menu
=============================*/
function jsNavmenuHide()
{
	var oMenu = document.getElementById("navmenu");
	oMenu.style.display = "none";
}


//window.onload = jsPageInit;




//==============================
// The following functions are written by Peter-Paul Koch (quirksmode.org)
//==============================
function getObj(name)
//------------------------------
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
  		if (this.obj)
  		{
  			this.style = document.getElementById(name).style;
  		}
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
	this.obj = getObjNN4(document,name);
	this.style = this.obj;
  }
}

//==============================
function getObjNN4(obj,name)
//------------------------------
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}
//==============================
function findPosX(obj)
//------------------------------
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

//==============================
function findPosY(obj)
//------------------------------
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}