if(typeof window['iQ'] == "undefined"){
	window['iQ'] = new Object();
}

if(typeof window['iQ']['Ajax'] == "undefined"){
	alert('iQAjax is required');
}

if(typeof window['iQ']['Utils'] == "undefined"){
	alert('iQUtils is required');
}


window.iQ['Slideshow'] = new Object();


var objSlideshow = null;
var objSlideshowPanel = null;
var iSlideshowTotalCount = 0;
var iSlideShowFirstImage = 0;
var strSlideShowImageKey = null;
var strSlideShowImageType = null;
var SlideShowJsonData = null;
var SlideShowJsonCols = {};

iQ.Slideshow.doLoad = function(sImageKey,sImageType,iImageToLoad) {
	iSlideShowFirstImage = iImageToLoad;
	strSlideShowImageKey = sImageKey;
	strSlideShowImageType = sImageType;
	
	iQ.Utils.doShowProcessing();
	
	var _Ajax = new iQ.Ajax();
	_Ajax.CFCMethod = 'getImages';
	_Ajax.URL = '/websvc/Images.cfc';        
    _Ajax.Params = {ImageKey: strSlideShowImageKey, ImageType: strSlideShowImageType};
	_Ajax.CallbackHandler = "iQ.Slideshow.onLoad";	
	_Ajax.Send();
};


iQ.Slideshow.onLoad = function(jsonRet) {
	iQ.Utils.doHideProcessing();

	SlideShowJsonData = jsonRet;

	for(var i = 0; i < SlideShowJsonData.RECORDSET.COLUMNS.length; i++) {
		SlideShowJsonCols[SlideShowJsonData.RECORDSET.COLUMNS[i]] = i;      
	}

	if(SlideShowJsonData.MAXWIDTH > 640){
		var iMaxWidth = 640;
	}else{
		var iMaxWidth = SlideShowJsonData.MAXWIDTH;
	}

	if(SlideShowJsonData.MAXHEIGHT > 480){
		var iMaxHeight = 480;
	}else{
		var iMaxHeight = SlideShowJsonData.MAXHEIGHT;
	}

	var iPanelWidth = iMaxWidth + 20;
	var iPanelHeight = iMaxHeight + 84;

	var objStringBuffer = new iQ.Utils.StringBuffer();
	objStringBuffer.append('<div id="iQ_Slideshow" class="carousel-component">');
		objStringBuffer.append('<div class="carousel-clip-region">');
			objStringBuffer.append('<ul class="carousel-list">');
			objStringBuffer.append('</ul>');
		objStringBuffer.append('</div>');
	objStringBuffer.append('</div>');
	objStringBuffer.append('<div id="iQ_Slideshow_Nav" class="iQ_Slideshow_Nav">');
		objStringBuffer.append('<div id="iQ_Slideshow_Nav_Previous" class="iQ_Slideshow_Previous_On">');
			objStringBuffer.append('<img class="iQ_Slideshow_Nav_Button" src="/Images/spacer.gif" alt="Previous"/>');
		objStringBuffer.append('</div>');
		objStringBuffer.append('<div class="iQ_Slideshow_Info_Wrapper">');
			objStringBuffer.append('<div id="iQ_Slideshow_Info"></div>');
		objStringBuffer.append('</div>');
		objStringBuffer.append('<div id="iQ_Slideshow_Nav_Next" class="iQ_Slideshow_Next_On">');
			objStringBuffer.append('<img class="iQ_Slideshow_Nav_Button" src="/Images/spacer.gif" alt="Next"/>');
		objStringBuffer.append('</div>');
	objStringBuffer.append('</div>');
		
	/*if(objSlideshowPanel == null){*/
		objSlideshowPanel =
			new YAHOO.widget.Panel("SlideshowPanel",
				{	
					disply:"table",
					width: iPanelWidth + "px",
					height: iPanelHeight + "px",
					visible:false,
					draggable:true,
					close:true,
					constraintoviewport:false,				
					modal:false,
					zindex:540
				}
			);        

		objSlideshowPanel.setHeader('Slideshow');
		objSlideshowPanel.setBody(objStringBuffer.tostring());
		
		objSlideshowPanel.render(document.body);
	/*}else{
		objSlideshowPanel.setBody(objStringBuffer.tostring());
	}*/

	var objSlideshowWrapper = iQ.Utils.getBrowserObject("iQ_Slideshow");
	var objSlideshowNavWrapper = iQ.Utils.getBrowserObject("iQ_Slideshow_Nav");
	
	var iWrapHeight = iMaxHeight + 0;
	var iWrapWidth = iMaxWidth + 0;

	objSlideshowWrapper.style.height = iWrapHeight + 'px';	
	objSlideshowWrapper.style.width = iWrapWidth + 'px';

	objSlideshowNavWrapper.style.width = iWrapWidth + 'px';
	
	iSlideshowTotalCount = SlideShowJsonData.RECORDSET.DATA.length;
	
	objSlideshow = 
		new YAHOO.extension.Carousel("iQ_Slideshow", 
			{
				numVisible:					1,
				animationSpeed:				0.4,
				scrollInc:					1,
				prevElement:				"iQ_Slideshow_Nav_Previous",
				nextElement:				"iQ_Slideshow_Nav_Next",
				loadNextHandler:			iQ.Slideshow.doLoadNextItems,
				loadPrevHandler:			iQ.Slideshow.doLoadPreviousItems,
				prevButtonStateHandler:		iQ.Slideshow.doPreviousButtonState,
				nextButtonStateHandler:		iQ.Slideshow.doNextButtonState,
				animationCompleteHandler:	iQ.Slideshow.doAnimationComplete,
				autoPlay:					2500,
				wrap:						false
			}
	);

	for(i=0; i < iSlideshowTotalCount; i++){
		var iTopMargin = iMaxHeight - SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEHEIGHT"]];

		if(iTopMargin > 0){
			iTopMargin = iTopMargin / 2;	
		}else{
			iTopMargin = 0;
		}

		if(SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEWIDTH"]] > SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEHEIGHT"]]){
			var sAdjust = 'Width';

			if(SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEWIDTH"]] > iMaxWidth){
				var iSize = iMaxWidth;
			}else{
				var iSize = SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEWIDTH"]];
			}
		}else{
			var sAdjust = 'Height';

			if(SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEWIDTH"]] > iMaxHeight){
				var iSize = iMaxHeight;
			}else{
				var iSize = SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEWIDTH"]];
			}
		}

		objSlideshow.addItem(i+1, iQ.Slideshow.doItemHTML(SlideShowJsonData.RECORDSET.DATA[i][SlideShowJsonCols["IMAGEPATH"]],sAdjust,iSize,iTopMargin), null, iMaxWidth, iMaxHeight);
	}

	objSlideshow.setProperty("size", iSlideshowTotalCount, true);

	if(iSlideShowFirstImage != 0){
		objSlideshow.scrollTo(iSlideShowFirstImage);
	}
	
	iQ.Slideshow.doImageInfo();

	objSlideshowPanel.center();
	objSlideshowPanel.show();
};

