
var BDtv = {
	currentRequest: null,
	featuredVideo: '',
	featuredList: '',
	webpath: "/"
};

BDtv.playVideo = function( id, title ) {

	var player = BDtv.getFlashMovieObject( "bd_player" );
	if ( player ) {
		BDtv.getFlashMovieObject("bd_player").SetVariable( "/:id", id );
		BDtv.getFlashMovieObject("bd_player").TCallLabel( "/jsfunc", "doLoad" );
		
		BDtv.getVideoDescription( id, title );
	}
}

BDtv.playArchivedVideo = function( list, id, title ) {

	// cancel out any pending requests:
	if ( BDtv.currentRequest != null ) {
		YAHOO.util.Connect.abort( BDtv.currentRequest );
		BDtv.currentRequest = null;
	}
	
	// Set the video title:
	var el = document.getElementById( "video_title" );
	if ( el )
		el.innerHTML = title;
	el = document.getElementById( "bodytext" );
	if ( el )
		el.innerHTML = "";
	
	// ask the server for details:
	// success callback:
	var handleSuccess = function( o ) {
	
		YAHOO.log( "BDtv.getVideoDescription success", "info" );
		var result = {};
		
		if ( o.responseText != undefined ) {
			YAHOO.log( "BDtv.getVideoDescription raw response: " + o.responseText, "debug" );
			result = eval( '(' + o.responseText + ')' );
		}
		if ( result.title ) {
			var el = document.getElementById( "video_title" );
			if ( el )
				el.innerHTML = result.title;
		}
		if ( result.embed ) {
			var el = document.getElementById( "bd_player" );
			if ( el )
				el.innerHTML = result.embed;
			/*
			el = document.getElementById( "email" );
			if ( el )
				el.style.display = "none";
			*/
		}
		else {
			var el = document.getElementById( "bd_player" );
			if ( el ) {
				var ff = "bd_player.swf?vv=0.9";
				ff += "&id=" + o.argument.id + "&list=" + o.argument.list;
				var fe = new FlashEmbed( ff, 8, "480", "400", "#000000", "bd_player" );
				el.innerHTML = fe.getHTML();
			}
			/*
			el = document.getElementById( "email" );
			if ( el )
				el.style.display = "block";
			*/
		}
		if ( result.description ) {
			var el = document.getElementById( "bodytext" );
			if ( el )
				el.innerHTML = result.description;
		}
	}
	
	// failure callback:
	var handleFailure = function( o ) {
		YAHOO.log( "BDtv.getVideoDescription failed", "warn" );
	}
	
	var callback = { success:handleSuccess, failure:handleFailure, argument:{id:id,list:list} };
	
	var vars = "l="+list+"&rtfl=title,embed,description&id=" + id;
	
	BDtv.currentRequest = YAHOO.util.Connect.asyncRequest( 'POST', 'servlet/GetData', callback, vars );

}

BDtv.emailVideo = function() {
	var player = BDtv.getFlashMovieObject( "bd_player" );
	if ( player ) {
		BDtv.getFlashMovieObject("bd_player").TCallLabel( "/jsfunc", "doEmail" );
	}
}

BDtv.getFlashMovieObject = function( movieName ) {
	// Safari: Mac OS X
	if ( navigator.userAgent.indexOf("Safari") != -1 )
		return document[movieName];
	else {
		// Firefox, Netscape: mac, win
		if ( document.embeds[movieName] )
			return document.embeds[movieName];
		
		// MSIE: Win
		else		
			return document[movieName];
	}
	return null;
}

