/**
 * JavaScript klasse brukt for presentere en DIV basert dialogboks
 * hvor brukeren kan velge hvilke type informasjonsobjekt som skal opprettes.
 *
 * Når brukeren har valgt type innholdobjekt og velger Opprett vil det bli
 * opprettet et nytt innholdsobjekt der de oppgitte parameterene vil bli brukt.
 *
 **/

var NxcCreateObjectDialogDiv = null;
function NxcCreateObjectDialog(Action,CanCreateClasses,NodeID,ContentObjectID,Language,ClassID,HasMainAssignment) {
    this._Action = Action;
    this._CanCreateClasses = CanCreateClasses;
    this._ContentObjectLanguageCode = Language;
    this._ContentLanguageCode = Language;

    this._NodeID = NodeID;
    this._ContentNodeID = NodeID;
    this._ContentObjectID = ContentObjectID;

    /* Dersom ClassID er oppgitt vil denne innholdsklassen være valgt i listen når dialogboksen åpnes */
    if(ClassID != null) {
        this._ClassID = ClassID;
    }
    if(HasMainAssignment != null) {
        this._HasMainAssignment = HasMainAssignment;
    }
}
NxcCreateObjectDialog.prototype._Action = '/content/action';
NxcCreateObjectDialog.prototype._CanCreateClasses = new Array();
NxcCreateObjectDialog.prototype._HasMainAssignment = 1;
NxcCreateObjectDialog.prototype._ContentObjectLanguageCode = '';
NxcCreateObjectDialog.prototype._ContentLanguageCode = '';
NxcCreateObjectDialog.prototype._ContentObjectID = 0;
NxcCreateObjectDialog.prototype._ContentNodeID = 0;
NxcCreateObjectDialog.prototype._NodeID = 0;
NxcCreateObjectDialog.prototype._ClassID = 0;
NxcCreateObjectDialog.prototype.Title = 'Opprett nytt innholdsobjekt';
NxcCreateObjectDialog.prototype.ClassTypeLabel = 'Velg type innholdsobjekt som skal opprettes:';
NxcCreateObjectDialog.prototype.hide = function() {
    if(window.NxcCreateObjectDialogDiv != null) {
        window.NxcCreateObjectDialogDiv.innerHTML = '';
        window.NxcCreateObjectDialogDiv.style.display = 'none';
    }
}
NxcCreateObjectDialog.prototype.toggleOpprett = function() {
    var select = document.getElementById('ncodSelect');
    if(select.options[select.selectedIndex].value == 0) {
        document.getElementById('ncodOpprett').disabled = true;
    } else {
        document.getElementById('ncodOpprett').disabled = false;
    }
}
NxcCreateObjectDialog.prototype.validateData = function() {
    var altOK = false;
    var feilmeldinger = '';
    for(var i=0;i<document.forms.length;i++) {
        if(document.forms[i].name == 'NxcCreateObjectDialog') {
            var form = document.forms[i];
            var altOK = true;
            for(var j=0;j<form.elements.length;j++) {
                switch(form.elements[j].name) {
                    case 'ClassID':
                        if(form.elements[j].value == null || form.elements[j].value <= 0) {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig ClassID';
                        }
                        break;
                    case 'NodeID':
                        if(form.elements[j].value == null || form.elements[j].value <= 0) {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig NodeID';
                        }
                        break;
                    case 'ContentNodeID':
                        if(form.elements[j].value == null || form.elements[j].value <= 0) {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig ContentNodeID';
                        }
                        break;
                    case 'ContentObjectID':
                        if(form.elements[j].value == null || form.elements[j].value <= 0) {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig ContentObjectID';
                        }
                        break;
                    case 'HasMainAssignment':
                        if(form.elements[j].value != 1) {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig HasMainAssignment';
                        }
                        break;
                    case 'ContentObjectLanguageCode':
                        if(form.elements[j].value != 'nor-NO' && form.elements[j].value != 'eng-GB') {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig ContentObjectLanguageCode';
                        }
                        break;
                    case 'ContentLanguageCode':
                        if(form.elements[j].value != 'nor-NO' && form.elements[j].value != 'eng-GB') {
                            altOK = false;
                            feilmeldinger = '\n- Ugyldig ContentLanguageCode';
                        }
                        break;

                }
            }
            break;
        }
    }
    if(!altOK) {
        alert('FEIL!\nKan ikke opprette nytt innholdsobjekt.'+feilmeldinger);
    }
    return altOK;
}
NxcCreateObjectDialog.prototype.createDialog = function() {
    var dialog = document.createElement('div');
    var title = document.createElement('h2');
    title.appendChild(document.createTextNode(this.Title));
    dialog.appendChild(title);
    var form = document.createElement('form');
    form.setAttribute('method','post');
    form.setAttribute('action',this._Action);
    form.setAttribute('name','NxcCreateObjectDialog');
    var label = document.createElement('label');
    label.appendChild(document.createTextNode(this.ClassTypeLabel));
    form.appendChild(label);
    var select = document.createElement('select');
    select.setAttribute('name','ClassID');
    select.setAttribute('id','ncodSelect');
    select.onchange = this.toggleOpprett;
    var option = document.createElement('option');
    option.setAttribute('value',0);
    option.appendChild(document.createTextNode('Velg type...'));
    select.appendChild(option);
    for(var j=0;j<this._CanCreateClasses.length;j++) {
        var optiongrp = document.createElement('optgroup');
        optiongrp.setAttribute('label',this._CanCreateClasses[j]['groupname']);
        for(var i=0;i<this._CanCreateClasses[j]['list'].length;i++) {
            if(this._CanCreateClasses[j]['list'][i]['name'] != null) {
                var option = document.createElement('option');
                option.setAttribute('value',this._CanCreateClasses[j]['list'][i]['id']);
                option.appendChild(document.createTextNode(this._CanCreateClasses[j]['list'][i]['name']));
                if(this._CanCreateClasses[j]['list'][i]['id'] == this._ClassID) {
                    option.setAttribute('selected','selected');
                }
                optiongrp.appendChild(option);
            }
        }
        select.appendChild(optiongrp);
    }
    form.appendChild(select);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','HasMainAssignment');
    hidden.setAttribute('value',this._HasMainAssignment);
    form.appendChild(hidden);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','ContentObjectLanguageCode');
    hidden.setAttribute('value',this._ContentObjectLanguageCode);
    form.appendChild(hidden);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','ContentLanguageCode');
    hidden.setAttribute('value',this._ContentLanguageCode);
    form.appendChild(hidden);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','ContentObjectID');
    hidden.setAttribute('value',this._ContentObjectID);
    form.appendChild(hidden);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','ContentNodeID');
    hidden.setAttribute('value',this._ContentNodeID);
    form.appendChild(hidden);
    var hidden = document.createElement('input');
    hidden.setAttribute('type','hidden');
    hidden.setAttribute('name','NodeID');
    hidden.setAttribute('value',this._NodeID);
    form.appendChild(hidden);

    var buttons = document.createElement('div');
    buttons.setAttribute('id','ncodButtons');
    var opprett = document.createElement('input');
    opprett.setAttribute('type','submit');
    opprett.setAttribute('name','NewButton');
    opprett.setAttribute('value','Opprett innholdsobjekt');
    opprett.setAttribute('id','ncodOpprett');
    if(this._ClassID == 0) {
        opprett.setAttribute('disabled','disabled');
    }
    opprett.onclick = this.validateData;
    buttons.appendChild(opprett);
    var avbryt = document.createElement('input');
    avbryt.setAttribute('type','button');
    avbryt.setAttribute('name','AvbrytButton');
    avbryt.setAttribute('value','Avbryt');
    avbryt.setAttribute('id','ncodAvbryt');
    avbryt.onclick = this.hide;
    buttons.appendChild(avbryt);
    form.appendChild(buttons);

    dialog.appendChild(form);
    return dialog;
}
NxcCreateObjectDialog.prototype.setPositioningDiv = function(innhold) {
    /* Opprett DIV dersom den mangler */
    if(window.NxcCreateObjectDialogDiv == null) {
        window.NxcCreateObjectDialogDiv = document.createElement('div');
        window.NxcCreateObjectDialogDiv.setAttribute('id','NxcCreateObjectDialog');
        document.body.appendChild(window.NxcCreateObjectDialogDiv);
    }
    /* Sentrer */
	var klientBredde = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		klientBredde = window.innerWidth;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		klientBredde = document.documentElement.clientWidth;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		klientBredde = document.body.clientWidth;
	}
    window.NxcCreateObjectDialogDiv.style.left = ((klientBredde / 2) - 183) + 'px';
    /* Horisontal posisjon */
    var pixlerScrollet = 0;
    if(window.pageYOffset) {
        pixlerScrollet = window.pageYOffset;
    } else if (document.documentElement) {
        pixlerScrollet = document.documentElement.scrollTop;
    } else if(document.body.scrollTop) {
        pixlerScrollet = document.body.scrollTop;
    }
    window.NxcCreateObjectDialogDiv.style.top = (250 + pixlerScrollet) + 'px';
    /* Fjerner alt eksisterende innhold */
    window.NxcCreateObjectDialogDiv.innerHTML = '';
    /* Legger til nytt innhold */
    window.NxcCreateObjectDialogDiv.appendChild(innhold);
    /* Setter CSS for at DIV skal vises */
    window.NxcCreateObjectDialogDiv.style.display = 'block';
}
NxcCreateObjectDialog.prototype.show = function() {
    this.setPositioningDiv(this.createDialog());
}