iQ.Slideshow.doLoadNextItems = function(type, args) {	
	var start = args[0];
	var last = args[1]; 
	var alreadyCached = args[2];

	if(!alreadyCached) {
		//If the image is not here get the next
	}
};

iQ.Slideshow.doLoadPreviousItems = function(type, args) {
	var start = args[0];
	var last = args[1]; 
	var alreadyCached = args[2];

	if(!alreadyCached) {
		//If the image is not here get the next
	}
};

iQ.Slideshow.doPreviousButtonState = function(type, args) {
	var bEnabling = args[0];
	var objPrevButton = args[1];

	if(bEnabling) {
		objPrevButton.className = "iQ_Slideshow_Previous_On";
	} else {
		objPrevButton.className = "iQ_Slideshow_Previous_Off";
	}
};

iQ.Slideshow.doNextButtonState = function(type, args) {
	var bEnabling = args[0];
	var objNextButton = args[1];

	if(bEnabling) {
		objNextButton.className = "iQ_Slideshow_Next_On";
	} else {
		objNextButton.className = "iQ_Slideshow_Next_Off";
	}
	
};

iQ.Slideshow.doAnimationComplete = function(type, args){
	var direction = args[0];

	iQ.Slideshow.doImageInfo();
};

iQ.Slideshow.doItemHTML = function(sImagePath,sAdjust,iSize,iTopMargin) {
  	var InnerHTML = '<img src="' + sImagePath + '" ' + sAdjust + '="' + iSize + '" style="margin-top:' + iTopMargin + 'px;"/>';

	return InnerHTML;
};

iQ.Slideshow.doImageInfo = function(){
	var objInfo = iQ.Utils.getBrowserObject('iQ_Slideshow_Info');

	var CurrImage = objSlideshow.getFirstVisible();
	var sDescription = SlideShowJsonData.RECORDSET.DATA[CurrImage - 1][SlideShowJsonCols["DESCRIPTION"]];

	if(sDescription != '' && sDescription != null){
		objInfo.innerHTML = '<div id="iQ_Slideshow_Description">' + sDescription + '</div><div id="iQ_Slideshow_ImageCount">Image ' + CurrImage + ' of ' + iSlideshowTotalCount + '</div>';
	}else{
		objInfo.innerHTML = '<div id="iQ_Slideshow_ImageCount">Image ' + CurrImage + ' of ' + iSlideshowTotalCount + '</div>';
	}
};