/* file to display preview images in preview area */

function Preview()
{
        return this;
}

var availableWidth = 177; // size of expandDiv minus 7


/* imageObject could be an array (for bundles) or an image object */
Preview.loadImagesForNode = function(controlId, imageObject)
{
        var controlObj = $(controlId);
        if ((controlObj != null) && (controlObj != undefined))
        {
                var images = controlObj.getElementsByTagName("img");
                if (images != null)
                {
                        // there are other images in the bundle preview area, so keep two counters
                        var previewImageIndex = 0;
                        /* for bundles to load multiple images in the preview area */
                        for (var i=0; i < images.length; i++)
                        {
                                var image = images[i];
                                if(image.id == 'previewImage')
                                {
                                        setImageSrc(image, imageObject, previewImageIndex)
                                        previewImageIndex++;
                                }
                        }
                }
        }
}


function setImageSrc(imageToBeOverwritten, imageObject, previewImageIndex)
{
        // working with an image in a bundles array?
		if(imageObject){
			if(imageObject.length != null)
			{
					 if(imageObject[previewImageIndex].width > availableWidth)
					 {
							imageObject[previewImageIndex].width = availableWidth;
					}
	
					imageToBeOverwritten.width = imageObject[previewImageIndex].width
					imageToBeOverwritten.src = imageObject[previewImageIndex].src
			}
			else
			{
					 if(imageObject.width > availableWidth)
					{
							imageObject.width = availableWidth;
					 }
	
					imageToBeOverwritten.width = imageObject.width
					imageToBeOverwritten.src = imageObject.src
			}
		}

}

/* bundles function to create image objects for the list of image srcs passed in */
function createResourceImageArray(imageSrcArray)
{
        thisResourceArray = new Array();
        for(var i=0; i < imageSrcArray.length; i++)
        {
                thisResourceArray[i] = createImage(imageSrcArray[i]);
        }
        return thisResourceArray;
}

function createImage(imageSrc)
{
        var ImageObj = new Image();
        ImageObj.src = imageSrc;
        if(ImageObj.width > availableWidth)
        {
                ImageObj.width = availableWidth;
        }
        return ImageObj;

}



Preview.showPreview = function(controlId, imageObj)
{
        var previewSplashObj = $('previewSplash');
        if ((previewSplashObj != null) && (previewSplashObj != undefined))
        {
                var previewResourceObj = $('previewResource');
                if ((previewResourceObj != null) && (previewResourceObj != undefined))
                {
                        $('previewSplash').style.display = 'none';
                        $('previewResource').style.display = 'block';
                         $('previewResource').innerHTML = $(controlId).innerHTML;
                        Preview.loadImagesForNode(previewResourceObj, imageObj);

                }
				Preview.moveIntoView();                
        }
}

Preview.moveIntoView = function(){
	var hp = "0px";
	var ca = $("expandDiv").previous(); 
	var hd = ca.getHeight() - $("previewArea").getHeight();  
	var sd = $("expandDiv").cumulativeScrollOffset().top - ca.cumulativeOffset().top;
	if(sd > 0){
		$("expandDiv").show();
		if((hd - sd) > 0){
			hp = sd + "px";
		}else{
			hp = hd + "px";
		}
	}else{
		$("expandDiv").hide();
	}
	$("expandDiv").setStyle({height: hp});
}

document.observe("dom:loaded",function(){
	if($("previewArea") != null){
	    $("previewArea").insert({before: new Element('div',{id:'expandDiv','style':'float: right; width: 184px; height: 0px; display: none'})});
		Event.observe(window,'scroll',Preview.moveIntoView);
	}
});
