// general.js

function addLoadListener(fn)
{
	if (typeof window.addEventListener != 'undefined') {
   		window.addEventListener('load', fn, false);
 	} else if (typeof document.addEventListener != 'undefined') {
   		document.addEventListener('load', fn, false);
	} else if (typeof window.attachEvent != 'undefined') {
   		window.attachEvent('onload', fn);
 	} else {
   		var oldfn = window.onload;
   		if (typeof window.onload != 'function') {
     		window.onload = fn;
   		} else {
     		window.onload = function() {
       			oldfn();
       			fn();
     		};
   		}
 	}
}

// generic function for attaching event listeners to am element
function attachEventListener(target, eventType, functionRef, capture)
{
	if (typeof target.addEventListener != "undefined") { // firefox/mozilla
   		target.addEventListener(eventType, functionRef, capture);
 	
	} else if (typeof target.attachEvent != "undefined") { // IE
   		target.attachEvent("on" + eventType, functionRef);
 	
	} else { // old school 'DOM 0' way (IE 5 on Mac and Safari)
		eventType = "on" + eventType;
   		if (typeof target[eventType] == "function") { // target element already has an event of same type attached
			var oldListener = target[eventType]; //get existing event(s)
			target[eventType] = function() {
       			oldListener(); // execute existing events
				return functionRef(); // execute new event
     		};
   		} else {  // target element does not have an event of the same type attached - attach 'DOM 0' style
     		target[eventType] = functionRef;
   		}
 	}
}

// get all elements in a document which have a specified attribute

function getElementsByAttribute(attribute, attributeValue)
{
 	var elementArray = new Array();
 	var matchedArray = new Array();

	// get all elements in the document into an array
 	if (document.all) {
   		elementArray = document.all;
 	} else {
   		elementArray = document.getElementsByTagName("*");
	}

 	for (var i = 0; i < elementArray.length; i++) {
   		
		// special case for 'class' attribute
		if (attribute == "class") {
     		var pattern = new RegExp("(^| )" + attributeValue + "( |$)"); // find class in list of 1 or more classes 

     		if (pattern.test(elementArray[i].className)) {
       			matchedArray[matchedArray.length] = elementArray[i];
     		}
		
		// special case for 'for' attribute	
   		} else if (attribute == "for") {
     		
			if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for")) {
       			
				if (elementArray[i].htmlFor == attributeValue) {
         			matchedArray[matchedArray.length] = elementArray[i];
       			}
     		}
		
		// all other attributes	
   		} else if (elementArray[i].getAttribute(attribute) == attributeValue) {
     		matchedArray[matchedArray.length] = elementArray[i];
   		}
 	}
 	return matchedArray;
}


// selects parent node if event trigger is a text node (eg. clicking a link in Safari)

function getEventTarget(event)
{
 	var targetElement = null;
 	if (typeof event.target != "undefined") {
   		targetElement = event.target; //W3C
	} else {
   		targetElement = event.srcElement; // IE
 	}
	while (targetElement.nodeType == 3 && targetElement.parentNode != null) {		
		targetElement = targetElement.parentNode;
 	}
 	return targetElement;
}

// expandable but no scrollbars
function pop_up(url, width, height) {
    var left, top;
    if(window.screen){
       left = (screen.width - width) / 2;
       top = (screen.height - height) / 2;
    }else{
       left = 200; top = 170;
    }
    extras = 'height=' + height + ',width=' + width + ',status=no,toolbar=no,menubar=no,scrollbars=no,top=' + top + ',left=' + left
    var newwin = window.open(url,'address', extras);
}

// expandable with scrollbars
function pop_up_scroll(url, width, height) {
    var left, top;
    if(window.screen){
       left = (screen.width - width) / 2;
       top = (screen.height - height) / 2;
    }else{
       left = 200; top = 170;
    }
    extras = 'height=' + height + ',width=' + width + ',status=no,toolbar=no,menubar=no,scrollbars=yes,top=' + top + ',left=' + left
    var newwin = window.open(url,'address', extras);
}

function stopDefaultAction(event) {
	event.returnValue = false;
 	if (typeof event.preventDefault != "undefined") { event.preventDefault(); }
}

function send_friend(event) {
	var url     = document.getElementById("send_friend").href;
	var arrUrl  = url.split('/');
	var folder  = arrUrl[arrUrl.length-2];
	var page    = arrUrl[arrUrl.length-1];
	var article = encodeURI(arrUrl[arrUrl.length]);
	var url_send = "../send_friend.php?fd="+folder+"&pg="+page+"&tl="+article+"&js=1&rl=1";
	pop_up(url_send, 559, 422);
	stopDefaultAction(event);
	return false;
}

function send_friend2(event) {
	var url     = document.getElementById("send_friend2").href;
	var arrUrl  = url.split('/');
	var folder  = arrUrl[arrUrl.length-2];
	var page    = arrUrl[arrUrl.length-1];
	var article = encodeURI(arrUrl[arrUrl.length]);
	var url_send = "send_friend.php?fd="+folder+"&pg="+page+"&tl="+article+"&js=1&rl=1";
	pop_up(url_send, 559, 422);
	stopDefaultAction(event);
	return false;
}

function init() 
{
	var el = document.getElementById("send_friend");
	if (el != null) { attachEventListener(el, 'click', send_friend, false); }
	return true;
}

function init2() 
{
	var el = document.getElementById("send_friend2");
	if (el != null) { attachEventListener(el, 'click', send_friend2, false); }
	return true;
}

//addLoadListener(init);
//addLoadListener(init2);

