function makeStandaloneVideoXML(videoURI, posterURI)
{
	return '/feed/xml_video/'+escape(videoURI.replace(/\//g, '|'))+'/'+escape(posterURI.replace(/\//g, '|'));
}

 (function($) {

    $.fn.video = function(options) {          
        
        var settings = jQuery.extend({
            xmlPath: null,
            width: 376,
            height: 211,
            noShare: false
        }, options);
        
        if(settings.xmlPath == null) {
            return false;
        }
         
        var htmlVideo = true;
        
        if(!supports_video()) {
            htmlVideo = false;
        } else {
            var video = {
                poster: '',
                src: {
                    mp4: '',
                    ogv: ''
                }
            };
            
            $.ajax({
                url: settings.xmlPath,
                dataType: 'xml',
                async: false,
                success: function(data, status, xhr) {
                    video.poster = $(data).find('imgUrl').text();
                    video.src.mp4 = $(data).find('vidUrlMp4').text();
                    video.src.ogv = $(data).find('vidUrlOgv').text();
                    settings.shareUrl = $(data).find('share_url').text();
                    settings.shareText = $(data).find('twitter_share').text();
                    settings.shareMailSubject = $(data).find('share_email_subject').text();
                    settings.shareMailBody = $(data).find('share_email_body').text();
                    settings.embed = $(data).find('embed_code').text().trim();
                }
            });
                      
        }  
        
        this.each(function(){
          
          var theId = $(this).attr('id');
                         
           if(htmlVideo) {
             
               $videoPlayer = $('<div class="videoPlayer isVideo new unplayed"></div>');
               if(settings.noShare === false) {
                   $videoPlayer.addClass('shared');
               }
               $videoPlayer.css({width: settings.width, height: settings.height});
               
               if($(this).attr('id')) {
                   $videoPlayer.attr('id', $(this).attr('id'));
               }
               
               $video = $('<video></video>');
               $video.css({width: settings.width, height: settings.height});
               $video.attr('poster', video.poster);
               $video.append('<source src="'+video.src.mp4+'" />').append('<source src="'+video.src.ogv+'" />');
               
               $buffering = $('<img src="'+BASE_URL+'images/buffer.gif" class="buffering" />');
               
               $buffering.css({position: 'absolute', bottom: 5, left: 5, width: 20, height: 20, display: 'none'});
                                             
               $controls = $('<div class="controls"></div>');
               
               
               $controls.append('<div class="playPause play"></div>');
               $controls.append('<div class="scrubContainer"><div class="greybar"></div><div class="progress"></div><div class="scrubber"></div></div>');
               $controls.append($buffering);
               
               $videoPlayer.append($video)
               $videoPlayer.append('<img style="position: absolute; top: 0px; left: 0px;" src="'+video.poster+'" width="'+settings.width+'" height="'+settings.height+'" />');
               $videoPlayer.append($controls);
               
               if(settings.noShare === false) {
                   $controls.append('<div class="share"><div>share this video</div></div>');
                   
                   $embed = $('<div class="embed"></div>');
                   $embed.append('<div class="close"></div>');
                   $embedContent = $('<div class="content"></div>');
                   $embedContentTable = $('<table></table>');
                   
                   if(settings.shareUrl) {
                       $embedContentTable.append('<tr>\
                             <td valign="top" height="30" class="label">Share</td>\
                             <td valign="top" class="social">\
                                 <a target="_blank" href="http://www.facebook.com/sharer.php?u='+settings.shareUrl+'"><img src="'+BASE_URL+'images/videoFacebook.png" width="16" height="16" alt="" /></a>\
                                 <a target="_blank" href="http://www.twitter.com/share?url='+settings.shareUrl+'&text='+settings.shareText+'"><img src="'+BASE_URL+'images/videoTwitter.png" width="16" height="16" alt="" /></a>\
                                 <a target="_blank" href="mailto:?subject='+settings.shareMailSubject+'&body='+settings.shareMailBody+'"><img src="'+BASE_URL+'images/videoEmail.png" width="16" height="16" alt="" /></a>\
                             </td>\
                         </tr>');
                   }
                   
                   if(settings.embed) {
                       $embedContentTable.append('<tr>\
                             <td valign="top" class="label">Embed</td>\
                             <td valign="top">\
                                 <textarea>'+settings.embed+'</textarea>\
                                 <div style="position: relative; top: -4px; padding-top: 4px" class="clip copy" id="clip_'+theId+'" >\
                                     <span >copy to clipboard +</span>\
                                 </div>\
                             </td>\
                         </tr>');
                   }
                   
                   $embedContent.append($embedContentTable);
                   $embed.append($embedContent);
                   
                   $videoPlayer.append($embed);
                   
                   
               }
               
               $(this).replaceWith($videoPlayer);            
               
               initHtmlVideo();      
           } else {
             // flash fallback
             
            var plflashvars = {};
            if(settings.noShare === false) {
              plflashvars.player = "expanded"; 
            } else {
              plflashvars.player = "small";
            }
            
            plflashvars.videoWidth = settings.width;
            plflashvars.videoHeight = settings.height;
            
            plflashvars.xml_url = settings.xmlPath;
            var plparams = {};
            plparams.base = BASE_URL;
            plparams.menu = "false";
            plparams.scale = "noscale";
            plparams.salign = "t";
            plparams.allowscriptaccess = "always";
            plparams.allownetworking = "all";
            plparams.wmode = "transparent";
            var plattributes = {};
            plattributes.id = $(this).attr('id');//;"player_"+$(this).attr('id');
            plattributes.name = $(this).attr('id');//"player_"+$(this).attr('id');
            plattributes.align = "top";
            var rand = Math.random()*9999999
            swfobject.embedSWF(BASE_URL+"swf/video.swf?r="+rand+$(this).attr('id'), $(this).attr('id'), settings.width, settings.height, "9.0.115", false, plflashvars, plparams, plattributes);
           }
            
        });
        
    }
    
    function supports_video() {
      return !!document.createElement('video').canPlayType;
    }
    
    var initHtmlVideo = function() {
       
       $('.videoPlayer.new').hover(function(){
           if($(this).is('.unplayed')) {
               return false;
           }
           $('.controls', $(this)).fadeIn('fast');
       }, function(){
           if($(this).is('.unplayed')) {
               return false;
           }
           $('.controls', $(this)).fadeOut('fast');
       })

       $('.videoPlayer.new .share').click(function(){
         
         $('.embed', $(this).closest('.videoPlayer')).each(function(){
             var pw = $(this).closest('.videoPlayer').width()/2;
             var ph = $(this).closest('.videoPlayer').height()/2;
             var h = $(this).height()/2;
             var w = $(this).width()/2;

             var left = pw-w;
             var top = ph-h;

             $(this).css({left: left, top: top});

          });
          
         $vp = $(this).closest('.videoPlayer');
         $('.embed', $vp).show();
         clip.glue($('.embed .clip', $vp)[0]);
         clip.addEventListener( 'mouseOver', function(client) {
           
         });
         
         clip.addEventListener( 'mousedown', function(client) { 
            clip.setText( $('textarea', $vp ).val() );
         });
         
         clip.addEventListener( 'complete', function(client) { 
            $('.copy span', $vp ).text('copied!');
          });
         
                  
         //console.log($('.embed .clip', $(this).closest('.videoPlayer')));
         
       });

       $('.videoPlayer.new .embed .close').click(function(){
          $(this).parent().hide(); 
       });

       $('.videoPlayer.new .controls .playPause').click(function(){

           var v = $('video', $(this).closest('.videoPlayer'))[0];
           var $vp = $(this).closest('.videoPlayer');
           
           $('img', $vp).remove();
           
           var $playPause = $(this);
           var scrubWidth = $('.scrubContainer', $vp).width()-3;

           $vp.removeClass('unplayed');

           $(v).bind('timeupdate', function() {
               if(!$('.scrubber', $vp).hasClass('ui-draggable-dragging')) {
                   $('.scrubber', $vp).css('left', (v.currentTime / v.duration)*scrubWidth+6);
               }
               $('.progress', $vp).css('width', (v.currentTime / v.duration)*scrubWidth);
           });

           $(v).bind('ended', function(){
              v.currentTime = 0;
              v.pause();
              $playPause.removeClass('pause').addClass('play');
              if($vp.hasClass('shared')) {
                  $('.share', $vp).click();
              } 
           });
           
           $(v).bind('waiting', function() {
             $('.buffering', $vp).each(function(){
                $(this).show();
             });
           });
           
           $(v).bind('canplay', function() {
              $('.buffering', $vp).hide();
           });
           
           if($(this).is('.play')) {
               v.play();
           } else {
               v.pause();
           }

           $(this).toggleClass('play').toggleClass('pause');

       });

       $('.videoPlayer.new .scrubContainer').click(function(e){
           var pos = e.layerX;
           $vp = $(this).closest('.videoPlayer');
           v = $('video', $vp)[0];
           v.currentTime = (pos / $('.scrubContainer', $vp).width()) * v.duration; 
           $('.scrubber', $vp).css({left: pos});
       });

       $('.videoPlayer.new .scrubber').draggable({
           containment: 'parent',
           stop: function() {
               var v = $('video', $(this).closest('.videoPlayer'))[0];
               v.currentTime = ($(this).position().left / $(this).parent().width()) * v.duration; 
           }
       });
       
       $('.videoPlayer').removeClass('new');
   }
    
})(jQuery);
