
// Colormanager

var colorManager = {
	
	search: function($s) {
		var c = Content.colors
		if (c[$s]) {
			this.setColor(c[$s]);
			return true;
		} else if ($s.length == 4 && parseInt($s)<4096) {
			this.setColor(this.getColor(parseInt($s)));
		} return false;
	},
	
	setColor: function($bg) {	
		if ($bg.indexOf("url")!=-1) {
			$bg = $bg.split(":");			
			document.body.style.backgroundImage = $bg[1];	
			Config.COL_BACKGROUND = $bg[0];
		} else {
			document.body.style.background = Config.COL_FORGROUND; //$bg;
			document.body.style.backgroundImage = "";
			Config.COL_BACKGROUND = $bg;
		}
		shell.onResize();
	},
	
 	getColor: function($l) {
			//mainMenu.colortheme.write("<div class='hr2'></div><i>Colortheme: " + $l + "</i>")	
			var $r = $l / 4095; 
			var $g = ($l%64)/63;
			var $b = 1 - $r;
			$r = 0x20 + Math.floor($r*0xcf);
			$g = 0x22 + Math.floor($g*0xcf);
			$b = 0x24 + Math.floor($b*0xcf);
			//return "#" + (($r<16) ? "0" : "") + $r.toString(16) + (($g<16) ? "0" : "") + $g.toString(16) + (($b<16) ? "0" : "") + $b.toString(16);
			return "#f5821f";
			
		}
}


// Info box
var infoBox = {
	scene:"", sprite:"", content:"", WIDTH:320, HEIGHT: 0, _data:"", isOpen:false, menuOpener:"",
	
	init: function() {
		this.sprite = document.getElementById("infobox"); 
		this.hide();
		this.content = new Sprite("div","content","infocontent",this.sprite)
		this.menuOpener = new Sprite("div","menuOpener","textButton",this.sprite); 
		//this.menuOpener.setTo({visibility:"hidden"})
		this.resize();
	},
	
	showBox: function($p) {
		if ($p != null) infoBox._data = $p;		
		infoBox.WIDTH = ($p.info.length>400) ? 480 : 320;
		infoBox.resize();
		if (infoBox._data.info) this.showBig(); else this.showSmall(); 
	},
	
	showSmall: function($p) { infoBox.isOpen = false;
		infoBox.menuOpener.elm.onclick = (infoBox._data.info) ? function() { infoBox.showBig() } : null;
		infoBox.menuOpener.write((infoBox._data.info) ? "<img src='content/interface/plus.png'/>" : "");
		infoBox.show(infoBox.addHeader() + infoBox.addLinks() + infoBox.addShare());
	},
	
	showBig: function($p) { infoBox.isOpen = true;
		infoBox.menuOpener.elm.onclick = function() { infoBox.showSmall() }; 
		infoBox.menuOpener.write("<img src='content/interface/minus.png'/>");
		infoBox.show(infoBox.addHeader() + "<div class='bodyText'>"+infoBox._data.info+"</div><div class='hr2'></div>" + infoBox.addLinks() + infoBox.addShare());
	},
	
	addHeader: function() {
		var $t = "";
		$t += "<H4>" + infoBox._data.date + "</H4>";
		$t += "<H1>" + infoBox._data.title + "</H1>";
		if (infoBox._data.subtitle) $t += "<H2>" + infoBox._data.subtitle + "</H2>";
		$t += "<div class='hr3'></div>";
		return $t;
	},

	addLinks: function() {	
		var $t = "", $icon = "", $l = "", $i = "";
		
		if (infoBox._data.links) {
			if (typeof(infoBox._data.links)=="string") {
				$t += "<H3><img class='voIcon' src='content/interface/iconExternalLink.png'/><a class='whiteLink' href='javascript:void(null)' onclick='infoBox.open(\"" + infoBox._data.links + "\")'>VISIT SITE</a></h3><div class='hr2'></div>";
			} else {
				for( var i=0; i<infoBox._data.links.length; i++) {
					
					$i = infoBox._data.links[i].url.slice(0,infoBox._data.links[i].url.indexOf(":"));
					switch($i) {
						case "linkto": $icon = "iconLink.png"; break;
						case "video": $icon = (Stage.supportsVideo()) ? "iconVideo.png" : ""; break;
						case "music": $icon = (Stage.supportsAudio()) ? "iconSound.gif" : ""; break;
						case "download": $icon = "iconDownload.png"; break;
						case "http": $icon = "iconExternalLink.png"; break;
						case "mailto": $icon = "iconMailto.png"; break;
						case "image": $icon = "iconImage.gif"; break;
						default: $icon = ""; break;
					}
					
					if ($icon.length) $t += "<H3><img class='voIcon' src='content/interface/" + $icon + "'/><a class='whiteLink' href='javascript:void(null)' onclick='infoBox.open(\"" + infoBox._data.links[i].url + "\")'>" + infoBox._data.links[i].name + "</a></H3><div class='hr2'></div>";

				}
			}

		}
		
		return $t;
	},

	
	addShare: function() {
		var $t = "";
		var $url = location.href;
		var $tit = ((infoBox._data.title) ? infoBox._data.title : "") + ((infoBox._data.title && infoBox._data.subtitle) ? " / " : "") + ((infoBox._data.subtitle) ? infoBox._data.subtitle : "");
		var $c = encodeURIComponent("❝ " + $tit + " ❞  ☞ " + $url)
		
		$t += "<h3><a class='noUnderline' href=\"http://twitter.com/?status=" + $c + "\" title='Share on Twitter' target='_blank'><img src='"+Config.INT_PATH+"iconTwitter.png' class='shareIcon'/>TWITTER</a>&nbsp;&nbsp;&nbsp;";
		$t += "<a class='noUnderline' href=\"http://www.facebook.com/share.php?u=" + encodeURIComponent($url) + "\" title='Share on Facebook' target='_blank'><img src='"+Config.INT_PATH+"iconFacebook.png' class='shareIcon'/>FACEBOOK</a>&nbsp;&nbsp;&nbsp;";
		$t += "<a class='noUnderline' href='http://www.delicious.com/save' title='Share on Delicious' onclick=\"window.open('http://www.delicious.com/save?v=5&noui&jump=close&url="+encodeURIComponent($url)+"&title="+ encodeURIComponent($tit)+ "', 'delicious','toolbar=no,width=550,height=550'); return false;\"><img src='"+Config.INT_PATH+"iconDelicious.png' class='shareIcon'/>DELICIOUS</a>";
		$t += "</h3><div class='hr2'></div>";
		return $t;
	},
	
	show: function($t) {
		infoBox.content.write($t);
		infoBox.resize();
		infoBox.sprite.style.visibility = "visible"; 	
	},
	
	hide: function() { infoBox.sprite.style.visibility = "hidden"; },
		
	resize: function() {
		infoBox.content.setTo({height:"auto"});		
		var isScroll = Stage.stageHeight()-80 < infoBox.content.elm.offsetHeight + 25;
		infoBox.HEIGHT = Math.min(Stage.stageHeight()-80,infoBox.content.elm.offsetHeight + 25);
		
		infoBox.sprite.style.width = infoBox.WIDTH + "px";
		infoBox.sprite.style.height = infoBox.HEIGHT + "px";
		infoBox.sprite.style.background = Config.COL_BACKGROUND;		
		infoBox.sprite.style.left = ((Stage.stageWidth()-infoBox.WIDTH)-20) + "px";
		infoBox.sprite.style.top = Math.max(69,(Stage.stageHeight()-infoBox.HEIGHT-20)) + "px";
		infoBox.content.setTo({width:(infoBox.WIDTH-40) + "px",height:(infoBox.HEIGHT-25) + "px"});
		infoBox.menuOpener.setTo({left:(infoBox.WIDTH-60+ (isScroll?0:15) )+"px",top: (isScroll?10:20) + "px"});		
	}, 
	
	open: function($v) {
		var $t = $v.slice(0,$v.indexOf(":")), $u = $v.slice($v.indexOf(":")+1);
		switch($t) {
			case "info": if (infoBox.isOpen) infoBox.showSmall(); else infoBox.showBig(); break;
			case "video": Scene.playVideo($u); Stage.track("video_"+$u); break;
			case "music": Sounds.playSound($u); Stage.track("music_"+$u); break;
			case "download": window.open(Config.DWL_PATH + $u); Stage.track("download_"+$u); break;
			case "http": window.open($v); Stage.track("http_"+$u); break;
			case "linkto": shell.load($u); break;
			case "mailto": window.open($v,"_self"); Stage.track("mailto_"+$u); break;
			case "image": shell.loadImage($u); Stage.track("image_"+$u); break;
		}

	}
	
}

