var onLoadHandlers = [];
var onSubmitHandlers = [qi_removeDefaults];

function qi_registerOnLoad(functor) {
    onLoadHandlers[onLoadHandlers.length] = functor;
}

function qi_registerOnSubmit(functor) {
    onSubmitHandlers[onSubmitHandlers.length] = functor;
}

function qi_globalOnLoadBody() {
    var i = 0;
    
    for (; i<onLoadHandlers.length; ++i) {
        try {
            onLoadHandlers[i]();
        } catch (e) {
            alert("onload handler threw exception: " + e);
        }
    }
}

function qi_globalOnSubmit(form) {
    var i = 0;
    var result = true;
    for (; i<onSubmitHandlers.length; ++i) {
        try {
            result = result && onSubmitHandlers[i](form);
        } catch (e) {
            alert("onsubmit handler threw exception: " + e);
        }
    }
    return result;
}

function ct_my_research() {
    if (qi_userIsLoggedIn()) {
      window.location = "/welcome.html";
    } else {
      qi_toggle('login-form');
    }
} 

function qi_toggle_two(id1, id2) {
    var element1 = document.getElementById(id1);
    if (element1.style.display == ""
        || element1.style.display == "none"
        || element1.style.display == undefined
        || element1.style.display != "block") {
        element1.style.display = "block";
    } else {
        element1.style.display = "none";
    }
    var element2 = document.getElementById(id2);
    if (element2.style.display == ""
        || element2.style.display == "block"
        || element2.style.display == undefined
        || element2.style.display != "none") {
        element2.style.display = "none";
    } else {
        element2.style.display = "block";
    }
}

function qi_toggle(id) {
    var element = document.getElementById(id);
    if (element.style.display == ""
        || element.style.display == "none"
        || element.style.display == undefined
        || element.style.display != "block") {
        element.style.display = "block";
    } else {
        element.style.display = "none";
    }
}

function qi_toggle_switch(id) {
    qi_toggle(id);
    qi_switch_image_arrow_plus(id);
}

function qi_switch_image_arrow_plus(id) {
    for (var i=0; i<document.images.length; i++) {
        if (document.images[i].src.indexOf('nav-arrow') > 0) { 
		    document.images[i].src = "/style_/nav-plus-white.png";
	    }
    }

    var imgTag = document.getElementById(id + "PlusImg");
    if (imgTag.src.indexOf('plus') > 0) {
        imgTag.src = "/style_/nav-arrow-blue.png";
    } else {
        imgTag.src = "/style_/nav-plus-blue.png";
    }
}

function qi_switch_plus_image_color(id, imgSrc) {
    var imgTag = document.getElementById(id + "PlusImg");
    if (imgTag.src.indexOf('arrow') > 0) {
        /* do nothing */
    } else {
	    imgTag.src = imgSrc;
    }
}

function qi_popup(windowName, URL) {
    qi_openWinFun()(URL, windowName, 
        'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=400,height=450');
}

function qi_openWinFun() {
    var openMethod = window.open;
	try {
	    if (SymRealWinOpen) {
	        openMethod = SymRealWinOpen;
	    }
    } catch (e) {}
    return openMethod;
}


function qi_read_cookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i < ca.length; i++)
  {
    var c = ca[i];
    while (c.charAt(0) == ' ') { 
      c = c.substring(1, c.length);
    }
    if (c.indexOf(nameEQ) == 0) {
      return c.substring(nameEQ.length, c.length);
    }
  }
  return null;
}

function qi_getLoggedInUserName() {
	return qi_read_cookie('qi_username');
}

function qi_userIsLoggedIn() {
	var userNameSession = qi_read_cookie('qi_username_session');
	var currentSession = qi_read_cookie('JSESSIONID');
	var userName = qi_getLoggedInUserName();
	return userName != null && userName != "" 
		&& userNameSession == currentSession;
}

/**
 * Functions to handle hints in text inputs: 
 * Remove the widget value if it is the default (hint).
 */
function qi_removeDefault(widget, defaultValue) {
	if (widget.value == defaultValue) {
		widget.value = "";
	}
}

function qi_onfocus(widgetId) {
	try {
		var element = document.getElementById(widgetId);
		element.onfocus({target:element});
	} catch(e) {}
}

function qi_onblur(widgetId) {
	try {
		var element = document.getElementById(widgetId);
		element.onblur({target:element});
	} catch(e) {}
}

/**
 * If the widget does not have a value, set it do the default (hint) value.
 */
function qi_setDefaultValue(widget, defaultValue) {
	if (widget.value == "") {
		widget.value = defaultValue;
	}
    widget.qi_defaultValue = defaultValue;
}

/**
 * Called from form.onsubmit to ensure that any defaults are removed first.
 */
function qi_removeDefaults(form) {
    for (var i=0; i<form.elements.length; ++i) {
        try {form.elements[i].onfocus({target:form.elements[i]}); } catch(e) {}
    }
    return true;
}

// Utility function to add an event listener (thanks to Matt Kruse)
function qi_addEvent(o,e,f){
	if (o.addEventListener){ o.addEventListener(e,f,true); return true; }
	else if (o.attachEvent){ return o.attachEvent("on"+e,f); }
	else { return false; }
}
