var AjaxCard = {
    ie5: function(){
        return document.all;
    },
    
    ns6: function(){
        return document.getElementById && !document.all;
    },
    
    iecompattest: function(){
        return (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
    },

    contains_ns6 : function(a, b) {
        while (b.parentNode)
            if ((b = b.parentNode) == a) return true;
        return false;
    },
    
	clearEdge : function(obj, card, whichedge) {
        var edgeoffset = 0;
    
        if (whichedge == "rightedge"){
            var windowedge = this.ie5() && !window.opera? this.iecompattest().scrollLeft + this.iecompattest().clientWidth - 15 : window.pageXOffset + window.innerWidth - 15;
            
            card.contentmeasure = card.offsetWidth;
            
            if (windowedge - card.x < card.contentmeasure){
                edgeoffset = card.contentmeasure - obj.offsetWidth;
            }
        
        } else {
            
            var topedge = this.ie5() && !window.opera? this.iecompattest().scrollTop : window.pageYOffset;
            
            var windowedge = this.ie5() && !window.opera? this.iecompattest().scrollTop + this.iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;

            card.contentmeasure = card.offsetHeight;
            
            if (windowedge - card.y < card.contentmeasure){ //move up?
                
                edgeoffset = card.contentmeasure + obj.offsetHeight;
                
                if ((card.y-topedge) < card.contentmeasure) //up no good either?
                    edgeoffset = card.y + obj.offsetHeight - topedge;
            }
        }
        
        return edgeoffset;	
    },
	
	getposOffset: function(what, offsettype){
		var position = $(what).position();
		totaloffset=(offsettype=="left")? position.left : position.top;
		return totaloffset;
	},

	position : function(obj, card, offsetDown, offsetUp) {
        if(offsetDown == null) offsetDown = -6;
        if(offsetUp == null) offsetUp = 16;
        if(obj && card){
            card.x = this.getposOffset(obj, "left");
            card.y = this.getposOffset(obj, "top");
            card.style.left = card.x - this.clearEdge(obj, card, "rightedge") + "px";
            var clearBE = this.clearEdge(obj, card, "bottomedge");

            card.style.top = card.y - clearBE + obj.offsetHeight
            + ((clearBE == 0)? offsetDown : offsetUp) + "px";
        }
        
        return false;
	}
}

