// Miscellaneous javascript functions 

function newDirOwnerRegistered(field) {
    if (field.checked) {
        document.getElementById('retypepwrow').style.display = 'none';
        document.getElementById('pwlabel').innerHTML = 'password :';
        //document.getElementById('o_password1').onChange = 'checkNewDirOwnerPw()';
        //document.getElementById('o_password1').setAttribute('onchange','checkNewDirOwnerPw(this)';
        document.getElementById('o_password2').value = '';
        document.getElementById('o_password2').disabled = true;
        document.getElementById('o_firstname').value = '';
        document.getElementById('o_firstname').disabled = true;
        document.getElementById('o_lastname').value = '';
        document.getElementById('o_lastname').disabled = true;
    } else {
        document.getElementById('o_email').value = '';
        document.getElementById('pwlabel').innerHTML = 'choose password :';
        document.getElementById('retypepwrow').style.display = 'table-row';
        document.getElementById('o_password2').disabled = false;
        document.getElementById('o_password2').value = '';
        document.getElementById('o_firstname').disabled = false;
        document.getElementById('o_firstname').value = '';
        document.getElementById('o_lastname').disabled = false;
        document.getElementById('o_lastname').value = '';
        document.getElementById('co_contact').checked = false;
        document.getElementById('firstname').disabled = false;
        document.getElementById('firstname').value = '';
        document.getElementById('lastname').disabled = false;
        document.getElementById('lastname').value = '';
        document.getElementById('p_email').disabled = false;
        document.getElementById('p_email').value = '';
    }
}

function checkNewDirOwner(field) {
    if (field.value != '') {
        document.getElementById('new_owner_msg').style.display = "block";
        document.getElementById('new_owner_msg').innerHTML = "checking...";
        var myAjax = new Ajax.Request('/directoryadmin/checkowner', 
                                       {method: 'post', parameters: {email: field.value}, 
                                       onComplete: checkNewDirOwnerResponse});
    } else {
        document.getElementById('newOwnerMsg').style.display = "block";
        document.getElementById('newOwnerMsg').innerHTML = "Please enter a valid email address";
        document.getElementById('new_owner_email').focus();
        document.getElementById('new_owner_email').select();
    }
}

function checkNewDirOwnerResponse(transport) {
    //alert(transport.responseText);
    if (transport.responseText == 'yaaboo') {
        if (document.getElementById('existing_owner').checked) {
            document.getElementById('new_owner_msg').style.display = "block";
            document.getElementById('new_owner_msg').innerHTML = "Email address not recognised";
            document.getElementById('o_email').focus();
            document.getElementById('o_email').select();
        } else {
            document.getElementById('new_owner_msg').style.display = "none";
            document.getElementById('new_owner_msg').innerHTML = "";
        }
    } else {
        if (!document.getElementById('existing_owner').checked) {
            document.getElementById('new_owner_msg').style.display = "block";
            document.getElementById('new_owner_msg').innerHTML = "That email address is already registered!";
            document.getElementById('o_email').value = '';
            document.getElementById('o_email').focus();
        } else {
            document.getElementById('new_owner_msg').style.display = "none";
            document.getElementById('new_owner_msg').innerHTML = "";
            //alert(transport.responseText);
            var owner = transport.responseText.split(":");
            //alert(owner[0]+" "+owner[1]);
            document.getElementById('o_firstname').value = owner[0];
            document.getElementById('o_lastname').value = owner[1];
            //if (!document.getElementById('change_owner').checked) {
            //    document.getElementById('change_owner_warn').style.display = "inline";
            //}
        }
    }
}

function checkNewDirOwnerPw() {
    if (document.getElementById('existing_owner').checked) {
        document.getElementById('new_owner_pwmsg').style.display = "block";
        document.getElementById('new_owner_pwmsg').innerHTML = "checking...";
        var myAjax = new Ajax.Request('/directoryadmin/checkownerpw', 
                                       {method: 'post', parameters: {email: document.getElementById('o_email').value, password: document.getElementById('o_password1').value}, 
                                       onComplete: checkNewDirOwnerPwResponse});
    }
}

