﻿ /*******************************************************************************************************
 
    javascript functions used for the connexus webcatalog
  
    //TODO Stopwatch für Treeloadtime rausnehmen
    //Globale variablen gemeinsam definieren
    
 ********************************************************************************************************/
 
    /* Global Variables */
    var selected="";

    var dom = (document.getElementById) ? true : false;
    var ns5 = (!document.all && dom || window.opera) ? true: false;
    var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
    var ie4 = (document.all && !dom) ? true : false;
    var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;

    var offX= 20;	// how far from mouse to show tip
    var offY= 12;

    var tipFollowMouse = false;
    var tipVisible = false;
    var mouseX = 0;
    var mouseY = 0;    	    
    
    
    var gl_baseextendedsearch_sendercombo;
    var gl_donthide = false;
    
    var gl_treemode = 2;       //mode 1 normal tree, mode 2 tree with navigation on top    
    //var gl_databasetree=null;  //databasetree object
    var gl_selectfilter=null;  //filter object
    var gl_eventarg="";
    var gl_resetfilter=false;
    var gl_treesearchstate = null;
    var gl_lngkey = "XXX";
    var gl_isloading = false;
    var gl_componentpointer = new Array();
    var gl_doremove = true;
    var gl_selectedresultrow = null;
        
/* BEGIN ################    Gerneral Functions    #################### */
        
    function webcat_addlogmessage(message)
    {
        //alert('Fehler: ' + message);  //TODO noch raus
    }
    
    //OnCall_Error
    function OnCall_Error(error,userContext,methodName)
    {
        if(error !== null) 
        {
            webcat_addlogmessage(error.get_message());
        }
    }
    
    //removeAllChilds
    function removeAllChilds(node)
    {
        while(node.hasChildNodes())
        {
            node.removeChild(node.firstChild);
        }
    }
   
   /// <summary>
   /// fires async postback
   /// </summary>
   function webcat_doPostBackAsync( eventName, eventArgs )
   {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        if( !Array.contains( prm._asyncPostBackControlIDs, eventName) )
        {
            prm._asyncPostBackControlIDs.push(eventName);
        }

        if( !Array.contains( prm._asyncPostBackControlClientIDs, eventName) )
        {
            prm._asyncPostBackControlClientIDs.push(eventName);
        }
        __doPostBack( eventName, eventArgs );
   }
    
    
    
    function webcat_remove(array, from, to) 
    {
        var rest = array.slice((to || from) + 1 || array.length);
        array.length = from < 0 ? array.length + from : from;
        return array.push.apply(array, rest);
    };
    
    Array.prototype.remove = function(from, to) {
      var rest = this.slice((to || from) + 1 || this.length);
      this.length = from < 0 ? this.length + from : from;
      return this.push.apply(this, rest);
    };  
    
    /// <summary>
    /// returns absolute position (top or left) from an element
    /// </summary>
    function webcat_getAbsPos(element, tl) {
        //var o = ( typeof oId == 'String' ) ? document.getElementById( oId ) : oId;
        var o = element;
        var val = 0;
                
        while ( o.nodeName != "BODY" ) 
        {
            //if (o.nodeName == "DIV")
            {
                val += parseInt( ( tl == 'top' ) ? o.offsetTop : o.offsetLeft );
            }
            o = o.offsetParent;
            if (o ==null)
                break;
        }    
        return val;
    }
    
    //general panel popup functions
    
    /// <summary>
    /// popup an element (div container)
    /// <summary>
    function webcat_popupElement(sender,elementid)
    {
        var popup = document.getElementById(elementid);
        //var lb = document.getElementById("hpeAttributeSearch_lbCombopopup");                
        if ((popup))
        {
            var top =  webcat_getAbsPos(sender,'top');
            var left = webcat_getAbsPos(sender,'left');
            document.body.appendChild(popup);
            //popup.style.top =  sender.parentNode.parentNode.offsetTop + 20 + 'px';
            //popup.style.left = sender.parentNode.parentNode.offsetLeft + 132 + 'px';
            //alert(popup.style.top);
            popup.style.top = top + 16 + "px";
            popup.style.left = left - 15 + "px";
            //popup.style.visibility = 'visible'; 
            //gl_donthide = true;
            popup.style.visibility = 'visible'; 
            
        }    
    }
    
    function webcat_popupListbox(sender,elementid,listboxid)
    {
        var lb = document.getElementById("hpeAttributeSearch_lbCombopopup");
        if (lb)
        {
            lb.selectedIndex = 0;
        }
        webcat_popupElement(sender,elementid);    
    }
    
    function webcat_showloading() {
        gl_doremove = true;
        gl_selectedresultrow = null;
        doremoveAllImageItems();
        var loading = document.getElementById("webcat_pageloading");
        if (loading)
        {
            loading.style.visibility = "visible";
        }
    }
    
    function webcat_hideloading()
    {
        var loading = document.getElementById("webcat_pageloading");
        gl_doremove = true;
        doremoveAllImageItems();
        if (loading)
        {
            loading.style.visibility = "hidden";
        }
    }

    function webcat_void() {
        return false;
    }

    function cookiesEnabled() {
        var cookieEnabled = false;
        document.cookie = "testcookie";
        cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false
        
        if (!cookieEnabled) {
            if (document.cookie == "") {
                cookieEnabled = (navigator.cookieEnabled) ? true : false;
            }        
        }
        
        /*
        var cookieEnabled = (navigator.cookieEnabled) ? true : false
            
        //if not IE4+ nor NS6+
        if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
            document.cookie = "testcookie"
            cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false
        }
        */
        return cookieEnabled;
    }
    
/* END ################    Gerneral Functions    #################### */


