﻿/*This plugin uses jQuery. jQuery must be included before this is called.*/
var j = jQuery.noConflict();

function adnoliIR(pObj){
	var currentItem=0;
	adnoliIR.airDivId = pObj.thisPluginId;
	adnoliIR.colorPassive=pObj.navColorPassive;
	adnoliIR.colorActive=pObj.navColorActive;

//boolean; show direct access buttons
	if(pObj.navShowDirectAccess==false){
		adnoliIR.showDirectAccess=pObj.navShowDirectAccess;
	}else{
		adnoliIR.showDirectAccess=true;//default
	}
	
//boolean; show numbers in direct access buttons or not
	if(pObj.navDirectAccessNumbers==true){
		adnoliIR.navDirectAccessNumbers=pObj.navDirectAccessNumbers;
	}else{
		adnoliIR.navDirectAccessNumbers=false;//default
	}

	if(pObj.navDirectAccessNumbersColor=='' || pObj.navDirectAccessNumbersColor==undefined){
		adnoliIR.navDirectAccessNumbersColor="#000";
	}else{
		adnoliIR.navDirectAccessNumbersColor=pObj.navDirectAccessNumbersColor;
	}

	adnoliIR.navDirectAccessNumbersFont=pObj.navDirectAccessNumbersFont;
	
//adnoliIR.navDirectAccessPosition=pObj.navDirectAccessPosition;
	if(pObj.navDirectAccessPosition=='' || pObj.navDirectAccessPosition==undefined){
		adnoliIR.navDirectAccessPosition='';
	}else{
		//format should be like this: [left|center|right] [top|bottom] example "center bottom"
		adnoliIR.navDirectAccessPosition=pObj.navDirectAccessPosition;
	}
	
	adnoliIR.height=pObj.height;
	adnoliIR.width=pObj.width;
	adnoliIR.textBG=pObj.textBG;
	adnoliIR.textColor=pObj.textColor;
	adnoliIR.fontFamily=pObj.fontFamily;
	adnoliIR.fontSize=pObj.fontSize;

//boolean; show next/prev arrows
if(pObj.showArrows==false){
	adnoliIR.showArrows=pObj.showArrows;
}else{
	adnoliIR.showArrows=true;//default
}
	

	adnoliIR.arrowsBG=pObj.arrowsBG;
	adnoliIR.arrowsColor=pObj.arrowsColor;
	adnoliIR.duration=pObj.duration;
	this.duration=pObj.duration;//visible from outside
	//var myContext=this;//reference for later callbacks

	init(pObj);
	writeCSS();
	window.AIR_ID = setInterval("adnoliIR.slideshow()", adnoliIR.duration);

	this.slideshow = function(){
		var $active = j('#'+adnoliIR.airDivId+'>.airItems>div.active');
		if ($active.length == 0) $active = j('#'+adnoliIR.airDivId+'>.airItems>div:last');
		var $next = $active.next().length ? $active.next()
		: j('#'+adnoliIR.airDivId+'>.airItems>div:first');
		
		var $index = $next.index();
		$active.addClass('outgoing');

		$next.css({ opacity: 0.0 })
		.addClass('active')
		.animate({ opacity: 1.0 }, 500, function() {
			$active.removeClass('active outgoing');
			currentItem=$index;
		});
		$active.animate({ opacity: 0.0 }, 500);
		if(adnoliIR.showDirectAccess==true){
			j('#'+adnoliIR.airDivId+'>div.airItemNav>span').css('background-color',adnoliIR.colorPassive);
			j('#'+adnoliIR.airDivId+'>div.airItemNav>span').eq($index).css('background-color',adnoliIR.colorActive);
		}
	}
	adnoliIR.slideshow=this.slideshow;

	function init(pObj){
		var $AIR = j('<div class="adnoliRotator" id="'+ pObj.thisPluginId +'"></div>');
		var $airItems = j('<div class="airItems"></div>');
		var $airItemNav = j('<div class="airItemNav"></div>');
		var $airBack = j('<span class="airBack">&lt;</span>');
		var $airForward = j('<span class="airForward"">&gt;</span>');

		//Build items from pObj
		j.each(pObj.items, function(i, item){
			var $d=j('<div class="airItem"></div>');
			var $a=j('<a href="' + item.url + '"><img src="' + item.img + '"/></a>');
			$d.append($a);
			if(item.text.length>0){
				var $t=j('<div class="airText">' + item.text + '</div>');
				$d.append($t);
			}
			$airItems.append($d);
			}
		);
		//console.log(jQuery('>div.airItem').eq(0));
		//$('>div.airItem',$airItems).eq(0).addClass('active');
		j('>div.airItem',$airItems).eq(0).addClass('active');
		//j('div.airItems>div.airItem').eq(0).addClass('active');
		
		if(adnoliIR.showDirectAccess==true){
			//Build jump to
			//var $arr_item = $('>div.airItem',$airItems);
			var $arr_item = j('>div.airItem',$airItems);
			//var $arr_item = j('div.airItems>div.airItem');
			for (i=0;i<$arr_item.length;i++){
				var $span = j('<span></span>');
				//$span.css('height','10px').css('width','10px').css('margin-right','10px').css('border','solid 1px #646464').css('background-color',adnoliIR.colorPassive).css('display','inline-block').css('-moz-border-radius','10px').css('-webkit-border-radius','10px');
				//$span.css('margin-right','10px').css('border','solid 1px #646464').css('background-color',adnoliIR.colorPassive).css('display','inline-block').css('-moz-border-radius','10px').css('-webkit-border-radius','10px');
				$span.css('margin-right','10px').css('border','solid 1px '+adnoliIR.navDirectAccessNumbersColor).css('background-color',adnoliIR.colorPassive).css('display','inline-block').css('color',adnoliIR.navDirectAccessNumbersColor);
				if(adnoliIR.navDirectAccessNumbers==true){
					$span.text(i+1);
					$span.css('padding','2px 4px');
				}else{
					$span.css('height','10px').css('width','10px').css('-moz-border-radius','10px').css('-webkit-border-radius','10px');
				}
				$airItemNav.append($span);
			}
			//var $jumpTo = $('>span',$airItemNav);
			var $jumpTo = j('>span',$airItemNav);
			//var $jumpTo = j('div.airItemNav>span');
			$jumpTo.eq(0).css('background-color',adnoliIR.colorActive);
			$jumpTo.each(
				function(index){
					j(this).bind(
						"click",
						function(){
							jumpTo(index);
							return false;
						}
					);
				}
			);

			//adnoliIR.navDirectAccessPosition
			if(adnoliIR.navDirectAccessPosition!=''){
				$airItemNav.css('position','absolute').css('z-index','10000');
				switch (adnoliIR.navDirectAccessPosition)
				{
				case 'left top':
					$airItemNav.css('left','10px').css('top','10px');
					break;

				case 'center top':
					$airItemNav.css('width','100%').css('top','10px');
					break;

				case 'right top':
					$airItemNav.css('right','0px').css('top','10px');
					break;

				case 'left bottom':
					$airItemNav.css('left','10px').css('bottom','10px');
					break;

				case 'center bottom':
					$airItemNav.css('width','100%').css('bottom','10px');
					break;
				
				case 'right bottom':
					$airItemNav.css('right','0px').css('bottom','10px');
					break;
				
				default:
					$airItemNav.css('width','100%').css('bottom','10px');
				}
			}


		}

		// Next/Prev buttons
		$airBack.click(function(){
			jump(-1);
		});
		$airForward.click(function(){
			jump(1);
		});
		
		$AIR.mouseenter(function(){
			$airBack.css('display','block');
			$airForward.css('display','block');
			clearInterval(window.AIR_ID);
		});
		$AIR.mouseleave(function(){
			$airBack.css('display','none');
			$airForward.css('display','none');
			window.AIR_ID = setInterval("adnoliIR.slideshow()", adnoliIR.duration);
		});

		//Add it all to the DOM
		//$AIR.append($airItems).append($airItemNav).append($airBack).append($airForward);
		$AIR.append($airItems);
		if(adnoliIR.showDirectAccess==true){
			$AIR.append($airItemNav);
		}
		if(adnoliIR.showArrows==true){
			$AIR.append($airBack).append($airForward);
		}

		var parent=j('#'+pObj.parentDiv);
		parent.append($AIR);
	}

	function writeCSS(){
		var css='.adnoliRotator{position:relative;height:[outerHeight]px;width:[outerWidth]px;}'+
			'.adnoliRotator>.airItems{background-color:#fff;border:solid 1px #ccc;position:relative;height:[height]px;width:[width]px;}'+
			//'.adnoliRotator>.airItems>div.airItem{height:[height]px;width:[width]px;overflow:hidden;text-align:center;top:0;left:0;right:0;bottom:0;position:absolute;z-index:8;opacity:0.0;}'+
			'.adnoliRotator>.airItems>div.airItem{height:[height]px;width:[width]px;overflow:hidden;text-align:center;top:0;left:0;position:absolute;z-index:8;opacity:0.0;}'+
			'.adnoliRotator>.airItems>div.active{z-index:10;opacity:1.0;}'+
			'.adnoliRotator>.airItems>div.outgoing{z-index:9;}'+
			'.adnoliRotator>.airItems>div.airItem>a{line-height:[height]px;vertical-align:middle;}'+
			'.adnoliRotator>.airItems>div.airItem>div.airText{position:absolute;left:0;right:0;bottom:0;background-color:[textBG];color:[textColor];padding:10px;font-family:[fontFamily];font-size:[fontSize];}'+
			'.adnoliRotator>.airItemNav{text-align:center;padding:4px 0;}'+
			'.adnoliRotator>.airItemNav>span{font-family:[navDirectAccessNumbersFont];}'+
			'.adnoliRotator>.airItemNav>span:hover{cursor:pointer;background-color:[navColorActive];}'+
			'.adnoliRotator>.airBack,.adnoliRotator>.airForward{display:none;position:absolute;z-index:11;top:45%;background-color:[arrowsBG];color:[arrowsColor];cursor:pointer;font-weight:900;padding:0px 6px;font-size:20px;}'+
			'.adnoliRotator>.airBack{left:2px;}'+
			'.adnoliRotator>.airForward{right:2px;}';
		css=css.replace('[outerHeight]',parseInt(adnoliIR.height)+2);
		css=css.replace('[outerWidth]',parseInt(adnoliIR.width)+2);
		//css=css.replace('[height]',adnoliIR.height);
		//css=css.replace('[width]',adnoliIR.width);

		css=css.replace(/\[height\]/g, adnoliIR.height);
		css=css.replace(/\[width\]/g, adnoliIR.width);

		if(adnoliIR.textBG!=''){
			css=css.replace('[textBG]',adnoliIR.textBG);
		}else{
			css=css.replace('[textBG]','#000');
		}
		if(adnoliIR.textColor!=''){
			css=css.replace('[textColor]',adnoliIR.textColor);
		}else{
			css=css.replace('[textColor]','#FFF');
		}
		if(adnoliIR.fontFamily!=''){
			css=css.replace('[fontFamily]',adnoliIR.fontFamily);
		}else{
			css=css.replace('[fontFamily]','Helvetica, Arial, sans-serif');
		}
		if(adnoliIR.fontSize!=''){
			css=css.replace('[fontSize]',adnoliIR.fontSize);
		}else{
			css=css.replace('[fontSize]','1em');
		}
		if(adnoliIR.arrowsBG!=''){
			css=css.replace('[arrowsBG]',adnoliIR.arrowsBG);
		}else{
			css=css.replace('[arrowsBG]','#000');
		}
		if(adnoliIR.arrowsColor!=''){
			css=css.replace('[arrowsColor]',adnoliIR.arrowsColor);
		}else{
			css=css.replace('[arrowsColor]','#FFF');
		}
		if(adnoliIR.navDirectAccessNumbersFont!=''){
			css=css.replace('[navDirectAccessNumbersFont]',adnoliIR.navDirectAccessNumbersFont);
		}else{
			css=css.replace('[navDirectAccessNumbersFont]','Helvetica, Arial, sans-serif');
		}
		css=css.replace('[navColorActive]',adnoliIR.colorActive);
	
		//need to check if it exists
		if(j('head>style').length == 0){
			var sty=j('<style></style>');
			j('head').append(sty);
		}

		j('head').append('<style>'+css+'</style');
		
	}

	function jump(pDir){
		jumpTo(currentItem + pDir);
	}
	function jumpTo(pIndex){
		var jumpToIndex;
		var max=j('#'+adnoliIR.airDivId+'>div.airItems>div.airItem').length;
		
		max=max-1;//zero based
		switch(true)
		{
			case (pIndex<0):
			jumpToIndex=max;
			break;

			case (pIndex>max):
			jumpToIndex=0;
			break;

			default:
			jumpToIndex=pIndex;
		}

		var $airItems=j('#'+adnoliIR.airDivId+'>div.airItems');
		//var $active = $('>div.active',$airItems);
		var $active = j('>div.active',$airItems);
		//var $active = j('div.airItems>div.active');

		//var $next = $('>div',$airItems).eq(jumpToIndex);
		//var $next = j('div.airItems>div').eq(jumpToIndex);
		var $next = j('>div',$airItems).eq(jumpToIndex);
		
		$active.addClass('outgoing');
		$next.css({ opacity: 0.0 })
			.addClass('active')
			.animate({ opacity: 1.0 }, 500, function() {
				$active.removeClass('active outgoing');
				currentItem=jumpToIndex;
			}
		);
		$active.animate({ opacity: 0.0 }, 500);
		var $airItemNav=j('#'+adnoliIR.airDivId+'>div.airItemNav');
		//var $jumpTo = $('>span',$airItemNav);
		//var $jumpTo = j('div.airItemNav>span');
		var $jumpTo = j('>span',$airItemNav);
		$jumpTo.each(function(){
			j(this).css('background-color',adnoliIR.colorPassive);
			}
		);
		$jumpTo.eq(jumpToIndex).css('background-color',adnoliIR.colorActive);
		return false;
	}
}

