// RWJFSlideshow.js
//   - Requires Prototype javascript framework
// Attach to DOMContentLoaded event
//  - uses custom function found in domready.js since prototype v1.5 doesn't support the 'dom:loaded' event yet.
//
domReady(
		function(){
			//configuration settings
			RWJFSlideRenderer.SlideThumbnailFolderUrl = "/images/pr/thumbs";
			RWJFSlideshow.ServletUrl = "/SlideshowServlet";
			//render slides/toolbars in search page
			RWJFSlideRenderer.RenderAllSlideshowRelatedHtml();
			if ($('my-slideshow-grid')) {
				Sortable.create($('my-slideshow-grid'), { tag: 'div', overlap:'horizontal', only:'myslideshow_grid_slide', constraint:false,
					onUpdate: function(list) {
						var slideDivs = list.childNodes;
						if (slideDivs != null && slideDivs.length > 0) {
							var productIds = new Array();
							for (var i = 0; i < slideDivs.length; i++) {
								if (slideDivs[i].style.display != "none") productIds.push(slideDivs[i].id.gsub("my_slideshow_slide_", ""));
							}
							RWJFSlideRenderer.SortSlides(productIds.join(','));
						}
					}
				});
				var myslideshowDraggables = Draggables.drags;
				for ( i = 0; i < myslideshowDraggables.length; i++){
					myslideshowDraggables[i].options.starteffect = null;
					myslideshowDraggables[i].options.endeffect = null;
				}
				Draggables.addObserver({onStart:function(eventName, draggable, event) {setTimeout("g_isDragging = true;", 10);}});
				Draggables.addObserver({onEnd:function(eventName, draggable, event) {setTimeout("g_isDragging = false;", 10);}});
				var slides = $$(".myslideshow_grid_slide a");
				for (var i = 0; i < slides.length; i++){Event.observe(slides[i], 'click',function(event) {if (g_isDragging){Event.stop(event);return false;} else {return true;}});}
			}
		});

var g_isDragging = false;
// ----------------------------------------------
//
// Action functions
//
// ----------------------------------------------

//Download Slide
function DownloadSlide(productId, selectObj){
	var url = "";
	var fileType = selectObj.value;
	if (fileType == "") return;
	var params = "action=download" + fileType + "&ids=" + productId;
	url = RWJFSlideshow.ServletUrl + "?" + params;
	window.location.href = url;
	selectObj.selectedIndex = 0;
}

//Email My Slideshow
function EmailCurrentSlideShow(){
	var params = "action=getslides";
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){
			var delimitedString = trim(transport.responseText);
			var url = "http://" + document.location.host + "/global/slidebuilder.jsp?ids=" + delimitedString;
			openEmailFriend(url, "My Slideshow");
		}});
	myAjax=null;
};

//Download My Slideshow
function DownloadCurrentSlideShow(selectObj){
	var fileType = selectObj.value;
	if (fileType == "") return;
	var params = "action=download" + fileType;
	window.location.href = RWJFSlideshow.ServletUrl + "?" + params;;
	selectObj.selectedIndex = 0;
};

//Show/Hide Enlarged Versions of Slide
function ShowEnlargeSlide(productId){
	var enlargeSlideWrapperDiv = $('enlargeSlideWrapper');
	var enlargeSlideDiv = $('enlargeSlide');
	var title =$('title_'+productId).innerHTML;
	var pageWrapperPosition = Position.page(enlargeSlideWrapperDiv);
	var newRelativeTop = 70;
	if (pageWrapperPosition[1] < 0) newRelativeTop = pageWrapperPosition[1] * -1 + 70;
	enlargeSlideDiv.style.top = newRelativeTop + "px";
	enlargeSlideDiv.style.display = 'block';
    $('enlargeSlideImg').src = RWJFSlideRenderer.SlideThumbnailFolderUrl + "/enlarged/" + productId + ".jpg";
    if($('headtitle')!=null)  $('headtitle').innerHTML = title;
    RWJF.smoke.show($('enlargeSlide'));
};

function HideEnlargeSlide(){ $('enlargeSlide').style.display = 'none';RWJF.smoke.hide(); };
function trim( string ){
	// trim the string from spaces front & back of string
	string = string.replace(/^\s+/g, "" );
	return string.replace(/\s+$/g, "" );
}//trim
// ----------------------------------------------
//
// RWJF Slide Renderer
//   - renders all slide imgs/links/toolbars
//
// ----------------------------------------------
var RWJFSlideRenderer = new Object();
RWJFSlideRenderer.SlideThumbnailFolderUrl = "/images/pr/thumbs";
RWJFSlideRenderer.RenderAllSlideshowRelatedHtml = function(){
	//render all slides in search results tables
	var searchTableSlides = $$("div.search_table_slide");
	if (searchTableSlides != null && searchTableSlides.length > 0){RWJFSlideRenderer.GetProductIdsInSlideshow();}
};
RWJFSlideRenderer.GetProductIdsInSlideshow = function(){
	var params = "action=getslides";
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){
			RWJFSlideRenderer.RenderAllSearchSlides(trim(transport.responseText));
			RWJFSlideRenderer.CheckRemainingSlidesInSlideshow(trim(transport.responseText));
		}});
	myAjax=null;
};

