/*!
 * Written by Mark Davies
 * www.markdavies.com.au
 * 
 * Requires jQuery!
 * 
 */

(function (){
	
	var window = this,
		windowName = Math.random(1000).toString().slice(3),
		doc = document,
		loc = location,
		enc = encodeURIComponent,
		now = new Date().getTime(),
		site;
	
	// Default settings
	var ops = {
		// id and filenames of available gallery videos
		videosArray:[],
		// debugging
		debug: false
	}
	
	function isUndefined(variable) {
		return typeof variable === 'undefined';
	}
	
	function init(){
		$("#editorsToggle").click(function(){
			var d = ($("#editorSubNav").css('display') == 'none')?'inherit':'none';
			$("#editorSubNav").css({display:d});
			return false;
		});
		
	}
	
	function openGallery(){
		
		// Check that jQuery exists
		if (isUndefined(jQuery)) {
			alert('jQuery object not found!');
			return;
		}

		$("#gallery").css("display", "none");
		$("#gallery_bg").css("display", "block");
		
		$("#gallery_bg").animate({
			opacity:0
			}, 0);
		
		$("#gallery_bg").animate({
			opacity:.9
			}, 300, galleryOpenedHandler);
		
		$("#gallery_bg").click(closeGallery);
		
		$(window).resize(windowResizeHandler);
		$(window).scroll(windowScrollHandler);

		windowResizeHandler();
		windowScrollHandler();
		
	}
	
	function getVideoFromId(id){
		for(var i=0; i<ops.videosArray.length; i++){
			if(ops.videosArray[i].id == id) return ops.videosArray[i];
		}
		return false;
	}
	
	function openAndShow(id){
		
		var video = getVideoFromId(id);
		if(video == false){
			return;
		}
		
		flashvars = "config={'playlist':['"+video.poster+"',{'url':'"+video.mp4source+"','autoPlay':true}]}";
		
		vhtml = '<video controls autoplay poster="'+video.poster+'" width="512" height="288">'
			+'<source src="'+video.mp4source+'" type="video/mp4" id="mp4source" />'
			+'<source src="'+video.oggsource+'" type="video/ogg" id="oggsource" />'
			+'<object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="512" height="288">'
			+'<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />'
			+'<param name="allowFullScreen" value="true" />'
			+'<param name="wmode" value="transparent" />'
			+'<param name="flashVars" value="'+flashvars+'" id="flashvars" />'
			+'<img alt="'+video.title+'" src="'+video.poster+'" width="512" height="288" title="No video playback capabilities." />'
			+'</object>'
		+'</video>';
		
		$("#video").html(vhtml);
		
		$("#galleryEditor").html(video.editor+' / '+video.category);
		$("#galleryTitle").html(video.title);
		$("#gallerySubtitle").html(video.subtitle);
		
		openGallery();
		Cufon.replace('h2');
		
	}
	
	function closeGallery(){
		
		$(window).unbind('resize', windowResizeHandler);
		$(window).unbind('scroll', windowScrollHandler);
		
		$("#video").html('');

		$("#gallery").css("display", "none");
		
		$("#gallery_bg").animate({
			opacity:0
			}, 300, galleryFadedHandler);
		
	}
	
	function galleryOpenedHandler(){
		$("#gallery").css("display", "block");
		placeGallery();
	}

	function galleryFadedHandler(){
		$("#gallery_bg").css("display", "none");
	}
	
	function windowResizeHandler(){
		
		$("#gallery").width($(document).width());
		$("#gallery").height($(document).height());
		$("#gallery_bg").width($("html").width());
		$("#gallery_bg").height($(document).height());
		
		placeGallery();
	}
	
	function windowScrollHandler(){
		placeGallery();
	}
	
	function placeGallery(){
		
		var posy = $(window).scrollTop() + ($(window).height()/2) - ($("#viewpanel").height()/2);
		var posx = ($(window).width()/2) - ($("#gallery #viewpanel").width()/2);
		
		$("#gallery #viewpanel").offset({top:posy, left:posx});
		
	}
	
	function showFolder(id){
		$("#sf"+id+"_").css('display', 'inherit');
		$("#sf"+id+"_").animate({opacity:0}, 0);
		$("#sf"+id+"_").animate({opacity:1}, 500);
		$("#showHideLink"+id).attr('href', 'javascript:site.hideFolder("'+id+'");');
		$("#showHideSpan"+id).removeClass('plus');
		console.log('javascript:site.hideFolder('+id+');');
	}
	
	function hideFolder(id){
		console.log('hideFolder('+id+')');
		$("#sf"+id+"_").animate({opacity:0}, 200, function(){ $(this).css('display', 'none'); });
		$("#showHideLink"+id).attr('href', 'javascript:site.showFolder("'+id+'");');
		$("#showHideSpan"+id).addClass('plus');
	}
	
	// This sets up the actual object
	window.site = site = {
		setOptions: function (options) {
			for (var i in options) {
				if (options.hasOwnProperty(i)) {
					ops[i] = options[i];
				}
			}
		},
		open: openGallery,
		openAndShow: openAndShow,
		showFolder: showFolder,
		hideFolder: hideFolder,
		close: closeGallery,
		init: init
	};
	
})();


