// 

var req = 0;
var m_nWaitCount = 0;
var isinit = false;
var m_bDebug = false;

////
var m_pSuchformular = null;
	
var m_pSuchbegriff = null;
var m_pSuchkategorie = null;
var m_pSuchort = null;
var m_pSuchbegriffUser = null;

var m_pManufacturers = null;
var m_pModels = null;
var m_pSuchbegriffUser = null;

var m_pXMANUFACTURER = null;
var m_pXMODELID = null;
var m_pXMODELNAME = null;
var m_pXLOGOMANUFACTURER = null;
var m_pXLOGOMODEL = null;

var m_pLogo_manufacturer = null;
var m_pLogo_model_box = null;
var m_pLogo_model = null;

var m_pLoadingIcon = null;
var m_pBtn_dosearch = null;

var m_pDebug = null;
////


function _debug(line) {
    if (m_bDebug) {
        var buffer = m_pDebug;
        if (buffer) {
            var mydiv = document.createElement('div');
            mydiv.innerHTML = line;
            buffer.appendChild(mydiv);
        }
    }
}

function init(manufacturer, modelid, modelname, logomanufacturer, logomodel) {
    // Setzen der globalen Variablen auf die entsprechenden HTML-Objekte
    getHTMLObjects();
    
    if (manufacturer == "__XMANUFACTURER__") { manufacturer = ""; }
    if (modelid == "__XMODELID__") { modelid = ""; }
    if (modelname == "__XMODELNAME__") { modelname = ""; }
    if (logomanufacturer == "__XLOGOMANUFACTURER__") { logomanufacturer = ""; }
    if (logomodel == "__XLOGOMODEL__") { logomodel = ""; }
    
    _debug("init: manufacturer=" + manufacturer + " modelid=" + modelid +
        " modelname=" + modelname + " logomanufacturer=" + logomanufacturer + 
        " logomodel=" + logomodel);
    
    // JS aktiv: Suche einblenden
    if (!document.getElementById('IDajaxsearch')) { return; }
    document.getElementById('IDajaxsearch').style.display = "block";
    
    // Nur einmalig initialisieren
	if (isinit) return;
	isinit = true;
    
    // Hersteller- / Drucker-vorauswahl
	if ((manufacturer.length && manufacturer != '---') && (modelid.length && modelid != '---')) {
        {
            var option = document.createElement('option');
            option.setAttribute("value", manufacturer);
            option.innerHTML = manufacturer;
            option.selected = true;
            m_pManufacturers.appendChild(option);
            _debug("manufacturer selected");
        }
        {
            var option = document.createElement('option');
            option.setAttribute("value", modelid);
            option.innerHTML = modelname;
            option.selected = true;
            m_pModels.appendChild(option);
            _debug("model selected");
        }
        
        m_pBtn_dosearch.style.visibility = 'visible';
    }
    
    // Vorauswahl Herstellerlogo
    if (logomanufacturer.length > 3) {
        m_pLogo_manufacturer.src = logomanufacturer;
        //m_pLogo_manufacturer.style.display = "block";
    }
    
    // Vorauswahl Logo des Druckers
    if (logomodel.length > 3) {
        m_pLogo_model_box.style.display = "block";
        m_pLogo_model.src = logomodel;
        m_pLogo_model.style.display = "block";
    }
	
    // Herstellerliste füllen
	getPrinterManufacturers(1);
}

// Setzen der globalen Variablen auf die entsprechenden HTML-Objekte
function getHTMLObjects() {
    m_pSuchformular = document.getElementById('IDsearchform');
	
    m_pSuchbegriff = document.getElementById('IDpowersuchbegriff');
    m_pSuchkategorie = document.getElementById('IDsuchkategorie');
    m_pSuchort = document.getElementById('IDsuchort');
    m_pSuchbegriffUser = document.getElementById('IDsuchbegriff_user');

    m_pManufacturers = document.getElementById('IDmanufacturers');
    m_pModels = document.getElementById('IDmodels');

    m_pXMANUFACTURER = document.getElementById('IDXMANUFACTURER');
    m_pXMODELID = document.getElementById('IDXMODELID');
    m_pXMODELNAME = document.getElementById('IDXMODELNAME');
    m_pXLOGOMANUFACTURER = document.getElementById('IDXLOGOMANUFACTURER');
    m_pXLOGOMODEL = document.getElementById('IDXLOGOMODEL');

    m_pLogo_manufacturer = document.getElementById('IDlogo_manufacturer');
    m_pLogo_model_box = document.getElementById('IDlogo_model_box');
    m_pLogo_model = document.getElementById('IDlogo_model');

    m_pLoadingIcon = document.getElementById('IDloadingIcon');
    m_pBtn_dosearch = document.getElementById('IDbtn_dosearch');

    m_pDebug = document.getElementById('idDEBUG_debug');
}