RWJFSlideRenderer.RenderAllSearchSlides=function(values){
	var productids = new Array();
	productids = values.split(',');
	for (var i = 0; i < productids.length; i++){
		var productId =  productids[i];
		RWJFSlideRenderer.RemoveSlideHtml(productId);
		if($('hidden_parentid_'+productId)!=null){
			RWJFSlideRenderer.RemoveSlideshowHtml($F('hidden_parentid_'+productId));
		}
	}
};

RWJFSlideRenderer.SortSlides=function(values){
	var params="action=sortslides&ids="+values;
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params, asynchronous:false,
		onSuccess:function(){/*RWJFSlideRenderer.RefreshBubblePage();*/}});
	myAjax=null;
};

RWJFSlideRenderer.RefreshBubblePage=function(){
	var url ='/common/bubbles.jsp';
	var myAjax = new Ajax.Updater('cartBubble',url, { method: "post",
		onSuccess:function(){
			InfoBubble.show('cartBubble','cartTrigger');
			setTimeout("InfoBubble.timeout()",5000);} });
	myAjax=null;
};

RWJFSlideRenderer.RefreshSlidesNumber=function(numSlides){
	if((trim(numSlides)!='null') ){
		if ($('num_slides') != null)$('num_slides').innerHTML = '(' + trim(numSlides) + ')';
		if($('my-slideshow-size-text')!=null) $('my-slideshow-size-text').innerHTML = trim(numSlides)+' slides';
		if($('presentation_tool')!=null) $('presentation_tool').style.display='block';
	}
	else{
		if($('num_slides') != null)$('num_slides').innerHTML = '(0)';
		if($('my-slideshow-size-text')!=null) $('my-slideshow-size-text').innerHTML ='No slides in presentation.';
		if($('presentation_tool')!=null) $('presentation_tool').style.display='none';
	}
};

RWJFSlideRenderer.RemoveSlideshowHtml=function(productId){
	if($('slideshow_tool_'+productId)!=null){
		$('slideshow_tool_'+productId).className="remove borderless";
		$('slideshow_tool_'+productId).innerHTML="<a href=\"javascript:RWJFSlideshowSlides.RemoveIdFromSlideshowSlides('"+productId+"')\" class=\"remove\">Remove from my presentation</a>";
	}
};

RWJFSlideRenderer.AddSlideshowHtml=function(productId){
	if($('slideshow_tool_'+productId)!=null){
		$('slideshow_tool_'+productId).className="add borderless";
		$('slideshow_tool_'+productId).innerHTML="<a href=\"javascript:RWJFSlideshowSlides.AddIdToSlideshowSlides('"+productId+"')\" class=\"add\">Add to my presentation</a>";
	}
};

RWJFSlideRenderer.RemoveSlideHtml=function(productId){
	if($('slide_tool_'+productId)!=null){
		$('slide_tool_'+productId).className="remove borderless";
		$('slide_tool_'+productId).innerHTML="<a href=\"javascript:RWJFSlideshow.RemoveIdFromSlideshow('"+productId+"')\" class=\"remove\">Remove from my presentation</a>";
	}
};

RWJFSlideRenderer.AddSlideHtml=function(productId){
	if($('slide_tool_'+productId)!=null){
		$('slide_tool_'+productId).className="add borderless";
		$('slide_tool_'+productId).innerHTML="<a href=\"javascript:RWJFSlideshow.AddIdToSlideshow('"+productId+"')\" class=\"add\">Add to my presentation</a>";
	}
	if($('my-slideshow-grid')!=null && $('my_slideshow_slide_'+productId)!=null){$('my-slideshow-grid').removeChild($('my_slideshow_slide_'+productId));}
};


RWJFSlideRenderer.CheckSlidesInSlideshow=function(){
	var params = "action=getslides";
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){RWJFSlideRenderer.CheckRemainingSlidesInSlideshow(trim(transport.responseText));}});
	myAjax=null;
};

RWJFSlideRenderer.CheckRemainingSlidesInSlideshow=function(values){
	var currentids= new Array(); currentids=(values).split(',');
	var slideToolbars = $$("div.slide_toolbar");
	if(slideToolbars.length<=0)    slideToolbars = $$("div.search_table_slide"); //this is for search results
	if (slideToolbars != null && slideToolbars.length > 0){
		for (var i = 0; i < slideToolbars.length; i++){
			var slideToolbar = slideToolbars[i];
			if(slideToolbar.id.split('_')[0] == "slideshow"){
				var parentId=slideToolbar.id.split('_')[1];
				var childids=new Array(); childids= ($F('hidden_slideshow_'+parentId)).split(',');
				var exists=false;
				for(var k=0; k<currentids.length; k++){
					for(var j=0; j<childids.length; j++){if(trim(currentids[k])==trim(childids[j])){exists=true;}}
				}
				if(!exists){RWJFSlideRenderer.AddSlideshowHtml(parentId);}
				else{RWJFSlideRenderer.RemoveSlideshowHtml(parentId);}
			}
		}
	}
};

