/* ----------------------------------------------------------------------
	MAIN
	$Id: fpy.js,v 1.1 2008-06-02 15:47:38 pcharasimiuk Exp $
---------------------------------------------------------------------- */

/* dom */
function $(id)
{
	if (typeof id == "string")
		return document.getElementById(id);
	return id;
}

function $c(name) { return document.createElement(name); }
function $re(el) { if(!el||!el.parentNode) return; el.parentNode.removeChild(el); }

function addEvent(obj, type, fn)
{
  if (obj.addEventListener)
    obj.addEventListener(type, fn, false);
  else if (obj.attachEvent)
  {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){obj["e"+type+fn](window.event);}
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}

function getPageScroll()
{
	var scroll = new Object();
	if (self.pageYOffset) { scroll.x = self.pageXOffset; scroll.y = self.pageYOffset; }
	else if (document.documentElement && document.documentElement.scrollTop) { scroll.x = document.documentElement.scrollLeft; scroll.y = document.documentElement.scrollTop; }
	else if (document.body) { scroll.x = document.body.scrollLeft; scroll.y = document.body.scrollTop; }
	return scroll;
}

function setOpacity(el, o) { el.style.opacity = o/100; el.style.filter = "alpha(opacity="+o+")"; }

/* class */
function addClass(el,c) { if(!containsClass(el, c)) el.className += " " + c; }
function removeClass(el, c) { el.className = el.className.replace(new RegExp(c,"g"),""); }
function containsClass(el, c) { return el.className.indexOf(c) != -1 }

/* removeClass i containsClass daja bledne efekty gdy pojawi sie sytuacja, ze nazwa klasy zawiera wewnatrz poszukiwany ciag
   zastapione adaptacja z prototype.js:
*/
function trim(text){
	return text.replace(new RegExp("^\\s+"), "").replace(new RegExp("\\s+$"), "");
}

function removeDoubleSpace(text){
	return text.replace(new RegExp("\\s+","g"), " ");
}

function hasClassName(element,className) {
	var elementClassName = element.className;
	return (elementClassName.length > 0
			&& (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))
	);
}

function addClassName(element, className) {
	if (!hasClassName(element, className))
		element.className += (element.className ? ' ' : '') + className;
	return element;
}

function removeClassName(element, className) {
	element.className = trim(element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' '));
	return element;
}

function toggleClassName(element, className) {
	if (hasClassName(element,className)){
		removeClassName(element,className);
	}else{
		addClassName(element,className);
	}
}

function getLastChildElementNode(node){
	var tmp = node.lastChild;
	while (tmp && tmp.nodeType!=1){
		tmp = tmp.previousSibling;
	}
	return tmp;
}


/* cookies */
function getCookie(name)
{
	var arg	= name + '=';
	var alen = arg.length;
	var	clen =document.cookie.length;
	var i = 0;
	while (i<clen)
	{
		var j = i + alen;
		if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
		i = document.cookie.indexOf(" ",i) + 1;
		if (i==0) break;
	};
	return null;
}

function setCookie(name,value,path,expires)
{
	str = name + "=" + value;
	if (expires) str += " ;expires="+expires;
        if (path) str += " ;path="+path;
	document.cookie = str;
}

function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr==-1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset,endstr));
};

function delCookie(name)
{
	if (getCookie(name))
    	document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

/* Dustin Diaz's getElementsByClassName */
function getElementsByClassName(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}