//dojo.require("dijit.Dialog")

function hideMessage() {
	message_div.visibility = 'hidden'
	message_div.display = 'none'
	message_div.innerHTML = ""
}

hideMessageTimeout = 0

function showMessage(msg, time) {
	if(null == time)
		time = 4000
	message_div.innerHTML = msg
	message_div.visibility = 'visible'
	message_div.display = 'block'
	if(hideMessageTimeout) {
		clearTimeout(hideMessageTimeout)
	}
	hideMessageTimeout = setTimeout('hideMessage()', time)
}


//////code for doing login/logout stuff
function change_login_state(info) {
	var login_error_div = dojo.byId("login_error_div")
	login_error_div.style.display = "none"
	login_error_div.style.visibility = "hidden"
	var login_div = dojo.byId("login_div")
	login_div.style.display = "none"
	login_div.style.visibility = "hidden"
	var logout_div = dojo.byId("logout_div")
	logout_div.style.display = "none"
	logout_div.style.visibility = "hidden"	
	if("error" == info.state) {
		login_error_div.style.display = "block"
		login_error_div.style.visibility = "visible"
		logout_div.style.display = "block"
		logout_div.style.visibility = "visible"
	}
	if("login" == info.state) {
		login_div.style.display = "block"
		login_div.style.visibility = "visible"
		dojo.byId("username").innerHTML = info.user
		logged_in = true
	}
	if("logout" == info.state) {
		logout_div.style.display = "block"
		logout_div.style.visibility = "visible"
		logged_in = false
	}
}


function ajax_login() {
	var login_form = dojo.byId("login_form")
	var retrys = 0
	dojo.xhrPost({
		url: "/ajax/login",
		load: change_login_state,
		error: function() {showMessage("Error logging in.  Please try again.")},
		handleAs: "json",
		form: login_form
	});
}

function ajax_logout() {
	dojo.xhrPost({
		url: "/ajax/login",
		load: change_login_state,
		error: function() {showMessage("Error logging out.  Please try again.")},
		handleAs: "json",
		content: { logout: "1" }
	});
}

function ajax_register() {
	var register_form = dojo.byId("register_form")
	dojo.xhrPost({
		url: "/ajax/register",
		load: function(resp) {
			if(resp.register == "OK") {
				change_login_state(resp)
				ajaxwin.close()
				showMessage("Welcome to Omnibride, " + resp.user + "!")
			}
			else {
				showMessage("Error registering.  " + resp.error)
			}
		},
		error: function() {showMessage("Error registering.  Please try again.")},
		handleAs: "json",
		form: register_form
	});
}

function make_contest(link_id) {
	alert("attempting make contest")
	dojo.xhrGet({
		url: "/ajax/make_contest",
		content: {link: link_id},
		load: function() {
			alert("made link contest: " + link_id)
		},
		error: function() {
			alert("error making link contest: " + link_id)
		}
	})
}

function make_not_contest(link_id) {
	dojo.xhrGet({
		url:"/ajax/make_not_contest",
		content: {link: link_id},
		load: function() {
			alert("make link not contest: " + link_id)
		},
		error: function() {
			alert("error making link not contest: " + link_id)
		}
	})
}

function show_must_login() {
	document.getElementById('unlog').style.display = '';
	window.setTimeout('closediv();', 4000);
}

function reload_captcha() {
	dojo.byId("captcha_img").src = "/ajax/captcha?" + (new Date()).getTime()
}

function login_pop_new() {
	ajaxwin=dhtmlwindow.open('obac', 'div', 'divlog', 'Login to your Account:', 'width=690px,height=530px,center=1,resize=0,scrolling=0'); 
}

function check_login() {
	if(logged_in == false) { //not logged in
		login_pop_new()
		return false
	}
	return true
}

function add_bookmark(link_id, link_url, working_img, icon_img) {
	if(check_login() == false)
		return
	working_img.style.visibility = "visible"
	dojo.xhrPost({
		url: "/ajax/bookmark/",
		content: {link: link_id},
		load: function() {
			working_img.style.visibility = "hidden"
			showMessage("Added Botiqmark: " + link_url)
			icon_img.src = "/static/img/icons/botiqmark_x.png"
		},
		error: function() {
			working_img.style.visibility = "hidden"
		}
	})
}

function delete_bookmark(user_bookmark_id, link_url, working_img) {
	if(check_login() == false)
		return
	working_img.style.visibility = "visible"
	dojo.xhrPost({
		url: "/ajax/bookmark/delete",
		content: { user_bookmark: user_bookmark_id },
		load: function() { 
			working_img.style.visibility = "hidden"
			showMessage("Deleted BotiQmark " + link_url)
			var deleted = document.getElementById("user_bookmark_" + user_bookmark_id);
			deleted.parentNode.removeChild(deleted);
		}
	});
}

function link_vote(link, up_down, working_img, icon_img) {
	if(check_login() == false) {
		return
	}
	working_img.style.visibility = "visible"
	dojo.xhrPost({
		url: "/ajax/vote",
		load: function() { 
			working_img.style.visibility = "hidden"
			if(up_down == 1) {
				icon_img.src = "/static/img/icons/love_x.png"
			} else {
				icon_img.src = "/static/img/icons/trash_x.png"
			}
		},
		error: function() { alert("Error applying vote.")},
		content: {link: link, up_down: up_down }
	});
}


dojo.addOnLoad( function() {
//	vote_dlg = new dijit.Dialog({title: "Voted", content: "Successfuly Voted."})
//	document.body.appendChild(vote_dlg.domNode)
//	vote_dlg.startup()
//	bookmark_dlg = new dijit.Dialog({title: "Added Link", content: ""})
//	document.body.appendChild(bookmark_dlg.domNode)
//	bookmark_dlg.startup()
//	bookmark_err = new dijit.Dialog({title: "Add Link Error", content: ""})
//	document.body.appendChild(bookmark_err.domNode)
//	bookmark_err.startup()
//	del_bookmark = new dijit.Dialog({title: "Deleted BotiQmark", content: ""})
//	document.body.appendChild(del_bookmark)
//	del_bookmark.startup()
	message_div = document.createElement('div')
	message_div.setAttribute('id', 'message_div')
	message_div.style.margin = 'auto'
	var container_div = document.createElement('div')
	container_div.style.top = 0
	container_div.style.textAlign = 'center'
	container_div.style.position = 'fixed'
	container_div.style.width = '100%'
	container_div.appendChild(message_div)
	document.body.appendChild(container_div)
})


/*
sets the element with onblur and onfocus events for a search box,
with the given def value (string)... a good value for default might be "search"

overwrites onblur and onfocus events on the passed element
*/
function setSearchField(elem, def) {
   if(null == def)
      def = ""
   elem.onblur = function() {    
      if('' == elem.value) {
         elem.value = def
         elem.style.color = '#A0A0A0'
      }
   }
   elem.onfocus = function() {
      if(def == elem.value) {
         elem.value = ''
         elem.style.color = '#000000'
      }
   }
   if('' == elem.value || def == elem.value) {
      elem.value = def
      elem.style.color = '#A0A0A0'
   }
   else {
      elem.style.color = '#000000'
   }
}

/*
	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);
};