// Loader
var Loader = {
	sprite:"", content:"", WIDTH:80, HEIGHT: 80, loaderAnim:"", loaderPointer:0, animation:0, _timer:false,
	
	init: function() {
		this.sprite = document.getElementById("loader"); 
		this.content = new Sprite("div","content","loadercontent",this.sprite)
		this.resize();
	},
	
	show: function($p) { 
		Loader.loaderAnim = Content.loaders[Loader.animation++%Content.loaders.length]; 
		if (Loader._timer) clearInterval(Loader._timer);
		Loader._timer = setInterval("Loader.update()",200);
		Loader.update();		
	},
	
	update : function() { Loader.content.write(Loader.loaderAnim[Loader.loaderPointer++%Loader.loaderAnim.length]); Loader.sprite.style.visibility = "visible"; },
	hide: function() { Loader.sprite.style.visibility = "hidden"; if (Loader._timer) clearInterval(Loader._timer); Loader._timer = false; },
		
	resize: function() {
		Loader.sprite.style.left = (15+(Stage.stageWidth()-Loader.WIDTH)/2) + "px";
		Loader.sprite.style.top = ((Stage.stageHeight()-Loader.HEIGHT)/2) + "px";
		Loader.sprite.style.background = Config.COL_BACKGROUND;
	}
	
}

// CloseButton
var closeButton = {
	sprite:"", style:"", visible:false,
	init: function() { 
		closeButton.sprite = document.getElementById("closeButton");
		closeButton.style = closeButton.sprite.style;
	},
	
	show: function($v) { closeButton.visible = true; 
		closeButton.resize();
		closeButton.style.visibility = "visible";
		closeButton.sprite.onclick = $v;
	},
	
	hide: function() { closeButton.visible = false;
		closeButton.style.visibility = "hidden";
		closeButton.sprite.onclick = null;
	}, 
	
	resize: function() {
		if (closeButton.visible) closeButton.style.left = (Stage.stageWidth()-50) + "px";
		closeButton.style.background = Config.COL_BACKGROUND;		
	}
}


