/*************************************************************************
 * Copyright:   	Copyright (c) 2oo5-2oo6, Weird Syndicate(TM) | eFBé,
 * Name:        	application.js
 * Projekt:     	weird_rekordz 6.1
 * Description: 	a collection of very useful JavaScriptz
 * Come off: 	 	2oo6.o4.24.
 * Developer:   	Gellért Gyuris & Foky Balázs aka eFBé
 *************************************************************************
 * Modify or use the single elements of this JS without my 
 * permission is PROHIBITED!
 
 * If you wanna use something, please ask | efbe_at_nexum.hu
 *************************************************************************/
  

/*
 * openReview script based on toggleMenu | 2oo6.o6.23. VZsoltee & eFBé
 */

	function openreview( el ) {
		var openReview = document.getElementById( el );
		if ( openReview ) { 
			if ( openReview.style.display == 'block' ) {
				openReview.style.display = 'none';
			}
			else {
				openReview.style.display = 'block';
			};
		};
		return true;
	};
	
// class name remover & adder pack | author : Gellért Gyuris | http://arcok.ujevangelizacio.hu/bubu/gellert.html | added: 2oo6.o5.o8.
/**
 * removeClass					| removez the css class
 * @param el DOMElement     	| A element being modified
 * @param sClassName String 	| name of the css class
 * @return String            	| our new class name
 */
	function removeClass( el, sClassName ) {
		var i, aClass, aNewClass = [];
		if ( hasClass( el, sClassName ) ) {
			aClass = el.className.split(' ');
			for ( i = aClass.length; i > 0; ) {
				if ( aClass[--i] != sClassName ) {
					aNewClass.unshift( aClass[i] );
				};
			};
			el.className = aNewClass.join(' ');
		};
		return el.className;
	};
/**
 * addClass						| addz the last css class or movez it to the last place
 * @param el DOMElement     	| the element ready to modify
 * @param sClassName String  	| name of the css class
 * @return String            	| our new class name
 */
	function addClass( el, sClassName ) {
		if ( el.className == '' ) {
			el.className = sClassName;
		}
		else if ( !hasClass( el, sClassName ) ) { // the order doesn't count!
			el.className += ' ' + sClassName;
		};
		return el.className;
	};
/**
 * hasClass 					| checkz that our class is existz or not
 * @param el DOMElement     	| the element that we want to 
 * @param sClassName String  	| name of the css class
 * @return Boolean           	| is it existz or not?
 */
	function hasClass( el, sClassName ) {
		var i, aClass;
		aClass = el.className.split(' ');
		for ( i = aClass.length; i > 0; ) {
			if ( aClass[--i] == sClassName ) {
				return true;
			};
		};
		return false;
	};

// nospam | author : Gellért Gyuris | http://arcok.ujevangelizacio.hu/bubu/gellert.html | added: 2oo6.o5.o8.
	var noSpam = {
	
		// collectz the linkz from the sName class
		getElementsByClass : function ( sName ) {
			var aElems = [], aAlltags = document.getElementsByTagName( 'a' );
			for ( i = 0; i < aAlltags.length; i++ ) {
				if ( hasClass( aAlltags[i], sName ) ) {
					aElems[aElems.length] = aAlltags[i];
				}
			}
			return( aElems );
		},
	
		// recoverz the content and the href attribute of the 'email' classified linkz by the regular expressionz
		classEmailSecurer : function () {
			var aElems = noSpam.getElementsByClass( 'email' ), sEmailAddress, sRegExp;
			regExpSlash = /\((.*)\)\W/;
			for( i = 0; i < aElems.length; i++ ) {
				if ( aElems[i].href && aElems[i].href != '' ) {
					sEmailAddress = aElems[i].href.replace( regExpSlash, '$1@' );
					aElems[i].innerHTML = aElems[i].innerHTML.replace( aElems[i].href.substring( aElems[i].href.indexOf( ':' ) + 1, aElems[i].href.length ), sEmailAddress.substring( sEmailAddress.indexOf( ':' ) + 1, sEmailAddress.length ) ); // recoverin' the content of the link if it containz the e-mail address - else it doesn't variez																										
					aElems[i].href = sEmailAddress.substring( 0, sEmailAddress.length ); // recoverin' the href attribute
				}
			}
		}
	};

// popup script by Gellért Gyuris | http://arcok.ujevangelizacio.hu/bubu/gellert.html
//
// how to use | onclick="newWindow( 'url', '(optional) window name (better leave it blank)', width, height, 1 or 0 (for scrolling), 1 or 0 (for resizing) )"
	function newWindow( sURL, sWindowName, nWidth, nHeight, sScroll, sResize ) {
		win = null;
		nLeftPosition = ( screen.width ) ? ( screen.width - nWidth ) / 2 : 0;
		nTopPosition  = ( screen.height ) ? ( screen.height - nHeight) / 2 : 0;
		sSettings = 'height=' + nHeight + ',width=' + nWidth + ',top=' + nTopPosition + ',left=' + nLeftPosition + ',scrollbars=' + sScroll + ',resizable=' + sResize;
		win = window.open( sURL, sWindowName, sSettings );
	};