// ----------------------------------------------
//
// RWJF Slideshow Static Class
//  Add/Remove/Clear Slideshow
// ----------------------------------------------
var RWJFSlideshow = new Object();
RWJFSlideshow.ServletUrl = "/SlideshowServlet";
RWJFSlideshow.AddIdToSlideshow = function(productId){
	var params="action=addslide&PRODUCTID="+productId;
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params, onSuccess:function(transport){RWJFSlideRenderer.RefreshSlidesNumber(transport.responseText);RWJFSlideRenderer.RefreshBubblePage();}});
	myAjax=null;
	RWJFSlideRenderer.RemoveSlideHtml(productId);
	if($('hidden_parentid_'+productId)!=null){RWJFSlideRenderer.RemoveSlideshowHtml($F('hidden_parentid_'+productId));}

    if($('slideAdded') != null) {
        var enlargeSlideWrapperDiv = $('addMessage');
        var enlargeSlideDiv = $('slideAdded');
        var pos	= InfoBubble.findPos($('link_'+productId));
        $('slideAdded').style.left=parseInt(pos.x-50)+'px';
        $('slideAdded').style.top=parseInt(pos.y)+'px';
        $('addSlideSeachResult').src = RWJFSlideRenderer.SlideThumbnailFolderUrl + "/enlarged/" + productId + ".jpg";
        RWJF.smoke.show($('slideAdded'));
        setTimeout("$('slideAdded').style.display = 'none';RWJF.smoke.hide();",3000);
    }
};

RWJFSlideshow.RemoveIdFromSlideshow = function(productId){
	var params="action=removeslide&PRODUCTID="+productId;
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){
			RWJFSlideRenderer.RefreshSlidesNumber(transport.responseText);
//			RWJFSlideRenderer.RefreshBubblePage();
			RWJFSlideRenderer.CheckSlidesInSlideshow();
		}});
	myAjax=null;
	RWJFSlideRenderer.AddSlideHtml(productId);
};
RWJFSlideshow.ClearSlideshow = function(){
	var params="action=removeallslide";
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params, onSuccess:function(){location.reload();}});
	myAjax=null;
};

RWJFSlideshow.openEmailFriend=function(productId){
	var url ="http://" + document.location.host +"/pr/product.jsp?id="+productId;
	var title =$('title_'+productId).innerHTML;
	openEmailFriend(url,title);
};

var RWJFSlideshowSlides = new Object();
RWJFSlideshowSlides.AddIdToSlideshowSlides = function(parentId) {
	var params="action=addslideshow&PARENTID="+parentId;
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){
			RWJFSlideRenderer.RefreshSlidesNumber(transport.responseText);
			RWJFSlideRenderer.RefreshBubblePage();
			RWJFSlideshowSlides.RemoveSlideHtml(parentId);
			RWJFSlideRenderer.RemoveSlideshowHtml(parentId);
		}});
	myAjax=null;
};
RWJFSlideshowSlides.RemoveIdFromSlideshowSlides = function(parentId) {
	var params="action=removeslideshow&PARENTID="+parentId;
	var myAjax = new Ajax.Request(RWJFSlideshow.ServletUrl, { method: "post", parameters: params,
		onSuccess:function(transport){
			RWJFSlideRenderer.RefreshSlidesNumber(transport.responseText);
//			RWJFSlideRenderer.RefreshBubblePage();
			RWJFSlideshowSlides.AddSlideHtml(parentId);
			RWJFSlideRenderer.AddSlideshowHtml(parentId);
		}});
	myAjax=null;
};
RWJFSlideshowSlides.AddSlideHtml=function(parentId){
	if ($('hidden_slideshow_' + parentId) != null && $F('hidden_slideshow_' + parentId).length > 0) {
		var productIds = $F('hidden_slideshow_' + parentId).split(', ');
		for (var i = 0; i < productIds.length; i++) RWJFSlideRenderer.AddSlideHtml(productIds[i]);
	}
};
RWJFSlideshowSlides.RemoveSlideHtml=function(parentId){
	if ($('hidden_slideshow_' + parentId) != null && $F('hidden_slideshow_' + parentId).length > 0) {
		var productIds = $F('hidden_slideshow_' + parentId).split(', ');
		for (var i = 0; i < productIds.length; i++)  RWJFSlideRenderer.RemoveSlideHtml(productIds[i]);
	}
};