var pageNo = 0;
var filteredItems = new Array();
var itemTemplate = null;

$(document).ready(function() {
	storeTemplate();
	preload();
	populateTypesList();
	populateIssuesList();
	doFilter('', '');
	displayIndexPage();
	displayPagination('#pagination-top');
	displayPagination('#pagination-bottom');
	registerEventHandlers();
        displayRequested();
});

function displayRequested() {
	
    var item;
	var itemId = jQuery.url.param('id');
	var itemType = jQuery.url.param('type');
	var issue = jQuery.url.param('issue');

	if (itemId != undefined && itemType != undefined) {
		item = getItem(itemId, itemType);
	}

	if (item != undefined) {
		$('#index-page').hide();
		displayContent(item);
	} else if(issue != undefined) {
		$(".issues").val(issue);	
		issueChange(issue);
	}

}

function getItem(itemId, itemType) {
	var items = mmIndex.items;
	for (var i = 0; i < items.length; i++) {
		var item = items[i];
		if (item.id == itemId && item.type == itemType)  {
			return item;
		}
	}

}

function storeTemplate() {
	if (itemTemplate == null) {
		itemTemplate = $("#item-template").clone();
	}
}

function preload() {
	image1 = new Image();
	image1.src = "/visage/static/item-bg.jpeg";
}

function registerEventHandlers() {
	$(".types").change(function () {typeChange(this.value)});
	$(".issues").change(function () {issueChange(this.value)});
}

function typeChange(newValue) {
	$(".types").each( function () { this.value = newValue; } );
	var selectedIssue = $(".issues").get(0).value;
	doFilter(newValue, selectedIssue);
	pageNo = 0;
	displayIndexPage();
	displayPagination('#pagination-top');
        displayPagination('#pagination-bottom');
}

function issueChange(newValue) {
	$(".issues").each( function () { this.value = newValue; } );
	var selectedType = $(".types").get(0).value;
	doFilter(selectedType, newValue);
	pageNo = 0;
	displayIndexPage();
	displayPagination('#pagination-top');	
	displayPagination('#pagination-bottom');
}

function populateTypesList() {
	var items = mmIndex.items;
	var types = new Array();
	
	for (var i = 0; i < items.length; i++) {
		var typeAlreadyListed = false;
		for (var t = 0; t < types.length; t++) {
			if (types[t] == items[i].type) typeAlreadyListed = true;
		}
		if (!typeAlreadyListed && items[i].type != 'hidden' && items[i].type != '') types[types.length] = items[i].type;
	}
	
	$(".types").empty();
	var allOption = '<option value="">All types</option>';
	$(".types").append(allOption);
	for (var t = 0; t < types.length; t++) {
		var typeOption = '<option value="' + types[t] + '">' + types[t] + '</option>';
		$(".types").append(typeOption);
	}
}

function populateIssuesList() {
	var items = mmIndex.items;
	var issues = new Array();
	
	for (var i = 0; i < items.length; i++) {
		for (var j = 0; j < items[i].issue.length; j++) {
			var issueAlreadyListed = false;
			for (var t = 0; t < issues.length; t++) {
				if (issues[t] == items[i].issue[j]) issueAlreadyListed = true;
			}
			if (!issueAlreadyListed && items[i].type != 'hidden' && items[i].issue[j] != '') issues[issues.length] = items[i].issue[j];
		}
	}
	
	$(".issues").empty();
	var allOption = '<option value="">All issues</option>';
	$(".issues").append(allOption);
	for (var t = 0; t < issues.length; t++) {
		var typeOption = '<option value="' + issues[t] + '">' + issues[t] + '</option>';
		$(".issues").append(typeOption);
	}
	
}

function doFilter(type, issue) {
	filteredItems = new Array();
	var items = mmIndex.items;
	for (var i = 0; i < items.length; i++) {
		if( ('' == type || items[i].type == type) && items[i].type != 'hidden' ) {
			var issueFound = false;
			for (var t = 0; t < items[i].issue.length; t++) {
				if ('' == issue || items[i].issue[t] == issue) issueFound = true;			
			}
			if (issueFound) filteredItems[filteredItems.length] = items[i];
		}
	}
}

function displayPagination(selector) {
	
	$(selector).empty();
	
	var pageCount = Math.ceil(filteredItems.length / mmIndex.itemsPerPage);
	var link;
	
	if (pageNo > 0) {
		link = document.createElement('a');
		link.className = 'page-previous';
		link.pageNo = pageNo - 1;
		link.innerHTML = mmIndex.labelPrevious;
		link.onclick = function () {gotoPage(this.pageNo);};
		$(selector).append(link);
	}
	
	for (var p = 0; p < pageCount; p++) {
		if (p == pageNo) {
			link = document.createElement('span');
			link.className = 'page-current';			
		} else {
			link = document.createElement('a');
			link.className = 'page-non-current';
			link.onclick = function () {gotoPage(this.pageNo);};
		}
		link.pageNo = p;
		link.innerHTML = (p + 1);
		$(selector).append(link);
	}
	
	if (pageNo < (pageCount-1)) {
		link = document.createElement('a');
		link.className = 'page-next';
		link.innerHTML = mmIndex.labelNext;
		link.pageNo = pageNo + 1;
		link.onclick = function () {gotoPage(this.pageNo);};
		$(selector).append(link);
	}
	
}

function gotoPage(pageId) {	
	var minPage = 0;
	var maxPage = Math.ceil(filteredItems.length / mmIndex.itemsPerPage);
	pageNo = pageId;
	if (pageNo < minPage) pageNo = minPage;
	if (pageNo > maxPage) pageNo = maxPage;
	displayIndexPage();
	displayPagination('#pagination-top');
        displayPagination('#pagination-bottom');
}