// Smooth scrolling
// Changes links that link to other parts of this page to scroll smoothly to those links rather than jump to them directly, which can be a little disorienting.
//   
//   sil, http://www.kryogenix.org/
//   
//   v1.0 2003-11-11
//   v1.1 2005-06-16 wrap it up in an object

	var ss = {
		fixAllLinks: function() {
	    	// Get a list of all links in the page
	    	var allLinks = document.getElementsByTagName('a');
	    	// Walk through the list
	    	for (var i=0; i<allLinks.length; i++) {
				var lnk = allLinks[i];
				if ((lnk.href && lnk.href.indexOf('#') != -1) && ( (lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {
	        		// If the link is internal to the page (begins in #) then attach the smoothScroll function as an onclick event handler
	        		ss.addEvent(lnk,'click',ss.smoothScroll);
	     		}
	    	}
		},
	
		smoothScroll: function(e) {
			// This is an event handler; get the clicked on element, in a cross-browser fashion
			if (window.event) {
				target = window.event.srcElement;
		    } 
		    else if (e) {
				target = e.target;
		    } 
		    else return;
		
		    // Make sure that the target is an element, not a text node within an element
		    if (target.nodeName.toLowerCase() != 'a') {
				target = target.parentNode;
		    }
		  
		    // Paranoia; check this is an A tag
		    if (target.nodeName.toLowerCase() != 'a') return;
		  
		    // Find the <a name> tag corresponding to this href
		    // First strip off the hash (first character)
		    anchor = target.hash.substr(1);
		    // Now loop all A tags until we find one with that name
		    var allLinks = document.getElementsByTagName('a');
		    var destinationLink = null;
		    for (var i=0; i<allLinks.length; i++) {
				var lnk = allLinks[i];
				if (lnk.name && (lnk.name == anchor)) {
					destinationLink = lnk;
		        	break;
				}
		    }
		  
		    // If we didn't find a destination, give up and let the browser do its thing
		    if (!destinationLink) return true;
		  
		    // Find the destination's position
		    var destx = destinationLink.offsetLeft; 
		    var desty = destinationLink.offsetTop;
		    var thisNode = destinationLink;
		    while ( thisNode.offsetParent && (thisNode.offsetParent != document.body) ) {
				thisNode = thisNode.offsetParent;
				destx += thisNode.offsetLeft;
				desty += thisNode.offsetTop;
		    }
		  
		    // Stop any current scrolling
		    clearInterval(ss.INTERVAL);
		  
		    cypos = ss.getCurrentYPos();
		  
		    ss_stepsize = parseInt( (desty-cypos)/ss.STEPS );
		    ss.INTERVAL = setInterval('ss.scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10);
		  
		    // And stop the actual click happening
		    if (window.event) {
				window.event.cancelBubble = true;
				window.event.returnValue = false;
		    }
		    if (e && e.preventDefault && e.stopPropagation) {
				e.preventDefault();
				e.stopPropagation();
		    }
		},
		
		scrollWindow: function(scramount,dest,anchor) {
			wascypos = ss.getCurrentYPos();
		    isAbove = (wascypos < dest);
		    window.scrollTo(0,wascypos + scramount);
		    iscypos = ss.getCurrentYPos();
		    isAboveNow = (iscypos < dest);
		    if ( (isAbove != isAboveNow) || (wascypos == iscypos) ) {
		      	// if we've just scrolled past the destination, or we haven't moved from the last scroll (i.e., we're at the bottom of the page) then scroll exactly to the link
				window.scrollTo(0,dest);
		      	// cancel the repeating timer
				clearInterval(ss.INTERVAL);
				// and jump to the link directly so the URL's right
				location.hash = anchor;
		    }
		},
		
		getCurrentYPos: function() {
			if (document.body && document.body.scrollTop)
				return document.body.scrollTop;
		    if (document.documentElement && document.documentElement.scrollTop)
				return document.documentElement.scrollTop;
		    if (window.pageYOffset)
				return window.pageYOffset;
		    return 0;
		},
		
		addEvent: function(elm, evType, fn, useCapture) {
		    // addEvent and removeEvent cross-browser event handling for IE5+,  NS6 and Mozilla by Scott Andrew
		    if (elm.addEventListener) {
				elm.addEventListener(evType, fn, useCapture);
				return true;
		    } 
		    else if (elm.attachEvent){
				var r = elm.attachEvent("on"+evType, fn);
				return r;
		    } 
		    else {
				alert("Handler could not be removed");
			}
		}
	}
	
	ss.STEPS = 25;
	
	ss.addEvent(window, "load", ss.fixAllLinks);


/*
 * A List Apart dynamical footer script | http://alistapart.com/articles/footers
 */ 
 
function getWindowHeight() {
	var windowHeight = 0;
	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	}
	else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
} 
 

function setFooter() {
	if (document.getElementById) {
		var windowHeight = getWindowHeight();
		if (windowHeight > 0) {
			var contentHeight = document.getElementById('wrapper').offsetHeight;
			var footerElement = document.getElementById('footer');
			var footerHeight = footerElement.offsetHeight;
			if (windowHeight - (contentHeight+footerHeight) >= 0) {
				footerElement.style.position = 'relative';
				footerElement.style.top = (windowHeight - (contentHeight+footerHeight))+'px';
			}
			else {
				footerElement.style.position = 'static';
			};
		};
	};
};

window.onresize = function() {
  setFooter();
};
	
	
/* start functions for onLoad */	
window.onload = function() {
	noSpam.classEmailSecurer();
	setFooter();
};	