// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function clearErrors(){
	document.getElementById('comment_errors').innerHTML = "";
}

function comment_error(id, text){
	errbox = document.getElementById("comment_"+id+"_error");
	new Effect.Pulsate(errbox, {duration: 2, pulses: 3, from: .5});
	errbox.innerHTML = text;
}

function disableSubmit(){
	var submit = document.getElementById("comment_submit");
	submit.setAttribute('disabled', 'disabled');
	submit.value = "Posting...";
}

function returnSubmit(){
	var submit = document.getElementById('comment_submit');
	submit.removeAttribute('disabled');
	submit.value = "Post Comment";
}

function emptyForm(){
	document.getElementById('comment_body').value = '';
}

function clearCommentErrors(id){
	document.getElementById("comment_"+id+"_error").innerHTML = '';
}

function fadeComment(id){
	new Effect.Fade(document.getElementById('comment_'+id), {duration: .5});
}

function showSpinner(parent, top, right){
	var top = top || null;
	var right = top || null;
	var loadP = document.createElement('p');
	loadP.className = "loader";
	loadP.id = parent+"_loader";
	loadP.innerHTML = "<img src='/img/email_toggle_spinner.gif' alt='Spinner' />";
	if(top) loadP.style.top = top+"px";
	if(right) loadP.style.right = right+"px";

	var parentDiv = document.getElementById(parent);
	parentDiv.appendChild(loadP);
}

function hideSpinner(parent){
	var parentDiv = document.getElementById(parent);

	var loadP = document.getElementById(parent+"_loader");
	parentDiv.removeChild(loadP);
}

function toggle_spinner(parent){
	var link = document.getElementById(parent).getElementsByTagName('a')[0];
	var img = link.getElementsByTagName('img')[0]
	img.src = "/img/email_toggle_spinner.gif";
	link.onclick = function(){return false;}
}

function init_confirmations(){
	relterm = "tt_confirm";
	tiplinks = document.getElementsByTagName('a');
	rels = new Array();
	
	for(i=0;i<tiplinks.length;i++){
		if (tiplinks[i].rel == relterm) rels.push(tiplinks[i]);
	}
	
	for(i=0;i<rels.length;i++){
		var thelink = rels[i];
		var tooltip_title = thelink.getAttribute('title');
		var oldevent = thelink.getAttribute('onclick');
		oldevent = oldevent || "window.location='"+thelink.href+"';";
		thelink.onclick = function(){tt_confirm(tooltip_title, oldevent); return false;}
		thelink.removeAttribute('title');
	}
}

function tt_confirm(event, content, oldevent, remote, acceptText, declineText, custWidth) {
	if( typeof(debug) == 'undefined' ) debug = false;
	if(acceptText == false){
		acceptText = null;
	}else{
		acceptText = acceptText || "Okay";
	}
	declineText = declineText || "Cancel";
	remote = remote || false;
	custWidth = custWidth || null;
	
	if(remote) oldevent+='kill_tt();'
	
	event = event || window.event;
	var objX = pointerX(event);
	var objY = pointerY(event);
	
	tt_confirm_div = document.getElementById('tt_confirm');
	if( tt_confirm_div ) { kill_tt();}
	
	tt_confirm_div = document.createElement('div');
	tt_confirm_div.id = "tt_confirm";
	
	tt_confirm_border = document.createElement('div');
	tt_confirm_border.id = "tt_confirm_border";
	if(custWidth) tt_confirm_border.style.width = custWidth+"px";
	
	tt_confirm_content = document.createElement('div');
	tt_confirm_content.id = "tt_confirm_content";
	
	tt_confirm_arrow = document.createElement('img');
	tt_confirm_arrow.src = "/img/tt_confirm_arrow.gif";
	tt_confirm_arrow.id = "tt_confirm_arrow";
	tt_confirm_arrow.alt = "arrow";
	
	tt_confirm_links = document.createElement('p');
	tt_confirm_links.id = "tt_confirm_links";
	
	if (acceptText){
		tt_confirm_accept = document.createElement('a');
		tt_confirm_accept.id = "tt_confirm_accept";
		tt_confirm_accept.href = "#";
		tt_confirm_accept.onclick = function(){eval(oldevent); return false;}
	}
	
	tt_confirm_decline = document.createElement('a');
	tt_confirm_decline.id = "tt_confirm_decline";
	tt_confirm_decline.href = "#";
	tt_confirm_decline.onclick = function(){kill_tt(); return false;}
	
	if(acceptText) tt_confirm_links.appendChild(tt_confirm_accept);
	tt_confirm_links.appendChild(tt_confirm_decline);
	tt_confirm_border.appendChild(tt_confirm_content);
	tt_confirm_div.appendChild(tt_confirm_border);
	tt_confirm_div.appendChild(tt_confirm_arrow);
	document.body.appendChild(tt_confirm_div);
	
	if(acceptText) tt_confirm_accept.innerHTML = acceptText;
	tt_confirm_decline.innerHTML = declineText;
	tt_confirm_content.innerHTML = content;
	tt_confirm_content.appendChild(tt_confirm_links);
	
	if ((tt_confirm_div.offsetWidth/2) > objX){
		objX = objX - 40;
		tt_confirm_arrow.style.left = "40px";
	}else{
		objX = objX - (tt_confirm_div.offsetWidth/2);
	}		
	objY = objY - (tt_confirm_div.offsetHeight);
	
	tt_confirm_div.style.left = objX+"px";
	tt_confirm_div.style.top = objY+"px";
}

