/********************************************************
inspired from http://www.ibegin.com/blog/p_tbox.html of MIT Licensed Style
heavily rewritten and optimized by Nate Vogel for TastesLikeHappy.com -- 09/2007
*********************************************************/

var browserStat = {
	ps : Object,
	sp : Object,
	ua : "",
	update : function()
	{
		this.ps = getPageSize();
		this.sp = getScrollPos();
		this.ua = navigator.userAgent;
	}
}

getScrollPos = function()
{
	var docElem = document.documentElement;
	this.scrollX = self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
	this.scrollY = self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
	return this;
}

getPageSize = function()
{
	var docElem = document.documentElement
	this.width = self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
	this.height = self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
	return this;
}

make_tbox_links = function(container)
{
	var links = gE(container).getElementsByTagName("a");
	var ibAttr = "rel";

	var e;
	for (var i=0; i < links.length; i++)
	{
		var e = links[i];
		var t = e.getAttribute(ibAttr);
		if(e.getAttribute(ibAttr) && ((t.indexOf("tbox") != -1) || t.toLowerCase() == "tbox"))
		{
			//=== this is an tbox elem
			e.onclick = function()
			{
				var t = this.getAttribute(ibAttr);
				var params = parseQuery(t.substr(5,999));
				var url = this.href;
				if(this.target != "") url = this.target;
				var title = this.title;
				if(tBox.show(url,title,params))
				{
					showBG();
					window.onscroll = maintPos;
					window.onresize = maintPos;
				}
				return false;
			};
		}
     }
}

showBG = function()
{
	var bgfade = new TLH.Fade(60,4);
	bgfade._in('tbox_w',0);

	var box_w = gE('tbox_w');

	if(browserStat.ua.indexOf("MSIE ") != -1) {box_w.style.width = browserStat.ps.width+'px';}
	/*else {box_w.style.width = browserStat.ps.width-20+'px';}*/ // scrollbars removed! Hurray!
	box_w.style.height = browserStat.ps.height+browserStat.ps.scrollY+'px';
}
hideBG = function()
{
	view.dispHide('tbox_w');
}