function hideItems(pageId) {
	var mp = mmIndex.itemsPerPage - 1;
	for (var i=0; i < mp ; i++) {
		$('#item' + i).fadeTo( (i + 1)*30, 0.01);
	}
	$('#item' + mp ).fadeTo(mp*30, 0.01, function () {realGotoPage(pageId);});
}

function displayIndexPage() {

        $("#index").empty();

        var firstItem = pageNo * mmIndex.itemsPerPage;
        var lastItem = (pageNo + 1) * mmIndex.itemsPerPage;
        var items = filteredItems; //mmIndex.items;
        var speed = 0;
        for (var i = firstItem; i < lastItem && i < items.length; i++) {
		var indexItem = itemTemplate.clone();
		indexItem.attr({id: "item"+i});
		if (items[i].type == 'video') {
			$(".thumbnail > img", indexItem).attr({src: '/visage/flv/' + items[i].id + '.jpg'});
		} else {
			$(".thumbnail", indexItem).hide();
		}
		$(".title", indexItem).html(items[i].title);
        	$(".date", indexItem).html(items[i].date);
		$(".description", indexItem).prepend(items[i].description);
		attachLink($(".thumbnail", indexItem), items[i]);
		attachLink($(".title", indexItem), items[i]);
		attachLink($(".view", indexItem), items[i]);
		$("#index").append(indexItem);
		indexItem.fadeTo(0, 0, function () {$("#item" + i).fadeTo(speed+=500, 1);})
	}

}

function attachLink(object, item) {
	if(item.type == "multimedia") {
		object.attr( {href: item.id, target: '_blank'} );
	} else {
		object.click( function () { hideIndex(item); } );
	}
	
}

function displayIndex() {
	$('#index-page').fadeIn(1000);
}

function hideIndex(item) {
	$('#index-page').fadeOut(1000, function () {displayContent(item);});
}
function displayContent(item) {

                try {
                        console.log(item.type);
                } catch(err) {}

		
	switch (item.type) {
	case 'picture':
		$('#picture-panel').fadeIn(1000);
		$('#picture-panel .hide-content').click(function () {hideContent('#picture-panel');});
        $('#picture-panel .panel-title').html(item.title);
        $('#picture-panel .description').html(item.description);
		$('#pic-view').attr('src', '/pics/' + item.id);
		$('#pic-view').attr('alt', item.title);
		break;

	case 'video':
		embedFlashVideo("video-player", "http://" + location.host + "/visage/flv/" +  item.id, "http://" + location.host + "/visage/flv/" + item.id + '.flv', "", 430, 320, false);
		var embed = '<object id="flowplayer" width="430" height="320" data="http://' + location.host + '/visage/flowplayer-3.0.2.swf" type="application/x-shockwave-flash">';
		embed += '<param name="movie" value="http://' + location.host + '/visage/flowplayer-3.0.2.swf"></param>';
		embed += '<param name="allowfullscreen" value="true"></param>';
		embed += '<param name="flashvars" value="config={\'playlist\':[\'http://' + location.host + '/visage/flv/' + item.id +'.flv\',{\'url\':\'http://' + location.host + '/visage/flv/' + item.id +'.flv\',\'autoPlay\':false}],\'initialScale\':\'scale\',\'useNativeFullScreen\':true,\'showMenu\':false,\'showFullScreenButton\':true,\'loop\':false}"></param>';
		embed += '</object>';
		
		$('#video-panel').fadeIn(1000);
	        $('#video-panel .hide-content').click(function () {hideContent('#video-panel');});
		$('#video-panel .panel-title').html(item.title);
		$('#video-panel .description').html(item.description);
		$('#embed-string').attr('value', embed);
		$('#embed-string').click(function() { this.focus(); this.select(); });
		return;

	case 'audio' :

		flashembed(
			"audio-player", 
			{ src:'/atwone/flowplayer.swf', width:200, height:24, bgcolor:'#ffffff' },
 			{ config: { 
				videoFile: '/atwone/pod/' + item.id, 
				autoPlay: true, 
				initialScale: 'scale', useNativeFullScreen: true,
				showMenu : false,
				showFullScreenButton : false,
				loop : false
 			}} 
 		);

                $('#audio-panel').fadeIn(1000);
                $('#audio-panel .hide-content').click(function () {hideContent('#audio-panel');});
                $('#audio-panel .panel-title').html(item.title);
                $('#audio-panel .description').html(item.description);
                return;


	case 'multimedia' :
		break;

	default:

	}

	$('#media-content').fadeIn(1000);
	$('#media-content .hide-content').click(function (){hideContent();});
	
}

function hideContent(selector) {
	$(selector).fadeOut(1000, function () {displayIndex();});
}
 

/*
<div id="video-player"><embed height="320" width="430" flashvars="config={&quot;playlist&quot;:[&quot;http://www2.nswnurses.asn.au/visage/flv/recruitment_for_web_1.mov.flv&quot;,{&quot;url&quot;:&quot;http://www2.nswnurses.asn.au/visage/flv/recruitment_for_web_1.mov&quot;,&quot;autoPlay&quot;:false}],&quot;initialScale&quot;:&quot;scale&quot;,&quot;useNativeFullScreen&quot;:true,&quot;showMenu&quot;:false,&quot;showFullScreenButton&quot;:true,&quot;loop&quot;:false}" bgcolor="#ffffff" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" allowscriptaccess="always" allowfullscreen="true" src="http://www2.nswnurses.asn.au/visage/flowplayer-3.0.2.swf"></div>
*/
