(function($) {
	$.fn.vGallery = function(options) {

		var defaults = {
			menuWidth : 100,
			menuHeight : 350,
			menuSpace : 0,
			randomise:"off",
			autoplay : "off"
		},

		options = $.extend(defaults, options);

		this.each( function() {

var cthis = jQuery(this);
			var thisId=$(this)[0].getAttribute('id');
			
			
			
			
		var nrChildren = 0;

		var sliderMain;
		var sliderCon;
		var navMain;
		var navCon;

		var videoWidth;
		var videoHeight;
		var menuWidth;
		var menuHeight;
		var totalWidth;
		var totalHeight;
		var backgroundY;
		var used = new Array();
		var content = new Array();
		var currNr=-1;

			var wpos = 0;
			var hpos=0;
			

			nrChildren=jQuery(this).children().length;

			videoWidth=parseInt(jQuery(this).css("width"));
			videoHeight=parseInt(jQuery(this).css("height"));
			backgroundY=options.backgroundY;
			menuWidth=options.menuWidth;
			menuHeight=options.menuHeight;
			totalWidth=videoWidth+menuWidth;
			totalHeight=videoHeight;
			
			//cthis.shuffle();
			
			for(i=0;i<nrChildren;i++) {
				content[i]=jQuery(this).children().eq(i);
					//sliderCon.append(content[i]);
					if(options.randomise=='on')
				randomise(0,nrChildren);
				else
				used[i]=i;
			}
			
			jQuery(this).append('<div class="sliderMain"><div class="sliderCon"></div></div>')
			jQuery(this).append('<div class="navMain"><div class="navCon"></div></div>')
			
			sliderMain=jQuery(this).find('.sliderMain');
			sliderCon=jQuery(this).find('.sliderCon');
			
			navMain=jQuery(this).find('.navMain');
			navCon=jQuery(this).find('.navCon');

			jQuery(this).css({
				'position' : 'relative',
				'width' : totalWidth,
				'height' : totalHeight
			})
			
			for(i=0;i<nrChildren;i++) {
			
				navCon.append('<div>' + cthis.children().eq(used[i]).attr('data-description') + '</div>')
				navCon.children().eq(i).addClass("navigationThumb");
				navCon.children().eq(i).css({
					'width' : menuWidth,
					'top' : hpos
				})

				navCon.children().eq(i).click(handleButton);

				hpos+=80;
			}
			
			
			var i=0;

			
			for(i=0;i<nrChildren;i++) {
				if(is_ios())	break;	
					sliderCon.append(content[used[i]]);
			}
			
			
			for(i=0;i<nrChildren;i++) {
				
				var autoplaysw='off';
				if(i==0&&options.autoplay=='on')
				autoplaysw='on';
				
				if(is_ios()){
					//console.log(cthis.eq(i).children('video'));
					//if(i>0)	cthis.eq(i).children('video').css('opacity', '0');
					//console.log(videoWidth);
					cthis.children().eq(i).find('video').width(videoWidth);
					cthis.children().eq(i).find('video').height(videoHeight);
					//cthis.eq(i).fadeOut('slow');
					cthis.children().eq(i).css({
						'position' : 'absolute',
						'top' : 0,
						'left' : 0
					})
					if(i>0)
					cthis.children().eq(i).css('display', 'none')
				}else{
				sliderCon.children().eq(i).vPlayer({
					videoWidth: videoWidth,
					videoHeight: videoHeight,
					autoplay:autoplaysw
				})
				}
			}
			

			for (i = 0; i < nrChildren; i++) {
				if(is_ios())	break;
				
				sliderCon.children().eq(i).css({
					'position' : 'absolute',
					'top' : '0px',
					'left' : wpos
				})
				wpos+=totalWidth
			}

			sliderMain.css({
				'width' : totalWidth,
				'height' : totalHeight
			})

			navMain.css({
				'width' : menuWidth,
				'height' : totalHeight,
				'left' : videoWidth
			})
			
			if(is_ios())
			navMain.css('overflow', 'auto');
			
			if(options.menuSpace !=0) {
				navMain.css({
					'left' : videoWidth + options.menuSpace
				})
			}
			navCon.css({
				'position' : 'relative'
			})

			if((jQuery('.navigationThumb').eq(0).height())*nrChildren>totalHeight)
				navMain.mousemove(handleMouse)

			var hpos=0;

			if(nrChildren==1) {

				jQuery(this).css({
					'width' : videoWidth
				})
				navMain.hide();
			}
			gotoItem(0)
			
				

			function randomise(arg, max) {
				arg = parseInt(Math.random() * max);
				var sw = 0;
				for (j = 0; j < used.length; j++) {
					if (arg == used[j])
						sw = 1;
				}
				if (sw == 1) {
					randomise(0, max);
					return;
				} else
					used.push(arg);
				return arg;
			}
			

			function handleMouse(e) {
				if(is_ios()==false)
				navCon.css({'top' : -((e.pageY-navMain.offset().top)/totalHeight * ((80*nrChildren) - totalHeight))	});
			}

			function handleButton(e) {
				gotoItem(navCon.children().index(e.currentTarget))
			}

			function gotoItem(arg) {
				if(currNr==arg)
					return;
				

				if(is_ios()){
				//	console.log(currNr, arg);
					if(currNr>-1){
					cthis.children().eq(currNr).fadeOut('slow');
					}
					cthis.children().eq(arg).fadeIn('slow');
					
				}else{
				if(currNr>-1) {

					sliderCon.children().eq(currNr).animate({
						'left' : 0,
						'top' : 0
					},0)

					sliderCon.children().eq(currNr).animate({
						'left' : 0,
						'top' : -totalHeight
					},700)

      		    $.browser.flock = /flock/.test(navigator.userAgent.toLowerCase()); 

		            if(!$.browser.flock)
					if((!jQuery.browser.msie) || is_ios()==true)
				//	sliderCon.children().eq(currNr).children().eq(0).epauseMovie(sliderCon.children().eq(currNr).children().eq(0));
					epauseMovie(sliderCon.children().eq(currNr));
				}

				sliderCon.children().eq(arg).animate({
					'left' : 0,
					'top' : totalHeight
				},0)

				sliderCon.children().eq(arg).animate({
					'left' : 0,
					'top' : 0
				},700)
}
				currNr=arg;
			}

			$.fn.turnFullscreen = function() {
				jQuery(this).css({
					'position' : 'static'
				})
				sliderMain.css({
					'position' : 'static'
				})
			}
			$.fn.turnNormalscreen = function() {
				jQuery(this).css({
					'position' : 'relative'
				})
				sliderMain.css({
					'position' : 'relative'
				})
				for (i = 0; i < nrChildren; i++) {
					sliderCon.children().eq(i).css({
						'position': 'absolute'
					})
				}
			}
			return this;

		}); // end each
	}
})(jQuery);

			function is_ios() {
				return (
					(navigator.platform.indexOf("iPhone") != -1) ||
					(navigator.platform.indexOf("iPod") != -1) ||
					(navigator.platform.indexOf("iPad") != -1)
				)
			}
