var e;
var editElement;

var dataPKs = new Array();
var dataValues = new Array();
var oldDataValues = new Array();

function saveData(method,params) {
    clearCell();
    var data = makeQuery(method, dataPKs, dataValues,params);
    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: ajax_response});
}

function ajax_response(response) {
    if (response.responseText != '') {
        alert("Some errors occured!");
        errors = response.responseText.split(';');
        for (i = 0; i < errors.length; i++) {
            $(errors[i]).style.backgroundColor = "Red";
        }
    }
}

function editCell(obj) {
    if (e == null)
        e = obj.onclick;
    clearCell();
    var value = obj.innerHTML;
    var pushOld = true;
    for (i = 0; i < dataPKs.length; i++)
        if (dataPKs[i] == obj.id)
            pushOld = false;
    if (pushOld) {
        dataPKs.push(obj.id);
        oldDataValues.push(value);
    }
    obj.innerHTML = '<input type="text" id="change" name="change" onkeypress="onEnter(event)">';
    obj.style.backgroundColor = "#AAFFAA";
    var change = $('change');
    if (value != '&nbsp;')
        change.value = value;
    change.size = value.length;
    obj.onclick = '';
    editElement = obj;
    change.style.backgroundColor = "#AAFFAA";
    change.select();
    change.focus();
}

function onEnter(e) {
    if (e.keyCode == 13)
        clearCell();
}

function clearCell() {
    if ($('change')) {
        var element = $('change');
        var parent = editElement;
        var text = element.value;
        var num = -1;
        for (i = 0; i < dataPKs.length; i++)
            if (dataPKs[i] == parent.id) {
                num = i;
                continue;
            }

        while (text.indexOf(">") > -1)
            text = text.replace(">", "&gt;");
        while (text.indexOf("<0") > -1)
            text = text.replace("<", "&lt;");
        dataValues[num] = text;
        Element.remove(element);
        if (text == '')
            text = '&nbsp;';
        parent.innerHTML = text;
        parent.onclick = e;
        var id = dataPKs[num];
        var newVal = dataValues[num];
        var oldVal = oldDataValues[num];
        if (newVal != oldVal) {
            parent.style.backgroundColor = '#FFAA22';
        } else
            parent.style.backgroundColor = '';
    }
}

function makeQuery(methodName, keys, values, params) {
    return 'method=' + methodName + '&data=' + makeMap(keys, values) + params;
}

function makeMap(keys, values) {
    var result = '';
    var key;
    while (keys.length != 0) {
        key = keys.pop();
        $(key).style.backgroundColor = "";
        result = result + key + ';' + values.pop() + ';';
    }
    return result;
}

function cancelEditing() {
    var element;

    clearCell();
    for (i = 0; i < dataPKs.length; i++) {
        element = $(dataPKs[i]);
        element.style.backgroundColor = '';
        element.innerHTML = oldDataValues[i];
    }

    dataPKs = new Array();
    dataValues = new Array();
    oldDataValues = new Array();
}

function streamChoose(obj) {
    var data = "method=getStreams&data=" + obj.value;
    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: streamsResult});
}

function streamsResult(response) {
    var text = response.responseText;
    var opts = text.split(";");
    var options = $('toStream').options;
    var a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    for (i = 0; i <= ( opts.length / 2) - 1; i++) {
        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
    }
}
function syllabusChoose(obj) {
    var data = "method=getThemes&data=" + obj.value
    var options = $('themeslist').options;
    var a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: themesResponse});
    data = "method=getCourses&data=" + obj.value;

    options = $('courseslist').options;
    a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: coursesResponse});

}

function themesResponse(response) {
    var text = response.responseText;
    var opts = text.split(";");
    var options = $('themeslist').options;
    var a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    for (i = 0; i <= ( opts.length / 2) - 1; i++) {
        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
    }
}
//function themeChoose(obj1, obj2) {
//    var data = "method=getLectures&data=" + obj1.value + "&term=" + obj2.value;
//    var options = $('lectureslist').options;
//    var a = options.length;
//    for (i = 0; i < a; i++) {
//        options[0] = null;
//    }
//    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: lectures});
//}
function lectureChoose() {

    $('syllabuslist').disabled = !$('lecture').options[0].selected;
    $('themeslist').disabled = !$('lecture').options[0].selected;
    $('courseslist').disabled = !$('lecture').options[0].selected;
    $('lecturerslist').disabled = !$('lecture').options[0].selected;
    $('lecturerslist').disabled = !$('lecture').options[0].selected;


}
//function lectures(response) {
//    var text = response.responseText;
//    var opts = text.split(";");
//    var options = $('lectureslist').options;
//    var a = options.length;
//    for (i = 0; i < a; i++) {
//        options[0] = null;
//    }
//    for (i = 0; i < opts.length / 2; i++) {
//        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
//    }
//}

function testChoose(obj1, obj2) {
    var data = "method=getStudentsByTests&term=" + obj2.value + "&data=";

    for (i = 0; i < $('testslist').options.length; i++) {
        if ($('testslist').options.item(i).selected)
            data = data + $('testslist').options.item(i).value + ";";
    }
    var options = $('studentslist').options;
    var a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: studentsResponse});


}


//function lectureChoose(obj) {
//    var data = "method=getCourses&data="+obj.value;
//
//    var options = $('courseslist').options;
//    var a = options.length;
//    for (i = 0; i < a; i++) {
//        options[0] = null;
//    }
//    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: courses});
//}
function coursesResponse(response) {
    var text = response.responseText;
    var opts = text.split(";");
    var options = $('courseslist').options;
    var a = options.length;

    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    for (i = 0; i <= (opts.length / 2) - 1; i++) {
        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
        options[i].selected = true;

    }
}

function courseChoose(obj, obj2) {
    var data = "method=getLecturers&data=" + obj.value + "&term=" + obj2.value;

    var options = $('lecturerslist').options;
    var a = options.length;
    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    var request = new Ajax.Request('/ajax', {method: 'post', parameters: data, onComplete: lecturersResponse});
}
function lecturersResponse(response) {
    var text = response.responseText;
    var opts = text.split(";");
    var options = $('lecturerslist').options;
    var a = options.length;

    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    for (i = 0; i <= (opts.length / 2) - 1; i++) {
        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
        options[i].selected = true;

    }
}
function studentsResponse(response) {
    var text = response.responseText;
    var opts = text.split(";");
    var options = $('studentslist').options;
    var a = options.length;

    for (i = 0; i < a; i++) {
        options[0] = null;
    }
    for (i = 0; i <= (opts.length / 2) - 1; i++) {
        options[i] = new Option(opts[i * 2 + 1], opts[i * 2], false);
        options[i].selected = true;

    }
}
