(function($) {
	$.fn.vPlayer = function(o) {

		var defaults = {
			autoplay : "off",
			videoWidth : 0,
			videoHeight : 0,
			constrols_out_opacity : 0,
			constrols_normal_opacity : 0.9
		}

		o = $.extend(defaults, o);

		this.each( function() {

			var cthis;
			var thisId;
			var controlsDiv;
			var videoWidth;
			var videoHeight;
			var totalWidth;
			var totalHeight;
			var video;
			var aux=0;
			var aux2=0;
			var full=0;
			var inter;
			var lastVolume;
			var defaultVolume;
			var infoPosX;
			var infoPosY;
			var wasPlaying=false;
			var autoplay="off";
			var volumecontrols;
			var fScreenControls;
			var playcontrols;
			var scubbar;
			var info;
			var infotext;
			var volumecontrols;

			if(jQuery.browser.msie || is_ios()==true)
				return;

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

			video=jQuery(this).children().eq(0)[0];
			video.controls=false;

			autoplay=o.autoplay;
			videoWidth=o.videoWidth;
			videoHeight=o.videoHeight;

			if(autoplay=='on'){
				wasPlaying=true;
			}
			inter = setInterval(check,50);

			function playMovie() {
				cthis.find('.preview').hide();
				playcontrols.children().eq(0).css('visibility','hidden');
				playcontrols.children().eq(1).css('visibility','hidden');
				playcontrols.children().eq(2).css('visibility','visible');
				playcontrols.children().eq(3).css('visibility','visible');
				video.play();
				wasPlaying=true;
			}

			function pauseMovie() {
				playcontrols.children().eq(0).css('visibility','visible');
				playcontrols.children().eq(1).css('visibility','visible');
				playcontrols.children().eq(2).css('visibility','hidden');
				playcontrols.children().eq(3).css('visibility','hidden');
				video.pause();
				wasPlaying=false;
			}

			function check() {
				if(Number(video.readyState)>=3) {
					clearInterval(inter)
					handleReady();
				}
			}
			

			function handleReady() {
				if(localStorage!=null) {
					if(localStorage.getItem('volumeIndex')===null)
						defaultVolume=1;
					else
						defaultVolume=localStorage.getItem('volumeIndex');
				}
				cthis.append('<div class="controls"></div>')
				controlsDiv=cthis.find('.controls')

				if(videoWidth==0) {
					videoWidth= $(video).width();
					videoHeight= $(video).height();
				}

				totalWidth=videoWidth;
				totalHeight=videoHeight;

				jQuery(this).css({
					'width' : videoWidth,
					'height' : videoHeight
				})

				if(cthis.css('position')!='absolute')
					cthis.css('position', 'relative')

				jQuery(video).css({
					'position' : 'absolute',
					'z-index' : '97',
					'background-color' : '#000000'
				})

				controlsDiv.append('<div class="background"></div>')
				controlsDiv.append('<div class="playcontrols"></div>')
				controlsDiv.append('<div class="scrubbar"></div>')
				controlsDiv.append('<div class="timetext"></div>')
				controlsDiv.append('<div class="volumecontrols"></div>')
				controlsDiv.append('<div class="fscreencontrols"></div>')
				if(jQuery(video).attr('data-description')!=undefined) {
					controlsDiv.append('<div class="info"></div>')
					controlsDiv.append('<div class="infoText"></div>')

				}

				if(cthis.attr('data-img')!=undefined) {
					cthis.append('<div class="preview"><img src="'+ cthis.attr('data-img') +'"/></div>');
				}
				info=cthis.find('.info');
				infotext=cthis.find('.infoText');

				////info

				if(jQuery(video).attr('data-description')!=undefined)
					infotext.append('<div class="rounded descriptionText">'+jQuery(video).attr('data-description') +'</div>');
				else {
					infotext.hide();
					info.hide();
				}
				cthis.find('.info').click(handleInfo)


				playcontrols=cthis.find('.playcontrols');
				playcontrols.append('<div class="playSimple"></div>');
				playcontrols.append('<div class="playHover"></div>');
				playcontrols.append('<div class="stopSimple"></div>');
				playcontrols.append('<div class="stopHover"></div>');
				playcontrols.click(onPlayPause)
				playcontrols.hover( function () {
					//
					playcontrols.children().eq(1).animate({
						opacity:1
					}, {
						queue: false,
						duration: 300
					})
					playcontrols.children().eq(3).animate({
						opacity:1
					}, {
						queue: false,
						duration: 300
					})

				}, function () {

					playcontrols.children().eq(1).animate({
						opacity:0
					}, {
						queue: false,
						duration: 300
					})
					//console.log(playcontrols.children());
					playcontrols.children().eq(3).animate({
						opacity:0
					}, {
						queue: false,
						duration: 300
					})
				})

				scrubbar=cthis.find('.scrubbar');
				scrubbar.append('<div class="scrub-bg"></div>');
				scrubbar.append('<div class="scrub"></div>');
				scrubbar.click(handleScrub);


				var checkInter = setInterval(checkTime,100)



				volumecontrols=cthis.find('.volumecontrols');
				volumecontrols.append('<div class="volumeicon"></div>');
				volumecontrols.append('<div class="volume_static"></div>');
				volumecontrols.append('<div class="volume_active"></div>');
				volumecontrols.append('<div class="volume_cut"></div>');
				cthis.find('.volumecontrols').click(handleVolume)




				fScreenControls=cthis.find('.fscreencontrols');
				fScreenControls.append('<div class="full"></div>');
				fScreenControls.append('<div class="fullHover"></div>');
				fScreenControls.click(onFullScreen)
				fScreenControls.hover( function () {
					fScreenControls.children().eq(1).animate({
						opacity:1
					}, {
						queue: false,
						duration: 300
					})
				}, function () {
					fScreenControls.children().eq(1).animate({
						opacity:0
					}, {
						queue: false,
						duration: 300
					})
				})
				resizePlayer(videoWidth,videoHeight)
				setupVolume(defaultVolume)



				if(autoplay=='on'){
					playMovie();
				}
					
					
					
				cthis.mouseout( function() {

					controlsDiv.animate({
						opacity : o.constrols_out_opacity
					}, {
						queue:false,
						duration:200
					})
				})
				cthis.mouseover( function() {

					controlsDiv.animate({
						opacity : o.constrols_normal_opacity
					}, {
						queue:false,
						duration:200
					})
				})
				$(window).resize( function () {
					if(full===1) {
						totalWidth=$(window).width();
						totalHeight= $(window).height();
						resizePlayer(totalWidth,totalHeight)
					}
				})
				
				
				

				function onPlayPause() {
					if (video.paused) {
						playMovie();
					} else {
						pauseMovie();
					}
				}

				function resizePlayer(warg, harg) {
					cthis.css({
						'width' : warg,
						'height' : harg
					})

					jQuery(video).css({
						width:warg,
						height:harg
					})

					cthis.find('.background').css({
						'width' : warg
					})

					cthis.find('.preview').children().eq(0).css({
						'width' : warg,
						'height' :harg
					})

					controlsDiv.css({
						'width': warg,
						'height':harg
					})
					scrubbar=cthis.find('.scrubbar').children();
					scrubbar.eq(0).width(warg-201);
					scrubbar.eq(0).height(12);
					scrubbar.eq(1).height(12);

					infoPosX=parseInt(controlsDiv.find('.infoText').css('left'));
					infoPosY=parseInt(controlsDiv.find('.infoText').css('top'));
				}
				function handleInfo() {
					infotext=cthis.find('.infoText');

					if (infotext.css('opacity') == 0) {
						infotext.animate({
							'left': '0',
							'opacity': '0'
						}, {
							queue: false,
							duration: 0
						})

						infotext.animate({
							'left': infoPosX,
							'opacity': '1'
						}, {
							queue: false,
							duration: 700
						})
					} else {
						infotext.animate({
							'left': totalWidth,
							'opacity': '0'
						}, {
							queue: false,
							duration: 700
						})
					}

				}

				function handleScrub(e) {
					scrubbar=cthis.find('.scrubbar');
					if(wasPlaying==false)
						pauseMovie();
					else
						playMovie();
					video.currentTime = (e.pageX-(scrubbar.offset().left))/(scrubbar.children().eq(0).width()) * video.duration;
				}

				function checkTime() {
					scrubbar=cthis.find('.scrubbar');
					aux=((video.currentTime/video.duration)*(scrubbar.children().eq(0).width()))
					scrubbar.children().eq(1).width(aux)
					cthis.find('.timetext').html('<font color="#FFFFFF" size="1px">' + formatTime(video.currentTime) +  '</font><font color="gray" size="1px">/' + formatTime(video.duration) + '</font>')
				}



				function handleVolume(e) {
					volumecontrols=cthis.find('.volumecontrols').children();
					if((e.pageX-(volumecontrols.eq(1).offset().left))>=0) {
						aux = (e.pageX-(volumecontrols.eq(1).offset().left));

						volumecontrols.eq(2).height(24)
						volumecontrols.eq(2).css('visibility','visible')
						volumecontrols.eq(3).css('visibility','hidden')

						setupVolume(aux/volumecontrols.eq(1).width())
					} else {
						if(volumecontrols.eq(3).css('visibility')=='hidden') {
							lastVolume=video.volume;
							video.volume=0;
							volumecontrols.eq(3).css('visibility','visible')
							volumecontrols.eq(2).css('visibility','hidden')
						} else {
							video.volume=lastVolume;
							volumecontrols.eq(3).css('visibility','hidden')
							volumecontrols.eq(2).css('visibility','visible')
						}
					}

				}

				function setupVolume(arg) {
					var volumeControl=cthis.find('.volumecontrols').children();
					if(arg>=0)
						video.volume=arg;
					volumeControl.eq(2).width(arg*volumeControl.eq(1).width());
					if(localStorage!=null)
						localStorage.setItem('volumeIndex', arg);
				}


				function onFullScreen() {

					totalWidth= $(window).width()
					totalHeight= $(window).height()

					if(full==0) {
						full=1;

						cthis.css({
							'position' : 'fixed',
							'z-index' : 9999,
							'left' : '0px',
							'top' : '0px',
							'width': '100%',
							'height': '100%'
						})
						jQuery('body').css('overflow', 'hidden');
						resizePlayer(totalWidth,totalHeight)
						jQuery(this).parent().parent().parent().parent().parent().turnFullscreen();
					} else {
						full=0;
						cthis.css({
							'position' : 'relative',
							'left' : '0px',
							'top' : '0px',
							'width': videoWidth,
							'height': videoHeight
						})
						jQuery('body').css('overflow', 'auto');
						resizePlayer(videoWidth, videoHeight)
						jQuery(this).parent().parent().parent().parent().parent().turnNormalscreen();
					}
				}

				
				
				
				
				function formatTime(arg) {
					//formats the time
					var s = Math.round(arg);
					var m = 0;
					if (s > 0) {
						while (s > 59) {
							m++;
							s -= 60;
						}
						return String((m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s);
					} else {
						return "00:00";
					}
				}
				
			}

			epauseMovie = function(arg) {
				var findPlayControls= arg.find('.playcontrols').children();
				findPlayControls.eq(0).css('visibility','visible');
				findPlayControls.eq(1).css('visibility','visible');
				findPlayControls.eq(2).css('visibility','hidden');
				findPlayControls.eq(3).css('visibility','hidden');
			//	arg[0].pause();
			arg.find('video')[0].pause();
  };   

		}); // end each
	
			}
			

})(jQuery);

			


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