BDtv.getVideoDescription = function( id, title ) {

	// cancel out any pending requests:
	if ( BDtv.currentRequest != null ) {
		YAHOO.util.Connect.abort( BDtv.currentRequest );
		BDtv.currentRequest = null;
	}
	
	// Set the video title:
	var el = document.getElementById( "video_title" );
	if ( el )
		el.innerHTML = title;
	el = document.getElementById( "bodytext" );
	if ( el )
		el.innerHTML = "";
	
	// ask the server for details:
	// success callback:
	var handleSuccess = function( o ) {
	
		YAHOO.log( "BDtv.getVideoDescription success", "info" );
		var result = {};
		
		if ( o.responseText != undefined ) {
			YAHOO.log( "BDtv.getVideoDescription raw response: " + o.responseText, "debug" );
			result = eval( '(' + o.responseText + ')' );
		}
		if ( result.title ) {
			var el = document.getElementById( "video_title" );
			if ( el )
				el.innerHTML = result.title;
		}
		if ( result.description ) {
			var el = document.getElementById( "bodytext" );
			if ( el )
				el.innerHTML = result.description;
		}
	}
	
	// failure callback:
	var handleFailure = function( o ) {
		YAHOO.log( "BDtv.getVideoDescription failed", "warn" );
	}
	
	var callback = { success:handleSuccess, failure:handleFailure };
	
	var vars = "l=videos&rtfl=title,description&id=" + id;
	
	BDtv.currentRequest = YAHOO.util.Connect.asyncRequest( 'POST', 'servlet/GetData', callback, vars );

}

BDtv.setFeaturedVideo = function( id, list ) {
	BDtv.featuredVideo = id;
	if ( list )
		BDtv.featuredList = list;
	else
		BDtv.featuredList = '';
}

