function initproducers() {
    var tableCrossref = $("crossref");
    if ( tableCrossref != null ) {
        var selectProducer = createDOM( "SELECT" );
        setNodeAttribute( selectProducer, "id", "producer" );
        addElementClass(selectProducer, "Select");
        setNodeAttribute( selectProducer, "onchange", "producerChange();" );
    
        appendChildNodes( "producerParent", selectProducer );
        var url = "include/crossrefdata.php";
        var arg = {req: "producer"};
        var dprod = loadJSONDoc(url, arg);
        var gotMetadata = function ( answer ) {
            var a = 0;
            for ( a = 0; a < answer.producer.prodname.length; a++ ) {
                var newOption = createDOM( "OPTION", answer.producer.prodname[a] );
                setNodeAttribute(newOption, "value", answer.producer.id[a]);
                appendChildNodes( selectProducer, newOption );
            }
            modelBuild();
        };

        var metadataFetchFailed = function (err) {
            alert("Error occured, please reload the page");
        };
        dprod.addCallbacks(gotMetadata, metadataFetchFailed);
    }
}

function modelBuild() {
    var tableCrossref = $("crossref");
    var selectModel = createDOM( "SELECT" );
    var refNameText = createDOM( "SPAN" );
    setNodeAttribute( selectModel, "id", "model" );
    setNodeAttribute( refNameText, "id", "refNameText" );
    addElementClass(selectModel, "Select");
    addElementClass(refNameText, "RefName");
    appendChildNodes( "modelParent", selectModel );
    appendChildNodes( "refParent", refNameText );
    setNodeAttribute( selectModel, "onchange", "modelChange();" );
    producerChange();
}

function producerChange() {
    var tableCrossref = $("crossref");
    if ( tableCrossref != null ) {
        var selectProducer = $("producer");
        var selectModel = $("model");
        var refNameText = $("refNameText");
        //Must inevitable change the refname and we need purge the options i selectModel
        refNameText.innerHTML = "";
        var url = "include/crossrefdata.php";
        var ownerid = getNodeAttribute( selectProducer.options[selectProducer.selectedIndex] , "value");
        var arg = {oid: ownerid};
        var dmodel = loadJSONDoc(url, arg);
        replaceChildNodes( selectModel );
        var gotMetadata = function ( answer ) {
            var a = 0;
            for ( a = 0; a < answer.model.origname.length; a++ ) {
                var newOption = createDOM( "OPTION", answer.model.origname[a] );
                setNodeAttribute(newOption, "value", answer.model.refname[a]);
                appendChildNodes( selectModel, newOption );
                // Force updating refname
                modelChange();
            }
        };

        var metadataFetchFailed = function (err) {
            alert("Error occured, please reload the page");
        };
        dmodel.addCallbacks(gotMetadata, metadataFetchFailed);
    }
}

function modelChange() {
    var refNameText = $("refNameText");
    var selectModel = $("model");
    refNameText.innerHTML = getNodeAttribute( selectModel.options[selectModel.selectedIndex] , "value" );
}