var tBox = {
	init : function()
	{
		//alert(top.document.getElementById('navmenu_open'));
		browserStat.update();
		tBox.create(document.getElementsByTagName("body")[0]);
	},
	create : function(parelem)
	{
		var strHTML = "<div id=\"tbox_w\" style=\"display:none;\"></div>";
		//image loader div
		strHTML +=	"<div id=\"tbox_progress\" style=\"display:none;\"><img name=\"tbox_indicator\" src=\"images/loader.gif\" alt=\"Loading...\" style=\"width:32px;height:32px;\"/></div>";
		//content wrapper
		strHTML +=	"<div id=\"tbox_wrapper\" style=\"display:none\">";
		//mini-nav
		strHTML +=  "<div id=\"tastynav\"><ul class=\"nospacing\"><li><a class=\"tnav\" id=\"tnav_share\" href=\"#share\" onclick=\"showShare();\">share</a></li>   <li><a class=\"tnav\" id=\"tnav_det\" href=\"#details\">details</a></li>   <li><a class=\"tnav\" id=\"tnav_pic\" href=\"#pic\">picture</a></li>   <li><a class=\"tnav\" id=\"tnav_tag\" href=\"#tags\">tags</a></li>   <li><a class=\"tnav\" id=\"tnav_rate\" href=\"#rate\">rating</a></li>   <li><a class=\"tnav\" id=\"tnav_comm\" href=\"#cmts\">comments</a></li>   <li><span id=\"save\" class=\"tnav pointer\" title=\"save this to MyTLH\" onclick=\"TLH.save();\">favorite</span></li>   <li><span class=\"pointer close\" onclick=\"tBox.hide();\">close</span></li></ul></div>";
		strHTML +=	"<div id=\"tbox_content\" class=\"infobox_inner\"></div>";
		//footer
		strHTML +=  "<div id=\"tbox_footer\"></div></div>";

		var tboxdiv = document.createElement("div");
		tboxdiv.setAttribute("id","tbox");
		tboxdiv.style.display = '';
		tboxdiv.innerHTML = strHTML;
		parelem.appendChild(tboxdiv);
	},
	show : function(url,title,params)
	{
		var tbox_wrap = gE('tbox_wrapper');

		//=== NECESSARY to create extra empty var that tells TLH that this is an async req
		url += "&";

		if( title != "" )
			gE('tbox_footer').innerHTML = title;

		tboxfade = new TLH.Fade(100,5);
		tboxfade._in('tbox_wrapper',0);

		maintPos();

		this.showIndicator();

		new Ajax.Request(url, {
			onSuccess : function(transport)
			{
				tBox.setConts(transport.responseText);
				tBox.hideIndicator();

				//tbox_wrap.style.height = ( params['height'] ) ? params['height']+'px' : '320px';
				//tbox_wrap.style.width = ( params['width'] ) ? params['width']+'px' : '550px';
			}
		});

		if( top.document.getElementById('targetIframeWrap') )
			Event.observe(top.document.getElementById('targetIframeWrap'), 'resize', maintPos);

		return true;
	},
	hide : function()
	{
		hideBG();
		view.dispHide('tbox_wrapper');
		this.clearConts();
		window.onscroll = null;
		window.onresize = null;
		if( top.document.getElementById('targetIframeWrap') )
			Event.stopObserving(top.document.getElementById('targetIframeWrap'), 'resize', maintPos);
	},
	setConts : function(str)
	{
		var e = gE('tbox_content');
		e.style.overflow = "auto";
		e.innerHTML = str;
	},
	clearConts : function()
	{
		gE('tbox_content').innerHTML = "";
	},
	resize : function()
	{
		var tbox_wrap = gE('tbox_wrapper');
		tbox_wrap.style.width = (browserStat.ps.width * 0.82)+'px';
		tbox_wrap.style.height = (browserStat.ps.height * 0.75)+'px';
		gE('tbox_content').style.height = (browserStat.ps.height * 0.72)+'px';
	},
	showIndicator : function()
	{
		var tbox_load_fade = new TLH.Fade(100,3);
		tbox_load_fade._in('tbox_progress',0);
		posToCenter(gE('tbox_progress'));
	},
	hideIndicator : function()
	{
		var tbox_load_fade = new TLH.Fade(100,3);
		tbox_load_fade._out('tbox_progress');
	}
}

maintPos = function()
{
	browserStat.update();

	var tbox = gE('tbox_wrapper');
	var box_w = gE('tbox_w');

	if(browserStat.ua.indexOf("MSIE ") != -1)
		box_w.style.width = browserStat.ps.width+'px';
	box_w.style.height = (browserStat.ua.indexOf("Opera/9") != -1) ? document.body.scrollHeight+'px' : browserStat.ps.height+browserStat.ps.scrollY+'px';

	posToCenter(tbox);
}

posToCenter = function(elem)
{
	if( elem.id != '' && elem.id.toLowerCase() == 'tbox_wrapper' ) tBox.resize();

	var emSize = new getElementSize(elem);
	var x = Math.round(browserStat.ps.width/2) - (emSize.width /2) + browserStat.sp.scrollX;
	var y = Math.round(browserStat.ps.height/2) - (emSize.height /2) + browserStat.sp.scrollY;
	elem.style.left = x+'px';
	elem.style.top = y+'px';
}

getElementSize = function(elem)
{
	this.width = elem.offsetWidth ||  elem.style.pixelWidth;
	this.height = elem.offsetHeight || elem.style.pixelHeight;
}

// parseQuery code borrowed from thickbox
parseQuery = function(query)
{
   var Params = new Object ();
   if (!query) return Params;
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }

   return Params;
}

showShare = function()
{
    $('taste_sharecode').update("<img src=\"images/loader.gif\" alt=\"Generating...\" style=\"width:32px;height:32px;\"/>");
	TLH.ajax_post('?nibble&'+gE('tstid').value+"&html=1", '', 'taste_sharecode');
	view.dispShow('taste_share');
}

Event.observe(window, 'load', tBox.init);