// === Ajax Tools =============================================================

// based on: http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml

// generic Ajax request object
function ajaxRequest() {
    if (window.ActiveXObject) { // test for support for ActiveXObject in IE
                                // first (as XMLHttpRequest in IE7 is broken)
        // ActiveX versions to check for in IE
        var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
        for (var i = 0; i < activexmodes.length; i++)
            try {
                return new ActiveXObject(activexmodes[i]);
            } catch(e) {
                // suppress error
            }
    } else if (window.XMLHttpRequest) { // if Mozilla, Safari etc.
        return new XMLHttpRequest();
    }
    return false;
}

// set element by Ajax GET
function setElementByAjaxGET(url, id, property) {
    var request = new ajaxRequest();
    if (! request) {
        //alert("Error:  Can not create Ajax object!");
        return;
    }
    request.onreadystatechange = function() {
        if (request.readyState == 4)
            if (request.status == 200 ||
                window.location.href.indexOf("http") == -1) {
                // specific part (begin)
                var element = document.getElementById(id);
                if (property == 'value') {
                    element.value = request.responseText;
                } else if (property == 'innerHTML') {
                    element.innerHTML = request.responseText;
                }
                // specific part (end)
            } else {
                //alert("Error:  Can not get server response!");
            }
    }
    request.open("GET", url, true);
    request.send(null);
}

// set course requailification reference numbers by DAK data
function setReferenceNubersByDAK(url) {
    var request = new ajaxRequest();
    if (! request) {
        //alert("Error:  Can not create Ajax object!");
        return;
    }
    if (request.overrideMimeType) request.overrideMimeType('text/xml');
    request.onreadystatechange = function() {
        if (request.readyState == 4)
            if (request.status == 200 ||
                window.location.href.indexOf("http") == -1) {
                var xml = request.responseXML;
                // specific part (begin)
                var aux_reference_number =
                    document.getElementById('aux_reference_number');
                aux_reference_number.length = 0;
                var req_acc_id = document.getElementById('req_acc_id');
                req_acc_id.length = 1;
                var records = xml.getElementsByTagName('record');
                for (var i = 0; i < records.length; i++) {
		    var accreditation_id = '', reference_number = '';
                    values = records[i].getElementsByTagName('value');
                    for (var j = 0; j < values.length; j++)
			if (values[j].getAttribute('id') ==
                            'accreditation_id') {
			    accreditation_id = values[j].firstChild ?
					       values[j].firstChild.nodeValue :
                                               '';
			} else if (values[j].getAttribute('id') ==
				   'accreditation_reference_number') {
			    reference_number = values[j].firstChild ?
					       values[j].firstChild.nodeValue :
                                               '';
			}
		    req_acc_id.options[i + 1] = new Option(reference_number,
							   accreditation_id);
		    aux_reference_number.options[i] =
                    new Option(reference_number, accreditation_id);
		}
                if (req_acc_id.length > 1) req_acc_id.options[0].text = '';
                // specific part (end)
            } else {
                //alert("Error:  Can not get server response!");
            }
    }
    request.open("GET", url, true);
    request.send(null);
}

// set course requalification by DAK data
function setRequalificationByDAK(url) {
    var request = new ajaxRequest();
    if (! request) {
        //alert("Error:  Can not create Ajax object!");
        return;
    }
    if (request.overrideMimeType) request.overrideMimeType('text/xml');
    request.onreadystatechange = function() {
	if (request.readyState == 4)
	    if (request.status == 200 ||
                window.location.href.indexOf("http") == -1) {
		var xml = request.responseXML;
                // specific part (begin)
                // - get and set req_date and req_valid_to
                var values = xml.getElementsByTagName('value');
                for (var i = 0; i < values.length; i++)
                    if (values[i].getAttribute('id') ==
                        'accreditation_date_from') {
                        document.getElementById('req_date').value =
                        values[i].firstChild ? values[i].firstChild.nodeValue :
                                               '';
                    } else if (values[i].getAttribute('id') ==
                        'accreditation_date_to') {
                        document.getElementById('req_valid_to').value =
                        values[i].firstChild ? values[i].firstChild.nodeValue :
                                               '';
                    }
                // - reset aux_program_name, aux_classification_id, aux_hours,
                //   req_prog_id selects
                var aux_program_name =
                    document.getElementById('aux_program_name');
                aux_program_name.length = 0;
                var aux_classification_id =
                    document.getElementById('aux_classification_id');
                aux_classification_id.length = 0;
                var aux_hours = document.getElementById('aux_hours');
                aux_hours.length = 0;
                var req_prog_id = document.getElementById('req_prog_id');
                req_prog_id.length = 1;
                // - get and set req_prog_id
                var records = xml.getElementsByTagName('record');
                for (var i = 0; i < records.length; i++) {
                    var program_id = '', program_name = '';
                    var classification_id = '';
		    var hours = '', theory = '', practise = '';
                    values = records[i].getElementsByTagName('value');
                    for (var j = 0; j < values.length; j++)
                        if (values[j].getAttribute('id') == 'program_id') {
                            program_id = values[j].firstChild ?
                                         values[j].firstChild.nodeValue : '';
                        } else if (values[j].getAttribute('id') ==
                                   'program_name') {
                            program_name = values[j].firstChild ?
                                           values[j].firstChild.nodeValue : '';
                        } else if (values[j].getAttribute('id') ==
                                   'program_dat_classification') {
                            classification_id =
                            values[j].firstChild ?
                            values[j].firstChild.nodeValue : '';
                        } else if (values[j].getAttribute('id') ==
                                   'program_hours') {
                            hours = values[j].firstChild ?
                                    values[j].firstChild.nodeValue : '';
                        } else if (values[j].getAttribute('id') ==
                                   'program_hours_theory') {
                            theory = values[j].firstChild ?
                                     values[j].firstChild.nodeValue : '';
                        } else if (values[j].getAttribute('id') ==
                                   'program_hours_practise') {
                            practise = values[j].firstChild ?
                                       values[j].firstChild.nodeValue : '';
                        }
                    req_prog_id.options[i + 1] = new Option(program_name,
                                                            program_id);
                    aux_program_name.options[i] = new Option(program_name,
                                                             program_id);
                    aux_classification_id.options[i] =
                    new Option(classification_id, program_id);
                    aux_hours.options[i] =
                    new Option(hours != '' ? hours :
                               theory != '' || practise != '' ?
                               (theory || 0) + '/' + (practise || 0) : '',
                               program_id);
                }
                // specific part (end)
	    } else {
                //alert("Error:  Can not get server response!");
	    }
    }
    request.open("GET", url, true);
    request.send(null);
}

// === Ajax Tools (end) =======================================================