BDtv.emailRE = /^((?:(?:(?:\w[\.\-\+]?)*)\w)+)\@((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/;
BDtv.fromFields = [ "url", "name", "email", "phone" ];

BDtv.exclaimField = function( field, vis ) {
	var el = document.getElementById( "bad_" + field );
	if ( el ) {
		if ( vis )
			el.className = "exclaim_vis";
		else
			el.className = "exclaim";
	}
}

BDtv.sendSubmission = function() {

	// cancel out any pending requests:
	if ( BDtv.currentRequest != null ) {
		YAHOO.util.Connect.abort( BDtv.currentRequest );
		BDtv.currentRequest = null;
	}
	
	// pre-filter:
	var badmsg = "";
	var badfields = false;
	var nm = document.forms["submission"]["name"].value;
	if ( nm.length == 0 ) {
		//badmsg = "Please enter your name.";
		badfields = true;
		BDtv.exclaimField( "name", true );
	}
	else
		BDtv.exclaimField( "name", false );
		
	var ph = document.forms["submission"]["phone"].value;
	if ( ph.length == 0 ) {
		//badmsg = "Please enter your phone.";
		badfields = true;
		BDtv.exclaimField( "phone", true );
	}
	else
		BDtv.exclaimField( "phone", false );
	
	var em = document.forms["submission"]["email"].value;
	if ( em.length == 0 ) {
		/*
		if ( badmsg.length > 0 )
			badmsg += "<br />";
		badmsg += "Please enter your email address.";
		*/
		badfields = true;
		BDtv.exclaimField( "email", true );
	}
	else if ( !em.match(BDtv.emailRE) ) {
		/*
		if ( badmsg.length > 0 )
			badmsg += "<br />";
		badmsg += "Please enter a valid email address.";
		*/
		badfields = true;
		BDtv.exclaimField( "email", true );
	}
	else
		BDtv.exclaimField( "email", false );
	
	var url = document.forms["submission"]["url"].value;
	if ( url.length == 0 ) {
		/*
		if ( badmsg.length > 0 )
			badmsg += "<br />";
		badmsg += "Please enter the video's URL.";
		*/
		badfields = true;
		BDtv.exclaimField( "url", true );
	}
	else
		BDtv.exclaimField( "url", false );
	
	var elt = document.getElementById( "result_msg" );
	if ( elt ) {
		if ( badfields /*badmsg.length > 0*/ ) {
			elt.innerHTML = "<p>" + "Please fix the errors in the form"/*badmsg*/ + "</p>";
			return;
		}
		else {
			elt.innerHTML = "<p>Your request is being submitted....</p>";
		}
	}
	
	// ask the server for details:
	// success callback:
	var handleSuccess = function( o ) {
	
		YAHOO.log( "BDtv.sendSubmission success", "info" );
		var result = {};
		var form = document.forms["submission"];
		
		if ( o.responseText != undefined ) {
			YAHOO.log( "BDtv.sendSubmission raw response: " + o.responseText, "debug" );
			result = eval( '(' + o.responseText + ')' );
		}
		var html = "";
		
		if ( result.success ) {
			html += "<p>Your submission has been received!</p>";
			for ( var n = 0; n < BDtv.fromFields.length; n++ ) {
				var f = BDtv.fromFields[ n ];
				var inp = form[ f ];
				if ( inp ) {
					if ( inp.type == "text" || inp.type == "textarea" ) {
						inp.value = "";
					}
					else if ( inp.type.indexOf("select") != -1 ) {
						inp.selectedIndex = 0;
					}
				}
			}
		}
		else
			html += "<p>" + unescape(result.message).replace("\n","<br />") + "</p>";
		
		var elt = document.getElementById( "result_msg" );
		if ( elt ) {
			elt.innerHTML = html;
		}
		
		// enable the form fields:
		for ( var n = 0; n < BDtv.fromFields.length; n++ ) {
			var f = BDtv.fromFields[ n ];
			var inp = form[ f ];
			if ( inp )
				inp.disabled = false;
		}
	}
	
	// failure callback:
	var handleFailure = function( o ) {
		YAHOO.log( "BDtv.sendSubmission failed", "warn" );
		
		var elt = document.getElementById( "result_msg" );
		if ( elt ) {
			elt.innerHTML = "<p>An error occurred while trying to send your submission.</p>";
		}
		
		// enable the form fields:
		var form = document.forms["submission"];
		for ( var n = 0; n < BDtv.fromFields.length; n++ ) {
			var f = BDtv.fromFields[ n ];
			form[ f ].disabled = false;
		}
	}
	
	var callback = { success:handleSuccess, failure:handleFailure };
	
	var vars = "list=submissions&fmt=json";
	var form = document.forms["submission"];
	
	for ( var n = 0; n < BDtv.fromFields.length; n++ ) {
		var f = BDtv.fromFields[ n ];
		var inp = form[ f ];
		if ( inp ) {
			if ( inp.type == "text" || inp.type == "textarea" || inp.type == "hidden" ) {
				if ( inp.value ) {
					vars += "&" + f + "=" + escape( inp.value );
				}
			}
			else if ( inp.type.indexOf("select") != -1 ) {
				vars += "&" + f + "=" + escape( inp.options[inp.selectedIndex].value );	
			}
			inp.disabled = true;
		}
	}
	
	BDtv.currentRequest = YAHOO.util.Connect.asyncRequest( 'POST', BDtv.webpath + 'servlet/HandleForm', callback, vars );

}
	
BDtv.loaded = function() {
	if ( BDtv.featuredVideo == '' )
		return;
	var elt = document.getElementById( 'bd_player' );
	if ( elt ) {
		var ff = "bd_player.swf?vv=0.9c";
		var url = document.location.href;
		var videoId = BDtv.featuredVideo;
		var i = url.indexOf( "?" );
		if ( i != -1 ) {
			var params = url.substring( i + 1 );
			if ( params.length > 0 ) {
				var pairs = params.split( "&" );
				var vars = {};
				for ( var n = 0; n < pairs.length; n++ ) {
					var kv = pairs[0].split( "=" );
					if ( kv[0].length > 0 )
						vars[ kv[0] ] = kv[1];
				}
				if ( vars.video )
					videoId = vars.video;
			}
		}
		if ( videoId.length > 0 )
			ff += "&id=" + videoId;
		if ( BDtv.featuredList != '' )
			ff += "&list=" + BDtv.featuredList;
		var fe = new FlashEmbed( ff, 8, "480", "400", "#000000", "bd_player" );
		fe.create( 'bd_player' );
	}
}

window.onload = BDtv.loaded;