/* BEGIN ################    Functions for Connexus BaseExtendedSearch derived usercontrols    #################### */
   /*
   var baseextendedsearch_senderobjectid;
    
   
   //baseextendedsearch_setSender
   function baseextendedsearch_setSender(value)
   {
        baseextendedsearch_senderobjectid = value.id;
   }
   
   //baseextendedsearch_delSender
   function baseextendedsearch_delSender()
   {
        baseextendedsearch_senderobjectid = null;
   }
   */   
     
     
    /******************************************
        Combos
    *******************************************/
  
    
    /// <summary>
    /// sets selected value
    /// </summary>    
    function lbCombopopup_keyup(sender, e)
    {
       var evt = e || window.event;
       var popup = document.getElementById("hpeattriubutesearch_combopopup");
       var lb = document.getElementById("hpeAttributeSearch_lbCombopopup");
       
       return;
       alert('lbCombopopup_keyup');
       if ((lb) && (popup))
       {
           if (evt.keyCode == '13')
           { 
              popup.style.visibility = 'hidden';    
           }
           
           if (evt.keyCode == '27')
           {
              popup.style.visibility = 'hidden';    
           }
       }
    }
   
   /// <summary>
   /// sets selected value
   /// </summary>
   function baseextendedsearch_comboChanged(sender, e, eventarg) 
   {
        try {
            if (gl_isloading)
                return;
            
            var evt = e || window.event;
            var popup = document.getElementById("hpeattriubutesearch_combopopup");
            var lb = document.getElementById("hpeAttributeSearch_lbCombopopup");
            var prnt = document.getElementById("hpeattriubutesearch_hiddencontrols");

            webcat_showloading();
            gl_isloading = true;
            
            var val1 = sender.value;
            if (val1.length > 20)
            {
                val1 = val1.substr(0,17) + "...";
            }
            
            if ((lb) && (popup))
            {                               
                popup.style.visibility = 'hidden'; 
                gl_baseextendedsearch_sendercombo.innerHTML = val1;
            }
              
            id = webcat_getAttributeId(gl_baseextendedsearch_sendercombo)
            if (id)
            {       
                var elem = document.getElementById('hpeAttributeSearch_Searchstate');
                if (elem)
                {
                    var state =  new Datastate(elem);
                    if (sender.selectedIndex == 0)
                        state.updateDataItem(id,"");
                    else
                        state.updateDataItem(id,sender.value);           
                }
            }
            
            webcat_showloading();    
            if (gl_eventarg != "") {
                elem = document.getElementById('Mainstate');
                if (elem) {
                    state =  new Datastate(elem);                    
                    if (gl_eventarg == "manufactorclicked")
                        state.updateDataItem("Internetkategorie_1",sender.value.trim());
                    
                    if (gl_eventarg == "articlenumberclicked")
                        state.updateDataItem("Internetkategorie_3",sender.value.trim());
                    
                    __doPostBack('Default_UpdatePanel1', gl_eventarg);
                }
                
            } else
            {                
                __doPostBack('Default_UpdatePanel1', 'comboselected');         
            }
        } catch(e)
        {
            alert(e);
        }
   }
   
   function getNoHits() {
       return document.getElementById('gui_nohits').value;
       /*
       switch (gl_lngkey.toLowerCase) {
           case "de": return "keine Treffer"; break;
           case "en": return "no hits"; break;
           case "fr": return "no hits"; break;
           case "ru": return "no hits"; break;
           case "pl": return "no hits"; break;
           case "es": return "no hits"; break;
           case "pt": return "no hits"; break;
           default: return "keine Treffer";
       }
       return "";
       */
   }
   
      
   function baseextendedsearch_SearchArtNoComplete(result,txtresult,methodName)
   {
       webcat_hideloading();
       gl_isloading = false;
       
        if (result == null) {
            alert(getNoHits());
            return;
        }
        
        var valok=false;
        var ct1 = 0;
        var ct2 = 0;
        var elem = document.getElementById('hpeAttributeSearch_Searchstate');
        var elem2 = document.getElementById('Mainstate');
        if (elem)
        {
          var state =  new Datastate(elem);
          var state2 = new Datastate(elem2);  
            
            var valuecontainer = JSON.parse(result);        
            for (i=0;i<valuecontainer.length;i++)
            {
                var xval = valuecontainer[i];            
                if (xval)
                {                
                    if (xval.HasValues)
                    {
                        valok = true; 
                        if (xval.AttributeId.toLowerCase() == "web.intkat1")
                        {                        
                            ct1 = xval.Valuecount;
                            state2.updateDataItem("key_valcnt_manufactor",'0'+ct1);
                            state.updateDataItem("Internetkategorie_1",xval.Values[0]);
                        }
                        
                        if (xval.AttributeId.toLowerCase() == "web.artbez")
                        {
                            ct2 = xval.Valuecount;
                            state2.updateDataItem("key_valcnt_artno",'0'+ct2);
                            state.updateDataItem("Internetkategorie_3",xval.Values[0]);
                        }

                        if (xval.AttributeId.toLowerCase() == "web.queryname") {
                            state2.updateDataItem("key_activequery", xval.Values[0]);
                            //state.updateDataItem("Internetkategorie_3", xval.Values[0]);
                        }
                               
                     }
                 }
            }
            
            if (! valok)
            {
                alert(getNoHits());
                return;
            }
                    
            if ((ct1 == 1) && (ct2 == 1))
            {
                //daten direkt laden
                webcat_showloading();
                __doPostBack('Default_UpdatePanel1', 'searcharticlenumber_direct');//Searchview_UpdatePanel1
                return;
            }
            webcat_showloading();
            __doPostBack('Default_UpdatePanel1', 'searcharticlenumber');//Searchview_UpdatePanel1
        }
   }
   
    function getPleaseSelect() {
        switch (gl_lngkey.toUpperCase())
        {
            case "DE": return "bitte wählen..."; break;
            case "EN": return "please select..."; break;
            case "FR": return "Veuillez sélectionner..."; break;
            case "RU": return "выбрать из ..."; break;
            case "PL": return "wybierz..."; break;
            case "ES": return "Seleccionar por favor..."; break;
            case "PT": return "Por favor..."; break;
			case "IT": return "prego scegliere..."; break;
            default: return "please select...";
        }
        return "";
    }
    
    /// <summary>
    /// called when webservice for combodata is complete
    /// </summary>
    function baseextendedsearch_IdxRequestComplete(result,txtresult,methodName) {
        
        gl_isloading = false;
        
        if ((result == "") || (result == null)) {
            webcat_addlogmessage("baseextendedsearch_IdxRequestComplete.error");
            return;
        }
               
        var valuecontainer = JSON.parse(result);        
        var lb = document.getElementById("hpeAttributeSearch_lbCombopopup");                
        
        if ((valuecontainer) && (lb))
        {                                                                                
            //clear listbox
            if (valuecontainer[0].HasValues) {
                for (i=lb.length;i>-1;i--)
                {
                    var opt1 = lb.options[i]
                    lb.options[i] = null;
                }
                        
                //add data to listbox
                opt1 = new Option(getPleaseSelect(),getPleaseSelect(),false,true);
                lb.options[lb.length] = opt1;                   
                for (i=0;i<valuecontainer[0].Values.length;i++)
                {
                   val1 = valuecontainer[0].Values[i];
                   opt1 = new Option(val1,val1,false,true);
                   lb.options[lb.length] = opt1;                   
                }            
              } else
              {
                for (i=lb.length;i>-1;i--)
                {
                    opt1 = lb.options[i]
                    lb.options[i] = null;
                }
                opt1 = new Option(getPleaseSelect(),getPleaseSelect(),false,true);
                lb.options[lb.length] = opt1;
            }

            if (valuecontainer.length > 1) {
                if (valuecontainer[1] != null) {
                    if (valuecontainer[1].AttributeId.toLowerCase() == "web.queryname") {
                        //alert(valuecontainer[1].Values[0]);
                        var elem = document.getElementById('Mainstate');
                        if (elem) {
                            var state = new Datastate(elem);
                            if (valuecontainer[1].Values != null) {
                                state.updateDataItem("key_activequery", valuecontainer[1].Values[0]);
                            }
                        }
                        //state.updateDataItem("Internetkategorie_3", xval.Values[0]);
                    }
                }
            }
              
        }
        
        //popup                        
        webcat_popupListbox(gl_baseextendedsearch_sendercombo,"hpeattriubutesearch_combopopup","hpeAttributeSearch_lbCombopopup");            
    }
    
    
     function webcat_getAttributeId(sender) {
        var o = sender;
                        
        while ( o.nodeName != "BODY" ) 
        {
            var id = o.getAttribute("attributeid");
            if (id != null)
            {
                return id;
            }
            o = o.parentNode;     
        }    
    }
    
    function getsendercombo(sender)
    {
        id = sender.getAttribute("attributeid");
        if (id != null)
            return sender
        
        for (i=0;i<sender.parentNode.childNodes.length;i++)
        {
            itm1 = sender.parentNode.childNodes[i];
            id = itm1.getAttribute("attributeid");
            if (id != null)
                return itm1;
        }                
    }
        
    /// <summary>
    /// calls webservice function to load data
    /// </summary>
    function baseextendedsearch_comboclicked(sender,eventarg)
    {
        //var evt = e || window.event;             
        try {
            if (gl_isloading)
                return;

            gl_isloading = true;
            
            sender = getsendercombo(sender);
            var elem = document.getElementById('hpeAttributeSearch_Searchstate');
            if (elem)
            {                      
                var state =  new Datastate(elem);
                gl_baseextendedsearch_sendercombo = sender;
                gl_eventarg = eventarg;
                
                disabled = sender.getAttribute("disabled");        
                
                if ((disabled == "disabled") || (disabled == true))
                {
                    return;
                }
             
                if (eventarg == "articlenumberclicked")
                {                                  
                        var val1 = "";
                        if (state != null)
                        {
                            val1 = state.getStatevalue();
                        } 
                        
                        PageMethods.getArticleNumbers_2(val1,gl_lngkey,baseextendedsearch_IdxRequestComplete,OnCall_Error,"baseextendedsearch_comboclicked");       
                    
                    return;
                } else
                if (eventarg == "manufactorclicked")
                {              
                     val1 = "";
                        if (state != null)
                        {
                            val1 = state.getStatevalue();
                        } 
                        
                        PageMethods.getManufactors(val1,gl_lngkey,baseextendedsearch_IdxRequestComplete,OnCall_Error,"baseextendedsearch_comboclicked");       
                    
                    return;
                } else
                {
                    
                    gl_eventarg = "";
                    id = webcat_getAttributeId(sender);
                    var qry = document.getElementById('hpeAttributeSearch_inpactivequery');
                    if ((id) && (qry))
                    {
                        
                        val1 = "";
                        if (state != null)
                        {
                            val1 = state.getStatevalue();
                        } 
                        
                        PageMethods.getValues(qry.value,id,val1,gl_lngkey,baseextendedsearch_IdxRequestComplete,OnCall_Error,"baseextendedsearch_comboclicked");       
                    }
                 }
                 
             }
         } catch(e)
         {
            alert(e);
         }
         
    }  
   
   
   