//EXAMPLE OF HOW TO INVOKE
/*
var objAIR = new adnoliIR(
	{"thisPluginId":"MyTest",
	"parentDiv":"appendHere",
	"items":[
		{
		"url":"#first",
		"img":"http://184.106.223.37/canvas/images/indego-africa/NM-BRCLT-WVN-NM11.jpg",
		"text":"This is the text description for the first item."
		},
		{
		"url":"#second",
		"img":"http://184.106.223.37/canvas/images/indego-africa/KL-Z0PJ-9WAN.jpg",
		"text":"This is the second item. And this is a text description for it."
		},
		{
		"url":"#third",
		"img":"http://184.106.223.37/canvas/images/indego-africa/COSMETICS-BAG-RH11.jpg",
		"text":"Three items makes a good test. So here is some text talking about the third item."
		}
		,
		{
		"url":"#fourth",
		"img":"http://184.106.223.37/canvas/images/indego-africa/KL-Z0PJ-9WAN.jpg",
		"text":""
		}
		],
	"navColorPassive":"blue",
	"navColorActive":"red",
	"width":"250",
	"height":"250",
	"duration":"2000",
	"textBG":"rgba(0,0,0,.3)",
	"textColor":"#fff",
	"arrowsBG":"rgba(0,0,0,.7)",
	"arrowsColor":"#fff"
	}
);
*/
