﻿
function DN_isset(sVarname)
{
	return typeof window[sVarname] != 'undefined';
}

function DN_disable(object) {
    if (object.tagName == "SELECT") {
        object.disabled = true;
    } else if (object.tagName == "INPUT") {
        try {
            if (DN_isset(object.id)) {
                window[object.id].Disable();
            } else if (DN_isset(object.id.substring(0,object.id.length - 5))) {
                window[object.id.substring(0,object.id.length - 5)].Disable();            
            }
        } catch (err) {
            //window[object.id].Disable();            
        }
    }
}

function DN_enable(object) {
    if (object.tagName == "SELECT") {
        object.disabled = false;
    } else if (object.tagName == "INPUT") {
        try {
            if (DN_isset(object.id)) {
                window[object.id].Enable();
            } else if (DN_isset(object.id.substring(0,object.id.length - 5))) {
                window[object.id.substring(0,object.id.length - 5)].Enable();            
            }
        } catch (err) {
            //window[object.id].Enable();
        }
    }
}

function DN_initCombobox() {

    var myform = document.forms[0];
    for(i = 0; i < document.forms.length; i++) {
        if (document.forms[i].id == 'aspnetForm') {
            myform = document.forms[i];
            break;
        }
    }

	for(i = 0; i < myform.elements.length; i++) {
		if (DN_isset(myform.elements[i].id+'_data')) {
			var dataarray = eval(myform.elements[i].id+'_data');
			
			if (dataarray.length == 0 && myform.elements[i].tagName == "SELECT") {
			    myform.elements[i].options.length = 1;
			    myform.elements[i].options[0] = new Option('Indiferente', '');
			    DN_disable(myform.elements[i]);
			    continue;
			} else if (myform.elements[i].tagName == "INPUT") {
			    //window[myform.elements[i].id].SetValue('');
			    //if (window[myform.elements[i]].GetValue().lenght == 0)
			    DN_disable(myform.elements[i]);
			    continue;
			}
			
			if (dataarray != null) {
				myform.elements[i].options.length = dataarray.length;
				for (j = 0; j < dataarray.length; j++) {
					myform.elements[i].options[j] = new Option(dataarray[j], dataarray[j]);
					if (typeof dataarray[j] != 'string') {
						myform.elements[i].options.length = 1;
						myform.elements[i].options.selectedIndex = 0;
					}
					DN_disable(myform.elements[i]);
				}
			}
			
			for (k = 0; k < controlosMain.length; k++) {
			    if (myform.elements[i].id == controlosMain[k]) {
			        DN_enable(myform.elements[i]);			        
			    }
			}
		}
	}
}

function DN_changeCombobox(controloid, subcontroloid, hiddenfieldid) {
    DN_changeCombobox(controloid, subcontroloid, hiddenfieldid, false);
}

function DN_changeCombobox(controloid, subcontroloid, hiddenfieldid, updatecategory) {

	var controlo = document.getElementById(controloid);
	var subcontrolo = document.getElementById(subcontroloid);    
	var hiddenfield = document.getElementById(hiddenfieldid);

    var subdataarray;
    if (DN_isset(subcontrolo.id+'_data') && eval(subcontrolo.id+'_data').length > 0) {
        subdataarray = eval(subcontrolo.id+'_data');
    } else if (DN_isset(subcontrolo.id+'_'+hiddenfield.value+'_data')) { // situacao alternativa para a marca em motor
        subdataarray = eval(subcontrolo.id+'_'+hiddenfield.value+'_data');
    } else {
        DN_disable(subcontrolo);
        return true;
    }
	
	var number = controlo.selectedIndex;
	DN_enable(subcontrolo);

	subcontrolo.options.length = subdataarray[number].length;
	
	for(i=0;i<subdataarray[number].length;i++)
	{
		subcontrolo.options[i] = new Option(subdataarray[number][i], subdataarray[number][i]);
	}
	
	if (subcontrolo.options.length <= 1) {
	    DN_disable(subcontrolo);
		//subcontrolo.disabled = true;
	}
	
	if (updatecategory != null && updatecategory == true) {
		DN_update(controloid, subcontroloid, hiddenfieldid);
	}

}

