/**************************************************************************/
//	<<<<<<<<<<<<<<	[VERSION 2.1]	>>>>>>>>>>>>>>
//	<summary>
//		Created By		:	Asif Ahmed
//		Company			:	WebOnRetail Technologies
//		Creation Date	:	02 july 2010
//		Date Modified	:	05 August 2010
//		Dependencies	:	None
//		Website			:	www.webonretail.com
//		Email			:	asif.ahmed01@gmail.com
//		Copyright (c) 2010 webonretail Technologies. All rights reserved.
//	</summary>
/**************************************************************************/

(function($) {
    $.fn.asifslideshow = function(o) {
        return this.each(function() {
            new  $slideshow(this, o);
        });
    };
	
    //Declare Global Variable
	var Interval=false;

    // Default configuration properties.
    var defaults = {
		slideshownode:'.bitsSlideShow',
		imagecontainer:'DIV',
		showcontrolbutton:true,
		autoplay:true,
		animationspeed:1000,
		refreshrate:3000,
		highlightnavigationlink:false
    };
	
	$.asifslideshow = function(e, o) {
			defaults = $.extend({}, defaults, o || {});
			if(defaults.showcontrolbutton && $(defaults.slideshownode+' '+defaults.imagecontainer).length > 1)	{
				$.asifslideshow.controlbox();
				//set control
				$(e).find('a.buttonNext').bind('click',function(){
					$slideshow.slideswitch('next');
					return false;
				});			
				$(e).find('a.buttonPrev').bind('click',function(){
					$slideshow.slideswitch('previous');
					return false;
				});			
				$(e).find('a.buttonPlay').bind('click',function(){
					$slideshow.startslideshow();
					return false;
				});			
				$(e).find('a.buttonPause').bind('click',function(){
					$slideshow.stopslideshow();
					return false;
				});			
			}
			if((!(defaults.showcontrolbutton) || defaults.autoplay) && defaults.showcontrolbutton && $(defaults.slideshownode+' '+defaults.imagecontainer).length > 1)	{
				$.asifslideshow.startslideshow();
			}
		};
		
	// Create shortcut for internal use
	var $slideshow = $.asifslideshow;
	
	$slideshow.fn = $slideshow.prototype = { asifslideshow: '1.0.0' };
	
	$slideshow.fn.extend = $slideshow.extend = $.extend;
	
	$slideshow.extend({
		controlbox: function() {
			var strBox = "<span id='apDivSlideShowControlBox' class='slideShowControlBox'>";
				strBox += "<a href='javascript:void(0);' id='buttonNext' class='buttonNext' title='Next'>&nbsp;</a>";
				strBox += "<a href='javascript:void(0);' id='buttonPrev' class='buttonPrev' title='Previous'>&nbsp;</a>";
				strBox += "<a href='javascript:void(0);' id='buttonPlay' class='buttonPlay' title='Play'>&nbsp;</a>";
				strBox += "<a href='javascript:void(0);' id='buttonPause' class='buttonPause' title='Pause'>&nbsp;</a>";
			strBox += "</span>";
			
			$(defaults.slideshownode).append(strBox);
			
			$(defaults.slideshownode).hover(function () { 
				$(this).find('span#apDivSlideShowControlBox').show(); 
			}, function () { 
				$(this).find('span#apDivSlideShowControlBox').hide(); 
			});
	
			//Show Hide Control
			$(defaults.slideshownode +' ' + defaults.imagecontainer).length > 1 ? $(defaults.slideshownode).find('span#apDivSlideShowControlBox').show() : $(defaults.slideshownode).find('span#apDivSlideShowControlBox').hide();
			$(defaults.slideshownode).find('span#apDivSlideShowControlBox').hide();					
			$(defaults.slideshownode).find('a.buttonPrev').hide();
			$(defaults.slideshownode).find('a.buttonPause').hide();
		},
		slideswitch: function(i) {
			if($('.active').dequeue().length <= 1)	{
				var iNo = $(defaults.slideshownode + ' > '+ defaults.imagecontainer).length;
				var objLastChild = $(defaults.slideshownode + ' ' + defaults.imagecontainer + ':nth-child(' + iNo + ')');
	
				var $next, $active = $(defaults.slideshownode+' '+defaults.imagecontainer+'.active');
				if ($active.length == 0) $active=$(objLastChild);
				switch(i)	{
				case 'next':
					$slideshow.stopslideshow();
					objLastChild.is('.active') ?  $(".buttonPrev").hide() : $(".buttonPrev").show();
					objLastChild.prev().is('.active') ?  $(".buttonNext").hide() : $(".buttonNext").show();
					$next = $active.next();
				break;
				case 'previous':
					$slideshow.stopslideshow();
					$(".buttonNext").show();
					$(defaults.slideshownode+' '+defaults.imagecontainer+':first').next().is('.active') ?  $(".buttonPrev").hide() : $(".buttonPrev").show();
					$next = $active.prev();
					break;
				case 'random':
					//uncomment the 3 lines below to pull the images in random order
					var $sibs  = $active.siblings();
					var rndNum = Math.floor(Math.random() * $sibs.length );
					var $next  = $( $sibs[ rndNum ] );
					break;
				default:
					// use this to pull the images in the order they appear in the markup
					$next =  objLastChild.is('.active') ? $(defaults.slideshownode+' '+defaults.imagecontainer+':first') : $active.next();
					objLastChild.is('.active') ?  $(".buttonPrev").hide() : $(".buttonPrev").show();
					objLastChild.prev().is('.active') ?  $(".buttonNext").hide() : $(".buttonNext").show();
					break;
				}
				$active.addClass('last-active');
				$next.css({opacity: 0.0}).addClass('active').dequeue().stop().animate({opacity: 1.0}, defaults.animationspeed, function() { $active.removeClass('active last-active'); });
			}
		},
		startslideshow: function() {
			if(Interval == false){
				Interval = window.setInterval('$.asifslideshow.slideswitch()', defaults.refreshrate);
				$(defaults.slideshownode).find('a.buttonPlay').hide();
				$(defaults.slideshownode).find('a.buttonPause').show();
			}
		},
		stopslideshow: function() {
			if(Interval != false){
				window.clearInterval(Interval);
				Interval = 	false;
				$(defaults.slideshownode).find('a.buttonPlay').show();
				$(defaults.slideshownode).find('a.buttonPause').hide();
			}
		},
		switchchild: function(obj, childid) {
			$lastactive = $(obj).find('.active');
			$active = $(obj).find(childid);
			if(!($active.is('.active')) && $(obj).find('.active').dequeue().length <=1) {
				$lastactive.addClass('last-active');
				$active.css({opacity: 0.0}).addClass('active').dequeue().stop().animate({opacity: 1.0}, 1000, function() { $lastactive.removeClass('active last-active'); });
			};
			return false;
		},
		showimagedetail: function(e) {
			if($(e).css('visibility') == 'hidden')	{
				$detailwindow = $('[detailwindow=' + $(e).attr('detailwindow') + ']');
				$detailwindow.each(function(index) {
					if($(e).attr('detailwindow') == $(this).attr('detailwindow'))	{
						$(this).css({'visibility':'hidden'});
					};
				});
				
				if($(e).find('a#closebutton').length == 0)	{
					$(e).append("<a id='closebutton' class='closebutton' href='javascript:void(0);'>&nbsp;X&nbsp;</a>");
				};
				$(e).find('a#closebutton').bind("click", function(){
					$(this).parent().css({opacity: 1.0}).dequeue().stop().animate({opacity: 0.0}, 1000, function() { $(this).css({'visibility':'hidden'}); });
					var $overlay = $(e).parent().find('div#overlay[overlay=overlay]');
					if($overlay.length > 0)	{
						$overlay.css({opacity: $overlay.css('opacity')}).dequeue().stop().animate({opacity: 0.0}, 1000, function() { $overlay.remove(); });
					};
				});
				$(e).css({'visibility':'visible'});
				$(e).css({opacity: 0.0}).dequeue().stop().animate({opacity: 1.0}, 1000);
			}
		},
		overlaywithimagedetail: function(e) {
			if($(e).parent().find('div#overlay[overlay=overlay]').length == 0)	{
				$(e).parent().append("<div id='overlay' class='overlay' overlay='overlay'></div>");
			};
			var $overlay = $(e).parent().find('div#overlay[overlay=overlay]');
			var $opacity = $overlay.css('opacity');
			$overlay.css({opacity: 0.0}).dequeue().stop().animate({opacity:$opacity}, 1000, function() { jQuery.asifslideshow.showimagedetail(e); });
		},
		layerabsolutecenter: function(e) {
			var popMargTop = ($(e).height() + 80) / 2;
			var popMargLeft = ($(e).width() + 80) / 2;
			
			//Apply Margin to Popup
			$(e).css({ 
				'margin-top' : -popMargTop,
				'margin-left' : -popMargLeft,
				'position' : 'fixed',
				'left' : '50%',
				'top' : '50%'
			});
			return false;
		},
		highlightcurrentactivenavigation: function(navigationclass, activeclass) {
			var href, currentfilename, winlocation, pathname;
			pathname = window.location.pathname.split('?')[0];
			//pathname = window.location.href.split('?')[0];
			winlocation = $(location).attr('href').length > 0 ? $(location).attr('href').split('?')[0] : window.location.href.split('?')[0];
			currentfilename= winlocation.split('/');
			currentfilename = currentfilename[currentfilename.length - 1].split('.');
			currentfilename = currentfilename.length > 1 ? currentfilename[currentfilename.length - 2].toLowerCase() : currentfilename[currentfilename.length - 1].toLowerCase();
			
			$(navigationclass).each(function(index) {
				if (typeof ($(this).attr("href")) !== "undefined") {
					href = $(this).attr("href").split('/').length > 0 ? $(this).attr("href").split('/') : $(this).attr("href").split("\\");
					href = href.length > 0 ? href[href.length-1] : $(this).attr("href");
					href = href.split('.');
					href = href.length > 1 ? href[href.length - 2].toLowerCase() : href[href.length - 1].toLowerCase();
					
					if((currentfilename == href) || ((href == 'default' || href == 'index' || href == 'intro') && currentfilename.length == 0 )) {
						 $(this).removeClass(jQuery.trim(navigationclass.replace('.', ''))).addClass(jQuery.trim(activeclass.replace('.', '')));
						//if(!defaults.highlightnavigationlink) $(this).attr("href", "javascript:void(0);");
					};
				};
			});
			return false;
		},
		fadeInfadeoutonhoverevent: function(e, opacity) {
			$(e).hover(function(){
				$(this).stop().fadeTo('slow', opacity/100);
			},function(){
				$(this).stop().fadeTo('slow', 1.0);
			});
			return false;
		},
		getbackgroundPosition: function(lobj) {
			var $navPos, $navX='0px', $navY='0px', $localobj = null;
			if($(lobj).length == 0)	{
				$localobj = "<div id='" + lobj.replace('.', '').replace('#', '')  + "' class='" + lobj.replace('.', '').replace('#', '') + "'>&nbsp;</div>";
				 $('body').append($localobj);
				 $(lobj).css({'visibility':'hidden'});
			};
			if($(lobj).css('backgroundPositionX') !== undefined &&  $(lobj).css('backgroundPositionX') != '')	{
				$navX = $(lobj).css('backgroundPositionX').replace('left', '0px');
			};
			if($(lobj).css('backgroundPositionY') !== undefined &&  $(lobj).css('backgroundPositionY') != '')	{
				$navY = $(lobj).css('backgroundPositionY').replace('top', '0px');
			};
			if($(lobj).css('backgroundPosition') !== undefined &&  $(lobj).css('backgroundPosition') != '')	{
				$navPos = $(lobj).css('backgroundPosition').replace('top', '0px').replace('left', '0px');
				$navPos = $navPos.split(' ');
				$navX = $navPos[0];
				$navY = $navPos[1];
			};
			if($localobj!=null) $(lobj).remove();
			$navPos = new Array($navX, $navY);
			return $navPos;
		},
		navigation: function(navigationclass, activeclass) {
			var $position = 0, $navPos = new Array();
			$(navigationclass).each(function(index) {
				$(this).parents().each(function(index) {
					if($(this).attr('animatednavigation') !== undefined) $position = $(this).position();
				});
				$(this).css({'backgroundPosition':($position.left * (-1)) + 'px  ' +  ($position.top * (-1)) + 'px'});
				//$(this).css({ 'background-position':  - $position.left + 'px  ' +  - $position.top + 'px'});
			});
			
			$(activeclass).each(function(index) {
				$navPos =  jQuery.asifslideshow.getbackgroundPosition(activeclass);
				$(this).parents().each(function(index) {
					if($(this).attr('animatednavigation') !== undefined) $position = $(this).position();
				});
				$(this).css({'backgroundPosition':($position.left * (-1)) + 'px  ' +  ($navPos[1])});
			});
			
			$(navigationclass).hover(function () {
				$navPos =  jQuery.asifslideshow.getbackgroundPosition(activeclass);
				$(this).parents().each(function(index) {
					if($(this).attr('animatednavigation') !== undefined) $position = $(this).position();
				});
				//$(this).stop().animate({backgroundPosition:'('+ ($position.left  * (-1)) +'px '+ ($navPos[1]) +')'}, {duration:500})
				var newPos = ($position.left  * (-1)).toString() + 'px ' + $navPos[1].toString();
				$(this).stop().animate({backgroundPosition: newPos});
			}, function () { 
				$(this).parents().each(function(index) {
					if($(this).attr('animatednavigation') !== undefined) $position = $(this).position();
				});
				//$(this).stop().animate({backgroundPosition:'('+ ($position.left * (-1)) +'px '+ ($position.top * (-1)) +'px)'}, {duration:500})
				var newPos = ($position.left * (-1)).toString() + 'px ' + ($position.top * (-1)).toString() + 'px';
				$(this).stop().animate({backgroundPosition:newPos});
			});
			return false;
		},			
		animatednavigation: function(e, activeClass) {
			var isactive = false;
			if($(e).parent().find('div#animatednavigation').length == 0)	{
				$(e).parent().append("<div id='animatednavigation' class='animatednavigation'>&nbsp;</div>");
			};
			var $animatednavigation = $(e).parent().find('div#animatednavigation');
			$(activeClass).parents().each(function(index) {
				if($(e).attr('animatednavigation') == $(this).attr('animatednavigation'))	{
					$position = $(this).position();        
					$animatednavigation.css({ 
						//left:$position.left,
						top:$position.top,
						width:$(this).width(),
						height:$(this).height()
					});
					$animatednavigation.show();
					$animatednavigation.stop(true, false).animate({ left: $position.left + "px" });
					isactive = true;
					return false;
				};
			});
			
			if(!isactive) $animatednavigation.stop(true, false).animate({left:'0px'}, {duration: 500, specialEasing: {left: 'swing'}, complete: function() {$animatednavigation.hide();}});		
			
			$(e).hover(function(){
				$position = $(this).position();        
				$animatednavigation.css({ 
					//left:$position.left,
					top:$position.top,
					width:$(this).width(),
					height:$(this).height()
				});
				$animatednavigation.show();
				$animatednavigation.stop(true, false).animate({ left: $position.left + "px" });
			},function(){
				$(activeClass).parents().each(function(index) {
					if($(e).attr('animatednavigation') == $(this).attr('animatednavigation'))	{
						$position = $(this).position();        
						$animatednavigation.css({ 
							//left:$position.left,
							top:$position.top,
							width:$(this).width(),
							height:$(this).height()
						});
						$animatednavigation.show();
						$animatednavigation.stop(true, false).animate({ left: $position.left + "px" });
						isactive = true;
						return false;
					};
				});
				if(!isactive) $animatednavigation.stop(true, false).animate({left:'0px'}, {duration: 500, specialEasing: {left: 'swing'}, complete: function() {$animatednavigation.hide();}});		
			});
			return false;
		}
	});
})(jQuery);