function getPrinterManufacturers(init) {
	//m_pManufacturers.disabled = "1";
    //m_pModels.disabled = "1";
    
    /*if (-1 != myinterface.search(/__xxpath__\?/)) {
        return;
    }*/
    
    if (!init) showWaitIcon();
    
	var postdata = {
			method : 'getPrinterManufacturers',
			id : 0,
			params : [ 0,0,init ]
		};
		
	req = new HTTP.Request(
	{
		uri: myinterface, 
		postbody: postdata.toJSONString(),
		onSuccess: function (trans) {
            if (!init) hideWaitIcon();
			var data;
			try {
                data = eval('('+trans.responseText+')'); // JSON "parsen"
			} catch(e) {
                /*alert(trans.responseText);
				alert('eval getPrinterManufacturers: Ungültiges JSON: ' + e);*/
				return;
			} 
            getPrinterManufacturers_handleSuccess(data, init);
		}
	}); 
}

function getPrinterManufacturers_handleSuccess(data, init) {
	var call = data['_call'];
	var result = data['_data'];
    
    _debug("<b>getPrinterManufacturers_handleSuccess</b>"); 
	
	var selectelem = m_pManufacturers;
	
	selectelem.disabled = "";
	
	while (selectelem.hasChildNodes()) {
		selectelem.removeChild(selectelem.lastChild);
	}
	var option = document.createElement('option');
	
	option.setAttribute("value", '---');
	option.innerHTML = "---";
	selectelem.appendChild(option);
	
	if (result) {
        var strSelected = "";
        var strImg = "";
        var nSelected = 0;
		for (var i = 0; i < result.length; i++) { 
			var manufacturer = result[i][0]; //	data ERG1
 			var seled = result[i][1]; //is selected
            var img = result[i][2]; // Herstellerlogo
           
            var option = document.createElement('option');
			option.setAttribute("value", manufacturer);
            option.setAttribute("logo", img);
            option.selected = false;
			option.innerHTML = manufacturer;
			if (seled > 0) {
                _debug("selecting manufacturer: " + manufacturer); 
                strSelected = manufacturer;
				option.selected = true;
                strImg = img;
                nSelected = (i+1);
			}
			selectelem.appendChild(option);
		}
        
        selectelem.selectedIndex = nSelected;
        
        if (init && strSelected.length) {
            getPrinterModels(strSelected, 1);
        }
        
        /*if (strSelected.length && strImg.length > 3) {
            document.getElementById('logo_manufacturer').src = '../'+strImg;
            document.getElementById('logo_manufacturer').style.display = "block";
        }*/
	}
}

function myzoomimage(elem) {
    if (elem) {
        if (elem.src.length > 3) {
            Tip('<div class="box3d"><h3>Ihr Drucker:</h3><div class="content"><img src="'+elem.src+'" /></div></div>');
        }
    }
}

function myunzoomimage(elem) {
    UnTip();
}

function onChangePrinterManufacturer(selectelem) {
    m_pBtn_dosearch.style.visibility = 'hidden';
    
    var img = selectelem.options[selectelem.selectedIndex].getAttribute('logo');
    var bValid = false;
    if (img) {
        if (img.length > 3) {
            m_pLogo_manufacturer.src = '../'+img;
            //m_pLogo_manufacturer.style.display = "block";
            bValid = true;
        }
    }

    if (!bValid) {
        //m_pLogo_manufacturer.src = '';
        //m_pLogo_manufacturer.style.display = "none";
    }
    
    //m_pLogo_model_box.style.visibility = "hidden";
    m_pLogo_model_box.style.display = "none";
    m_pLogo_model.src = '';
    m_pLogo_model.style.display = "none";
    
    getPrinterModels(selectelem.value, 0);
}