/* BEGIN ################    dataview	functions              #################### */
    
    //trackMouse
    function trackMouse(evt) 
    {
	        if (tipFollowMouse)
	        {
	            var standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes	        
	            /*
	            mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
	            mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
    	        */
        	    
    	        mouseX = getmouseX(evt);
    	        mouseY = getmouseY(evt);
        	        	        
    	        if (tipVisible)
	            {	            
	                var t1 = document.getElementById('imagepopup');
                    if (t1)
                    {
	                  if (t1.style.visibility == 'visible')
	                    positionTip(evt);
	                }
	            }
	        }
    }
    
    //getmouseX
    function getmouseX(evt) {
        if (evt.pageX) return evt.pageX;
        else if (evt.clientX)
        return evt.clientX + (document.documentElement.scrollLeft ?
        document.documentElement.scrollLeft :
        document.body.scrollLeft);      
        else return null;
    }
    
    //getmouseY
    function getmouseY(evt) {
        if (evt.pageY) return evt.pageY;
        else if (evt.clientY)
        return evt.clientY + (document.documentElement.scrollTop ?
        document.documentElement.scrollTop :
        document.body.scrollTop);
        else return null;
    }
   
    
    
    //showTip    
    function showTip(top, left)
    {       
        var t1 = document.getElementById('imagepopup');
        if (t1)
        {                        
            t1.style.top = top;
            t1.style.left = left;            
            t1.style.visibility = 'visible';
            tipVisible = true;
            document.body.appendChild(t1);
        }  
    }
    
    //hideTip
    function hideTip()
    {
        if (tipVisible)
        {
            var t1 = document.getElementById('imagepopup');
            if (t1)
            {
                t1.style.visibility = 'hidden';
                tipVisible = false;
            }
        }
    }

    function tablerow_mouseout(sender) {
        var img_cursor = document.getElementById("detailview_cursor");
        if (img_cursor) {
            img_cursor.style.visibility = 'hidden';
        }
    }

    function image_onload(sender,imgname,isthumb) {
        if (sender) {
            var img_x = webcat_getAbsPos(sender, "left");
            var img_y = webcat_getAbsPos(sender, "top");

            //alert(xpos + "," + ypos);
            var xx = img_x;
            var yy = img_y;
            var img_empty = document.getElementById(imgname);
            if (img_empty) {
                img_empty.height = sender.height;
                if (! isthumb)
                    img_empty.height = img_empty.height + 10;

                img_empty.width = sender.width;
                if (! isthumb)
                    img_empty.width = img_empty.width + 10;
                    
                img_empty.style.top = yy + "px";
                img_empty.style.left = xx + "px";
            }
        }
    }


    function tablerow_mouseover(sender, xpos, ypos) {
        
        var img = document.getElementById("detailview_image");
        if (img) {
            var img_x = webcat_getAbsPos(img, "left");
            var img_y = webcat_getAbsPos(img, "top");

            //alert(xpos + "," + ypos);
            
            var xx = img_x + 10;  //10 is padding
            var yy = img_y + 10;  //10 is padding

            //alert(xx + "," + yy);
            var img_cursor = document.getElementById("detailview_cursor");
            if (img_cursor) {
                img_cursor.style.top = parseInt(ypos) + yy + "px";
                img_cursor.style.left = parseInt(xpos) + xx + "px";
                //popup.style.visibility = 'visible'; 
                //gl_donthide = true;
                img_cursor.style.visibility = 'visible'; 
            }
            
        }
    }

    function resultrow_click(sender) {
        if (gl_selectedresultrow != null) {
            //gl_selectedresultrow.style.backgroundColor = sender.originalcolor;
            gl_selectedresultrow.setAttribute("class", sender.originalclass);
            gl_selectedresultrow.setAttribute("className", sender.originalclass);
        }
        /*
        sender.originalcolor = sender.style.backgroundColor;
        sender.style.backgroundColor = '#d4d4d4';
        */
        sender.originalclass = sender.getAttribute("class");
        sender.setAttribute("class", "over");
        sender.setAttribute("className", "over");        
        gl_selectedresultrow = sender;
    }
    
    function resultrow_mouseover(sender) {
        /*
        sender.originalcolor = sender.style.backgroundColor;
        sender.style.backgroundColor = '#d4d4d4';
        */
        
        sender.originalclass = sender.getAttribute("class");
        sender.setAttribute("class", "over");
        sender.setAttribute("className", "over");        
    }

    function resultrow_mouseout(sender) {
        //sender.originalcolor = sender.style.backgroundColor;
        if (sender != gl_selectedresultrow) {
            //sender.style.backgroundColor = sender.originalcolor;
            sender.setAttribute("class", sender.originalclass);
            sender.setAttribute("className", sender.originalclass);
        }
    }
    
        
    function area_mouseover(event, target, image) {
        gl_doremove = false;
        var t1 = document.getElementById(target);               
        if (t1) {
            //alert('x');
            var dt1 = document.getElementById('customdata');
            if (dt1) {
              //alert(dt1.style.cursor);
              dt1.style.cursor = 'pointer';
            }
            /*  
            t1.setAttribute("previd",t1.id);
            t1.setAttribute("id","datarow_selected");
            //alert(t1.id);
            */
            t1.originalcolor=t1.style.backgroundColor;
            t1.style.backgroundColor = '#e9b982';
        }
    }

    function area_mouseout(event, target, image) {
        gl_doremove = true;
        hideTip();
        var t1 = document.getElementById(target);               
        if (t1)
        {
            var dt1 = document.getElementById('customdata');
            if (dt1) {
              //alert(dt1.style.cursor);
              dt1.style.cursor = 'default';
            }
            
            t1.style.backgroundColor=t1.originalcolor;
            //t1.id = t1.getAttribute("datarow_selected");
        }
    }
    
    function area_click(event, target, image) {
        //alert(target);
        /*
        if (!tipVisible)
          positionTip(event,image);
        else
          hideTip();
        */
    } 
    
    function webcat_preloadimages()
    {
        alert('webcat_preloadimages');
    }


    function getImgOnClick(sender) {
        for (var i = 0; i < sender.childNodes.length; i++) {
            var itm1 = sender.childNodes[i];
            if (itm1.nodeName == "TD") {
                if (itm1.getAttribute("onClick") != null) {
                    return itm1.getAttribute("onClick");
                }
            }
        }
        return "";
    }
    
    //var i1 = document.createElement("IMG");
    function createImgElement(sender, xpos, ypos) {
        var img = document.getElementById("detailview_image");
        if (img) {
            var img_x = webcat_getAbsPos(img, "left");
            var img_y = webcat_getAbsPos(img, "top");

            var xx = img_x + 10;  //10 is padding
            var yy = img_y + 10;  //10 is padding
            
            var img_cursor = document.createElement("IMG");
            img_cursor.setAttribute("src", "images/compselector.gif");
            img_cursor.setAttribute("class", "component_item");
            img_cursor.setAttribute("className", "component_item");
            //img_curser.setAttribute("onmouseover", "tablerow_mouseover(

            if (img_cursor) {
                var click = getImgOnClick(sender);
                if (click != "") {
                    img_cursor.setAttribute("onClick", click);
                    img_cursor.setAttribute("onclick", click);
                }

                document.body.appendChild(img_cursor);
                var topval = parseInt(ypos) + yy;
                var leftval = parseInt(xpos) + xx;
                img_cursor.style.top = topval + "px";
                img_cursor.style.left = leftval + "px";
                
                img_cursor.onmouseover = function() { area_mouseover(null, sender.getAttribute("targetname"), null) };
                img_cursor.onmouseout = function() { area_mouseout(null, sender.getAttribute("targetname"), null) };
                img_cursor.style.visibility = 'visible';
                gl_componentpointer.push(img_cursor);
            }
        }
    }
    
    function parseTableRowItems(tbody)
    {
        for (var x=(tbody.childNodes.length-1);x>-1;x--)
        {
            tr1 = tbody.childNodes[x];
            if (tr1.nodeName == "TR") {
                var sx = tr1.getAttribute("sender_x");
                var sy = tr1.getAttribute("sender_y");
                if ((sx != null) && (sy != null)) {
                    createImgElement(tr1, sx, sy);
                }
            }
        }
    }

    function doremoveAllImageItems() {
        if (!gl_doremove)
            return;
                   
        if (gl_componentpointer.length > 0) {
            for (var i = (gl_componentpointer.length - 1); i > -1; i--) {
                var e1 = gl_componentpointer.pop();
                document.body.removeChild(e1);
            }
        }
        
    }

    function removeAllImageItems() {               
        //alert("removeAllImageItems");
        setTimeout("doremoveAllImageItems()", 10);
    }

    function imgcontainer_move() {
        if (gl_componentpointer.length < 1)
            showAllItems();
    }
    
    function showAllItems() {

        var div1 = document.getElementById("Komponenten");
        if (div1 != null) {
            if (div1.childNodes.length > 0) {

                var table = div1.childNodes[0];
                if (table) {
                    for (var i = 0; i < table.childNodes.length; i++) {
                        var itm1 = table.childNodes[i];
                        if (itm1.nodeName == "TBODY") {
                            //alert('tb');
                            parseTableRowItems(itm1);
                            //return;
                        }
                    }
                }
            }
        }
    }
    

