/*

Flickr d1675c4bb9cfe6d43e16960be6ecde85



This script adds the behavious of highlighting a row when the mouse hovers over 
marked route an any map

*/
var flickr_photos;

function jsonFlickrApi(rsp){

	if (rsp.stat != "ok"){
		// something broke!
		return;
	}
	flickr_photos = rsp.photos.photo;

}


function getPhotoUrl(farm, server, id, secret, size){
	return 'http://farm'+farm+'.static.flickr.com/'+server+'/'+id+'_'+secret+'_'+size+'.jpg';
}
function getPhotoPageUrl(owner, id){
	return 'http://www.flickr.com/photos/'+owner+'/'+id+'/';
}

function getRoutePageUrl(route){
	return 'http://www.flickr.com/search/?s=int&w=all&q=bouldering+AND+'+place+'+AND+'+route+'&m=tags';
}

var routes = new Object();

function setup (){
	// find all area tags and add a mouse over event
	var areas = getElementsByTagNames('area');
//	alert(areas.length);
	for (var c=0; c < areas.length; c++){
//		alert(areas[c]);
		areas[c].onmouseover = highlight_row;
		areas[c].onmouseout = highlight_row_off;
	}
	var routes = getElementsByTagNames('td');
	var route = document.getElementById('routes');
	if (route){
		route.innerHTML = (routes.length / 4);
	}
	for (c=0; c < flickr_photos.length; c++){
//	for (c=0; c < 3; c++){
		var pic = flickr_photos[c];
		var route = findRoute(pic.tags);
		if (route){
			var url = getPhotoUrl(pic.farm, pic.server, pic.id, pic.secret, 't' ); // s = small, t = thumbnail http://www.flickr.com/services/api/misc.urls.html
			var page_url = getRoutePageUrl(route);
			var new_div = document.createElement("div");
			new_div.className = 'photo';
			new_div.innerHTML = "<a href='"+page_url+"' title='"+pic.title+"'><img src='"+url+"' /></a>";
//			new_div.innerHTML = 'crap';
			anch = document.getElementById(route);
//			alert(anch.id);

			node = anch.parentNode.parentNode.cells[3];
			node.insertBefore(new_div, node.firstChild);
/*
			node = anch.parentNode.parentNode.getElementsByTagName('td')[1];
			alert(route + '= '+node.tagName);
			node.style.backgroundColor = 'red';
			// node = anch.parentNode;
			ret = node.appendChild(new_div);
			alert(ret.innerHTML);
*/
}
	}
}
function findRoute(tags){
	list = tags.split(" ");
	var anc;
	for(var c =0; c < list.length; c++){
//		alert(list[c]);
		code = list[c];
		anc = document.getElementById(code);
		if (anc == null){
			code = code.toUpperCase();
			anc = document.getElementById(code);
		}
		if (anc != null && anc.parentNode.tagName == 'TD' && routes[code] == null){
			routes[code] = true;
			// alert(list[c]);
			return code;
		}
	}
	return null;	
}



function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

function highlight_row (e){
    if (!e) var e = window.event;
    var targ;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
	var href = targ.href;
//	alert(  href.indexOf('#') );
	var sel = href.substr(href.indexOf('#')+1);
//	alert(sel);
	var anch = document.getElementById(sel);
//	alert('anch = ' + anch);
	var td = anch.parentNode;
	var tr = td.parentNode;
//	tr.style.backgroundColor = '#ccf';	
	tr.className = 'highlight';
}
function highlight_row_off (e){
    if (!e) var e = window.event;
    var targ;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
	var href = targ.href;
//	alert(  href.indexOf('#') );
	var sel = href.substr(href.indexOf('#')+1);
//	alert(sel);
	var anch = document.getElementById(sel);
//	alert('anch = ' + anch);
	var td = anch.parentNode;
	var tr = td.parentNode;
//	tr.style.backgroundColor = 'transparent';	
	tr.className = '';
}