function onChangePrinterModel(selectelem) {
    m_pBtn_dosearch.style.visibility = 'hidden';
    
    var img = selectelem.options[selectelem.selectedIndex].getAttribute('logo');
    var bValid = false;
    if (img) {
        if (img.length > 3) {
            m_pLogo_model.src = '../'+img;
            m_pLogo_model.style.display = "block";
            //m_pLogo_model_box.style.visibility = "visible";
            m_pLogo_model_box.style.display = "block";
            bValid = true;
        }
    }

    if (!bValid) {
        //m_pLogo_model_box.style.visibility = "hidden";
        m_pLogo_model_box.style.display = "none";
        m_pLogo_model.src = '';
        m_pLogo_model.style.display = "none";
    }
    
    if (selectelem.value != "---") {
        dosubmit();
    }
}

function getPrinterModels(manufacturer, init) {
    //m_pModels.disabled = "1";
    _debug("<b>getPrinterModels</b>");
    _debug("manufacturer="+manufacturer + ", init="+init);
    
    /*if (-1 != myinterface.search(/__xxpath__\?/)) {
        return;
    }*/
	
    if (!init) showWaitIcon();
    
	var postdata = {
			method : 'getPrinterModels',
			id : 0,
			params : [ manufacturer,0,init ]
		};
		
	req = new HTTP.Request(
	{
		uri: myinterface, 
		postbody: postdata.toJSONString(),
		onSuccess: function (trans) { 
            if (!init) hideWaitIcon();
			var data;
			try {
				data = eval('('+trans.responseText+')'); // JSON "parsen"
			} catch(e) {
				/*alert(trans.responseText);
				alert('eval getPrinterModels: Ungültiges JSON: ' + e);*/
				return;
			} 
			getPrinterModels_handleSuccess(data);
		}
	}); 
}

function getPrinterModels_handleSuccess(data) {
	var call = data['_call'];
	var result = data['_data'];
	
	var level = call['params'][0];
	
	m_pModels.disabled = "";
	
	var selectelem = m_pModels;
	while (selectelem.hasChildNodes()) {
		selectelem.removeChild(selectelem.lastChild);
	}
	var option = document.createElement('option');
	option.setAttribute("value", '---');
	option.innerHTML = "---";
	selectelem.appendChild(option);
	
	
	if (result) {
        var strImg = "";
        var nSelected = 0;
		for (var i = 0; i < result.length; i++) { 
            var itemid = result[i][0];
			var descr = result[i][1];
			var seled = result[i][2]; //is selected
            var img = result[i][3]; // Druckerbild
			var option = document.createElement('option');
			option.setAttribute("value", itemid);
            option.setAttribute("logo", img);
			option.innerHTML = descr;
            option.selected = false;
			if (seled > 0) {
				option.selected = true;
                strImg = img;
                nSelected = (i+1);
			}
			selectelem.appendChild(option);
		}
        
        selectelem.selectedIndex = nSelected;
        /*if (strImg.length > 3) {
            document.getElementById('logo_model').src = '../'+strImg;
            document.getElementById('logo_model').style.display = "block";
        }*/
	}
}

function dosubmit() {
    showWaitIcon();
	m_pSuchbegriff.value = "," + m_pModels.value + ",";
    m_pXMANUFACTURER.value = m_pManufacturers.value;
    m_pXMODELID.value = m_pModels.value;
    var name = m_pModels.options[m_pModels.selectedIndex].innerHTML;
    m_pXMODELNAME.value = name;
    
    var logo_manufacturer = m_pLogo_manufacturer.src;
    var logo_model = m_pLogo_model.src;
    
    if (m_pLogo_model_box.style.display == "block") {
        m_pXLOGOMODEL.value = logo_model;
    } else {
        m_pXLOGOMODEL.value = "";
    }
    m_pXLOGOMANUFACTURER.value = logo_manufacturer;
    
    var nID = m_pageids[m_pManufacturers.value];
    if (nID) {
        m_pSuchort.value = nID;
    }
    
    m_pSuchformular.submit();
}

function showWaitIcon() {
    m_pLoadingIcon.style.visibility = 'visible';
    m_nWaitCount++;
}

function hideWaitIcon() {
    if (m_nWaitCount) {
        m_nWaitCount--;
        if (!m_nWaitCount) {
            m_pLoadingIcon.style.visibility = 'hidden';;
        }
    }
}
