var fixPosition=function(target,pos) {   
    this.target= this.g(target);   
    this.pos=pos;   
    this.init();  
};   
  
fixPosition.prototype={   
    isScroll:navigator.userAgent.indexOf("MSIE 6")!=-1 ||(window.ActiveXObject && document.compatMode!="CSS1Compat"),   
    ae:function(e,call) {   
        if(window.addEventListener)   
            window.addEventListener(e,call,false);   
        else  
            window.attachEvent("on"+e,call);   
    },   
    g:function(id) {   
        return typeof(id)=="string"?document.getElementById(id):id;   
    },   
    setPos:function() {
        var de;   
        if(document.compatMode=="CSS1Compat")de=document.documentElement;   
        else de=document.body;   
           
        if(typeof(this.pos)=="string") {
            if(!this.isScroll){   
                switch(this.pos.charAt(0)) {   
                    case "l":   
                        this.target.style.left="0px";   
                        break;   
                    case "r":   
                        this.target.style.right="0px";   
                        break;   
                    default:   
                        this.target.style.left=(de.clientWidth-this.target.clientWidth)/2 +"px";    
                        break;   
                }   
                switch(this.pos.charAt(1)) {   
                    case "t":   
                        this.target.style.top="0px";   
                        break;   
                    case "b":   
                        this.target.style.bottom="0px";   
                        break;   
                    default:   
                        this.target.style.top=(de.clientHeight-this.target.clientHeight)/2 +"px";    
                        break;   
                }   
            }else {   
                switch(this.pos.charAt(0)) {   
                    case "l":   
                        this.target.style.left=de.scrollLeft+"px";   
                        break;   
                    case "r":   
                        this.target.style.left=de.scrollLeft+de.clientWidth-this.target.clientWidth +"px";   
                        break;   
                    default:   
                        this.target.style.left=de.scrollLeft+((de.clientWidth-this.target.clientWidth)/2)+"px";   
                        break;   
                }   
                switch(this.pos.charAt(1)) {   
                    case "t":   
                        this.target.style.top=de.scrollTop+"px";   
                        break;   
                    case "b":   
                        this.target.style.top=de.scrollTop+de.clientHeight-this.target.clientHeight+"px";   
                        break;   
                    default:   
                        this.target.style.top=de.scrollTop+((de.clientHeight-this.target.clientHeight)/2)+"px";   
                        break;   
                }   
            }   
        } else {   
            if(!this.isScroll) {   
                for(var p in this.pos)   
                    this.target.style[p]=this.pos[p]+"px";   
            } else {   
                for(var p in this.pos) {   
                    switch(p.toLowerCase()) {   
                        case "left":   
                            this.target.style.left=de.scrollLeft+this.pos[p]+"px";   
                            break;   
                        case "right":   
                            this.target.style.left=de.scrollLeft+de.clientWidth-this.target.clientWidth-this.pos[p]+"px";   
                            break;   
                        case "top":   
                            this.target.style.top=de.scrollTop+this.pos[p]+ "px";   
                            break;   
                        case "bottom":   
                            this.target.style.top=de.scrollTop+de.clientHeight-this.target.clientHeight-this.pos[p]+"px";   
                            break;   
                    }   


                }   
            }   
        }   
    },   
    init:function() {   
        if(!this.pos)   
            throw Error("Invalid arguments [pos].");   
        if(!this.isScroll)   
            this.target.style.position="fixed";   
        else  
            this.target.style.position="absolute";   
        var timer,o=this;   
        this.ae("resize",function() {
            clearTimeout(timer);   
            timer=setTimeout(function() {   
                o.setPos();   
            },30);   
        });   
        if(this.isScroll) {
            this.ae("scroll",function() {                   
                clearTimeout(timer);   
                timer=setTimeout(function() {   
                    o.setPos();   
                },30);   
            });   
        }   
        this.setPos();   
    }   
}