function checkNewDirOwnerPwResponse(transport) {
    //alert(transport.responseText);
    if (transport.responseText == 'yaaboo') {
        document.getElementById('new_owner_pwmsg').style.display = "block";
        document.getElementById('new_owner_pwmsg').innerHTML = "Incorrect password, please try again";
        document.getElementById('o_password1').focus();
        document.getElementById('o_password1').select();
    } else {
        document.getElementById('new_owner_pwmsg').style.display = "none";
        document.getElementById('new_owner_pwmsg').innerHTML = "";
        //alert(transport.responseText);
        //var owner = transport.responseText.split(":");
        //alert(owner[0]+" "+owner[1]);
        //document.getElementById('o_firstname').value = owner[0];
        //document.getElementById('o_lastname').value = owner[1];
        //if (!document.getElementById('change_owner').checked) {
        //    document.getElementById('change_owner_warn').style.display = "inline";
        //}
    }
}

function newCoCoUseOwner(field) {
    if (field.checked) {
        document.getElementById('firstname').value = field.form.o_firstname.value;
        document.getElementById('firstname').disabled = true;
        document.getElementById('lastname').value = field.form.o_lastname.value;
        document.getElementById('lastname').disabled = true;
        document.getElementById('p_email').value = field.form.o_email.value;
        document.getElementById('p_email').disabled = true;
    } else {
        document.getElementById('firstname').disabled = false;
        document.getElementById('firstname').value = '';
        document.getElementById('lastname').disabled = false;
        document.getElementById('lastname').value = '';
        document.getElementById('p_email').disabled = false;
        document.getElementById('p_email').value = '';
    }
}

function compareNewDirOwnerPw() {
    if (document.getElementById('o_password1').value != document.getElementById('o_password2').value) {
        document.getElementById('pwmsg').style.display = 'block';
        document.getElementById('pwmsg').innerHTML = "passwords don't match! Please try again";
        document.getElementById('o_password1').value = '';
        document.getElementById('o_password2').value = '';
        document.getElementById('o_password1').focus();
    } else {
        document.getElementById('pwmsg').style.display = 'none';
        document.getElementById('pwmsg').innerHTML = "";
    }
}

function validateEditDir(form) {
    
    var handbookSelected = true;
    var atLeastOneCategorySelected = false;
    for (var i=0; i<form.elements.length; i++) {
        form.elements[i].disabled = false;
        if (form.elements[i].name == 'cat_choice_radio') {
            if (form.elements[i].checked == true) {
                handbookSelected = true;
            }
        }
        if (form.elements[i].name.substring(0,12) == 'category_id[') {
            if (form.elements[i].checked == true) {
                atLeastOneCategorySelected = true;
            }
        }
    }
    
    var required = form.required.value.split(",");
    //alert("checking required values");
    for (var i=0; i<required.length; i++) {
        //alert(required[i]);
        if (document.getElementById(required[i]).value == '') {
            alert("Please complete the required fields");
            document.getElementById(required[i]).focus();
            return false;
        }
    }
    
    if (!handbookSelected) {
        alert("You must choose a Handbook");
        document.getElementById('cat_choice_radio').focus();
        return false;
    }
    
    if ((!atLeastOneCategorySelected) && (form.entrytype.value != 'OPERATORS')) {
        alert("You must select at least one Category");
        document.getElementById('category_id[]').focus();
        return false;
    }
    
    //alert("checking statements");
    if (form.entrytype.value == 'OPERATORS') {
        if (form.fleet.value == '') {
            alert("Please enter your Fleet details");
            form.fleet.focus();
            return false;
        }
        //if (form.onboard_system.value == '') {
        //    alert("Please enter your Onboard system details");
        //    form.onboard_system.focus();
        //    return false;
        //}
    } else {
        var ask = false;
        if ((form.statement.value == '') && (form.statementhb.value == '')) {
            ask = true;
            var mystring = "online statement or handbook statement";
            var myfocus = "ol";
        } else if (form.statement.value == '') {
            ask = true;
            var mystring = "online statement";
            var myfocus = "ol";
        } else if (form.statementhb.value == '') {
            ask = true;
            var mystring = "handbook statement";
            var myfocus = "hb";
        }
        if (ask == true) {
            var response = confirm("You have not entered any text for the "+mystring+". Click OK to proceed anyway or Cancel to enter some text.");
            if (response == false) {
                if (myfocus == "ol") {
                    form.statement.focus();
                } else {
                    form.statementhb.focus();
                }
                return false;
            }
        }
    }
    
    return true;
}