function DN_update(controloid, subcontroloid, hiddenfieldid) {

	var controlo = document.getElementById(controloid);
	var subcontrolo = document.getElementById(subcontroloid);
	var hiddenfield = document.getElementById(hiddenfieldid);

	var subdataarrayid = eval(subcontrolo.id+'_dataid');

    var category;
    if (subcontrolo.tagName == "INPUT") {
        category = subdataarrayid[controlo.selectedIndex];
    } else {
        if (subcontrolo.selectedIndex > 0) {
            category = subdataarrayid[controlo.selectedIndex][subcontrolo.selectedIndex];
        } else {
            category = eval(controlo.id+'_dataid')[controlo.selectedIndex]
        }
    }
    
    
	if (hiddenfield != null) {
	    hiddenfield.value = category;
	}
	
	var controlarrayid_e = eval(subcontrolo.id+'_controlid')[category+'_enabled'];
	if (controlarrayid_e != null) {
		for (i = 0; i < controlarrayid_e.length; i++) {
		    if (document.getElementById(controlarrayid_e[i]).tagName == "SELECT") {
                DN_enable(document.getElementById(controlarrayid_e[i]));
                //document.getElementById(controlarrayid_e[i]).disabled = false;
                DN_reloadCombobox(controlarrayid_e[i], hiddenfieldid);
            } else if (document.getElementById(controlarrayid_e[i]).tagName == "INPUT") {                
                DN_enable(document.getElementById(controlarrayid_e[i]));
            }
		}
	}
	
	var controlarrayid_d = eval(subcontrolo.id+'_controlid')[category+'_disabled'];	
	if (controlarrayid_d != null) {	
		for (i = 0; i < controlarrayid_d.length; i++) { // falta o tratamento para textbox
		    if (document.getElementById(controlarrayid_d[i]).tagName == "SELECT") {
                document.getElementById(controlarrayid_d[i]).options.length = 1;
                document.getElementById(controlarrayid_d[i]).options.selectedIndex = 0;
                DN_disable(document.getElementById(controlarrayid_d[i]));
                //document.getElementById(controlarrayid_d[i]).disabled = true;
            } else if (document.getElementById(controlarrayid_d[i]).tagName == "INPUT") {
                window[(document.getElementById(controlarrayid_d[i])).id].SetValue("");
                window[controlarrayid_d[i]].Disable();
            }
		}
	}
	
}

function DN_reloadCombobox(controloid, hiddenfieldid) {

    var controlo = document.getElementById(controloid);
    var hiddenfield = document.getElementById(hiddenfieldid);
	
	if (DN_isset(controlo.id+'_data')) {
	    
		var dataarray = eval(controlo.id+'_data');
		if (dataarray.length == 0) {
		    dataarray = eval(controlo.id+'_'+hiddenfield.value+'_data');
		}
		
		if (dataarray.length == 0) {
		    controlo.options.length = 1;
		    controlo.options[0] = new Option('Indiferente', '');
		    DN_disable(controlo);
		    //controlo.disabled = true;
		    return true;
		}
		
		if (dataarray != null) {				
			controlo.options.length = dataarray.length;
			for (j = 0; j < dataarray.length; j++) {
				controlo.options[j] = new Option(dataarray[j], dataarray[j]);
				if (typeof dataarray[j] != 'string') {				
				    if (DN_isset(controlo.id+'_parent')) {				        
				        var parentControlo = document.getElementById(eval(controlo.id+'_parent'));
                        var index = parentControlo.options.selectedIndex;
                        controlo.options.length = dataarray[index].length;
                                                
				        for (t = 0; t < dataarray[index].length; t++) {
				            controlo.options[t] = new Option(dataarray[index][t], dataarray[index][t]);
				        }
				        controlo.options.selectedIndex = 0;
				        DN_enable(controlo);
				        break;				        
				    }
				
					controlo.options.length = 1;
					controlo.options.selectedIndex = 0;
					DN_disable(controlo);
					break;
				}
			}
		}
	}
}


function DN_setValue(SelectID, HiddenID, Value) {
    var SelectObject = document.getElementById(SelectID);
    for(index = 0; index < SelectObject.options.length; index++) {
        if(SelectObject.options[index].value == Value) {
            SelectObject.selectedIndex = index;
            break;
        }
    }
    
    if (DN_isset(SelectID+'_child')) {
        var SelectChildID = eval(SelectID+'_child');
        try {            
            DN_changeCombobox(SelectID, SelectChildID, HiddenID, DN_isset(SelectChildID+'_parent'));
        } catch (err) 
        {
	    	alert(err);    
	    }
    }
    
    if (DN_isset(SelectID+'_parent')) {
        var SelectParentID = eval(SelectID+'_parent');
        try {
            if (document.getElementById(SelectParentID).selectedIndex > 0) {
                //SelectObject.disabled = true;
                DN_disable(SelectObject);
            }
            DN_update(SelectParentID, SelectID, HiddenID);
        } catch (err) 
        {}
    } else {
        DN_enable(SelectObject);
        //SelectObject.disabled = false;
    }
    
}



