﻿(function($)
{$.fn.CoverFlow=function(settings)
{var config=$.extend({imageSpace:10,opacity:0.6,zIndex:1,scaleBy:0.5,btnNextStr:"slider-btnNext",btnPrevStr:"slider-btnPrev",btnDisabledStr:"-dis",btnHoverStr:"-over",hasControls:false},settings||{});var coverFlow=$(this);var cf_items=$('li',coverFlow);var itemNum=cf_items.length;var SCALE_WIDTH;var SCALE_HEIGHT;var ORIGINAL_WIDTH;var ORIGINAL_HEIGHT;var leftPos_arr=[];var currentImage=Math.floor(itemNum/2);var btnNext;var btnPrev;function initCoverFlow()
{coverFlow.css({display:'block'});var elem=$('li:first-child',coverFlow);ORIGINAL_WIDTH=elem.width();ORIGINAL_HEIGHT=$('img',elem).height();SCALE_WIDTH=ORIGINAL_WIDTH*config.scaleBy;SCALE_HEIGHT=ORIGINAL_HEIGHT*config.scaleBy;HIGHLIGHT_IMAGE_LEFT=Math.round((coverFlow.width()-ORIGINAL_WIDTH)/2);TOP_POSITION=Math.round((ORIGINAL_HEIGHT-SCALE_HEIGHT)/2);if($.browser.msie&&$.browser.version=="6.0"){coverFlow.css({height:(ORIGINAL_HEIGHT+20)+'px'});}
createPositionArr(itemNum);}
function createPositionArr(num)
{var i=0;for(i;i<num;i++)
{leftPos_arr[i]=[];var j=0;for(j;j<num;j++)
{if(j<i)
{leftPos_arr[i][j]=HIGHLIGHT_IMAGE_LEFT+config.imageSpace-(SCALE_WIDTH*(i-j));}
else if(j==i)
{leftPos_arr[i][j]=HIGHLIGHT_IMAGE_LEFT;}
else
{leftPos_arr[i][j]=HIGHLIGHT_IMAGE_LEFT+ORIGINAL_WIDTH-config.imageSpace+(SCALE_WIDTH*((j-1)-i));}}}
createCoverFlow();}
function createCoverFlow()
{$('ul',coverFlow).css({height:ORIGINAL_HEIGHT+'px',padding:'10px 0',position:'relative',top:'10px'});var i=0;for(i;i<itemNum;i++)
{var elem=$(cf_items[i]);$('a',elem).attr('rel',i);elem.css({position:'absolute',padding:0,margin:0});elem.hover(function()
{$(this).css({opacity:'1'});},function()
{if($(this).attr('class')!='selected')
{$(this).css({opacity:config.opacity});}});$('a',elem).click(function()
{if($(this).parent().attr('class')!='selected')
{currentImage=$(this).attr('rel');if(config.hasControls)
{if(currentImage===0)
{disableBtn(btnPrev,config.btnPrevStr);enableBtn(btnNext,config.btnNextStr);}
else if(currentImage==itemNum-1)
{enableBtn(btnPrev,config.btnPrevStr);disableBtn(btnNext,config.btnNextStr);}
else
{enableBtn(btnPrev,config.btnPrevStr);enableBtn(btnNext,config.btnNextStr);}}
positionItems(currentImage,false);}
return false;});}
positionItems(currentImage,true);}
function positionItems(rel,isFirst)
{var i=0;for(i;i<itemNum;i++)
{if(rel==i)
{$(cf_items[i]).addClass('selected').css({'z-index':10});if(isFirst)
{$('img',cf_items[i]).css({width:ORIGINAL_WIDTH+'px',height:ORIGINAL_HEIGHT+'px'});$(cf_items[i]).css({opacity:'1',top:0,left:leftPos_arr[rel][i]+'px'});}
else
{$('img',cf_items[i]).stop().animate({width:ORIGINAL_WIDTH+'px',height:ORIGINAL_HEIGHT+'px'});$(cf_items[i]).css({opacity:'1'});$(cf_items[i]).stop().animate({top:0,left:leftPos_arr[rel][i]+'px'});}}
else
{if($(cf_items[i]).attr('class')=='selected'&&!isFirst)
{$(cf_items[i]).removeClass('selected').css({'z-index':1});$('img',cf_items[i]).stop().animate({width:SCALE_WIDTH+'px',height:SCALE_HEIGHT+'px'});$(cf_items[i]).css({opacity:config.opacity});$(cf_items[i]).stop().animate({top:TOP_POSITION+'px',left:leftPos_arr[rel][i]+'px'});}
else if(isFirst)
{$('img',cf_items[i]).css({width:SCALE_WIDTH+'px',height:SCALE_HEIGHT+'px'});$(cf_items[i]).css({opacity:config.opacity,top:TOP_POSITION+'px',left:leftPos_arr[rel][i]+'px'});}
else if(!isFirst)
{$(cf_items[i]).css({opacity:config.opacity});$(cf_items[i]).stop().animate({top:TOP_POSITION+'px',left:leftPos_arr[rel][i]+'px'});}}}}
function setupControls()
{var html_str='';html_str+='<a href="/" class="'+config.btnPrevStr+'">Prev</a>';html_str+='<a href="/" class="'+config.btnNextStr+'">Next</a>';coverFlow.append(html_str);btnNext=$("."+config.btnNextStr,coverFlow);btnPrev=$("."+config.btnPrevStr,coverFlow);btnPrev.removeAttr('href').css({cursor:"pointer"});btnNext.removeAttr('href').css({cursor:"pointer"});btnNext.css({display:'block'});btnPrev.css({display:'block'});btnNext.mouseover(function()
{addHoverBtn($(this),config.btnNextStr);}).mouseout(function()
{removeHoverBtn($(this),config.btnNextStr);}).click(function()
{if(currentImage<itemNum-1)
{currentImage++;positionItems(currentImage,false);enableBtn(btnPrev,config.btnPrevStr);}
if(currentImage==itemNum-1){disableBtn($(this),config.btnNextStr);}});btnPrev.mouseover(function()
{addHoverBtn($(this),config.btnPrevStr);}).mouseout(function()
{removeHoverBtn($(this),config.btnPrevStr);}).click(function()
{if(currentImage>0)
{currentImage--;positionItems(currentImage,false);enableBtn(btnNext,config.btnNextStr);}
if(currentImage===0){disableBtn($(this),config.btnPrevStr);}});}
function enableBtn(btn,str){btn.removeClass(str+config.btnDisabledStr).css({cursor:"pointer"});}
function disableBtn(btn,str){btn.addClass(str+config.btnDisabledStr).css({cursor:"default"});}
function addHoverBtn(btn,str){btn.addClass(str+config.btnHoverStr);}
function removeHoverBtn(btn,str){btn.removeClass(str+config.btnHoverStr);}
if(config.hasControls){setupControls();}
initCoverFlow();};})(jQuery);