function checkStatementWords(max) {
    var guillotine = Math.floor(1.1 * max);
    var words = document.getElementById('statement').value;
    if ((words == '')||(words == ' ')) {
        var wordcount = 0;
    } else {
        var wordarray = words.split(' ');
        var wordcount = wordarray.length;
    }
    if (wordcount > guillotine) {
        alert('too many words!');
        wordarray = wordarray.slice(0, guillotine);
        words = wordarray.join(' ');
        wordcount = guillotine;
        document.getElementById('statement').value = words;
    }
    var remaining = max - wordcount;
    if (remaining < 0) remaining = '<span style="color:red;">'+remaining+'</span>';
    document.getElementById('statement_words_left').innerHTML = remaining;
}

function checkStatementHBWords(max) {
    var guillotine = Math.floor(1.1 * max);
    var words = document.getElementById('statementhb').value;
    if ((words == '')||(words == ' ')) {
        var wordcount = 0;
    } else {
        var wordarray = words.split(' ');
        var wordcount = wordarray.length;
    }
    if (wordcount > guillotine) {
        alert('too many words!');
        wordarray = wordarray.slice(0, guillotine);
        words = wordarray.join(' ');
        wordcount = guillotine;
        document.getElementById('statementhb').value = words;
    }
    var remaining = max - wordcount;
    if (remaining < 0) remaining = '<span style="color:red;">'+remaining+'</span>';
    document.getElementById('statementhb_words_left').innerHTML = remaining;
}

function toggleWords(checkbox) {
    if (checkbox.name == 'enhanced_ol') {
        var labelObj = document.getElementById('statement_maxwords');
        var toggleType = (labelObj.innerHTML == statementOlMaxwords)?'upgrade':'downgrade';
        var allowedWords = (toggleType == 'upgrade')?statementOlEnhancedMaxwords:statementOlMaxwords;
        labelObj.innerHTML = allowedWords;
        var textareaObj = document.getElementById('statement');
        textareaObj.onkeyup = new Function("checkStatementWords(" + allowedWords + ")");
        var alertString = (toggleType == 'upgrade')?'Your request will need to be authorised but you may add extra words to your statement':'You may need to reduce the length of your statement';
        alert(alertString);
        checkStatementWords(allowedWords);
    } else {
        var labelObj = document.getElementById('statementhb_maxwords');
        var toggleType = (labelObj.innerHTML == statementHbMaxwords)?'upgrade':'downgrade';
        var allowedWords = (toggleType == 'upgrade')?statementHbEnhancedMaxwords:statementHbMaxwords;
        labelObj.innerHTML = allowedWords;
        var textareaObj = document.getElementById('statementhb');
        textareaObj.onkeyup = new Function("checkStatementHBWords(" + allowedWords + ")");
        var alertString = (toggleType == 'upgrade')?'Your request will need to be authorised but you may add extra words to your statement':'You may need to reduce the length of your statement';
        alert(alertString);
        checkStatementHBWords(allowedWords);
    }
    textareaObj.focus();
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function selectCatType(option) {
    var docInputs = document.getElementsByTagName('input');
    for (i=0; i<docInputs.length; i++) {
        //alert(docInputs[i].name.substring(0,12));
        if ((docInputs[i].type == 'checkbox') && (docInputs[i].name.substring(0,12) == 'category_id[')) {
            docInputs[i].checked = false;
        }
    }
    if (option == 'inflight') {
        document.getElementById('lara_cat_list').style.display = 'none';
        document.getElementById('inflight_cat_list').style.display = 'block';
    } else if (option == 'lara') {
        document.getElementById('lara_cat_list').style.display = 'block';
        document.getElementById('inflight_cat_list').style.display = 'none';
    }
}

function fullScreen(theURL) {
    window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
}



