// Javascript from Moodle modules
 // support for the templates form

function dataplusisdefined(object, variable){
    return (typeof(eval(object)[variable]) != 'undefined');
}

var dataplusCursorStart = null;
var dataplusCursorEnd = null;

function datapluscursorPosition() {
    obj = document.getElementById('id_record');

    if(dataplusisdefined(document,'selection')){
        var bookmark = document.selection.createRange().getBookmark();

        obj.selection = obj.createTextRange();  // create in textarea object and
        obj.selection.moveToBookmark(bookmark);  // match to document.selection
        obj.selLeft = obj.createTextRange(); // create textrange object

        obj.selLeft.collapse(true);           // for left amount of textarea &

        obj.selLeft.setEndPoint("EndToStart", obj.selection); // align them

        dataplusCursorStart = obj.selLeft.text.length;
        dataplusCursorEnd = obj.selLeft.text.length +  obj.selection.text.length;
    }
    else if (dataplusisdefined(obj, 'selectionStart')) {
        dataplusCursorStart = obj.selectionStart;
        dataplusCursorEnd = obj.selectionEnd;
    }
    else{
        dataplusCursorStart = null;
    }
}
    
    
function dataplusUpdateTextbox(str,id) {
    if (typeof(currEditor) != 'undefined' && currEditor._editMode == 'wysiwyg') {
        currEditor.focusEditor();
        currEditor.insertHTML(str);         
    }
    else if (typeof(tinyMCE) != 'undefined'){
        tinyMCE.getInstanceById(id).execCommand('mceInsertContent',false,str);     
    }
    else {
        var textbox    = document.getElementById(id);
        var currentVal = textbox.value;
        var scroll     = textbox.scrollTop;

        if (dataplusCursorStart == null){
            document.getElementById(id).value = currentVal + str;
            return;
        }

        start = currentVal.substring(0,dataplusCursorStart);
        end   = currentVal.substring(dataplusCursorEnd,currentVal.length);

        document.getElementById(id).value = start + str + end;

        dataplusCursorStart = dataplusCursorStart + str.length;
        dataplusCursorEnd   = dataplusCursorStart;

        textbox.scrollTop = scroll;

        if(dataplusisdefined(document,'selection')){
            var range = textbox.createTextRange();
            range.move("character",dataplusCursorStart);
            range.select();
        }
        else {
            textbox.select();
            textbox.setSelectionRange(dataplusCursorStart,dataplusCursorEnd);
        }
    }
}


function dataplusShowHideTemplateFormElement(id,link_id,show_string,hide_string){

    var form_element_grandparent = document.getElementById(id).parentNode.parentNode;
    var link = document.getElementById(link_id);
    
    if(form_element_grandparent.style.display == 'none'){
        form_element_grandparent.style.display = 'block';
        link.value = hide_string;
    }
    else {
        form_element_grandparent.style.display = 'none';  
        link.value = show_string;                
    }
}
/**
 * This function checks that the selected action is valid, via checking that the
 * selected action is valid and that there is at least one checked course
 * (eg: checkchecked())
 *
 * @param object    form        Document form object
 * @return boolean
 **/
function course_management_checksubmit(form) {
    var destination = form.courseaction.options[form.courseaction.selectedIndex].value;
    if (destination == "" || !course_management_checkchecked(form)) {
        form.courseaction.selectedIndex = 0;
        return false;
    } else {
        // Modifies the forms action value to submit to selected page
        return course_management_form_action(form, destination);
    }
}

/**
 * This function checks all inputs on the form that are of type checkbox to
 * ensure that at least one checkbox is selected
 *
 * @param object    form    Document form object
 * @return boolean
 **/
function course_management_checkchecked(form) {
    var inputs = document.getElementsByTagName("INPUT");
    var checked = false;
    inputs = filterByParent(inputs, function() {return form;});
    for(var i = 0; i < inputs.length; ++i) {
        if (inputs[i].type == "checkbox" && inputs[i].checked) {
            checked = true;
            // Only needs to check for one checked value
            break;
        }
    }
    return checked;
}

/**
 * This function modifies the form's action to passed destination url and
 * optionally submits.
 *
 * @param object    form        Document form object
 * @param string    destination URL of destination
 * @param boolean   submit      Submits form if set to true...returns bool otherwise
 **/
function course_management_form_action(form, destination, submit) {
    form.action = destination;
    if (submit) {
        form.submit();
    } else {
        return true;
    }
}function getClasses(element) {
	if (document.getElementById(element).getAttribute("class")) return document.getElementById(element).getAttribute("class");
	else return document.getElementById(element).getAttribute("className");
}

function toggleClass(element,c1,c2) {
  var classes = getClasses(element).split(" ");
  
  for (i=0; i<classes.length; i++) {
    if (classes[i] == c1) classes[i] = c2;
    else if (classes[i] == c2) classes[i] = c1;
  }
  
	document.getElementById(element).setAttribute("class", classes.join(" "));
	document.getElementById(element).setAttribute("className", classes.join(" "));
}