dojo.require("dojo.hash");
dojo.require("dojox.fx");
dojo.require("dojox.fx.scroll");
//dojo.require("dijit._base.place"); 
function hook(changeHandler)
{
	dojo.subscribe("/dojo/hashchange", null, changeHandler);
	dojo.query(".selectable_image").forEach(function(d) {
		dojo.connect(d, "onmouseover", null, highlight);
		dojo.connect(d, "onmouseout", null, unhighlight);
		//dojo.connect(d, "onclick", null, onThumbnailClick);
	});
	changeHandler();
}
// TODO: object-ify all this

var thumbOnEndFunc = null;
function highlight(evt)
{
	dojo.addClass(evt.currentTarget, "highlight");
}
function unhighlight(evt)
{
	dojo.removeClass(evt.currentTarget, "highlight");
}
var active_target_id = null;
function showDetail()
{
	var target_id = dojo.hash();
	console.log("showDetail: %s", target_id);
	if(undefined == target_id || target_id.length == 0) {
		return;
	}
	
	// mark the active thumbnail
	if(active_target_id) {
		dojo.removeClass(active_target_id + "_t", "active");
	}
	dojo.addClass(target_id + "_t", "active");
	if(active_target_id) {
		var prev_id = active_target_id;
		var anim = dojox.fx.crossFade({nodes: [prev_id, target_id]});
		anim.onEnd = function() {
			dojo.removeClass(prev_id, "active");
			dojo.addClass(target_id, "active");
			var target_elem = dojo.byId(target_id);
			if("function" === typeof thumbOnEndFunc){ 
				thumbOnEndFunc(target_id);
			}
		};
		anim.play();
	}
	else
		dojo.addClass(target_id, "active");
	active_target_id = target_id;
}

function elementInViewport(el) 
{
	var vp = dijit.getViewport();
	var box = dojo.coords(el);
	return (box.t > vp.t + vp.h - 50);
}

function subMetaData(xmlsrc, docsink)
{
	var meta_keys = dojo.query('meta[name="keywords"]', docsink);
	if(dojo.isArrayLike(meta_keys) && meta_keys.length > 0) {
		var new_keys = xmlsrc.getElementsByTagName("keywords");
		if(dojo.isArrayLike(new_keys) && new_keys.length > 0) {
			meta_keys[0].setAttribute("content", (dojo.isIE ? new_keys[0].text :  new_keys[0].textContent));
		}
		else {
			meta_keys[0].setAttribute("content", "");
		}
	}
	var meta_desc = dojo.query('meta[name="description"]', docsink);
	if(dojo.isArrayLike(meta_desc) && meta_desc.length > 0) {
		var new_desc = xmlsrc.getElementsByTagName("description");
		if(dojo.isArrayLike(new_desc) && new_desc.length > 0) {
			meta_desc[0].setAttribute("content", (dojo.isIE ? new_desc[0].text :  new_desc[0].textContent));
		}
		else {
			meta_desc[0].setAttribute("content", "");
		}
	}
}

