/*
 * CrossSlide jQuery plugin v0.6.2
 *
 * Copyright 2007-2010 by Tobia Conforto <tobia.conforto@gmail.com>
 *
 * This program is free software;
 you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation;
 either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY;
 without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program;
 if not, write to the Free Software Foundation, Inc., 51
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */
(

function (){
var d=jQuery,a=(d.fn.startAnimation?"startAnimation":"animate"),c="pause plugin missing.";

function e(h){
	for( var g=1; g<arguments.length; g++)
	{
 		h=h.replace(new RegExp("\\{"+(g-1)+"}","g"),arguments[g])
 	}
 	return h
 }

function f(){arguments[0]="CrossSlide: "+arguments[0];
throw new Error(e.apply(null,arguments))}

function b(i){
var g=1;

var h=i.replace(/^\s*|\s*$/g,"").split(/\s+/);
if(h.length>3){throw new Error()}if(h[0]=="center"){if(h.length==1){h=["center","center"]}else{if(h.length==2&&h[1].match(/^[\d.]+x$/i)){h=["center","center",h[1]]}}}if(h.length==3){g=parseFloat(h[2].match(/^([\d.]+)x$/i)[1])}
var j=h[0]+" "+h[1];
if(j=="left top"||j=="top left"){return{xrel:0,yrel:0,zoom:g}}if(j=="left center"||j=="center left"){return{xrel:0,yrel:0.5,zoom:g}}if(j=="left bottom"||j=="bottom left"){return{xrel:0,yrel:1,zoom:g}}if(j=="center top"||j=="top center"){return{xrel:0.5,yrel:0,zoom:g}}if(j=="center center"){return{xrel:0.5,yrel:0.5,zoom:g}}if(j=="center bottom"||j=="bottom center"){return{xrel:0.5,yrel:1,zoom:g}}if(j=="right top"||j=="top right"){return{xrel:1,yrel:0,zoom:g}}if(j=="right center"||j=="center right"){return{xrel:1,yrel:0.5,zoom:g}}if(j=="right bottom"||j=="bottom right"){return{xrel:1,yrel:1,zoom:g}}return{xrel:parseInt(h[0].match(/^(\d+)%$/)[1])/100,yrel:parseInt(h[1].match(/^(\d+)%$/)[1])/100,zoom:g}}d.fn.crossSlide=

function (i,k,l){
var g=this,j=this.width(),h=this.height();
if(g.length!=1){f("crossSlide() must be called on exactly 1 element")}g.get(0).crossSlideArgs=[i,k,l];
k=d.map(k,

function (m){return d.extend({},m)});
if(!i.easing){i.easing=i.variant?"swing":"linear"}
if(!l){l=function (){}}(

function (o){
var m=0;

function n(q,p){
p.onload=function (r){m++;
k[q].width=p.width;
k[q].height=p.height;
if(m==k.length){o()}};
p.src=k[q].src;
if(q+1<k.length){n(q+1,new Image())}}
 n(0,new Image())})(

function (){if(!i.fade){f("missing fade parameter.")}if(i.speed&&i.sleep){f("you cannot set both speed and sleep at the same time.")}
var A=Math.round(i.fade*1000);
if(i.sleep){
var z=Math.round(i.sleep*1000)}if(i.speed){
var o=i.speed/1000,v=Math.round(A*o)}g.empty().css({overflow:"hidden",padding:0});
if(!/^(absolute|relative|fixed)$/.test(g.css("position"))){g.css({position:"relative"})}if(!g.width()||!g.height()){f("container element does not have its own width and height")}
if(i.shuffle){k.sort(function (){return Math.random()-0.5})}

for(var t=0; t<k.length; ++t){
var m=k[t];
if(!m.src){f("missing src parameter in picture {0}.",t+1)}

if(o){
			switch(m.dir){
			case"up":m.from={xrel:0.5,yrel:0,zoom:1};
			m.to={xrel:0.5,yrel:1,zoom:1};
			var x=m.height-h-2*v;
			break;
			
			case"down":m.from={xrel:0.5,yrel:1,zoom:1};
			m.to={xrel:0.5,yrel:0,zoom:1};
			var x=m.height-h-2*v;
			break;
			
			case"left":m.from={xrel:0,yrel:0.5,zoom:1};
			m.to={xrel:1,yrel:0.5,zoom:1};
			var x=m.width-j-2*v;
			break;
			
			case"right":m.from={xrel:1,yrel:0.5,zoom:1};
			m.to={xrel:0,yrel:0.5,zoom:1};
			var x=m.width-j-2*v;
			break;
			default:f("missing or malformed dir parameter in picture {0}.",t+1)
			}
			if(x<=0){
					f("impossible animation: either picture {0} is too small or div is too large or fade duration too long.",t+1)
			} 
			m.time_ms=Math.round(x/o)
			}
			else
			{
			if(!z){if(!m.from||!m.to||!m.time){f("missing either speed/sleep option, or from/to/time params in picture {0}.",t+1)}try{m.from=b(m.from)}catch(w){f('malformed "from" parameter in picture {0}.',t+1)}try{m.to=b(m.to)}catch(w){f('malformed "to" parameter in picture {0}.',t+1)}if(!m.time){f('missing "time" parameter in picture {0}.',t+1)}m.time_ms=Math.round(m.time*1000)}
			}
			if(m.from){d.each([m.from,m.to],function (p,C){C.width=Math.round(m.width*C.zoom);
																							 			 C.height=Math.round(m.height*C.zoom);
																							 			 C.left=Math.round((j-C.width)*C.xrel);
																							 			 C.top=Math.round((h-C.height)*C.yrel)})
																							 			}

			var s,y;
			y=s=d(e('<img src="{0}"/>',m.src));
			if(m.href){
				y=d(e('<a href="{0}"></a>',m.href)).append(s)
			}
			if(m.onclick){y.click(m.onclick)}
			if(m.alt){s.attr("alt",m.alt)}
			if(m.rel){y.attr("rel",m.rel)}
			if(m.href&&m.target){y.attr("target",m.target)}y.appendTo(g)}delete o;



function n(D,C){
	var E=[0,A/(D.time_ms+2*A),1-A/(D.time_ms+2*A),1][C];
	return{left:Math.round(D.from.left+E*(D.to.left-D.from.left)),top:Math.round(D.from.top+E*(D.to.top-D.from.top)),width:Math.round(D.from.width+E*(D.to.width-D.from.width)),height:Math.round(D.from.height+E*(D.to.height-D.from.height))}
}
	var u=g.find("img").css({position:"absolute",visibility:"hidden",top:0,left:0,border:0});
	//alert(g.find("img").width);
	u.css("left",((413-m.width)/2)+"px");
	u.css("top",((285-m.height)/2)+"px");
	u.eq(0).css({visibility:"visible"});
	if(!z){u.eq(0).css(n(k[0],i.variant?0:1))}
	var B=i.loop;



function q(O,p){
	if(O%2==0){
						if(z){
									var E=O/2,S=(E-1+k.length)%k.length,P=u.eq(E),M=u.eq(S);
									var L = function (){
										l(E,P.get(0));
										M.css("visibility","hidden");
										
										DisplayText(E);
										//alert('E=' + E +' S=' +S + ' P=' +P + ' M=' +M);
										setTimeout(p,z)
										//alert('end slide');
										}
									}
									else
									{
									var H=O/2,S=(H-1+k.length)%k.length,R=u.eq(H),M=u.eq(S),F=k[H].time_ms,N=n(k[H],i.variant?3:2);
									var L = function (){l(H,R.get(0));
									M.css("visibility","hidden");
									R[a](N,F,i.easing,p)
									}
								}
							}
							else
							{
							var D=Math.floor(O/2),G=Math.ceil(O/2)%k.length,Q=u.eq(D),C=u.eq(G),T={},K={visibility:"visible"},J={};
							if(G>D){
								K.opacity=0;
								J.opacity=1;
								if(i.doubleFade){
									T.opacity=0
									}
								}
								else
								{
									T.opacity=0;
									if(i.doubleFade){
										K.opacity=0;
										J.opacity=1
										}
								}
								if(!z){
									d.extend(K,n(k[G],0));
									if(!i.variant){
										d.extend(T,n(k[D],3));
										d.extend(J,n(k[G],1))
									}
								}
								if(d.isEmptyObject(J)){
									var L = function (){
										l(G,C.get(0),D,Q.get(0));
										C.css(K);
										Q[a](T,A,"linear",p)
									}
								}
								else
								{
									if(d.isEmptyObject(T)){
										var L = function (){
											l(G,C.get(0),D,Q.get(0));
											C.css(K);
											C[a](J,A,"linear",p)
										}
									}
									else
									{
										var L = function (){
												l(G,C.get(0),D,Q.get(0));
												C.css(K);
												C[a](J,A,"linear");
												Q[a](T,A,"linear",p)
										}
									}
								}
							}
							if(i.loop&&O==k.length*2-2){
								var I=L;
								L = function (){
									if(--B){
										I()
										}
									}
								}
								if(O>0){
									return q(O-1,L)
									}
									else
									{
										return L
									}
								}
								
var r=q(k.length*2-1, function (){return r()});

r()
}
);
return g
};
function DisplayText(i){
  //alert(i);	
  //alert (arrText[i]);
  var obj = document.getElementById('slideshowText');
  obj.innerHTML=arrText[i];
}
d.fn.crossSlideFreeze= function (){this.find("img").stop()};
d.fn.crossSlideStop= function (){this.find("img").stop().remove()};
d.fn.crossSlideRestart= function (){this.find("img").stop().remove();
d.fn.crossSlide.apply(this,this.get(0).crossSlideArgs)};
d.fn.crossSlidePause= function (){if(!d.fn.pause){f(c)}this.find("img").pause()};
d.fn.crossSlideResume= function (){if(!d.fn.pause){f(c)}this.find("img").resume()}})();

