function addEvent(element, event, action) {
    if(element.addEventListener) element.addEventListener(event, action, true);
    else if(element.attachEvent) element.attachEvent("on" + event, action);
}

function removeEvent(element, event, action) {
    if(element.removeEventListener) element.removeEventListener(event, action, true);
    else if(element.detachEvent) element.detachEvent("on" + event, action);
}

function trim(string, what) {
    var trimmed = string;
    if(!what) what = " ";

    var regExLeft = eval("/^(" + what + ")+/");
    var regExRight = eval("/(" + what + ")+$/");

	trimmed = trimmed.replace(regExLeft, "");
	trimmed = trimmed.replace(regExRight, "");

    return trimmed;
}

function getScrollXY() {
    var scrOfX = 0, scrOfY = 0;
    
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    
    return {x: scrOfX, y: scrOfY};
}

function setCookie(name, value, expire, path) {
    var cookie = name + "=" + value;
    
    if(expire) {
    	var date = new Date();
        date.setTime(date.getTime() + (expire * 24 * 60 * 60 * 1000));
        
        cookie = cookie + "; expires=" + date.toGMTString();
    }
    if(path) cookie = cookie + "; path=" + path;
    
	document.cookie = cookie;
}

function getCookie(name) {
    var cookies = document.cookie.split(";");
    for(cookie in cookies) {
        var splittedCookie = trim(cookies[cookie]).split("=");
        var cookieName = splittedCookie[0];
        var cookieValue = splittedCookie[1];
        
        if(cookieName == name) return cookieValue;
    }

    return false;
}

function resetScroll() {
	setCookie("scrollX", 0, "", "/");
    setCookie("scrollY", 0, "", "/");
}

function rememberPageScroll() {
    var pageScroll = getScrollXY();
    setCookie("scrollX", pageScroll.x, "", "/");
    setCookie("scrollY", pageScroll.y, "", "/");
}

function scrollPage() {
    var scrollX = getCookie("scrollX");
    var scrollY = getCookie("scrollY");

    if(scrollX && scrollY) window.scroll(scrollX, scrollY);
}