function kill_tt(){
	tt_confirm_div = document.getElementById('tt_confirm');
	if( tt_confirm_div ){
		tt_confirm_div.parentNode.removeChild(tt_confirm_div);
	}
}

function pointerX(event) {
	return event.pageX || (event.clientX +
		(document.documentElement.scrollLeft || document.body.scrollLeft));
}

function pointerY(event) {
	return event.pageY || (event.clientY +
		(document.documentElement.scrollTop || document.body.scrollTop));
}

function replaceContent(parent, newcontent){
	var parent
	if(typeof(parent) == "string") parent = document.getElementById(parent);
	
	parent.innerHTML = newcontent;
}

function toggleFav(){
	if (favbox = document.getElementById('love_link')){
		if (favbox.className == "favlink_on"){
			favbox.className = "favlink_off";
			favbox.innerHTML = "Love this photo.";
			favbox.title = "Love this photo.";
		}else{
			favbox.className = "favlink_on";
			favbox.innerHTML = "Loved.";
			favbox.title = "Remove from Loved.";
		}
	}
}

function toggleLocal(){
	if (localbox = $('local_link')){
		if (localbox.hasClassName("locallink_on")){
			localbox.removeClassName("locallink_on");
			localbox.addClassName("locallink_off");
			localbox.update("Flag as local icon.");
			localbox.writeAttribute({title: "Flag this photo as being a local icon."});
		}else{
			localbox.removeClassName("locallink_off");
			localbox.addClassName("locallink_on");
			localbox.update("Flagged as local icon!");
			localbox.title = "Remove local icon flag.";
		}
	}
}

function toggleFlag(el, fulltext){
	fulltext = fulltext || false
	if(el.className == "flagged"){
		el.className = "not_flagged";
		el.innerHTML = "<img src='/img/flag.gif' alt='Flag' title='Flag' />";
		if(fulltext==true){el.innerHTML+=" Flag";}
		el.title = "Flag";
	}else{
		el.className = "flagged";
		el.innerHTML = "<img src='/img/flagged.gif' alt='Flagged' title='Flagged' />";
		if(fulltext==true){el.innerHTML+=" Flagged";}
		el.title = "Flagged";
	}
}

function toggleBook(el, success, waiting){
	waiting = waiting || false	
	el = (typeof(el) == "string") ? document.getElementById(el) : el;
	if (success) {
		count = parseInt(el.lastChild.nodeValue);
		if(el.className == "flagged"){
			el.className = "not_flagged";
			el.innerHTML = "<img src='/img/book_flag.gif' alt='Book' title='Book' />";
			el.innerHTML+=" "+String(parseInt(count)-1);
			el.title = "Book";
		}else if(el.className == "flagging"){
			image = el.getElementsByTagName('img')[0];
			el.className = "flagged";
			image.src = "/img/book_flagged.gif";
			image.alt = "Booked";
			image.title = "Booked";
			//el.innerHTML = "<img src='/img/book_flagged.gif' alt='Booked' title='Booked' />";
			//el.innerHTML+=" "+String(parseInt(count)+1);
			el.title = "Booked";
		}else if(el.className == "not_flagged" && waiting){
			el.className = "flagging";
			el.innerHTML = "<img src='/img/cant_book.gif' alt='Booking' title='Booking' />";
			el.innerHTML+=" "+String(parseInt(count)+1);
			el.title = "Booking";
		}
	}else{
		el.innerHTML = "<img src='/img/cant_book.gif' alt='Booked Out' title='Booked Out' /> 10"
	}
}

function toggleDisabled(el, fulltext){
	fulltext = fulltext || false
	if(el.className == "disabled"){
		el.className = "not_disabled";
		el.innerHTML = "<img src='/img/disable.gif' alt='Disable' title='Disable' />";
		if(fulltext==true){el.innerHTML+=" Disable";}
		el.title = "Disable";
	}else{
		el.className = "disabled";
		el.innerHTML = "<img src='/img/disabled.gif' alt='Disabled' title='Disabled' />";
		if(fulltext==true){el.innerHTML+=" Disabled";}
		el.title = "Disabled";
	}
	return true;
}

function toggleVoteMode(){
	var head_div = document.getElementById("head");
	var content_div = document.getElementById("content");
	var vote_mode_graph = document.getElementById('vote_mode_toggle');
	var toggle_button = vote_mode_graph.getElementsByTagName('a')[0];
	var button_desc = vote_mode_graph.lastChild;
	var els = document.getElementsByClassName("hideable");
	
	for(i=0;i<els.length;i++){
		els[i].toggle();
	}
	head_div.className = (head_div.className == "vote_mode") ? null : "vote_mode";
	content_div.className = (content_div.className == "vote_mode") ? null : "vote_mode";
	toggle_button.className = ((toggle_button.className == "top_button on") ? "top_button" : "top_button on");
	toggle_button.title = ((toggle_button.title == "Enable vote mode") ? "Disable vote mode" : "Enable vote mode");
	button_desc.nodeValue = ((button_desc.nodeValue.strip() == "Nav on") ? "Nav off" : "Nav on");
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};