var active_rep;

function change_view()
{
	var url = "/secured/services/json/get-user.php";
	var d = MochiKit.Async.loadJSONDoc(url);
	d.addCallbacks(change_view_results1, view_error);
}

function change_view_results1(data)
{
	if(data.payload.viewing)
		active_rep = data.payload.viewing;
	else
		active_rep = null;
	var url = "/secured/services/json/get-rep-hierarchy.php";
	var d = MochiKit.Async.loadJSONDoc(url);
	d.addCallbacks(change_view_results2, view_error);
}

function change_view_results2(data)
{
	if(data.status=='error') {
		alert("Error code " + data.error.code + ": " + data.error.msg);
	} else {
		var reps = {};
		for(var office in data.payload)
		{
			reps[office] = {};
			for(var rep in data.payload[office])
			{
				reps[office][rep] = {};
				reps[office][rep]['name'] = data.payload[office][rep][1];
			}
		}
		var srd = new SelectRepDialog(document.window, reps, active_rep, set_view);
		srd.frame_create();
		srd.activate();
	}
//	$('b_view').disabled = false;
}

function set_view(repnum)
{
//	alert(repnum);
	var postdata = "rep=" + repnum;
	var xhr = MochiKit.Async.getXMLHttpRequest();
	xhr.open("post", "/secured/services/json/set-user-view.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var d = MochiKit.Async.sendXMLHttpRequest(xhr, postdata);
	d.addCallback(set_view_results, view_error);
}

function set_view_results(data)
{
//	alert(serializeJSON(data));
	location.reload();
}

function view_error(e)
{
	alert("An error has occurred while trying to change your view.");
}

function do_nothing()
{
	return true;
}

function context_help(txt)
{
	window.open("/help.php?context=" + txt, 
		"",
		"height=300,width=400,resizable=no,toolbar=no,status=no,scrollbars=yes");
}

function __clean_sidebar__()
{
	var c = document.getElementById("content");
	var f = document.getElementById("footer");

	if(f) {
		pad_more = document.documentElement.clientHeight - (f.offsetTop + f.offsetHeight) + 10;
		if(pad_more > 0) {
			f.style.paddingBottom = pad_more + 'px';
		}
	}
}

function nav_select(e)
{
	MochiKit.DOM.addElementClass(e.src(), 'selected');
}

function nav_unselect(e)
{
	MochiKit.DOM.removeElementClass(e.src(), 'selected');
}

function __setup_nav__()
{
	var elist = MochiKit.DOM.getElementsByTagAndClassName('TD', 'nav1');
	for(var i=0; i<elist.length; ++i)
	{
		MochiKit.Signal.connect(elist[i], 'onmouseover', nav_select);
		MochiKit.Signal.connect(elist[i], 'onmouseout', nav_unselect);
	}
}

function set_focus()
{
	var error_elements = MochiKit.DOM.getElementsByTagAndClassName('*', 'userInputError');
	var focus_element;
	if(error_elements.length>0) {
		focus_element = error_elements[0];
	} else {
		if(typeof (focus_id)!="undefined")
			focus_element = document.getElementById(focus_id);
	}
	if(focus_element) {
		focus_element.focus();
		focus_element.select();
	}
}

function click_radio(e)
{
	$(e).click();
}

function fix_image_labels()
{
	var label_elements = MochiKit.DOM.getElementsByTagAndClassName('LABEL');
	for(var i=0; i<label_elements.length; ++i)
	{
		var lid = label_elements[i].htmlFor;
		var imgs = MochiKit.DOM.getElementsByTagAndClassName('IMG', null, label_elements[i]);
		for(var j=0; j<imgs.length; ++j)
		{
			connect(imgs[j], 'onclick', MochiKit.Base.partial(click_radio, lid));
		}
	}
}

function setup_main_menu()
{
	var MS = MochiKit.Signal;
	var elist = MochiKit.DOM.getElementsByTagAndClassName('TD', null, $('buttons'));
	var selected_element = $('default-menu-selection');
	for(var i = 0; i < elist.length; ++i)
	{
		if(elist[i]!=selected_element) {
			MS.connect(elist[i], 'onmouseover', nav_select);
			MS.connect(elist[i], 'onmouseout', nav_unselect);
		}
	}
	if($('b_view'))
		MS.connect('b_view', 'onclick', change_view);
}

function doc_init()
{
	__clean_sidebar__();
	set_focus();
	setup_main_menu();
	fix_image_labels();
	if(window.init)
		init();
}

MochiKit.DOM.addLoadEvent(doc_init);
