/* 
 * This code is subject of copyright. Please do NOT copy or reuse.
 *
 * Daniel Fäldt (C) -2010
 */
function debug(text, override, nobr) {
    return; // Debug off
    
    var debugObj = new getObj('debug'); // This div must exist
    var br = "\n<br/>";
    if(nobr) {
        br = "";
    }
    if(override) {
        debugObj.obj.innerHTML = text + br;
    } else {
        debugObj.obj.innerHTML += text + br;
    }
}
function getObj(name){
    if (document.getElementById){
        this.obj = document.getElementById(name);
        this.style = document.getElementById(name).style;
    }
    else if (document.all){
        this.obj = document.all[name];
        this.style = document.all[name].style;
    }
}
function getWinSize(){
    var iWidth = 0, iHeight = 0;

    if (document.documentElement && document.documentElement.clientHeight){
        iWidth = parseInt(window.innerWidth,10);
        iHeight = parseInt(window.innerHeight,10);
    }
    else if (document.body){
        iWidth = parseInt(document.body.offsetWidth,10);
        iHeight = parseInt(document.body.offsetHeight,10);
    }

    return {
        width:iWidth,
        height:iHeight
    };
}
function togglePersonalWidget() {
    var personalId = new getObj('personal');
    var twitterId = new getObj('twitter');
    if(personalId.style.visibility == 'visible'){
        personalId.style.visibility = 'hidden';
    }
    else {
        twitterId.style.visibility = 'hidden';
        personalId.style.visibility = 'visible';
    }
    return false;
}
function toggleTwitterWidget() {
    var personalId = new getObj('personal');
    var twitterId = new getObj('twitter');
    if(twitterId.style.visibility == 'visible'){
        twitterId.style.visibility = 'hidden';
    }
    else {
        personalId.style.visibility = 'hidden';
        twitterId.style.visibility = 'visible';
    }
    return false;
}
function intendmail(inside) {
    /* a simple antispammer by Intend */
    /* © Intend -2006                 */

    var part1 = "con";
    var part2 = "tact.daniel";
    var company = "faldt";
    var country = "se";

    var arr = new Array();
    arr[0] = part1;
    arr[1] = part2;
    arr[2] = "@";
    arr[3] = company;
    arr[4] = ".";
    arr[5] = country;

    var mail = '';
    for(var i=0;i < arr.length;i++) {
        mail += arr[i];
    }

    document.write('<a href="mailto:' + mail + '">' + inside + '</a>');
    return true;
}

function getScrollBarWidth () {
    var inner = document.createElement('p');
    inner.style.width = "100%";
    inner.style.height = "200px";

    var outer = document.createElement('div');
    outer.style.position = "absolute";
    outer.style.top = "0px";
    outer.style.left = "0px";
    outer.style.visibility = "hidden";
    outer.style.width = "200px";
    outer.style.height = "150px";
    outer.style.overflow = "hidden";
    outer.appendChild (inner);

    document.body.appendChild (outer);
    var w1 = inner.offsetWidth;
    outer.style.overflow = 'scroll';
    var w2 = inner.offsetWidth;
    if (w1 == w2) w2 = outer.clientWidth;

    document.body.removeChild (outer);

    return (w1 - w2);
};
function positionWidget(widget, top, left) {
    debug("", true, true); // Clear
    
    var obj = new getObj(widget);
    var contentObj = new getObj('content');
    var profileObj = new getObj('profile');
    var winSize=getWinSize();

    var defaultScrollbarWidth = getScrollBarWidth();
    var hasVerticalScrollbar = document.body.scrollHeight > document.body.clientHeight;
    var hasHorizontalScrollbar = document.body.scrollWidth > document.body.clientWidth;

    var scrollVertical = 0;
    if(hasVerticalScrollbar) {
        debug("hasVerticalScrollbar: " + hasVerticalScrollbar);
        scrollVertical = defaultScrollbarWidth - (winSize.width - contentObj.obj.offsetWidth);
        if(scrollVertical < 0) {
            scrollVertical = 0;
        } else if(scrollVertical > defaultScrollbarWidth) {
            scrollVertical = defaultScrollbarWidth;
        }
        debug("scrollVertical: " + scrollVertical);
    }
    var scrollHorisontal = 0;
    if(hasHorizontalScrollbar) {
        scrollHorisontal = defaultScrollbarWidth - (winSize.height - contentObj.obj.offsetHeight);
        debug("hasHorizontalScrollbar: " + hasHorizontalScrollbar);
        if(scrollHorisontal < 0) {
            scrollHorisontal = 0;
        } else if(scrollHorisontal > defaultScrollbarWidth) {
            scrollHorisontal = defaultScrollbarWidth;
        }
        debug("scrollHorisontal: " + scrollHorisontal);
    }

    if(top) {
        obj.style.top = 10;
    } else {
        bottom = winSize.height;
        if(contentObj.obj.offsetHeight < winSize.height) {
            bottom = parseInt(contentObj.obj.offsetHeight);
        }
        debug("bottom: " + bottom);
        var top = bottom - parseInt(obj.obj.offsetHeight) - 10 - scrollHorisontal;
        debug("top: " + top);
        obj.style.top = top;
    }

    if(left) {
        obj.style.left = 10;
    } else {
        right = winSize.width;
        if(contentObj.obj.offsetWidth < winSize.width) {
            right = contentObj.obj.offsetWidth;
        }
        debug("right: " + right);
        var left = right - obj.obj.offsetWidth - 10 - scrollVertical;
        if(parseInt(profileObj.style.left) + parseInt(profileObj.obj.offsetWidth)+10 > left) {
            left = parseInt(profileObj.style.left) + parseInt(profileObj.obj.offsetWidth)+10;
        }
        debug("left: " + left);
        obj.style.left = left;
    }
}
function windowResized() {
    positionWidget('profile', false, true);
    positionWidget('twitter', false, false);
    positionWidget('personal', false, false);
}