/* END ################      dataview	functions              #################### */
   

/* BEGIN ################    notepad functions                 #################### */

    function notepad_mouseover(event, sender)
    {
        if(sender.getAttribute("notepad_selected") != null)
            return;
        
        sender.originalcolor=sender.style.backgroundColor;
        sender.style.backgroundColor='#e9b982';
        
        
    }
        
    
    function notepad_mouseout(event, sender)
    {
        
        if(sender.getAttribute("notepad_selected") != null)
            return;
        
        sender.style.backgroundColor=sender.originalcolor;      
    }
    
    function notepad_mouseclick(event, sender)
    {
        if ((sender.getAttribute("notepad_selected") == "alt1") ||
            (sender.getAttribute("notepad_selected") == "alt2"))
        {
            sender.setAttribute("id",sender.getAttribute("notepad_selected"));
            sender.removeAttribute("notepad_selected");
            return;
            //sender.setAttribute("class","");
            //sender.setAttribute("className","");   
        }
        
        //alert('a');  
        if ((sender.getAttribute("notepad_selected") == null) ||
            (sender.getAttribute("notepad_selected") == null))
        {
            sender.setAttribute("notepad_selected",sender.getAttribute("id"));
            sender.setAttribute("id","notepad_selected");
            sender.style.backgroundColor='#76b5ce';
            return;
        }        
    }
    
    function notepad_selectrow(sender) {
        if ((sender.getAttribute("class") == "checkbox") || (sender.getAttribute("className") == "checkbox"))
        {
            sender.setAttribute("class", "checkbox_selected");
            sender.setAttribute("className", "checkbox_selected");
        } else
        {
            sender.setAttribute("class", "checkbox");
            sender.setAttribute("className", "checkbox");
        }
    }
    
    /// <summary>
    /// removes all entries in the notpad table
    /// </summary>
    function notpad_removeall(sender) {
        var table = document.getElementById("Notepad1_Notpad_Table");
        if (table) {
            for (i = 0; i < table.childNodes.length; i++) {
                itm1 = table.childNodes[i];
                if (itm1.nodeName == "TBODY") {
                    notpad_removeselected(itm1, false);
                    notpad_updaterowids(itm1);
                    notepad_checkempty();
                    return;
                }
            }

        }
    }

    function getDiv(tdElement) {
        for (zx = 0; zx < tdElement.childNodes.length; zx++)
        {
            div1 = tdElement.childNodes[zx];
            if (div1.nodeName == "DIV") {
                return div1;
            }
        }
        return null;
    }
    
    /// <summary>
    /// returns true if tablerow is selected
    /// </summary>
    function notepad_selected(tablerow)
    {
        for (z=0;z<tablerow.childNodes.length;z++)
        {
            td1 = tablerow.childNodes[z];
            if (td1.nodeName == "TD") {
                d1 = getDiv(td1);
                if (d1 != null) {
                    if (d1.getAttribute("class") == "checkbox_selected")
                        return true;
                }
            }
        }
        return false;            
    }
    
    /// <summary>
    /// updates rowids to adjust alternating colors
    /// </summary>
    function notpad_updaterowids(tbody)
    {
        var alt1=true;
        
        for (var k=0;k<tbody.childNodes.length;k++)
        {
            if (k>0)
            {
                ctr = tbody.childNodes[k];
                if (ctr.nodeName == "TR")
                {
                    if (alt1 == true)
                    {
                        ctr.setAttribute("id","alt1");
                        alt1 = false;
                    } else
                    {
                        ctr.setAttribute("id","alt2");
                        alt1 = true;
                    }
                }
             }
        }
    }
        
    
    /// <summary>
    /// removes selected rows from tbody
    /// </summary>
    function notpad_removeselected(tbody, checkselect)
    {
        s1 = "remFromNotepad";
        
        for (x=(tbody.childNodes.length-1);x>-1;x--)
        {
            tr1 = tbody.childNodes[x];
            if (tr1.nodeName == "TR") {
                if (notepad_selected(tr1) || (!checkselect) )
                {
                    cnxkey = tr1.getAttribute("cnxkey");
                    if (cnxkey) {
                        s1 += ";" + cnxkey;
                    }
                    tbody.removeChild(tr1);
                }
                
            }
        }
        remItemsFromNotepad(s1);
    }

    function notepad_checkempty() {
        var table = document.getElementById("Notepad1_Notpad_Table");
        if (table) {
            for (var i = 0; i < table.childNodes.length; i++) {
                var itm1 = table.childNodes[i];
                if (itm1.nodeName == "TBODY") {
                    if (itm1.childNodes.length == 0) 
                        webcat_shownotepad();
                }
            }
        }
    }
    
    /// <summary>
    /// removes selected rows from table
    /// </summary>
    function notpad_removeselection(sender)
    {
        var table = document.getElementById("Notepad1_Notpad_Table");
        if (table)
        {
            for (var i=0;i<table.childNodes.length;i++)
            {
                var itm1 = table.childNodes[i];
                if (itm1.nodeName == "TBODY")
                {
                    //alert('tb');
                    notpad_removeselected(itm1,true);
                    notpad_updaterowids(itm1);
                    notepad_checkempty();
                    return;                    
                }
            }
            
        }
    }
    
    function notepad_removerow(sender)
    {
        sender.parentNode.parentNode.removeChild(sender.parentNode);
    }
    

