if (typeof Structura == "undefined") {
    var Structura = {};
}

var PerformScroll = function()
{
    Structura.PITP.Scroll();
}

var StopScroll = function()
{
    Structura.PITP.StopScroll();
}

var inSidebar = false;

var StopMouseOver = function()
{
    inSidebar = true;
    Structura.PITP.StopScroll();
}

var StartMouseOut = function()
{
    inSidebar = false;
    Structura.PITP.StartScroll();
}

if (typeof Structura.PITP == "undefined") {
    Structura.PITP = function(){
        var sUrl =
        window.location.protocol + 
        "//" + 
        window.location.hostname + 
        (window.location.port == "" ? "" : ":" + window.location.port) +
        window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")) +
        "/PropertyInThePicture.aspx";

        var container = null;
        var indexSetter = 0;
        var indexGetter = 0;
        var elements = new Array();
        
        var isReady = false;
        
        var interval = 20;
        var pause = 1000;
        
        if(!YAHOO.util.Event.isSafari && !YAHOO.util.Event.isIE)
        {
            interval *= 1.8;
            pause *= 1.8;
        }
        
        var isScrolling = false;
        
        var topElement = null;

        var handleSuccess = function(o){
	        if(o.responseText != undefined){
	            if(container == null)
	            {
	                container = document.getElementById("sideBarPropertyInThePictureContent");
                    container.style.top = container.offsetTop + "px";
	            }
        	    
	            var id = YAHOO.util.Dom.generateId(null,"pitpCItem");
	            var pitpItem = new YAHOO.widget.Module(id);   
	            pitpItem.setBody(o.responseText);
	            pitpItem.render(container);
	            var element = pitpItem.element;   

                
                YAHOO.util.Event.addListener(element, "mouseover", StopMouseOver);  
                YAHOO.util.Event.addListener(element, "mouseout", StartMouseOut);  

                elements[indexSetter++] = element;

                if(container.parentNode.offsetHeight > element.offsetTop){
                    RequestNewProperty();
                }
                else{
                    if(indexGetter == 0)
                    {
                        isReady = true;
                        Structura.PITP.StartScroll();
                    }
                }
	        }
        }
        
        Structura.PITP.StartScroll = function()
        {
            if(!isScrolling)
            {
                isScrolling = true;
                clearInterval(scrollIntervalID);
                scrollIntervalID = setInterval("PerformScroll()", interval);
            }
        }
        
        Structura.PITP.StopScroll = function()
        {
            if(isScrolling)
            {
                isScrolling = false;
                clearInterval(scrollIntervalID);
            }
        }
        
        Structura.PITP.Scroll = function()
        {
            if(!inSidebar && isReady)
            {
                try{
                    var distanceFromTop = 0;
                    if(topElement != null)
                    {
                        distanceFromTop = topElement.offsetTop + topElement.offsetHeight + container.offsetTop;
                    }
                    
                    if(topElement == null || distanceFromTop < 0)
                    {
                        if(topElement != null)
                        {
                            YAHOO.util.Event.purgeElement(topElement);
                        }
                    
                        topElement = elements[indexGetter++];
                        
                        Structura.PITP.StopScroll(false);
                        
                        RequestNewProperty();
                        setTimeout("Structura.PITP.StartScroll()", pause)
                    }
                    else
                    {
                        container.style.top = parseInt(container.style.top.substring(0,container.style.top.length -2)) - 1 + "px";
                    }
                }
                catch(exception)
                {
                    clearInterval(scrollIntervalID);
                }
            }
        }
        
        var handleFailure = function(o)
        {
	        if(o.responseText !== undefined){
	            alert(o.tId + "\n" + o.status + "\n" + "Status code message: " + o.statusText);
	        }
        }
        
        var callback =
        {
          success: handleSuccess,
          failure: handleFailure,
          argument: { dummy1:"foo", dummy2:"bar" }
        };
        
        var RequestNewProperty = function()
        {
            return YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
        }
        
        Initializer.prototype.handleOnAvailable = function(me)
        {
            RequestNewProperty();
        }
        
        function Initializer(id)
        {
            YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this); 
        }
        
        var Initialize = new Initializer("sideBarPropertyInThePictureContent");
    };
}
