var EMPLOYEE_ROLE = 5;
var MANAGER_ROLE = 4;
var ADMINISTRATOR_ROLE = 1;

function loadRoleButtons() {
	$( 'roles' ).select('.role_bar_item').each(function(b) {
		b.observe("mouseup", blurRoleButton); //mouseup seems slightly faster than click
	});
}

function tsScroll( to, offset ){
	if (!offset) offset = 0;
	new Effect.ScrollTo( to, {"offset": offset} );
	
}

function blurRoleButton(event) {
	var e = event.element();
	if( e.tagName == "SPAN") {
		e.up().blur(false);
		e.blur(false);
	} else if (e.tagName == "IMG") {
		e.up().up().blur(false);
		e.up().blur(false);
	} else {
		e.blur(false);
	}
	return false;
}

var tsDataLossPreventerLoaded = false;
function tsWindowLocation( loc )
{
	if (!tsDataLossPreventerLoaded) {
		
		if (browser.isIE6x) {
			setTimeout(function(){
				window.location = loc;
			}, 0);
		} else {
			window.location = loc;
		}
	}
	else 
		if (!tsDataLossPreventer.isDataLossPossible()) {
		
			if (browser.isIE6x) {
				setTimeout(function(){
					window.location = loc;
				}, 0);
			} else {
				window.location = loc;
			}
		}
		else {
			var buttons = [{
				"type": "default_button",
				"text": "Continue",
				"onclick": function(){
					tsDataLossPreventer.clearRegistered();
					if (browser.isIE6x) {
						setTimeout(function(){
							window.location = loc;
						}, 0);
					} else {
						window.location = loc;
					}
					return;
				}
			}, {
				"type": "cancel_button",
				"text": "Cancel",
				"onclick": function(){
					return;
				}
			}];
			var para = new Element('p').update("<strong>You have unsaved data on the page.</strong><br><br>" + tsDataLossPreventer.buildErrorString() + "<br><br>Are you sure you want to continue?");
			new tsAlert("TrakStar Alert", DIALOG_WARNING, para, buttons);
		}
}


var logoutTimeout = 0;
var logoutAlert = null;
function logout()
{
	if( ! tsDataLossPreventer.isDataLossPossible() ){
		var para = new Element('div').update( '<p class="logoutText">Logging out...</p><div class="logoutWrapper"><div class="logoutSliderContainer"><div id="logoutSlider"></div></div></div>' );
		para.style.padding = "10px";
		new tsAlert("TrakStar Alert", DIALOG_INFO, para, LOGOUT);
		
		
		logoutTimeout = new Effect.Morph( $('logoutSlider'), 
			{ style:"width:300px;", duration:1.25, 
				afterFinish:function(e){ 
					tsWindowLocation( "/servlet/LogoutServlet" );
				}
			});
	} else {
	
		var buttons =	[	{"type":"default_button", "text":"Logout", "onclick":function(){ tsDataLossPreventer.clearRegistered(); logoutAlert.closeDialog(); logout(); return;}},
					{"type":"cancel_button", "text":"Cancel", "onclick":function(){return;}	}];
		var para = new Element('p').update("<strong>You have unsaved data on the page.</strong><br><br>" + tsDataLossPreventer.buildErrorString() + "<br><br>Are you sure you want to log out?");
		logoutAlert = new tsAlert("TrakStar Alert", DIALOG_WARNING, para, buttons );
	}
}

function tsSubmit( form )
{
	tsTinyMCE.doSave();
	try{
		onSubmitForm();
	}catch( e ){}
	
	if( !form ){
		form = document.forms[ 0 ];
	}
	tsDataLossPreventer.clearRegistered();
	form.submit(); 
}

function getPageHeight() {
	if ( browser.isIE6x ) {
		var height = document.body.offsetHeight + IE_HEIGHT_FIX;
		if ( getWindowHeight() > height ) {
			height = getWindowHeight();
		}
		return height + "px";
	} else if ( browser.isIE7 || browser.isIE7up ) {
		var height = document.body.scrollHeight + IE_HEIGHT_FIX;
		if ( getWindowHeight() > height ) {
			height = getWindowHeight();
		}
		return height + "px";
	} else if ( browser.isSafari ) {
		return document.body.scrollHeight + "px";
	} else if ( window.innerHeight && window.scrollMaxY ) {
		return window.innerHeight + window.scrollMaxY + "px";
	} else {
		return document.body.scrollHeight;
	}
}

function getPageWidth() {
	if ( browser.isIE6x ) {
		return document.body.offsetWidth + IE6_WIDTH_FIX + "px";
	} else {
		return "100%";
	}
}

function getVerticalOffset() {
	if ( window.pageYOffset ) {
		return window.pageYOffset;
	} else if ( document.documentElement ) {
		return document.documentElement.scrollTop;
	} else {
		return document.body.scrollTop;
	}
}

function getWindowHeight() {
	if ( browser.isGecko || browser.isAppleWebKit ){
		return window.innerHeight;
	} else {
		return document.viewport.getHeight();
	}
}

function setPageTitle( s ){
	document.title = s;
}

function setPageMenuDesc( s ){
	var i = $( 'pageMenuDesc' ).innerHTML;
	var str = i.substring( 0, ( i.lastIndexOf( '>' ) + 1 ) );
	$( 'pageMenuDesc' ).innerHTML = str + ' > ' + s;
}

function enableEdit()
{
	document.onselectstart=new Function ("return true");
}
function disableEdit()
{
	document.onselectstart=new Function ("return false");
}

function getEscapedDoubleQuotes( str ){
	return str.gsub( '"', '\\"');
}