/*
 * Youtube Chromeless Video Plugin
 * http://www.viget.com/
 *
 * Copyright (c) 2010 Trevor Davis
 * Dual licensed under the MIT and GPL licenses.
 * Uses the same license as jQuery, see:
 * http://jquery.org/license
 *
 * @version 0.3
 */
 
(function($) {
	$.fn.ytchromeless = function(options){
    
    //Initial configuration
    var config = {
      videoWidth  : '640',
      videoHeight : '410',
      videoIdBase : 'ytplayer',
      params : { 
		    allowScriptAccess: 'always',
		    wmode: 'transparent'
		  }
    };
        
    return this.each(function(i) {
      
      
    	// initial var setup
      
        var o    = $.extend(config, options),
      
            // set jQuery objects
            $link      = $(this),

            // set variables          
            url        = $link.attr('href'),
            videoId    = $link.attr('id') || o.videoIdBase + i,
            ytVideoId  = url.substr(31),

            // new DOM elements
            $video     = $link.wrap('<div class="video-player"></div>').parent(),
            $controls  = $('<div class="video-controls"></div>' ).appendTo( $video ),
            $toReplace = $('<div class="video"></div>').prependTo($video).attr('id', videoId),
            $bar,
            $indicator,
            $loaded,
            $mute,
            $play,
            $seek,

            // set up the special player object
            player;
           
        	// bind public methods upfront 
        	$video.bind({

          		// playing, pausing, muting, 
          		'togglePlay' : function(){ $video.togglePlay(); },
          		'play'       : function(){ $video.play(); },
          		'pause'      : function(){ $video.pause(); },
          		'toggleMute' : function(){ $video.toggleMute(); },
          		'mute'       : function(){ $video.mute(); },
          		'unMute'     : function(){ $video.unMute(); },
          		'seek'       : function(){ $video.seek(); },

          		// initializing and revising the player
          		'update'     : function(){ $video.update(); },
          		'cue'        : function(){ player.cueVideoById( ytVideoId ); }

        	});
        
        	// function fired when the play/pause button is hit
        	$video.togglePlay = function() {
          		if( $play.hasClass('playing') ) {
            		$video.trigger('pause');
          		} else {
            		$video.trigger('play');
          		}
          		return false;
        	};
      
        	// play the video
        	$video.play = function() {
          		player.play();
          		$play.removeClass('paused').addClass('playing').attr('title','Pause');        
        	};  
      
        	// pause
        	$video.pause = function() {
          		player.pause();
          		$play.removeClass('playing').addClass('paused').attr('title','Play');
        	};
        
        	// function fired when the mute/unmute button is hit
        	$video.toggleMute = function() {
          		if( $mute.hasClass('muted') ) {
            		$video.trigger('unMute');
          		} else {
            		$video.trigger('mute');
          		}
          		return false;
        	};
      
        	// mute the video
        	$video.mute = function() {
          		player.mute();
          		$mute.addClass('muted').attr('title','Un-Mute');        
        	};   
      
        	// unmute
        	$video.unMute = function() {
          		player.unMute();
          		$mute.removeClass('muted').attr('title','Mute');
        	};
        
        	//Seek to a position in the video
    		$video.seek = function(seekPosition) {
          		var seekToPosition = Math.round(player.getDuration() * seekPosition);
          		player.seekTo(seekToPosition, false);
        	};
        
      		// player init and update methods
      
        	//Update the video status
    		$video.update = function() {
    			if( player && player.getDuration ) {

            		if( player.getPlayerState() === 1 ) {
              			$video.play();
            		} else if ( player.getPlayerState() === 0 ) {
              			$video.pause();
            		}

            		if( player.getVideoBytesLoaded() > -1) {
              			var loadedAmount = ( player.getVideoBytesLoaded() / player.getVideoBytesTotal())  * 100;
              			$loaded.css( 'width', loadedAmount + '%' );
            		}
            
            		if( player.getCurrentTime() > 0 ) {
              			var videoPosition = ( player.getCurrentTime() / player.getDuration() ) * 100;
              			$indicator.css( 'left', videoPosition + '%' );
            		}
    		  	}
    		};
    		
  		
  			// the youtube movie calls this method when it loads
  			
			// DO NOT CHANGE THIS METHOD'S NAME
    		
			onYouTubePlayerReady = function( videoId ) {
				var $videoRef = $( document.getElementById( videoId ) ).parent();
				player.addEventListener("onStateChange", "onplayerStateChange");
				

    		  	setInterval(function(){
    		    	$videoRef.trigger('update');
    		  	}, 250);
    		  
          		$videoRef.trigger('cue');

        	};

			onplayerStateChange = function(newState) {
				if(0 === newState){
					
					var form  = '<form class="video-form" action="http://'+ window.location.hostname +'/wp-content/themes/ipafamily/processVideo.php" method="post" enctype="multipart/form-data">';
						form += '<h3>Join the IPA Family</h3>';
						form += '<label for="name">Name *</label>';
						form += '<input type="text" name="name" id="name" />';
						form += '<label for="email">Email *</label>';
						form += '<input type="text" name="email" id="email" />';
						form += '<label for="phone">Phone *</label>';
						form += '<input type="text" name="phone" id="phone" />';
						form += '<label for="city">City *</label>';
						form += '<input type="text" name="city" id="city" />';
						form += '<label for="state">State *</label>';
						form += '<input type="text" name="state" id="state" />';
						form += '<label for="zip">Zip *</label>';
						form += '<input type="text" name="zip" id="zip" />';
						form += '<label for="resume">Resume</label>';
						form += '<input type="file" name="userfile" id="userfile" />';
						form += '<div class="buttons">';
						form += '<input type="submit" name="submit" id="video-form-submit" value="Submit"/>';
						form += '</div>';
						form += '</form>';
						
					var iframe = '<iframe name="postframe" id="postframe" style="width:1px;height:1px;border:none;" />';
						
					$('#feature').find('.video-player').html('').html(form);
					$('body').append(iframe);
					
				}
			}
    	
      		// init methods
      
        	// the embed!
    		$video.init = function() {
  		  		swfobject.embedSWF(
            		'http://www.youtube.com/apiplayer?&enablejsapi=1&version=3&playerapiid=' + videoId,
            		videoId, 
            		o.videoWidth, 
            		o.videoHeight, 
            		'8', 
            		null, 
            		null, 
            		o.params, 
            		{ id: videoId },
            		function(){
              			player = document.getElementById( videoId );
            		}
          		);
          
          		$video.addControls();

    		};

        	// add controls
    		$video.addControls = function() {
				//Play and pause button
    		  	$play = $('<a/>', { href: '#', 'class': 'play-pause', text: 'Play/Pause', title: 'Play', click: function() { $video.trigger('togglePlay'); return false; }}).appendTo( $controls );
  		    		    	
    		  	//Play and pause button
    		  	$mute = $('<a/>', { href: '#', 'class': 'volume', text: 'Volume', title: 'Mute', click: function() { $video.trigger('toggleMute'); return false; }}).appendTo( $controls );
            		  
          		//View on YouTube
    		  	$link.addClass('view-youtube').attr('title', 'View on YouTube').html('View on YouTube').appendTo( $controls );
    		    
  		    	//Play and pause button
          		$seek = $('<div/>', { 'class': 'status', click: function(e) { var skipTo = e.pageX - $seek.offset().left, statusWidth = $seek.width(); $video.seek( skipTo / statusWidth ); }}).appendTo( $controls );

          		$bar = $('<div class="bar"></div>').appendTo($seek);
          		$loaded = $('<div class="loaded"></div>').appendTo($bar);
          		$indicator = $('<span class="indicator"></span>').appendTo($bar);
          		  
        	};
  			
        	$video.init();

    	});
  	};
})(jQuery);

$(document).ready(function() {
    $('a.video-link').ytchromeless();
	
	
	$('#video-form-submit').live('click', function(e){
		
		var valid = true;
		
		var button = $(this);
		var form = $(this).parent().parent();
		$(form).attr('target','postframe');
		
		if($('#name').val() == '') valid = false;
		if($('#email').val() == '') valid = false;
		if($('#phone').val() == '') valid = false;
		if($('#city').val() == '') valid = false;
		if($('#state').val() == '') valid = false;
		if($('#zip').val() == '') valid = false;
		
		if(valid = false)
		{
			alert('All fields are required. Please enter all fields before submitting.');
			$(button).attr('disabled', false);
			return false;
		}
		
		$(button).attr('value', 'Submitting, please wait...').attr('disabled', true);
		$(form).submit();
		
		$("#postframe").load(
            function(){
                res = $('#postframe').contents().find('body').html();
				if(res == 'Sent')
				{
					$(form).html('').html('<div class="form-success">Thank You. We will respond as soon as possible.</div>');
				}
				else
				{
					alert('There was an error processing your form. Please try again');
					$(button).attr('value', 'Submit').attr('disabled', false);
				}
            }
        );
		
	});
	
});