/* EMD   ################    notepad functions                 #################### */


    /* BEGIN ################    customer 	specific functions     #################### */

        function decode_utf8(utftext) {
             var plaintext = ""; var i=0; var c=c1=c2=0;
             // while-Schleife, weil einige Zeichen uebersprungen werden
             while(i<utftext.length)
                 {
                 c = utftext.charCodeAt(i);
                 if (c<128) {
                     plaintext += String.fromCharCode(c);
                     i++;}
                 else if((c>191) && (c<224)) {
                     c2 = utftext.charCodeAt(i+1);
                     plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
                     i+=2;}
                 else {
                     c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
                     plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
                     i+=3;}
                 }
             return plaintext;
         }


    function hpe_feedbackchange(sender) {
        document.getElementById('text_feedback').value = sender.value;
    }
   
   function hpe_addToMemo(sender, cnxkey)
   {
       addItemToNotepad("addToNotepad;" + cnxkey);
   }
   
   /*
   function webcat_showmainpage()
   {
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'mainpage');
   }
   */

   function webcat_navigationclicked(sender, nodekey) {
       if (gl_isloading) {
           return;
       }
       
       gl_isloading = true;        
   
        webcat_showloading();
        var elem = document.getElementById('Mainstate');
        if (elem)
        {
            var state =  new Datastate(elem);
            state.updateDataItem("clickednodekey",nodekey);
            __doPostBack('Default_UpdatePanel1', 'navigationnodeclicked');
        }
   }
   
   function webcat_showresult()
   {
       //alert(elem);
       if (gl_isloading)
           return;

       gl_isloading = true;
       webcat_showloading();
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'result');
   }
   
   function webcat_objectselected(sender) {
       if (gl_isloading)
           return;

       gl_isloading = true;
       
       webcat_showloading();
        var elem = document.getElementById('Mainstate');
        if (elem)
        {
            var state =  new Datastate(elem);
            state.updateDataItem("selectedobjectkey",sender.getAttribute("cnxkey"));
            __doPostBack('Default_UpdatePanel1', 'objectselected');
        }
   }

   function webcat_showobject(sender, objectkey) {
       if (gl_isloading)
           return;

       gl_isloading = true;
              
       webcat_showloading();
       var elem = document.getElementById('Mainstate');
       if (elem) {
           var state = new Datastate(elem);
           state.updateDataItem("selectedobjectkey", objectkey);
           __doPostBack('Default_UpdatePanel1', 'objectselected');
       }
   }
   
   function webcat_showdataview()
   {
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'dataview');
    }

    function webcat_showlastobject() {
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'lastobject');
    }
   
   function webcat_shownotepad() {
       if (gl_isloading)
           return;

       gl_isloading = true;
       
       webcat_showloading();
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'notepad');
   }
   
   function webcat_showrootnodes(sender)
   {
       gl_selectfilter.reset();
       gl_resetfilter = false;
        webcat_showloading();
        __doPostBack('Default_UpdatePanel1', 'rootnodes');
   }
   
   function hpe_searchatricledescription(sender)
   {
       if (gl_isloading)
           return;

       gl_isloading = true;
        
        var tb1 = document.getElementById('tbArticleDescription');
        if (tb1)
        {
            if (tb1.value.trim() == "")
            {
                var clear_elem = document.getElementById('Mainstate');
                if (clear_elem)
                {
                    var clear_state =  new Datastate(clear_elem);
                    clear_state.updateDataItem("Internetkategorie_3","");
                }
                return;
            }
        }
                
        var elem = document.getElementById('Mainstate');
        if (elem)
        {
            var state =  new Datastate(elem);
            val = state.getItemvalue("Internetkategorie_3");
            if (val)
            {
                if (val.trim() != "")
                {
                    state.updateDataItem("key_activequery", "");
                    var elem2 = document.getElementById('hpeAttributeSearch_Searchstate');
                    if (elem2)
                    {
                        var state2 =  new Datastate(elem2);
                        state2.clearvalues();
                        state2.updateDataItem("Internetkategorie_3",val.trim());
                        webcat_showloading();
                        //alert('svu');
                        __doPostBack('Default_UpdatePanel1', 'searchatricledescription');//Searchview_UpdatePanel1
                    }
                }
            }
        }
   }
   
   function hpe_searcharticlenumberchanged(sender,event)
   {
        
        var elem = document.getElementById('Mainstate');
        if (elem)
        {
            var state = new Datastate(elem);

            //var objRegExp = /,/g;
            var re = /^[A-z0-9-'.'-','-'-'-' ']*$/;
            //var chkval = sender.value.replace(objRegExp, '');
            sender.value = sender.value.replace(/\\/g, "");
            sender.value = sender.value.replace(/[^A-z0-9-'.'-','-'-'*' ']/g, "");
            
            state.updateDataItem("web.ARTNUMMATCH",sender.value); //articlenumber_value
        }
        //alert(sender.value);
    }

    function sendprintview(sender) {
        document.forms.frmnotepad.submit(); 
        return false;
    }
    
    /*
    function showcomparison(sender){
        document.forms['frmcompare'].submit(); 
        return false;
    }
    */

    function showcomparison(sender) {
        if (gl_isloading)
            return;

        gl_isloading = true;

        webcat_showloading();
        gl_tmpclicked = false;
        __doPostBack('Default_UpdatePanel1', 'comparison');
    }
    
    
    function hpe_articlecountchanged(sender) {
        sender.value = sender.value.replace(/\D/g, "");
        var elem = document.getElementById('frmnotepad_qnty');
        if (elem) {
            var state = new Datastate(elem);
            state.updateDataItem(sender.getAttribute("cnxkey"), sender.value);
            var elem2 = document.getElementById('frmnotepad_qnty_svr');
            if (elem2) {
                elem2.value = elem.value;
            }
        }
    }
   
   
   function hpe_searchatriclenumber(sender) {
       //alert('x');
       if (gl_isloading)
           return;

       gl_isloading = true;
        
        var tb_artdesc = document.getElementById('tbArticleDescription');
        if (tb_artdesc)
        {
            tb_artdesc.value = "";
        }
        
        var tb1 = document.getElementById('tbRefernceNo');
        if (tb1)
        {
            if (tb1.value.trim() == "") {
                alert(document.getElementById('gui_lesschars').value);
                gl_isloading = false;
                return;
            }

            var ctval = tb1.value.replace(/['*']/g, "");
            if (ctval.length < 4) { //gui_lesschars
                alert(document.getElementById('gui_lesschars').value);
                gl_isloading = false;
                return;
            }
        }
        
        var elem = document.getElementById('Mainstate');
        if (elem)
        {
            var state =  new Datastate(elem);
            val = state.getStatevalue();
            //alert(val);
            if (val)
            {
                if (val.trim() != "")
                {
                    webcat_showloading();
                    PageMethods.getArticleNumbers(val,gl_lngkey,baseextendedsearch_SearchArtNoComplete,OnCall_Error,"baseextendedsearch_comboclicked");       
                }
            }
        }
   }
   
   function hpe_searcharticlenumberkeydown(sender, e)
   {
        var evt = e || window.event;
        if (evt.keyCode == '13')
        {
            hpe_searchatriclenumber(sender);
        }
   }
   
   function lbManufactor_click(sender, event)
   {
      //alert(sender.value);
      sender = getsendercombo(sender);
      gl_baseextendedsearch_sendercombo = sender;
      
      //gl_datastate.updateDataItem("manufactor_value",sender.value.trim());
      //alert('svu');
      __doPostBack('Default_UpdatePanel1', 'manufactorclicked');//Searchview_UpdatePanel1
        var popup3 = document.getElementById("listboxpopup_manufactor");
        if (popup3)
        {
            popup3.style.visibility = 'hidden';
        }
   }
   
     
   function webcat_endRequest() {
       gl_isloading = false;
       webcat_hideloading();
       window.scrollTo(0, 0);
        
       img_cursor = document.getElementById("detailview_cursor");
       if (img_cursor) {
           img_cursor.style.visibility = 'hidden';
       }
       
       
       var elem = document.getElementById('hpeAttributeSearch_cmbautopopup');
       if (elem) {
           ea1 = elem.getAttribute("autopopup");
           if (ea1 != "") {
               elem.setAttribute("autopopup", "");     
               baseextendedsearch_comboclicked(elem, ea1);
           }
       }
       
   }
      
   
   // Für Script-Include für eTracker ein.
   function loadGaJsHost() 
   { 
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
   } 
   loadGaJsHost(); 


    function hpebody_onload(value)
    {
	//neue Funktionen für Google eTracker

	  try { 
		var pageTracker = _gat._getTracker("UA-7534149-1"); 
		_gat._anonymizeIp();
		pageTracker._setDomainName(".original-pe.com"); 
		pageTracker._initData(); 
		pageTracker._trackPageview(); 
	  } catch(err) {} 


        //init loading div
        gl_eventarg = "";
        var loading = document.getElementById("webcat_pageloading");
        if (loading)
        {
            document.body.appendChild(loading);
            loading.style.visibility = "hidden";
        }
             
        var tss = document.getElementById('DatabaseTree1_TreeSearchstate');
        if (tss)
        {
            //st.value = "12312";
            gl_treesearchstate = new Datastate(tss);
        }

        
        lngelem = document.getElementById('Mainstate');
        if (lngelem) {
            dstate = new Datastate(lngelem);
            gl_lngkey = dstate.getItemvalue("lngkey");

            loadmessage = dstate.getItemvalue("loadmessage");
            if (loadmessage) {
                if (loadmessage != "") {
                    alert(loadmessage);
                } 
            }
        }

        var elem = document.getElementById('hpeAttributeSearch_cmbautopopup');
        if (elem) {
            ea1 = elem.getAttribute("autopopup");
            if (ea1 != "") {
                elem.setAttribute("autopopup", "");
                baseextendedsearch_comboclicked(elem, ea1);
            }
        }
        
        //init filter
        var select = document.getElementById('lbAllItems');
        if (select)
        {
            gl_selectfilter = new filterlist(select);
        }
        //document.onmousemove = trackMouse;
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(webcat_endRequest);

        if (!cookiesEnabled()) {
            alert(document.getElementById('gui_nocookies').value);
        }
    }
   
    function hpebody_onkeydown(sender,e)
    {
        var evt = e || window.event;
        if (evt.keyCode == '27')
            webcat_bodyclick(sender,e);
    }
        
    function webcat_bodyclick(sender)
    {
        //var evt = e || window.event;
        if (gl_donthide)
        {
            gl_donthide = false;
            return;
        }
                
        var popup = document.getElementById("listboxpopup");
        var lb = document.getElementById("lbAllItems");
        if ((lb) && (popup))
        {
            popup.style.visibility = 'hidden';
        }
        
        var popup2 = document.getElementById("hpeattriubutesearch_combopopup");
        if (popup2)
        {
            popup2.style.visibility = 'hidden';
        }
                
        var popup3 = document.getElementById("listboxpopup_manufactor");
        if (popup3)
        {
            popup3.style.visibility = 'hidden';
        }
        
        var popup4 = document.getElementById("listboxpopup"); 
        if (popup4)
        {
            popup4.style.visibility = 'hidden';
        }
        
   }
    
   //hpe_topimageclick
   var prevselected=null;
   function hpe_topimageclick(sender)
   {
        //alert(sender.src);
        //if (prevselected != null)
        //    prevselected.setAttribute("id",prevselected.getAttribute("previd"));
        
        document.getElementById("topimg_selected").setAttribute("id","topimg_unselected");
        
        sender.setAttribute("id","topimg_selected");
        document.images['pictures_main'].src = sender.src;
   }
   
   
