function choice(question, choice) {
    // unset choice if same again
    if (document.getElementById(question).value == choice) {
        choice = -1;
    }
    // switch images
    for (var i=0; i <= 5; i++) {
        var img = document.getElementById(question + '_' + i);
        var len = img.src.length;
        img.src = img.src.substr(0, len - (img.src.charAt(len-5) == 's' ? 5 : 4)) + (i == choice ? 's' : '') + img.src.substr(len - 4, 4);
    }
    // switch hidden value
    document.getElementById(question).value = choice;
    return false;
}

function qitem(name, id) {
    var free = -1;
    for (var i=0; i < 5; i++) {
        var hid = document.getElementById(id + i);
        if (! hid.value.length && free == -1) {
            free = i;
        } else if (hid.value == name) {
            free = -2;
        }
    }
    if (free > -1) {
        hid = document.getElementById(id + free);
        hid.value = name
        document.getElementById('qbox').options[free].appendChild(document.createTextNode(name));
    }
    return false;
}

function qitem_cust(id) {
    if (document.getElementById('qcustom').value.length) {
        for (var i=0; i < 5; i++) {
            var hid = document.getElementById(id + i);
            if (! hid.value.length) {
                hid.value = document.getElementById('qcustom').value;
                document.getElementById('qbox').options[i].appendChild(document.createTextNode(document.getElementById('qcustom').value));
                document.getElementById('qcustom').value = '';
                break;
            }
        }
    }
    return false;
}

function qitem_rem(id) {
    var ind = document.getElementById('qbox').selectedIndex;
    document.getElementById(id + ind).value = '';
    if (document.getElementById('qbox').options[ind].childNodes.length != 0) {
        document.getElementById('qbox').options[ind].removeChild(document.getElementById('qbox').options[ind].childNodes[0]);
    }
    return false;
}

function qitem_up(id) {
    var ind = document.getElementById('qbox').selectedIndex;
    if (ind > 0) {
        var v1 = document.getElementById(id + ind).value;
        // switch hidden values
        v2 = document.getElementById(id + ind).value = document.getElementById(id + (ind - 1)).value;
        document.getElementById(id + (ind - 1)).value = v1;
        // switch labels
        if (document.getElementById('qbox').options[ind].childNodes.length != 0) {
            oldc = document.getElementById('qbox').options[ind].removeChild(document.getElementById('qbox').options[ind].childNodes[0]);
        }
        if (document.getElementById('qbox').options[ind - 1].childNodes.length != 0) {
            oldc = document.getElementById('qbox').options[ind - 1].removeChild(document.getElementById('qbox').options[ind - 1].childNodes[0]);
        }
        if (v1.length != 0) {
            document.getElementById('qbox').options[ind - 1].appendChild(document.createTextNode(v1));
        }
        if (v2.length != 0) {
            document.getElementById('qbox').options[ind].appendChild(document.createTextNode(v2));
        }
        // switch selection
        document.getElementById('qbox').selectedIndex = ind - 1;
    }
    return false;
}

function qitem_down(id) {
    var ind = document.getElementById('qbox').selectedIndex;
    if (ind < 4) {
        // switch hidden values
        var v1 = document.getElementById(id + ind).value;
        v2 = document.getElementById(id + ind).value = document.getElementById(id + (ind + 1)).value;
        document.getElementById(id + (ind + 1)).value = v1;
        // switch labels
        if (document.getElementById('qbox').options[ind].childNodes.length != 0) {
            oldc = document.getElementById('qbox').options[ind].removeChild(document.getElementById('qbox').options[ind].childNodes[0]);
        }
        if (document.getElementById('qbox').options[ind + 1].childNodes.length != 0) {
            oldc = document.getElementById('qbox').options[ind + 1].removeChild(document.getElementById('qbox').options[ind + 1].childNodes[0]);
        }
        if (v1.length != 0) {
            document.getElementById('qbox').options[ind + 1].appendChild(document.createTextNode(v1));
        }
        if (v2.length != 0) {
            document.getElementById('qbox').options[ind].appendChild(document.createTextNode(v2));
        }
        // switch selection
        document.getElementById('qbox').selectedIndex = ind + 1;
    }
    return false;
}

function InterviewChooser(interview, itype, ilang) {
    this.interview = interview;
    this.itype = itype;
    this.ilang = ilang;
    
    this.selectType = function(itype) {
        lang = document.getElementById('interview[language]');
        // remove old languages
        this.clearChildNodes(lang);
        
        // add new languages
        this.itype = itype;
        var langs = this.langForType(itype)
        for (l in langs) {
            child = document.createElement('option');
            child.setAttribute('value', langs[l].value);
            child.appendChild(document.createTextNode(langs[l].name));
            lang.appendChild(child);
        }
        if (langs && langs.length) {
            this.selectLang(langs[0].value);
        } else {
            this.clearChildNodes(document.getElementById('interview[country]'));
        }
    };
    
    this.selectLang = function(ilang) {
        sublang = document.getElementById('interview[country]');
        this.clearChildNodes(sublang);

        // select language
        var langs = this.langForType(this.itype);
        for (i in langs) {
            if (langs[i].value == ilang) {
                var sublangs = langs[i].sublang;
                break;
            }
        }
        // add sublanguage
        for (l in sublangs) {
            child = document.createElement('option');
            child.setAttribute('value', sublangs[l].value);
            child.appendChild(document.createTextNode(sublangs[l].name));
            sublang.appendChild(child);
        }
		this.selectCountry(sublangs[0].value);
    }

	this.selectCountry = function(iCountry) {
		document.getElementById('countryflag').src = 'include/flag/' + iCountry.toUpperCase() + '.gif';
	}
    
    this.langForType = function(itype) {
        for (i in this.interview) {
            if (this.interview[i].value == itype) {
                return this.interview[i].lang;
            }
        }
    }
    
    // remove old languages
    this.clearChildNodes = function(node) {
        while (node.childNodes.length > 0) {
            node.removeChild(node.childNodes[0]);
        }
    };
}

// function init() {
// }
// window.addEventListener('load', init, false)