/*
** Variable that holds the element 
** with the action that was interrupted
**/
var perform_object = '';

/*
** resets the values of the inputs in the popup
** to a blank text
*/
function clearPopupInputs() {
    document.getElementById('popupError').innerHTML = '';
    document.getElementById('popupUsername').value = '';
    document.getElementById('popupPassword').value = '';
}

/*
** Makes the select element desapear or apear
** (according on how it is)
*/
function toggleSelect() {
    var selectInput = document.getElementById('orderBy');
    if (selectInput) {
        switch (selectInput.style.visibility) {
            case 'hidden':
                selectInput.style.visibility = 'visible';
                break;
            case 'visible':
                selectInput.style.visibility = 'hidden';
                break;
            default:
                selectInput.style.visibility = 'hidden';
        }
    }
}

/*
** Opens the login popup
*/
function openLoginPopup() {
    clearPopupInputs();
    toggleSelect();
    openDivPopup('login');
    if ($('currentlyLoggedInUsername').value != null && $('currentlyLoggedInUsername').value != '') {
	    $('popupUsername').value = $('currentlyLoggedInUsername').value;
	    $('popupPassword').focus();
    } else {
	    $('popupUsername').focus();
    }
    pageTracker._trackPageview('/popup/registration-view');
    window.scrollTo(0,0);
}

function openDivPopup(divId, centerPopup) {
    new Dialog.Box(divId);
    $(divId).show(centerPopup);
}

/*
** Closes the login popup
*/
function closeLoginPopup() {
    clearPopupInputs();
    toggleSelect();
    closeDivPopup('login');
    if(typeof closeLoginPopupCallback  == 'function') {
    	closeLoginPopupCallback();
    }
}

function closeDivPopup(divId) {
    new Dialog.Box(divId);
    $(divId).hide();
}

function hideDivPopup(divId) {
    $(divId).hide();
}


/*
** After beign logged perform
** the action that was stopped
*/
function perform_action() {
    closeLoginPopup();
    if (perform_object) {
        if (perform_object.action) {
            perform_object.submit();
        } else if (perform_object.href) {
            if (perform_object.href.endsWith("#")) {
                perform_object.href = perform_object.href.substring(0, perform_object.href.length - 1);
            }
            window.location.href = perform_object.href;
        }
    }
}

/*
** Checks to se if user is looged
** shows loggin "popup" if not stopping
** the action, and setting the perform_object
** variable to be use later by perform_action 
*/
function verifyLoginBeforeAction(obj, trackerAction) {
    perform_object = obj;
    doop = 'FALSE';
    doop = Get_Cookie("userSessionLogged");
    if (userCurrentlyLoggedIn && doop == 'TRUE') {
    	if (pageTracker != null && trackerAction != null) {
		    pageTracker._trackPageview('/userAction/' + trackerAction);
    	}
        perform_action();
        return true;
    } else {
        openLoginPopup();
        return false;
    }
}

function verifyLoginOnly(obj) {
    perform_object = obj;
    if (!userCurrentlyLoggedIn) {
    	openLoginPopup();
    }
    return userCurrentlyLoggedIn;
}

/*
 * Validates resource form has fields and stages
 */
function valididateFieldsAndSubtopics(obj) {
    var fieldChecked = false;
    var subtopicChecked = false;

    if (obj.fields != null && obj.subtopics != null) {
        for (var index = 0; index < obj.fields.length; index++) {
            if (obj.fields[index].checked) {
                fieldChecked = true;
            }
        }

        for (var index = 0; index < obj.subtopics.length; index++) {
            if (obj.subtopics[index].checked) {
                subtopicChecked = true;
            }
        }

        if (!fieldChecked) {
            alert("A field must be selected.");
        } else if (!subtopicChecked) {
            alert("A subtopic must be selected.");
        }
    }
    return (fieldChecked && subtopicChecked);
}

function validateQuestion(obj) {
	var questionEntered = obj.question.value != null && obj.question.value != '';
	
	if(!questionEntered) {
		alert("A question must be entered.");
	}
	
	return questionEntered;
}

/*
 * Validates resource form has fields and stages
 */
function valididateResource(obj) {
    var fieldChecked = false;
    var stageChecked = false;

    if (obj.fields != null && obj.stages != null) {
        for (var index = 0; index < obj.fields.length; index++) {
            if (obj.fields[index].checked) {
                fieldChecked = true;
            }
        }

        for (var index = 0; index < obj.stages.length; index++) {
            if (obj.stages[index].checked) {
                stageChecked = true;
            }
        }

        if (!fieldChecked) {
            alert("A field must be selected.");
        } else if (!stageChecked) {
            alert("A stage must be selected.");
        }
    }
    return (fieldChecked && stageChecked);
}

function displayAdminPopup(id, requestUrl) {
    var overlayBg = document.getElementById('overlay-bg');
    var overlay = document.getElementById('overlay');

    if (overlayBg && overlay) {
        new Ajax.Updater('overlay', requestUrl, {
            parameters: { id: id }
        });

        overlayBg.style.visibility = 'visible';
        overlay.style.visibility = 'visible';
    }
}

function hideAdminPopup() {
    var overlayBg = document.getElementById('overlay-bg');
    var overlay = document.getElementById('overlay');

    if (overlayBg && overlay) {
        overlayBg.style.visibility = 'hidden';
        overlay.style.visibility = 'hidden';
    }
}

function enableSchool(id) {
    var finalAnswer = confirm('Are you sure you want to enable this school?');
    if (finalAnswer) {
        document.forms.enableSchoolForm.id.value = id;
        document.forms.enableSchoolForm.submit();
    }
}

function disableSchool(id) {
    var finalAnswer = confirm('Are you sure you want to disable this school?');
    if (finalAnswer) {
        document.forms.disableSchoolForm.id.value = id;
        document.forms.disableSchoolForm.submit();
    }
}

function checkRememberCookie() {
    checkCookie = Get_Cookie("rememberChecked");
    if (checkCookie == 'true' || checkCookie == null){
    	return true;
    }
    return null;
}

function showHideElements(showElement, hideElement) {
	hideUIElement(hideElement);
	showUIElement(showElement);
}

function showUIElement(elementName) {
	var uiElement = document.getElementById(elementName);
	if (uiElement != null) {
		uiElement.style.visibility = 'visible';
		uiElement.style.display = 'block';
	}
}

function hideUIElement(elementName) {
	var uiElement = document.getElementById(elementName);
	if (uiElement != null) {
		uiElement.style.visibility = 'hidden';
		uiElement.style.display = 'none';
	}
}