/**************************** MAINPAGE **********************************************************/

    function xtractFile(data)
    {
            var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/);
            return {path: m[1], file: m[2]}
    }

    function changeimage_fn(sender) {
        document.images['detailview_mainpicture'].src = "pics/" + sender;
    }

    function changeimage(sender)
    {
      var img_fn = xtractFile(sender.src);
      document.images['detailview_mainpicture'].src = "pics/" + img_fn.file;
    }          
           
           function lbAllItems_Click(sender, e)
           {        
                var tb = document.getElementById("tbArticleDescription");
                if (tb)
                {
                    tb.value = sender.value.trim(); //.substring(0,18);
                    sender.parentNode.style.visibility = 'hidden';
                    tb.focus();
                    
                    var elem = document.getElementById('Mainstate');
                    if (elem)
                    {
                        var state =  new Datastate(elem);
                        state.updateDataItem("Internetkategorie_3",tb.value);
                        hpe_searchatricledescription(sender);
                    }
                }
            }
            
           function lbAllItems_Keyup(sender, e)
           {
               var evt = e || window.event;
               if (evt.keyCode == '13')
               {
                    var tb = document.getElementById("tbArticleDescription");
                    if (tb)
                    {
                        //tb.innerHTML = sender.value.substring(0,18);
                        tb.value = sender.value.trim();//.substring(0,18);
                        sender.parentNode.style.visibility = 'hidden';
                        tb.focus();
                        var elem = document.getElementById('Mainstate');
                        if (elem)
                        {
                            var state =  new Datastate(elem);
                            state.updateDataItem("Internetkategorie_3",tb.value);
                            hpe_searchatricledescription(sender);
                        }
                    }
               }
               if (evt.keyCode == '27')
               {
                  sender.parentNode.style.visibility = 'hidden';
                  tb = document.getElementById("tbArticleDescription");
                  if (tb)
                  {
                      if ((tb.value == null) || (tb.value == ""))
                      {
                        return;
                      }
                        
                      //baseextendedsearch_updatesearchstate(tb.value,"lbArticleDescription","hpeTreeview_searchstatevalues");
                      //doPostBackAsync('','');
                  }
               }
           }
                                 
           
           function showall(sender, e, setfocus)
           {
                var popup = document.getElementById("listboxpopup");
                var lb = document.getElementById("lbAllItems");
                var tb = document.getElementById("tbArticleDescription");
                                    
                if ((lb) && (popup) && (tb))
                {
                    var top =  webcat_getAbsPos(tb,'top');
                    var left = webcat_getAbsPos(tb,'left');
                    left = left - 17;
                                                            
                    document.body.appendChild(popup);
                    //popup.style.top =  sender.parentNode.parentNode.offsetTop + 20 + 'px';
                    //popup.style.left = sender.parentNode.parentNode.offsetLeft + 132 + 'px';
                    //alert(popup.style.top);
                    lb.parentNode.style.top = top + 18 + "px";
                    lb.parentNode.style.left = left + "px";
                    gl_donthide = true;
                    
                    if (gl_resetfilter)
                    {
                        gl_selectfilter.reset();
                        gl_resetfilter = false;
                    }
                    
                    popup.style.visibility = 'visible';
                    //popup.focus;
                    if (setfocus)
                    {
                        lb.focus();
                        lb.selectedIndex = 0;
                    }
                }
           }
           
           function showPopup()
           {
              showall(null,null,false);
              /*
              var popup = document.getElementById("listboxpopup");
              if (popup)  
              {
                    popup.style.visibility = 'visible';
              }
              */
           }
           
           function textbox_keyup(sender, e)
           {
               var evt = e || window.event;
               
                var tb_refno = document.getElementById('tbRefernceNo');
                if (tb_refno)
                {
                    tb_refno.value = "";
                }
                
                var popup = document.getElementById("listboxpopup");
                if (popup)
                {
                    
                    if (evt.keyCode == '13') //return
                    {
                        hpe_searchatricledescription(sender);
                        return;
                    }
                    
                    switch(evt.keyCode)
                    {
                        case 39: return;
                        case 37: return;
                    }
                                        
                    if (evt.keyCode == '40') //down
                    {
                        if (sender.value.trim() != "")
                            gl_selectfilter.set(sender.value);
                            
                        showall(sender,e,true);
                        return;
                    }
                    
                    if (evt.keyCode == '27') //escape
                    {
                        if (popup.style.visibility == 'visible')
                        {
                            gl_selectfilter.reset();
                            popup.style.visibility = 'hidden';
                        }
                          
                        return;
                    }
                                        
                    if (evt.keyCode == '8') //backspace
                    {
                        if (sender.value.trim() == "")
                        {
                            if (popup.style.visibility == 'visible')
                            {
                                gl_selectfilter.reset();
                                popup.style.visibility = 'hidden';
                            }
                              
                        }
                        //return;
                    }
                    
                    if (sender.value.trim() != "")
                    {
                        gl_selectfilter.set(sender.value);
                                                
                        if (popup.style.visibility == 'hidden')
                                setTimeout('showPopup()',500);
                    } else
                    {
                        gl_selectfilter.reset();
                    }
                }
           }
   
   
   
   
   
/* END ##################    customer 	specific functions     #################### */