// JavaScript Document
var ensembleAPIUrl = 'http://ensemble.syr.edu/app/simpleapi/';
var loaderHTML = '<div id="loader"><img src="images/ajax-loader.gif" alt="Loading..." style="border: none; margin-top: 3px;" align="absmiddle" /> Loading...</div>';
var websiteID = 'kJvqe_OL9kOKYF__pmVWaQ';
var siteURL = 'http://orangetv.syr.edu';
var bannerImg = new Array();
var newBanner = 0;
var totalBan = 0;

function initHome() {
	
	getCategories(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');	
//	getNewestVideos(ensembleAPIUrl + 'video/list.json/' + websiteID + '?orderBy=videoDate&orderByDirection=desc&resultsCount=5');
//	getRandomVideo(ensembleAPIUrl + 'video/list.json/' + websiteID + '?orderBy=videoDate&orderByDirection=desc&resultsCount=25');
//	getCategoriesMenu(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');
	
}

function initCategory() {
	
	var q = new Querystring();
	var categoryID = q.get('cat');
	var searchTerm = q.get('q');
	var url = ensembleAPIUrl + 'video/list.json/' + websiteID + '?categoryID=' + categoryID + '&orderBy=videoDate&orderByDirection=desc&pageIndex=0&pageSize=2';
	
	if (searchTerm) {
		url += '&searchString=' + searchTerm;
	}
	
	getCategoriesListMenu(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');
	getCategories(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');
	getCategoryVideos(url);
	
}

function initVideoInfo() {
	
	var q = new Querystring();
	var videoID = q.get('vid');
	
	getCategories(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');
	getVideoInformation(ensembleAPIUrl + 'video/show.json/' + videoID + '?videoID=' + videoID + 'pageIndex=1&pageSize=3');
	
}

function initSearch() {
	
	var q = new Querystring();
	var searchTerm = q.get('q');
	
	getCategories(ensembleAPIUrl + 'category/list.json/' + websiteID + '?orderBy=categoryName&orderByDirection=asc');	
	getVideosForSearch(ensembleAPIUrl + 'video/list.json/' + websiteID + '?searchString=' + searchTerm + '&orderBy=videoDate&orderByDirection=desc');
	
}

function AjaxRequest(url,successCallBack, loaderCallBack) {
	
	new Ajax.Request(url + '&ran=' + Math.floor(Math.random() * 100001),
	  {
		method:'get',
		crossSite: true,
		onUninitialized: loaderCallBack,
		onLoading: loaderCallBack,
		onLoaded: loaderCallBack,
		onSuccess: successCallBack,
		onFailure: throwFailure,
		onException: throwExp
	  });	
}

function getCategories(url) {
	AjaxRequest(url,writeCategories);
}

function getCategoriesListMenu(url) {
	AjaxRequest(url,writeCategoryListMenu);
}

function getVideosForSearch(url) {
	AjaxRequest(url,writeVideosForSearch,videoSearchLoader);	
}

function getVideoInformation(url) {
	AjaxRequest(url,writeVideoInformation,videoInformationLoader);	
}

function getCategoriesMenu(url) {
	AjaxRequest(url,writeCategoriesMenu,categoriesMenuLoader);
}

function getNewestVideos(url) {
	AjaxRequest(url,writeNewestVideos,newestVideosLoader);
}

function getRandomVideo(url) {
	AjaxRequest(url,getFeaturedVideo,randomVideoLoader);
}

function getCategoryVideos(url) {
	AjaxRequest(url,writeCategoryVideos,categoryVideosLoader);	
}

function showFeaturedVideo(videoID) {
	AjaxRequest(ensembleAPIUrl + 'video/show.json/' + videoID + "?orderBy=videoID",writeFeaturedVideo,featuredVideoLoader);
}

function getTopCategoryVideos(categoryID, theWebsiteID) {
	AjaxRequest(ensembleAPIUrl + 'video/list.json/' + theWebsiteID + '?categoryID=' + categoryID + '&orderBy=videoDate&orderByDirection=desc&resultsCount=8',writeTopCategoryVideos,topCategoryVideosLoader);		
}

function categoryVideosLoader() {
	$("resultsMsg").innerHTML = loaderHTML;
}

function videoSearchLoader() {
	$("resultsMsg").innerHTML = loaderHTML;	
}

function videoInformationLoader() {
	$("videoInformation").innerHTML = loaderHTML;	
}

function categoryListMenuLoader() {
	//$("").innerHTML = 'Loading...';
}

function categoryListLoader() {
	//$("").innerHTML = 'Loading...';
}

function featuredVideoLoader() {
	//$("").innerHTML = 'Loading...';
}

function topCategoryVideosLoader() {
	//$("").innerHTML = 'Loading...';	
}

function randomVideoLoader() {
	//$("").innerHTML = 'Loading...';	
}

function newestVideosLoader() {
	//$("").innerHTML = 'Loading...';	
}

function categoriesMenuLoader() {
	//$("").innerHTML = 'Loading...';	
}

function getFeaturedVideo() {
	
	if ( typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');

		data.videos.errors.each((function(e) {
			var show = {errorMessage: e.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}).bind(this));
		
	}
	else {
		
		var count = 0;
		var videoIndex;
		
		count = $A(data.videos.video).length;
        videoIndex = Math.floor(Math.random() * count);

        var v;
        if (count == 1) v = data.videos.video;
        else v = data.videos.video[videoIndex];

		showFeaturedVideo(v.videoID);

	}
}

function writeFeaturedVideo() {
	
	if (typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
        var myTemplate = new Template('<div id="errors">#{errorMessage}</div>');

        data.videos.errors.each((function(e) {
            var show = {errorMessage: e.message};

            Element.insert($(this.resultsContainer), {'bottom': myTemplate.evaluate(show)});
        }).bind(this));
    }
    else {
		
        var videoTitle = data.videos.videoInformation.primaryTitle;
        var videoID = data.videos.videoInformation.videoID;
        var videoPreviewImages = '';
		
		var randomVideoTemplate = new Template(
		'<a href="video.asp?vid=#{videoID}">' +
			'<img src="#{previewImage}" alt="#{videoTitle}" style="border: none; margin: 10px" />' +
		'</a>' +
		'<br />' +
		'<a href="video.asp?vid=#{videoID}" class="subheadBlue">#{videoTitle}</a>');

        if ($A(data.videos.videoImages).length > 1) {
            data.videos.videoImages.each((function(e) {
                if (e.imageType.toLowerCase() == 'preview') {
                    if( videoPreviewImages != "" ) videoPreviewImages +=',';
					// could concatenate to get multiple images; but didnt here
                    videoPreviewImages = e.imageUrl;
                }
            }).bind(this));
			
        }
        else {
            videoPreviewImages = data.videos.videoImages.imageURL;
        }
		
		$("randomVideo").innerHTML = "";
		var show = {videoID: videoID, videoTitle: videoTitle, previewImage: videoPreviewImages};
		Element.insert($("randomVideo"),randomVideoTemplate.evaluate(show));

	}
}

function writeVideoInformation() {
	
	if ( false && (typeof(data) == "undefined" || typeof(data.videos) == "undefined" ) || (typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors)) {
        
		var myTemplate = new Template(
            '<div id="errors">#{errorMessage}</div>'
        );

        data.videos.errors.each((function(e) {
            var show = {errorMessage: e.message};
            Element.insert($(this.resultsContainer), {'bottom': myTemplate.evaluate(show)});
        }).bind(this));
		
    }
    else {
		
		// build encoding button(s) HTML to include in video information template
		var useEmbeddedPlayer = false;
        var fullFilePath = '';
        var encodingsHtml = '';

        if ($A(data.videos.videoEncodings).length > 1) {
            fullFilePath = data.videos.videoEncodings[0].fullFilePath;
            useEmbeddedPlayer = data.videos.videoEncodings[0].useEmbeddedPlayer;

            data.videos.videoEncodings.each((function(v) {
                encodingsHtml += addVideoEncoding(v);
            }).bind(this));
        }
        else {
            encodingsHtml += addVideoEncoding(data.videos.videoEncodings);
            useEmbeddedPlayer = data.videos.videoEncodings.useEmbeddedPlayer;  
            fullFilePath = data.videos.videoEncodings.fullFilePath;                                        
        }
		
        var videoID = data.videos.videoInformation.videoID;
        var title = data.videos.videoInformation.primaryTitle;
        var duration = data.videos.videoInformation.duration;
        var dateTimeProduced = data.videos.videoInformation.dateProduced;
        var dateProduced = dateTimeProduced.split('T')[0].gsub(/(\d+)-(\d+)-(\d+)/, '#{2}/#{3}/#{1}');
        var description = data.videos.videoInformation.abstract;
        description = (description != null) ? description : 'N/A';
		var genre = (data.videos.videoGenres != null) ? data.videos.videoGenres.genreName : 'N/A';
        var copyright = data.videos.videoInformation.copyright;
        copyright = (copyright != null) ? copyright : 'N/A';
        
        var keywords = data.videos.videoInformation.keywords;
        keywords = (keywords != null) ? keywords : 'N/A';
		
		$("videoTitle").innerHTML = title;
		$("videoInformation").innerHTML = "";
		
		var videoInformationTemplate = new Template(
			'<div id="videoPreviewContainer">' +
				'<div id="videoPreview">' +
					'<img id="banner" />' +
				'</div>' +
				'<div id="videoEncodings"><table>' + encodingsHtml + '</table></div>' +
				'<div align="center">' +
					'<a href="http://www.microsoft.com/windows/windowsmedia/player/download/" target="_blank"> ' +
						'<img id="imgWMP" src="http://www.microsoft.com/windows/windowsmedia/images/logos/wmp10/Download_88x31_ani.gif" alt="Get Windows Media Player" style="border-width:0px;height:31px;width:88px;" /></a>' +
					'<a href="http://flip4mac.com" target="_blank"><img src="images/flip.jpg" alt="Get Flip4Mac" border="0" /></a><br /><br />' +
					'<a href="http://www.apple.com/quicktime/download/" target="_blank"> ' +
						'</a>' +
					'<div style="text-align: center;">' +
						'<a href="http://ensemblevideo.com" target="_blank">' +
							'<img border="0" src="Images/poweredby2.gif" />' +
						'</a>' +
					'</div>' +
				'</div>' +
			'</div>' + 
			'<div id="videoInformationContainer">' +
				'<p><span class="videoInfoLabel">Title:</span> #{videoTitle}</p>' +
				'<p><span class="videoInfoLabel">Duration:</span> #{videoDuration}</p>' +
				'<p><span class="videoInfoLabel">Description:</span><br />#{videoDescription}<p>' +
				'<p><span class="videoInfoLabel">Date:</span> #{videoDate}</p>' +
				'<p><span class="videoInfoLabel">Genre:</span> #{videoGenre}</p>' +
				'<p><span class="videoInfoLabel">Keywords:</span> #{videoKeywords}</p>' +
				'<p><span class="videoInfoLabel">Copyright:</span> #{videoCopyright}</p>' +
			'</div>'
		);
		
		var show = {videoTitle: title,
					videoDuration: duration,
					videoDate: dateProduced,
					videoDescription: description,
					videoKeywords: keywords,
					videoCopyright: copyright,
					videoGenre: genre};
		
		// insert above template into page
		Element.insert($("videoInformation"), videoInformationTemplate.evaluate(show));
		document.title = title;
	
		// get and display the video preview image(s)
        var length = $A(data.videos.videoImages).length;
		var i = 0;
		
        if (length > 1) {
            data.videos.videoImages.each((function(e) {
                if (e.imageType.toLowerCase() == 'preview') {
					if (i==0) {$("banner").src = e.imageUrl;}
					bannerImg[i] = e.imageUrl; 
					i++;
                }
            }).bind(this));
        }
        else {
			$("banner").src = data.videos.videoImages.imageUrl;
			bannerImg[0] = data.videos.videoImages.imageUrl;
		}

		// set length of array
		totalBan = bannerImg.length;
		cycleBan();
		
	}
}

/*
Created:
 06.08.2008 by Boyan Kostadinov (boyank@gmail.com)
Parameters:
 v
 - the video data structure
Description:
 Prepares and returns the html formated data for the video encodings
*/
function addVideoEncoding(v) {
    var html =
    '<tr ' + ((v.useEmbeddedPlayer == 'true') ? 'style="display:none;"' :'') +
        ' style="background-image:url(' + siteURL + '/app/images/playVideoLong.gif); background-position: left top; background-repeat: no-repeat; height: 38px;">'+
        '<td>' +
        '<div style="position: relative; top: -5px;">' +
        '<table width="270" cellspacing="0" cellpadding="0" border="0">' +
        '<tbody>' +
        '<tr>' +
            '<td width="34">' +
            	'<a class="encodingButton" href="' + v.fullFilePath + '" target="_blank" />' +
            '</td>' +
            '<td>' +
				'<a class="encodingButton" href="' + v.fullFilePath + '" target="_blank">' +
					v.bandwidthDescription + ' <span id="rptEncodings_ctl00_videoBitrate" />' +
				'</a>' +
            '</td>' +
            '<td width="30">' +
				'<a class="encodingButton" href="' + v.fullFilePath + '" target="_blank">' +
					'<img border="0" alt="' + v.videoFormat+'" src="' + v.videoFormatIconImage + '" />' +
				'</a>' +
            '</td>' +
        '</tr>' +
        '</tbody>' +
        '</table>' +
        '</div>' +
        '</td>' +
    '</tr>';

    return html;
}

function writeCategories(){
			
	if ( typeof(data) != "undefined" && typeof(data.categories) != "undefined" && data.categories.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');

		data.categories.errors.each((function(e) {
			var show = {errorMessage: e.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}).bind(this));
		
	}
	else {
		
		var categoryListTemplate = new Template(
		'<a href="videocategory.aspx?cat=#{categoryID}">#{categoryName}</a><br />');
		
		if ($A(data.categories.category).length > 1) {
			
			data.categories.category.each((function(c) {	
													
				var show = {categoryID: c.categoryID, 
							categoryName: c.categoryName};
							
				Element.insert($("videoCategories"),categoryListTemplate.evaluate(show));
				
		   }).bind(this));  
			
		}
		else {
			
			var show = {categoryID: data.categories.category.categoryID, 
						categoryName: data.categories.category.categoryName};
						
			Element.insert($("videoCategories"),categoryListTemplate.evaluate(show));
		}	
	}
}

function writeCategoryListMenu(){
			
	if ( typeof(data) != "undefined" && typeof(data.categories) != "undefined" && data.categories.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');

		data.categories.errors.each((function(e) {
			var show = {errorMessage: e.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}).bind(this));
		
	}
	else {
		
		var categoryListTemplate = new Template(
		'<option value="#{categoryID}" #{selectionStatus}>#{categoryName}</option>');
		
		var q = new Querystring();
		var currentCategory = q.get('cat');
		var categoryName = '';
		
		if ($A(data.categories.category).length > 1) {
			
			data.categories.category.each((function(c) {
													
				var selectStatus = '';
				
				if (currentCategory == c.categoryID) {
					selectStatus = 'selected';	
					categoryName = c.categoryName;
				}
													
				var show = {categoryID: c.categoryID, 
							categoryName: c.categoryName,
							selectionStatus: selectStatus};
							
				Element.insert($("ddCategories"),categoryListTemplate.evaluate(show));
				
		   }).bind(this));  
			
		}
		else {
			
			var show = {categoryID: data.categories.category.categoryID, 
						categoryName: data.categories.category.categoryName};
						
			Element.insert($("ddCategories"),categoryListTemplate.evaluate(show));
		}	
		
		document.title = categoryName;
		$("categoryName").innerHTML = categoryName;
	}
}

function writeCategoriesMenu(){
			
//	if ( typeof(data) != "undefined" && typeof(data.categories) != "undefined" && data.categories.errors) {
//		
//		var myTemplate = new Template(
//		'<div id="errors">#{errorMessage}</div>');

//		data.categories.errors.each((function(e) {
//			var show = {errorMessage: e.message};
//			Element.insert($("errorBox"),myTemplate.evaluate(show));
//		}).bind(this));
//		
//	}
	
	var categoryListTemplate = new Template(
	'<a href="videocategory.aspx?cat=#{categoryID}" id="btn_#{categoryID}" >' +
		'#{categoryName}' +
	'</a>');
	
	
	if ($A(data.categories.category).length > 1) {
		
	
		data.categories.category.each((function(c) {	
						
			var show = {categoryID: c.categoryID, categoryName: c.categoryName};
			Element.insert($("videoCategories"),categoryListTemplate.evaluate(show));
			
		
			
	   }).bind(this));  
		
	}

}

function writeNewestVideos(){
			
	if ( typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');

		data.videos.errors.each((function(e) {
			var show = {errorMessage: e.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}).bind(this));
		
	}
	else {
		writeVideoList(data);	
	}
}

function writeCategoryVideos(){
			
	if ( typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');
		
		$("videoList").innerHTML = "";
		
		if ($A(data.videos.errors).length > 1) {
			data.videos.errors.each((function(e) {
				var show = {errorMessage: e.message};
				Element.insert($("errorBox"),myTemplate.evaluate(show));
			}).bind(this));
		}
		else {
			
			var show = {errorMessage: data.videos.errors.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}
		
	}
	else {
		
		$("videoList").innerHTML = "";
		var q = new Querystring;
		var searchTerm = q.get("q");
		
		var numResults = $A(data.videos.video).length;
		
		if (searchTerm) {
			$("resultsMsg").innerHTML = '<div style="margin-top: 10px;">' +numResults + ' results for &#39;' + searchTerm + '&#39;</div>';
		}
		else {
			$("resultsMsg").innerHTML = "";
		}
		
		writeVerboseVideoList(data);

	}
}

function writeVideosForSearch() {
	
	if ( typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');
		
		$("videoList").innerHTML = "";
		
		if ($A(data.videos.errors).length > 1) {
			data.videos.errors.each((function(e) {
				var show = {errorMessage: e.message};
				Element.insert($("errorBox"),myTemplate.evaluate(show));
			}).bind(this));
		}
		else {
			
			var show = {errorMessage: data.videos.errors.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}
		
	}
	else {
		
		var q = new Querystring;
		var searchTerm = q.get("q");
		
		var numResults = $A(data.videos.video).length;
		$("resultsMsg").innerHTML = '<div style="margin-top: 10px;">' +numResults + ' results for &#39;' + searchTerm + '&#39;</div>';
		
		$("videoList").innerHTML = "";
		writeVerboseVideoList(data);
		
	}
}

function writeVideoList(data) {

	var videoListTemplate = new Template(
	'<div class="listEntry">' +
		'<div class="listThumb">' +
			'<a href="video.asp?vid=#{videoID}"><img src="#{videoThumbnail}" alt="#{videoTitle}" class="listThumbImage" /></a>' +
		'</div>' +
		'<div style="float: left" class="listVideoInfo">' +
			'<a href="video.asp?vid=#{videoID}" class="listLink">#{videoTitle} - (#{videoDuration})</a><br />' +
			'#{videoDate}<br />' + 
		'</div>' +
	'</div>' +
	'<br style="clear: both" />');
	
	if ($A(data.videos.video).length > 1) {
		
		data.videos.video.each((function(v) {	
										
			var show = {videoThumbnail: v.thumbnailUrl, 
						videoTitle: v.videoTitle, 
						videoID: v.videoID, 
						videoDuration: v.videoDuration, 
						departmentName: v.departmentName, 
						videoDate: formatDate(v.videoDate)};
						
			Element.insert($("newestVideosList"),videoListTemplate.evaluate(show));
			
	   }).bind(this));  
		
	}
	else {
		
		var show = {videoThumbnail: data.videos.video.thumbnailUrl, 
					videoTitle: data.videos.video.videoTitle,
					videoID: data.videos.video.videoID, 
					videoDuration: data.videos.video.videoDuration,
					departmentName: data.videos.video.departmentName,
					videoDate: formatDate(data.videos.video.videoDate)};
					
		Element.insert($("newestVideosList"),videoListTemplate.evaluate(show));

	}
}

function writeVerboseVideoList(data) {

	var videoListTemplate = new Template(
	'<div class="listEntry">' +
		'<div class="listThumb">' +
			'<a href="video.asp?vid=#{videoID}"><img src="#{videoThumbnail}" alt="#{videoTitle}" class="listVerboseThumbImage" /></a>' +
		'</div>' +
		'<div style="float: left" class="listVerboseVideoInfo">' +
			'<a href="video.asp?vid=#{videoID}" class="listVerboseLink">#{videoTitle} - (#{videoDuration})</a><br />' +
			'#{videoDescription}' +
		'</div>' +
	'</div>' +
	'<br style="clear: both" />');
	
	if ($A(data.videos.video).length > 1) {
		
		data.videos.video.each((function(v) {	
										
			var show = {videoThumbnail: v.thumbnailUrl, 
						videoTitle: v.videoTitle, 
						videoID: v.videoID, 
						videoDuration: v.videoDuration, 
						departmentName: v.departmentName, 
						videoDate: formatDate(v.videoDate),
						videoDescription: formatDescription(v.videoDescription)};
						
			Element.insert($("videoList"),videoListTemplate.evaluate(show));
			
	   }).bind(this));  
		
	}
	else {
		
		var show = {videoThumbnail: data.videos.video.thumbnailUrl, 
					videoTitle: data.videos.video.videoTitle,
					videoID: data.videos.video.videoID, 
					videoDuration: data.videos.video.videoDuration,
					departmentName: data.videos.video.departmentName,
					videoDate: formatDate(data.videos.video.videoDate),
					videoDescription: formatDescription(data.videos.video.videoDescription)};
					
		Element.insert($("videoList"),videoListTemplate.evaluate(show));

	}
}

function formatDescription(description) {
	
	if (description.length > 200) {
		return description.substr(0,200) + "..."	
	}
	else {
		return description;
	}
}

function showSub(categoryID) {

    var	menuButtons = $("categoryListMenu").descendants();

	for (i=0;i<menuButtons.length; i++) {
		var theButton = menuButtons[i];
		theButton.className = 'btnCategoryMenu';	
	}
	
	$("btn_" + categoryID).className = 'btnCategoryMenuSelected';
	
	var categoryVideoPanels = $("categoryPreview").childElements();
	
	for (j=0;j<categoryVideoPanels.length;j++) {
		var thePanel = categoryVideoPanels[j];
		thePanel.style.display = "none";
	}
	
	$("catVid_" + categoryID).style.display = "block";

}

function writeTopCategoryVideos() {
	
	if ( typeof(data) != "undefined" && typeof(data.videos) != "undefined" && data.videos.errors) {
		
		var myTemplate = new Template(
		'<div id="errors">#{errorMessage}</div>');
		
		$("categoryPreview").innerHTML = "";
		
		if ($A(data.videos.errors).length > 1) {
			data.videos.errors.each((function(e) {
				var show = {errorMessage: e.message};
				Element.insert($("errorBox"),myTemplate.evaluate(show));
			}).bind(this));
		}
		else {
			
			var show = {errorMessage: data.videos.errors.message};
			Element.insert($("errorBox"),myTemplate.evaluate(show));
		}
		
	}
	else {
		
		var myCategoryVideoTemplate = new Template(
		'<a href="video.asp?vid=#{videoID}">' +
			'<div class="categoryVideoBlock categoryPreview">' +
				'<img src="#{videoThumbnail}" alt="#{videoTitle}" style="border: none; width: 80px; margin-right: 5px;" align="left" />' +
				'#{videoTitle}<br />' +
				'<span style="color: #333333">' +
					'<strong>Duration:</strong> #{videoDuration}' +
				'</span>' +
			'</div>' +
		'</a>');
		
		if ($A(data.videos.video).length > 1) {

			data.videos.video.each((function(v) {

				var show = {videoTitle: v.videoTitle, 
							videoThumbnail: v.thumbnailUrl, 
							videoID: v.videoID, 
							videoDuration:v.videoDuration};	
							
				Element.insert($("catVid_" + v.categoryID), myCategoryVideoTemplate.evaluate(show));
				
			}).bind(this));
		}
		else {
			
			var show = {videoTitle: data.videos.videos.videoTitle, 
						videoThumbnail: data.videos.videos.thumbnailUrl, 
						videoID: data.videos.video.videoID, 
						videoDuration: data.videos.video.videoDuration};
						
			Element.insert($("catVid_" + data.videos.videos.categoryID), myCategoryVideoTemplate.evaluate(show));
		}	
	}
}

function formatDate(theDateTime) {
	
	// split the time out
	var parts = theDateTime.split("T");
	var datepart = parts[0];
	
	// split the date parts and concatenate them according to display preference
	var dateparts = datepart.split("-")
	return (dateparts[1] + "/" + dateparts[2] + "/" + dateparts[0]);
	
}

function throwExp(req,exception) {
	alert('The request had a fatal exception thrown.\n' + exception);
	return true;
}

function throwFailure(req){
	alert('Error: ' + req.status + "\n" + req.statusText); 
	return true;
}

function cycleBan() {
	newBanner++;
	if (newBanner == totalBan) {
		newBanner = 0;
	}
	$("banner").src=bannerImg[newBanner];
	setTimeout("cycleBan()", 2*1000);
}