/* http://keith-wood.name/backgroundPos.html
   Background position animation for jQuery v1.0.1.
   Written by Keith Wood (kbwood{at}iinet.com.au) November 2010.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */

(function($) { // Hide scope, no $ conflict

var BG_POS = 'bgPos';

// Enable animation for the background-position attribute
$.fx.step['backgroundPosition'] = $.fx.step['background-position'] = function(fx) {
	if (!fx.set) { // Initialisation
		var elem = $(fx.elem);
		var bgPos = elem.data(BG_POS); // Original background position
		elem.css('backgroundPosition', bgPos); // Restore original position
		fx.start = parseBackgroundPosition(bgPos);
		fx.end = parseBackgroundPosition($.fn.jquery >= '1.6' ? fx.end :
			fx.options.curAnim['backgroundPosition'] || fx.options.curAnim['background-position']);
		for (var i = 0; i < fx.end.length; i++) {
			if (fx.end[i][0]) { // Relative position
				fx.end[i][1] = fx.start[i][1] + (fx.end[i][0] == '-=' ? -1 : +1) * fx.end[i][1];
			}
		}
		fx.set = true;
	}
	$(fx.elem).css('background-position',
		((fx.pos * (fx.end[0][1] - fx.start[0][1]) + fx.start[0][1]) + fx.end[0][2]) + ' ' +
		((fx.pos * (fx.end[1][1] - fx.start[1][1]) + fx.start[1][1]) + fx.end[1][2]));
};

/* Parse a background-position definition: horizontal [vertical]
   @param  value  (string) the definition
   @return  ([2][string, number, string]) the extracted values - relative marker, amount, units */
function parseBackgroundPosition(value) {
	var presets = {center: '50%', left: '0%', right: '100%', top: '0%', bottom: '100%'};
	var bgPos = value.split(/ /);
	var decodePos = function(index) {
		var pos = (presets[bgPos[index]] || bgPos[index] || '50%').
			match(/^([+-]=)?([+-]?\d+(\.\d*)?)(.*)$/);
		bgPos[index] = [pos[1], parseFloat(pos[2]), pos[4] || 'px'];
	};
	if (bgPos.length == 1 && $.inArray(bgPos[0], ['top', 'bottom']) > -1) {
		bgPos[1] = bgPos[0];
		bgPos[0] = '50%';
	}
	decodePos(0);
	decodePos(1);
	return bgPos;
}

/* Wrap jQuery animate to preserve original backgroundPosition. */
$.fn.animate = function(origAnimate) {
	return function(prop, speed, easing, callback) {
		if (prop['backgroundPosition'] || prop['background-position']) {
			this.data(BG_POS, this.css('backgroundPosition') || 'center');
		}
		return origAnimate.apply(this, [prop, speed, easing, callback]);
	};
}($.fn.animate);

})(jQuery);


jQuery(document).ready(function() {
   load:jQuery.asifslideshow.highlightcurrentactivenavigation('.bitsNavigationLeft','.bitsNavigationLeftHover');
   load:jQuery.asifslideshow.highlightcurrentactivenavigation('.bitsNavigation','.bitsNavigationHover');
   load:jQuery.asifslideshow.highlightcurrentactivenavigation('.bitsNavigationRight','.bitsNavigationRightHover');
   
	$('.bitsNavigation, .bitsNavigationLeft, .bitsNavigationRight').hover(function () {
		$(this).animate({backgroundPosition: '0px -48px'}, {duration:300});
	}, function () { 
		$(this).animate({backgroundPosition: '0px 0px'}, {duration:300});
	});
   
   load:jQuery.asifslideshow.layerabsolutecenter('div.popup_group_1');
	$('.link_two').click(function(){
		jQuery.asifslideshow.overlaywithimagedetail($(this).attr('rel'));
	});
});

