﻿// JScript File

    // **** Picker Library **** //

    var Picker = {}  //create namespace..
    
    Picker.ComboList = new Array();                  //store document combo box list
    Picker.StatusLayerList = new Array();            //store document status layer list
    
    Picker.initialize = function (inComboList, inStatusLayerList) {
        if (inComboList != null) Picker.ComboList = inComboList;
        if (inStatusLayerList != null) Picker.StatusLayerList = inStatusLayerList;
    }    
    
    //(1) Company Category Picker
    //for company category selector...
    Picker.ShowSelectedNatureLib = new Hash();       //store displaying nature paths
    Picker.SelectedNatureLib = new Hash();           //store selected nature paths, it may be diff from ShowSelectedNatureLib
    Picker.DeselectedNatureLib = new Hash();         //store deselected nature paths
    Picker.DefaultSelectedL1CompCat = 400;           //default selected level 1 company cat id
    Picker.CurrentSelectedL1CompCat = null;          //current selected level 1 company cat id
    Picker.NatureCheckBoxLib = new Hash();           //store cat paths related to add checkboxes of company category selector        
    
    //**** Start Of Methods for operate company category selector ****    
    //create company category selector
    //this will be called once at the beginning...
    Picker.createCompanyCatSelector = function (inWordArray, inShowSelectedCatLib, inDisplayCatHolder, inUnhighlightHolder) {    
        //(1) create layout for cat selector...
        document.write('<div id="CompanyCatSelector" style="width: 750px; height: 413px; top: 0px; left: 0px; overflow: auto; position: absolute; z-index: 100; display:none;" class="BlockWhite" align="left">');
        document.write('<div style="padding: 1px;">');
        document.write('<div style="width: 748px; height: 408px;" class="BlockStyle32">');
        document.write('<div style="padding: 2px;">');
        document.write('<div class="BlockStyle32 white bold" style="height: 20px; padding: 2px;" onMouseDown="startDragLayer(\'CompanyCatSelector\',event.clientX,event.clientY);" onMouseUp="stopDragLayer();">');
        document.write('<div class="fleft" style="margin-top: 1px;">' + inWordArray[0] + '</div>');
        document.write('<div class="fright"><a href="javascript: void(0);" onClick="hideLayer(\'CompanyCatSelector\', Picker.ComboList)"><img src="/images/0/but_close.gif" alt="Close"></a></div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        document.write('<div id="VarWhite" class="BlockWhite" style="width: 744px; height: 378px;">');
        document.write('<div style="padding: 5px;">');
        document.write('<div class="fleft BlockStyle20" style="width: 550px; height: 335px; padding: 1px">');
        document.write('<div class="bold" style="padding: 2px">' + inWordArray[1] + '</div>');
        document.write('<div class="BlockWhite" style="height: 315px;">');
        //<!-- Start of Popup Left -->
        document.write('<div style="padding-top: 2px; width:550px">');
        document.write('<div id="CompanyTopCatHolder" class="fleft" style="width: 170px; height: 310px; overflow: auto;">');
	    document.write('<div style="padding: 2px"></div>');
        document.write('</div>');
        document.write('<div class="fleft BlockStyle20" style="width: 380px; height: 310px;">');
        document.write('<div style="padding: 2px">');
        document.write('<div id="CompanySubCatHolder" class="BlockWhite" style="width: 376px; height: 275px; overflow: auto;"></div><div class="BlockStyle20" style="padding: 3px;">' + inWordArray[2] + '</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        //<!-- End of Popup Left -->                                    
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="fright BlockStyle30" style="width: 180px; height: 335px; padding: 1px;">');
        document.write('<div class="bold" style="padding: 2px">' + inWordArray[3] + '</div>');                                    
        document.write('<div style="height: 282px;" class="BlockWhite">');
	    document.write('<div id="CompanySelectedCatHolder" style="width: 178px; height: 282px; overflow: auto;"></div>');
        document.write('</div>');
        document.write('<div class="BlockStyle30">');
		document.write('<div class="fleft Button3" style="margin: 2px;"><a href="javascript:Picker.DeselectOnClick(Picker.SelectedNatureLib, Picker.DeselectedNatureLib, Picker.NatureCheckBoxLib,0);Picker.renderSelectedNatureLib(\'CompanySelectedCatHolder\', Picker.SelectedNatureLib, true);" class="Button3">' + inWordArray[4] + '</a></div>');
        document.write('</div>');
        document.write('</div>');                                                                  
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
	    document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'CompanyCatSelector\', Picker.ComboList); Picker.SelectedNatureLib = Picker.ReorganiseCat(Picker.ShowSelectedNatureLib); Picker.renderSelectedNatureLib(\''+ inDisplayCatHolder + '\', Picker.SelectedNatureLib, false);">' + inWordArray[5] + '</a></div>');
        document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'CompanyCatSelector\', Picker.ComboList); Picker.ShowSelectedNatureLib = Picker.ReorganiseCat(Picker.SelectedNatureLib); Picker.renderSelectedNatureLib(\''+ inDisplayCatHolder + '\', Picker.SelectedNatureLib, false); Picker.UnhightlightHolder(\'' + inUnhighlightHolder + '\');">' + inWordArray[6] + '</a></div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
	    document.write('</div>');
	    
	    //(3) render top level company category
	    Picker.renderTopLevelCompanyCat('CompanyTopCatHolder');
	    
	    //(4) set ShowSelectedNatureLib with inShowSelectedCatLib
	    Picker.ShowSelectedNatureLib = Picker.ReorganiseCat(inShowSelectedCatLib);
	    
	    Picker.SelectedNatureLib = Picker.ReorganiseCat(inShowSelectedCatLib);
    }
    
    //Function: popupCompanyCatSelector
    Picker.popupCompanyCatSelector = function () {   
        if (Picker.CurrentSelectedL1CompCat == null) {
            Picker.renderLevel2CompanyCat(Picker.DefaultSelectedL1CompCat);
        } else {
            Picker.renderLevel2CompanyCat(Picker.CurrentSelectedL1CompCat);
        }                        
        Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.ShowSelectedNatureLib, true);
        showLayer('CompanyCatSelector', Picker.ComboList);	        
    }    
	    
	//Function: renderTopLevelCompanyCat
	Picker.renderTopLevelCompanyCat = function (inTopCatHolder) {
	    TopCatHolder = document.getElementById(inTopCatHolder);
        TopCatHolder.innerHTML = '';

        //get root parent company category...                
		var Level1CompanyCatLib = CompanyCatChildLib.getItem('-1');		
	    for (tItem in Level1CompanyCatLib) {
	        L1CCatID = Level1CompanyCatLib[tItem];
	        		        			        			        
    	    hrefTopCat = document.createElement('a');
    	    hrefTopCat.className = 'ul';
    	    hrefTopCat.href = 'javascript:void(0);';
    	    hrefTopCat.innerHTML = CompanyCatLib.getItem(L1CCatID);
    	    hrefTopCat.id = 'hrefCompCat' + L1CCatID;
    	    hrefTopCat.setAttribute('Level1CompanyCatID', L1CCatID);

			divMain = document.createElement('div');
    	    divMain.id = 'compCatHolder' + L1CCatID;
    	    divMain.setAttribute('Level1CompanyCatID', L1CCatID);		    	    
    	    divMain.className = 'SelectorNavItem ptr';		    	    
    	    divMain.appendChild(hrefTopCat);

			TopCatHolder.appendChild(divMain);
			hrefTopCat.onclick = function() { Picker.renderLevel2CompanyCat(this.getAttribute('Level1CompanyCatID')); }			  	    
			divMain.onclick = function() { Picker.renderLevel2CompanyCat(this.getAttribute('Level1CompanyCatID')); }			  	    			
	    }            
	}
    
    //Function: renderLevel2CompanyCat 
    //rendering level 2 company category for company category selector
    Picker.renderLevel2CompanyCat = function (inLevel1CompCatID) {
        Picker.NatureCheckBoxLib = new Hash();   //reset hash...
        
        //highlight current selected top company cat item...
  	    var Level1CompanyCatLib = CompanyCatChildLib.getItem('-1');
  	    for (tItem in Level1CompanyCatLib) {
  	        if (Level1CompanyCatLib[tItem] == inLevel1CompCatID) {	  	            
  	            Picker.CurrentSelectedL1CompCat = inLevel1CompCatID;
  			    document.getElementById('compCatHolder'+Level1CompanyCatLib[tItem]).className = 'SelectorNavItemSelecteda ptr';
  		    } else {
  			    document.getElementById('compCatHolder'+Level1CompanyCatLib[tItem]).className = 'SelectorNavItem ptr';
  		    }	
  	    }  	    
  	    
  	    var SubCatHolder = document.getElementById('CompanySubCatHolder');
        SubCatHolder.innerHTML = '';
  	    
  	    var level1CatId = inLevel1CompCatID;
  	    var Level2CompanyCatLib = CompanyCatChildLib.getItem(inLevel1CompCatID);  	    
  	    for (tItem2 in Level2CompanyCatLib) {
  	        var level2CatId = Level2CompanyCatLib[tItem2];
  	        var level2CatName = CompanyCatLib.getItem(level2CatId);
  	        
  	        var catPath = '_'+level1CatId+'_'+level2CatId + '_';	  	        
  	        
  	        imgMain = document.createElement('img');
  	        
  	        divImgMain = document.createElement('div');
  	        divImgMain.className = 'SelectorSubItem1a fleft ptr';   
  	        divImgMain.setAttribute('id', 'imgCompHolder' + catPath);
  	        divImgMain.setAttribute('catpath', catPath);	  	     
  	        divImgMain.setAttribute('Level1CompanyCatID', level1CatId);
  	        divImgMain.setAttribute('Level2CompanyCatID', level2CatId);     	        
  	        divImgMain.appendChild(imgMain);		  
  	        
  	        divMain = document.createElement('div');
  	        divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	        divMain.setAttribute('id', 'compCatHolder' + catPath);
  	        divMain.setAttribute('catpath', catPath);	 
  	        divMain.setAttribute('Level1CompanyCatID', level1CatId);
  	        divMain.setAttribute('Level2CompanyCatID', level2CatId);   	        
  	        divMain.innerHTML = level2CatName;
  	        
  	        var divBr = document.createElement('div');
  	        divBr.className = 'DivBR';
  	        
  	        var divCatHolder = document.createElement('div');	  	        
  	        divCatHolder.appendChild(divImgMain);
  	        divCatHolder.appendChild(divMain);
  	        divCatHolder.appendChild(divBr);
  	        
  	        var divSubCatHolder = document.createElement('div');
  	        divSubCatHolder.setAttribute('id', 'subCompCatHolder' + catPath);	  	
  	        divSubCatHolder.style.paddingLeft = '20px'; 
  	        
  	        var divHolder = document.createElement('div');
  	        divHolder.className = 'SelectorSubItem1';
  	        divHolder.appendChild(divCatHolder);
  	        divHolder.appendChild(divSubCatHolder);  	        
  	        
  	        SubCatHolder.appendChild(divHolder);
  	        
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedNatureLib);
  	        if (isSelectCat) {
  	            imgMain.src = '/images/0/but_minus.gif';			  	            
  	            divImgMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'));  }
  	            divMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath')); }
  	            
  	            divSubCatHolder.style.display = '';
  	            
  	            //render level 3 company cat now...
  	            Picker.renderLevel3CompanyCat(level1CatId, level2CatId, 'subCompCatHolder'+catPath);
  	        } else {
  	            imgMain.src = '/images/0/but_plus.gif';
  	            divImgMain.onclick = function() {   	                
  	                Picker.renderLevel3CompanyCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
  	                Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath')); 
  	            }
  	            divMain.onclick = function() {   	                
  	                Picker.renderLevel3CompanyCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
  	                Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath')); 
  	            }
  	            
  	            divSubCatHolder.style.display = 'none';
  	        }
  	    }
    }    
    
    //Function: renderLevel3CompanyCat
    //rendering level 3 company category for company category selector
    Picker.renderLevel3CompanyCat = function (inLevel1CompCatId, inLevel2CompCatId, inHolderId) {            
        //render all level 3 company cat of inLevel2CompCatId
        //if level 3 company cat is selected, render its' sub cat (should be product cat)
        var hasLevel3CompCat = CompanyCatChildLib.hasItem(inLevel2CompCatId);            
        
        if (!hasLevel3CompCat) {
            //Picker.renderCompanyProductCat(inLevel1CompCatId, inLevel2CompCatId, 0, inHolderId);
            Picker.renderLevel1CompanyProductCat(inLevel1CompCatId, inLevel2CompCatId, 0, inHolderId);            
        } else {
            var oL3CCatHolder = document.getElementById(inHolderId);
            oL3CCatHolder.innerHTML = '';
            
            level1CatId = inLevel1CompCatId;
            level2CatId = inLevel2CompCatId;
            
            var Level3CompanyCats = CompanyCatChildLib.getItem(inLevel2CompCatId);
  	        for (tItem3 in Level3CompanyCats) {
  	            var level3CatId = Level3CompanyCats[tItem3];
  	            var level3CatName = CompanyCatLib.getItem(level3CatId);
	  	        
  	            var catPath = '_'+level1CatId+'_'+level2CatId + '_' + level3CatId + '_';	  	        
	  	        
	  	        imgMain = document.createElement('img');
	  	        
  	            divImgMain = document.createElement('div');
  	            divImgMain.className = 'SelectorSubItem1b fleft ptr';   
  	            divImgMain.setAttribute('id', 'imgCompHolder' + catPath);
  	            divImgMain.setAttribute('catpath', catPath);	  	     
  	            divImgMain.setAttribute('Level1CompanyCatID', level1CatId);
  	            divImgMain.setAttribute('Level2CompanyCatID', level2CatId);   
  	            divImgMain.setAttribute('Level3CompanyCatID', level3CatId);  	            
  	            divImgMain.appendChild(imgMain);		  
	  	        
  	            divMain = document.createElement('div');
  	            divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	            divMain.setAttribute('id', 'compCatHolder' + catPath);
  	            divMain.setAttribute('catpath', catPath);	 
  	            divMain.setAttribute('Level1CompanyCatID', level1CatId);
  	            divMain.setAttribute('Level2CompanyCatID', level2CatId);   
  	            divMain.setAttribute('Level3CompanyCatID', level3CatId);	        
  	            divMain.innerHTML = level3CatName;
  	                
                var inputSelectAllCheckbox = document.createElement('input');
                inputSelectAllCheckbox.setAttribute('id', 'checkCompCatHolder' + catPath + "SelectAllBox");
                inputSelectAllCheckbox.setAttribute('type','checkbox');	
                inputSelectAllCheckbox.style.border = '0px';	        		 

                var divSelectAllMain = document.createElement('div');
                divSelectAllMain.className = 'fleft ptr'; 
                divSelectAllMain.setAttribute('id', 'checkCompCatHolder' + catPath);
                divSelectAllMain.setAttribute('catpath', catPath);	  	 
                divSelectAllMain.setAttribute('Level1CompanyCatID', level1CatId);
                divSelectAllMain.setAttribute('Level2CompanyCatID', level2CatId);   
                divSelectAllMain.setAttribute('Level3CompanyCatID', level3CatId);
	  	        
  	            var divBr = document.createElement('div');
  	            divBr.className = 'DivBR';
	  	        
  	            var divCatHolder = document.createElement('div');	  	        
  	            divCatHolder.appendChild(divImgMain);
  	            
  	            var currCompanyCatProductCatChildLib = new Hash();
                    
                try{
                    if ( divSelectAllMain.getAttribute('Level3CompanyCatID') == 0 )
                        currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + divSelectAllMain.getAttribute('Level2CompanyCatID')); 
                    else
                        currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + divSelectAllMain.getAttribute('Level3CompanyCatID')); 
                }
                catch(err){}
                if (currCompanyCatProductCatChildLib.hasItem('-1')) {
                    var Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem('-1');
                    for (pItem2 in Level2CompanyCatProductCatChildLib) {
                        var level2PCatId = Level2CompanyCatProductCatChildLib[pItem2];
                        
                        var pPath = '';    //parent product category path...
                        var parentPCatLib = new Array();
                        if (ProductCatPathLib.hasItem(level2PCatId)) {
                            parentPCatLib = ProductCatPathLib.getItem(level2PCatId);
                        }

                        if (parentPCatLib.length > 1) {
                            for (len=1; len<parentPCatLib.length; len++) {
                                pPath += parentPCatLib[len] + '_';
                            } 
                            pPath += level2PCatId + '_';
                        }
                     }
                     
                     var hasSubCat = currCompanyCatProductCatChildLib.hasItem(level2PCatId);
                            
                     if ( !hasSubCat ) 	                       
                        divSelectAllMain.appendChild(inputSelectAllCheckbox);	
                }
                    
                    
  	            divCatHolder.appendChild(divSelectAllMain);
  	            divCatHolder.appendChild(divMain);
  	            divCatHolder.appendChild(divBr);
	  	        
  	            var divSubCatHolder = document.createElement('div');
  	            divSubCatHolder.setAttribute('id', 'subCompCatHolder' + catPath);	  	
  	            divSubCatHolder.style.paddingLeft = '20px'; 
	  	        
  	            var divHolder = document.createElement('div');
  	            divHolder.className = 'SelectorSubItem1';
  	            divHolder.appendChild(divCatHolder);
  	            divHolder.appendChild(divSubCatHolder);  	        
	  	        
  	            oL3CCatHolder.appendChild(divHolder);
  	            
  	            var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedNatureLib);
  	            if (isSelectCat) {
  	                imgMain.src = '/images/0/but_minus.gif';			  	            
  	                divImgMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0);  }
  	                divMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0);  }
	  	            divSelectAllMain.onclick = function() { Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath')); }
    	  	            
  	                divSubCatHolder.style.display = '';
	  	            
  	                //render product cat now...	  	                
  	                //Picker.renderCompanyProductCat(level1CatId, level2CatId, level3CatId, 'subCompCatHolder'+catPath);  	                
  	                Picker.renderLevel1CompanyProductCat(level1CatId, level2CatId, level3CatId, 'subCompCatHolder'+catPath);
  	            } else {
  	                imgMain.src = '/images/0/but_plus.gif';
  	                divImgMain.onclick = function() {   	                    
  	                    Picker.renderLevel1CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                  	                    
  	                    Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0); 
  	                }
  	                divMain.onclick = function() {   	                    
  	                    Picker.renderLevel1CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
  	                    Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0);  
  	                }
  	                divSelectAllMain.onclick = function() {   	                    
  	                    Picker.renderLevel1CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
  	                    Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0);  
  	                    Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath'));
  	                }
  	                    
	  	            
  	                divSubCatHolder.style.display = 'none';
  	            }
  	        }
        }
    }
    
    
    Picker.renderLevel1CompanyProductCat = function (inLevel1CompCatId, inLevel2CompCatId, inLevel3CompCatId, inHolderId) {    
        var oL1PCatHolder = document.getElementById(inHolderId);
        oL1PCatHolder.innerHTML = '';
        var selectAllCheckBoxPath = "";
        var inputCheckboxCount = 0;
        var inputCheckboxCheckedCount = 0;
            
        level1CCatId = inLevel1CompCatId;
        level2CCatId = inLevel2CompCatId;
        level3CCatId = inLevel3CompCatId;
            
        //1. get last level company category id
        var LastLevelCompCatID;
        if (inLevel3CompCatId != 0) 
            LastLevelCompCatID = inLevel3CompCatId; 
        else 
            LastLevelCompCatID = inLevel2CompCatId;
        
        //2. get CompanyCatProductCatChildLib of last level company category id
        var currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + LastLevelCompCatID);        
        if (currCompanyCatProductCatChildLib.hasItem('-1')) {
            var Level1CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem('-1');
            
            for (pItem1 in Level1CompanyCatProductCatChildLib) {
  	            var level1PCatId = Level1CompanyCatProductCatChildLib[pItem1];
  	            var level1PCatName = ProductCatLib.getItem(level1PCatId);
  	            
  	            var pPath = '';    //parent product category path...
  	            var parentPCatLib = new Array();
  	            if (ProductCatPathLib.hasItem(level1PCatId)) {
  	                parentPCatLib = ProductCatPathLib.getItem(level1PCatId);
  	            }
  	            
  	            
                selectAllCheckBoxPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' ;	 
  	            
  	            if (parentPCatLib.length > 1) {
  	                for (len=1; len<parentPCatLib.length; len++) {
  	                    pPath += parentPCatLib[len] + '_';
  	                }  	
  	                pPath += level1PCatId + '_';
  	            }
      	        
  	            var catPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' + pPath;	  	        	  	        
  	            var hasSubCat = currCompanyCatProductCatChildLib.hasItem(level1PCatId);
  	            var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedNatureLib);
      	        
  	            if (hasSubCat) {   
                    //render the current category...
                    var imgMain = document.createElement('img');	  	        
    	  	        
  	                divImgMain = document.createElement('div');
  	                divImgMain.className = 'SelectorSubItem1a fleft ptr';   
  	                divImgMain.setAttribute('id', 'imgCompHolder'+catPath);
  	                divImgMain.setAttribute('catpath', catPath);	  	        	  	        
  	                divImgMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divImgMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divImgMain.setAttribute('Level3CompanyCatID', level3CCatId);	        
  	                divImgMain.setAttribute('Level1ProductCatID', level1PCatId);  	                
  	                divImgMain.appendChild(imgMain);		  
    	  	        
  	                divMain = document.createElement('div');
  	                divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	                divMain.setAttribute('id', 'compCatHolder' + catPath);
  	                divMain.setAttribute('catpath', catPath);	  
  	                divMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divMain.setAttribute('Level3CompanyCatID', level3CCatId);
  	                divMain.setAttribute('Level1ProductCatID', level1PCatId);  	                	        	        
  	                divMain.innerHTML = level1PCatName;
  	                
                    var inputSelectAllCheckbox = document.createElement('input');
  	                inputSelectAllCheckbox.setAttribute('id', 'checkCompCatHolder' + catPath + "SelectAllBox");
                    inputSelectAllCheckbox.setAttribute('type','hidden');	
                    inputSelectAllCheckbox.style.border = '0px';	
                    
                    var inputSelectAllImage = document.createElement('img');
                    inputSelectAllImage.setAttribute('id', 'imgCompCatHolder' + catPath + "SelectAllBox");
                    inputSelectAllImage.src = "/images/spacer.gif";
                    inputSelectAllImage.style.width = "20px";
                    inputSelectAllImage.style.height = "20px";
                    inputSelectAllImage.style.border = '0px';	        		 

                    var divSelectAllMain = document.createElement('div');
                    divSelectAllMain.className = 'fleft ptr pickerCheckBox'; 
  	                divSelectAllMain.setAttribute('id', 'checkCompCatHolder' + catPath);
  	                divSelectAllMain.setAttribute('catpath', catPath);	  	 
  	                divSelectAllMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divSelectAllMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divSelectAllMain.setAttribute('Level3CompanyCatID', level3CCatId);
  	                divSelectAllMain.setAttribute('Level1ProductCatID', level1PCatId); 
    	  	        
  	                var divBr = document.createElement('div');
                    divBr.className = 'DivBR';
    	  	        
                    var divCatHolder = document.createElement('div');	  	        
                    divCatHolder.appendChild(divImgMain);	
                    
                    var currCompanyCatProductCatChildLib = new Hash();
                    
                    try{
                        if ( divSelectAllMain.getAttribute('Level3CompanyCatID') == 0 )
                            currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + divSelectAllMain.getAttribute('Level2CompanyCatID')); 
                        else
                            currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + divSelectAllMain.getAttribute('Level3CompanyCatID')); 
                    }
                    catch(err){}
                    if (currCompanyCatProductCatChildLib.hasItem(divSelectAllMain.getAttribute('Level1ProductCatID'))) {
                        var Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(divSelectAllMain.getAttribute('Level1ProductCatID'));
                        for (pItem2 in Level2CompanyCatProductCatChildLib) {
                            var level2PCatId = Level2CompanyCatProductCatChildLib[pItem2];
                            
                            var pPath = '';    //parent product category path...
                            var parentPCatLib = new Array();
                            if (ProductCatPathLib.hasItem(level2PCatId)) {
                                parentPCatLib = ProductCatPathLib.getItem(level2PCatId);
                            }

                            if (parentPCatLib.length > 1) {
                                for (len=1; len<parentPCatLib.length; len++) {
                                    pPath += parentPCatLib[len] + '_';
                                } 
                                pPath += level2PCatId + '_';
                            }
                         }
                         
                         var hasSubCat = currCompanyCatProductCatChildLib.hasItem(level2PCatId);
                                
                         if ( !hasSubCat ) 	                       
                            divSelectAllMain.appendChild(inputSelectAllImage);	
                    }
                                
                    divCatHolder.appendChild(divSelectAllMain);
                    divCatHolder.appendChild(divMain);
                    divCatHolder.appendChild(divBr);
    	  	        
                    var divSubCatHolder = document.createElement('div');
                    divSubCatHolder.setAttribute('id', 'subCompCatHolder' + catPath);	  	
                    divSubCatHolder.style.paddingLeft = '20px'; 
    	  	        
                    var divHolder = document.createElement('div');
                    divHolder.className = 'SelectorSubItem1';
                    divHolder.appendChild(divCatHolder);
                    divHolder.appendChild(divSubCatHolder);  	        
    	  	        
                    oL1PCatHolder.appendChild(divHolder);    	                           
      	            
                    if (isSelectCat) {
                        imgMain.src = '/images/0/but_minus.gif';			  	            
                        divImgMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); }
                        divMain.onclick = function() {    Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); }
    	  	            divSelectAllMain.onclick = function() { Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath')); }
    	  	            divSubCatHolder.style.display = '';
    	  	            
                        //render product cat now...	  	                
                        Picker.renderLevel2CompanyProductCat(level1CCatId, level2CCatId, level3CCatId, level1PCatId, 'subCompCatHolder'+catPath);
                    } else {
                        imgMain.src = '/images/0/but_plus.gif';
                        divImgMain.onclick = function() {                        
                            Picker.renderLevel2CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                        }
                        divMain.onclick = function() {    
                            Picker.renderLevel2CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                        }
                        divSelectAllMain.onclick = function() {    
                            Picker.renderLevel2CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                            Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath'));
                        }
    	  	            
                        divSubCatHolder.style.display = 'none';
                    }
                } else {
                    //gen check box
                    var inputCheckbox = document.createElement('input');
	                inputCheckbox.setAttribute('type','checkbox');	
	                inputCheckbox.style.border = '0px';	        		        
	                inputCheckbox.setAttribute('catpath', catPath); 				        
	                inputCheckbox.id = 'add'+catPath;
	                Picker.NatureCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	                inputCheckboxCount++;
	                if (isSelectCat) {				
		                inputCheckbox.setAttribute('defaultChecked', true);
		                inputCheckbox.setAttribute('checked', true);
		                inputCheckboxCheckedCount++;			        
		            }               
    		        
	                inputCheckbox.onclick = function () { 
	                    Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedNatureLib);  
	                    Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.SelectedNatureLib, true);
	                }
    		        
	                var divChkMain = document.createElement('div');
  	                divChkMain.className = 'fleft';   
  	                divChkMain.style.paddingLeft = '15px';
  	                divChkMain.appendChild(inputCheckbox);
    	  	        
  	                var divMain = document.createElement('div');
  	                divMain.className = 'fleft';   	  	        
  	                divMain.style.paddingLeft = '10px';
  	                divMain.innerHTML = level1PCatName;		  	            	  	        
    	  	        
  	                var divBr = document.createElement('div');
  	                divBr.className = 'DivBR';
    	  	        
  	                var divCatHolder = document.createElement('div');	  	        	  	        
  	                divCatHolder.appendChild(divChkMain);
  	                divCatHolder.appendChild(divMain);
  	                divCatHolder.appendChild(divBr);	  	                 	       
                    
  	                oL1PCatHolder.appendChild(divCatHolder);		  	            	        
                }
            }  
        }   
        
        selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
        if ( selectAllCheckBoxDiv != null){
            
            if ( inputCheckboxCount == 0 ){
                    selectAllCheckBoxDiv.innerHTML = "";
            }
                   
            if ( inputCheckboxCount != 0 && inputCheckboxCheckedCount > 0 ){
                selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-disabled";
            }
                      
            if ( inputCheckboxCount != 0 && inputCheckboxCount == inputCheckboxCheckedCount ){
                selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-checked";
            }
        }
        
    }
    
    Picker.renderLevel2CompanyProductCat = function (inLevel1CompCatId, inLevel2CompCatId, inLevel3CompCatId, inLevel1ProdCatId, inHolderId) {
        var oL2PCatHolder = document.getElementById(inHolderId);
        oL2PCatHolder.innerHTML = '';
            
        level1CCatId = inLevel1CompCatId;
        level2CCatId = inLevel2CompCatId;
        level3CCatId = inLevel3CompCatId;
        level1PCatId = inLevel1ProdCatId;
            
        //1. get last level company category id
        var LastLevelCompCatID;
        if (inLevel3CompCatId != 0) 
            LastLevelCompCatID = inLevel3CompCatId; 
        else 
            LastLevelCompCatID = inLevel2CompCatId;
        
        //2. get CompanyCatProductCatChildLib of last level company category id
        var currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + LastLevelCompCatID); 
        
        //3. get sub product cat list of level1PCatId from currCompanyCatProductCatChildLib       
        if (currCompanyCatProductCatChildLib.hasItem(level1PCatId)) {
            var Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(level1PCatId);
            var inputCheckboxCheckedCount = 0 ;
            var inputCheckboxCount = 0;
            var selectAllCheckBoxPath = "";
            
            for (pItem2 in Level2CompanyCatProductCatChildLib) {
  	            var level2PCatId = Level2CompanyCatProductCatChildLib[pItem2];
  	            var level2PCatName = ProductCatLib.getItem(level2PCatId);
  	            
  	            var pPath = '';    //parent product category path...
  	            var parentPCatLib = new Array();
  	            if (ProductCatPathLib.hasItem(level2PCatId)) {
  	                parentPCatLib = ProductCatPathLib.getItem(level2PCatId);
  	            }
  	            
  	            if (parentPCatLib.length > 1) {
  	                for (len=1; len<parentPCatLib.length; len++) {
  	                    pPath += parentPCatLib[len] + '_';
  	                } 
  	                selectAllCheckBoxPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' + pPath;	  	
  	                pPath += level2PCatId + '_';
  	            }
      	        
  	            var catPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' + pPath;	  	        	  	        
  	            var hasSubCat = currCompanyCatProductCatChildLib.hasItem(level2PCatId);
  	            var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedNatureLib);
      	        
  	            if (hasSubCat) {   
                    //render the current category...
                    var imgMain = document.createElement('img');	  	        
    	  	        
  	                divImgMain = document.createElement('div');
  	                divImgMain.className = 'SelectorSubItem1a fleft ptr';   
  	                divImgMain.setAttribute('id', 'imgCompHolder'+catPath);
  	                divImgMain.setAttribute('catpath', catPath);	  	        	  	        
  	                divImgMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divImgMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divImgMain.setAttribute('Level3CompanyCatID', level3CCatId);	        
  	                divImgMain.setAttribute('Level1ProductCatID', level1PCatId);
  	                divImgMain.setAttribute('Level2ProductCatID', level2PCatId);  	                
  	                divImgMain.appendChild(imgMain);		  
    	  	        
  	                divMain = document.createElement('div');
  	                divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	                divMain.setAttribute('id', 'compCatHolder' + catPath);
  	                divMain.setAttribute('catpath', catPath);	  
  	                divMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divMain.setAttribute('Level3CompanyCatID', level3CCatId);
  	                divMain.setAttribute('Level1ProductCatID', level1PCatId); 
  	                divMain.setAttribute('Level2ProductCatID', level2PCatId);  	                	        	        
  	                divMain.innerHTML = level2PCatName;
  	                
                    var inputSelectAllCheckbox = document.createElement('input');
  	                inputSelectAllCheckbox.setAttribute('id', 'checkCompCatHolder' + catPath + "SelectAllBox");
                    inputSelectAllCheckbox.setAttribute('type','hidden');	
                    inputSelectAllCheckbox.style.border = '0px';	  
                    
                                    
                    var inputSelectAllImage = document.createElement('img');
                    inputSelectAllImage.setAttribute('id', 'imgCompCatHolder' + catPath + "SelectAllBox");
                    inputSelectAllImage.src = "/images/spacer.gif";
                    inputSelectAllImage.style.width = "20px";
                    inputSelectAllImage.style.height = "20px";
                    inputSelectAllImage.style.border = '0px';	     		 

                    var divSelectAllMain = document.createElement('div');
                    divSelectAllMain.className = 'fleft ptr pickerCheckBox'; 
  	                divSelectAllMain.setAttribute('id', 'checkCompCatHolder' + catPath);
  	                divSelectAllMain.setAttribute('catpath', catPath);	  	 
  	                divSelectAllMain.setAttribute('Level1CompanyCatID', level1CCatId);
  	                divSelectAllMain.setAttribute('Level2CompanyCatID', level2CCatId);   
  	                divSelectAllMain.setAttribute('Level3CompanyCatID', level3CCatId);
  	                divSelectAllMain.setAttribute('Level1ProductCatID', level1PCatId);  
  	                divSelectAllMain.setAttribute('Level2ProductCatID', level2PCatId);  	                       
                    divSelectAllMain.appendChild(inputSelectAllImage);	
    	  	        
  	                var divBr = document.createElement('div');
                    divBr.className = 'DivBR';
    	  	        
                    var divCatHolder = document.createElement('div');	  	        
                    divCatHolder.appendChild(divImgMain);
                    divCatHolder.appendChild(divSelectAllMain);
                    divCatHolder.appendChild(divMain);
                    divCatHolder.appendChild(divBr);
    	  	        
                    var divSubCatHolder = document.createElement('div');
                    divSubCatHolder.setAttribute('id', 'subCompCatHolder' + catPath);	  	
                    divSubCatHolder.style.paddingLeft = '20px'; 
    	  	        
                    var divHolder = document.createElement('div');
                    divHolder.className = 'SelectorSubItem1';
                    divHolder.appendChild(divCatHolder);
                    divHolder.appendChild(divSubCatHolder);  	        
    	  	        
                    oL2PCatHolder.appendChild(divHolder);    	                           
      	            
                    if (isSelectCat) {
                        imgMain.src = '/images/0/but_minus.gif';			  	            
                        divImgMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0); }
                        divMain.onclick = function() { Picker.close('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0); }
    	  	            divSelectAllMain.onclick = function() { Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath')); }
    	  	            divSubCatHolder.style.display = '';
    	  	            
                        //render product cat now...	  	                
                        Picker.renderLevel3CompanyProductCat(level1CCatId, level2CCatId, level3CCatId, level1PCatId, level2PCatId, 'subCompCatHolder'+catPath);
                    } else {
                        imgMain.src = '/images/0/but_plus.gif';
                        divImgMain.onclick = function() {                        
                            Picker.renderLevel3CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                        }
                        divMain.onclick = function() {                         
                            Picker.renderLevel3CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                        }
                        divSelectAllMain.onclick = function() {    
                            Picker.renderLevel3CompanyProductCat(this.getAttribute('Level1CompanyCatID'), this.getAttribute('Level2CompanyCatID'), this.getAttribute('Level3CompanyCatID'), this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), 'subCompCatHolder' + this.getAttribute('catpath'));	  	                
                            Picker.expand('imgCompHolder'+this.getAttribute('catpath'), 'compCatHolder'+this.getAttribute('catpath'), 'subCompCatHolder'+this.getAttribute('catpath'), 'checkCompCatHolder'+this.getAttribute('catpath'),0); 
                            Picker.selectAllInCategory('checkCompCatHolder'+this.getAttribute('catpath')); 
                        }
    	  	            
                        divSubCatHolder.style.display = 'none';
                    }
                } else {
                    //gen check box
                    var inputCheckbox = document.createElement('input');
	                inputCheckbox.setAttribute('type','checkbox');	
	                inputCheckbox.style.border = '0px';	        		        
	                inputCheckbox.setAttribute('catpath', catPath); 				        
	                inputCheckbox.id = 'add'+catPath;
	                Picker.NatureCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	                inputCheckboxCount++;
	                if (isSelectCat) {				
		                inputCheckbox.setAttribute('defaultChecked', true);
		                inputCheckbox.setAttribute('checked', true);
		                inputCheckboxCheckedCount++;			        
		            }               
    		        
	                inputCheckbox.onclick = function () { 
	                    tempNum = 0;
	                    Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedNatureLib);  
	                    Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.SelectedNatureLib, true);
	                    selectAllCheckBox = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath + "SelectAllBox");
	                    selectAllDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath);
	                    var tempArray = this.getAttribute('catpath').split("_");
	                    var Level4ProductCats = ProductCatChildLib.getItem(tempArray[6]);
	                    tempPath = '_' + tempArray[1] + '_' + tempArray[2] + '_' + tempArray[3] + '_' + tempArray[4]+'_' + tempArray[5]+'_' + tempArray[6]+ '_';
	                    if ( Level4ProductCats == null ){
	                        var Level4ProductCats = ProductCatChildLib.getItem(tempArray[5]);
	                        tempPath = '_' + tempArray[1] + '_' + tempArray[2] + '_' + tempArray[3] + '_' + tempArray[4]+'_' + tempArray[5]+'_' ;
	                    }
                        totalCheckBox = Level4ProductCats.length;
                        for (pItem4 in Level4ProductCats){
                            var level4PCatId = Level4ProductCats[pItem4];
                            var catPath = tempPath + level4PCatId + '_';
                            tempInputCheckbox = document.getElementById('add'+catPath);
                            if ( tempInputCheckbox != null ){
                                if ( tempInputCheckbox.checked == true )
                                    tempNum++;
                            }
                            else
                                totalCheckBox--;
                        }
                        if ( tempNum == totalCheckBox ){
                    
                            if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                                selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

                            else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                                selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
                        }
                        else if ( tempNum == 0 ){
                            if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                                selectAllDiv.className = "fleft ptr pickerCheckBox";

                            else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                                selectAllDiv.className = "fleft ptr pickerCheckBox";
                        }
                        else{
                            if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                                selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";

                            else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                                selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";
                        }
	                        
	                }
    		        
	                var divChkMain = document.createElement('div');
  	                divChkMain.className = 'fleft';   
  	                divChkMain.style.paddingLeft = '15px';
  	                divChkMain.appendChild(inputCheckbox);
    	  	        
  	                var divMain = document.createElement('div');
  	                divMain.className = 'fleft';   	  	        
  	                divMain.style.paddingLeft = '10px';
  	                divMain.innerHTML = level2PCatName;		  	            	  	        
    	  	        
  	                var divBr = document.createElement('div');
  	                divBr.className = 'DivBR';
    	  	        
  	                var divCatHolder = document.createElement('div');	  	        	  	        
  	                divCatHolder.appendChild(divChkMain);
  	                divCatHolder.appendChild(divMain);
  	                divCatHolder.appendChild(divBr);	  	                 	       
                    
  	                oL2PCatHolder.appendChild(divCatHolder);		  	            	        
                }
            }
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            if ( selectAllCheckBoxDiv != null ){
                if ( inputCheckboxCount == 0 ){
                    selectAllCheckBoxDiv.innerHTML = "";
                }
                       
                if ( inputCheckboxCount != 0 && inputCheckboxCheckedCount > 0 ){
                    selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-disabled";
                }
                          
                if ( inputCheckboxCount != 0 && inputCheckboxCount == inputCheckboxCheckedCount ){
                    selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-checked";
                }
            }
              
        }
    }  
    
    //Function: renderLevel3CompanyProductCat
    //rendering level 3 product category for company category selector
    Picker.renderLevel3CompanyProductCat = function (inLevel1CompCatId, inLevel2CompCatId, inLevel3CompCatId, inLevel1ProdCatId, inLevel2ProdCatId, inHolderId) {            
        var oL3PCatHolder = document.getElementById(inHolderId);
        oL3PCatHolder.innerHTML = '';
            
        level1CCatId = inLevel1CompCatId;
        level2CCatId = inLevel2CompCatId;
        level3CCatId = inLevel3CompCatId;
        level1PCatId = inLevel1ProdCatId;
        level2PCatId = inLevel2ProdCatId;
            
        //1. get last level company category id
        var LastLevelCompCatID;
        if (inLevel3CompCatId != 0) 
            LastLevelCompCatID = inLevel3CompCatId; 
        else 
            LastLevelCompCatID = inLevel2CompCatId;
        
        //2. get CompanyCatProductCatChildLib of last level company category id
        var currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + LastLevelCompCatID); 
        
        //3. get sub product cat list of level1PCatId from currCompanyCatProductCatChildLib       
        if (currCompanyCatProductCatChildLib.hasItem(level2PCatId)) {
            var Level3CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(level2PCatId);
            var inputCheckboxCheckedCount = 0 ;
            var inputCheckboxCount = 0;
            var selectAllCheckBoxPath = "";
            
            for (pItem3 in Level3CompanyCatProductCatChildLib) {
  	            var level3PCatId = Level3CompanyCatProductCatChildLib[pItem3];
  	            var level3PCatName = ProductCatLib.getItem(level3PCatId);
  	            
  	            var pPath = '';    //parent product category path...
  	            var parentPCatLib = new Array();
  	            if (ProductCatPathLib.hasItem(level3PCatId)) {
  	                parentPCatLib = ProductCatPathLib.getItem(level3PCatId);
  	            }
  	            
  	            if (parentPCatLib.length > 1) {
  	                for (len=1; len<parentPCatLib.length; len++) {
  	                    pPath += parentPCatLib[len] + '_';
  	                } 
  	                selectAllCheckBoxPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' + pPath;	  	
  	                pPath += level3PCatId + '_';
  	            }
      	        
  	            var catPath = '_'+level1CCatId+'_'+level2CCatId + '_' + level3CCatId + '_' + pPath;	  	        	  	        
  	            //var hasSubCat = currCompanyCatProductCatChildLib.hasItem(level3PCatId);
  	            var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedNatureLib);
      	        
  	            //gen check box
                var inputCheckbox = document.createElement('input');
                inputCheckbox.setAttribute('type','checkbox');	
                inputCheckbox.style.border = '0px';	        		        
                inputCheckbox.setAttribute('catpath', catPath); 				        
                inputCheckbox.id = 'add'+catPath;
                Picker.NatureCheckBoxLib.setItem(catPath, catPath);    //add item to hash...
                inputCheckboxCount++;
                if (isSelectCat) {				
	                inputCheckbox.setAttribute('defaultChecked', true);
	                inputCheckbox.setAttribute('checked', true);		
                    inputCheckboxCheckedCount++;			     	        
	            }               
    	        
                inputCheckbox.onclick = function () { 
                    tempNum = 0;
                    Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedNatureLib);  
	                Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.SelectedNatureLib, true);
	                selectAllCheckBox = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath + "SelectAllBox");
	                selectAllDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath);
	                var tempArray = this.getAttribute('catpath').split("_");
                    var Level4ProductCats = ProductCatChildLib.getItem(tempArray[6]);
                    totalCheckBox = Level4ProductCats.length;
                    for (pItem4 in Level4ProductCats){
                        var level4PCatId = Level4ProductCats[pItem4];
                        var catPath = '_' + tempArray[1] + '_' + tempArray[2] + '_' + tempArray[3] + '_' + tempArray[4] + '_' + tempArray[5] + '_' + tempArray[6] + '_' + level4PCatId + '_';	
                        tempInputCheckbox = document.getElementById('add'+catPath);
                        if ( tempInputCheckbox.checked == true )
                            tempNum++;
                    }
                    if ( tempNum == totalCheckBox ){
                
                        if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

                        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
                    }
                    else if ( tempNum == 0 ){
                        if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                            selectAllDiv.className = "fleft ptr pickerCheckBox";

                        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                            selectAllDiv.className = "fleft ptr pickerCheckBox";
                    }
                    else{
                    
                        if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                            selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";

                        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                            selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";
                    }
	                
                }
    	        
                var divChkMain = document.createElement('div');
                divChkMain.className = 'fleft';   
                divChkMain.style.paddingLeft = '15px';
                divChkMain.appendChild(inputCheckbox);
      	        
                var divMain = document.createElement('div');
                divMain.className = 'fleft';   	  	        
                divMain.style.paddingLeft = '10px';
                divMain.innerHTML = level3PCatName;		  	            	  	        
      	        
                var divBr = document.createElement('div');
                divBr.className = 'DivBR';
      	        
                var divCatHolder = document.createElement('div');	  	        	  	        
                divCatHolder.appendChild(divChkMain);
                divCatHolder.appendChild(divMain);
                divCatHolder.appendChild(divBr);	  	                 	       
                
                oL3PCatHolder.appendChild(divCatHolder);  	            	                       
            }  
            
            if ( inputCheckboxCount == 0 ){
                selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
                selectAllCheckBoxDiv.innerHTML = "";
            }
                   
            if ( inputCheckboxCount != 0 && inputCheckboxCheckedCount > 0 ){
                selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
                selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-disabled";
            }
                      
            if ( inputCheckboxCount != 0 && inputCheckboxCount == inputCheckboxCheckedCount ){
                selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
                selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-checked";
            }
            
        }   
    } 
    
    //Function: renderSelectedNatureLib
    //reorganise Picker.SelectedNatureLib and rendering them
    Picker.renderSelectedNatureLib = function (inLayer, inCatLib, showCheckbox) {                                 
        var oSelectedCompCatLib = new Hash();
        var oSelectedCompProdCatLib = new Hash();
        oSelectedCompCatLib.setItem('-1', new Array());
        
        //(1) organise the selected cat lib...        
        //*** the format of catLib item is _c1_c2_c3_p1_p2_(p3_(p4_))
        for (path in inCatLib.items) {
            var pathArray = inCatLib.getItem(path).split('_');
            if (pathArray.length >= 7) {
                //item 0 is ""
                //item 1 is level 1 company cat
                //item 2 is level 2 company cat
                //item 3 is level 3 company cat, but it could be 0 
                //item 4 is level 1 product cat, it's like level 1 company cat
                //item 5 is level 2 product cat
                //item 6 is may be level 3 product cat / or a empty string
                //item 7 is a empth string if it has...
                var L1CompCat = 0;
                var L2CompCat = 0;
                var L3CompCat = 0;
                var L1ProdCat = 0;
                var L2ProdCat = 0;
                var L3ProdCat = 0;
                var L4ProdCat = 0;
                var LastLevelCompCat;
                
                if (pathArray[1] != '') L1CompCat = pathArray[1];
                if (pathArray[2] != '') L2CompCat = pathArray[2];
                if (pathArray[3] != '') L3CompCat = pathArray[3];
                if (pathArray[4] != '') L1ProdCat = pathArray[4];
                if (pathArray[5] != '') L2ProdCat = pathArray[5];
                if (pathArray[6] != '') L3ProdCat = pathArray[6];
                if (pathArray.length >= 8) {
                    if (pathArray[7] != '') L4ProdCat = pathArray[7];   
                }
                
                if (L1CompCat != 0 && L2CompCat != 0 && L1ProdCat != 0 && L2ProdCat != 0) {
                    //organise oSelectedCompCatLib
                    oLevel1CCatLib = oSelectedCompCatLib.getItem('-1');
                    if (!Picker.CheckInArray(L1CompCat, oLevel1CCatLib)) {
                        len = oLevel1CCatLib.length;
                        oLevel1CCatLib[len] = L1CompCat;                        
                    }
                    
                    if (!oSelectedCompCatLib.hasItem(L1CompCat)) {
                        oSelectedCompCatLib.setItem(L1CompCat, new Array());
                    }
                    
                    oLevel2CCatLib = oSelectedCompCatLib.getItem(L1CompCat);
                    if (!Picker.CheckInArray(L2CompCat, oLevel2CCatLib)) {
                        len = oLevel2CCatLib.length;
                        oLevel2CCatLib[len] = L2CompCat;                        
                    }
                    LastLevelCompCat = L2CompCat;    //default last level company cat is L2CompCat
                    
                    if (L3CompCat != 0) {
                        if (!oSelectedCompCatLib.hasItem(L2CompCat)) {
                            oSelectedCompCatLib.setItem(L2CompCat, new Array());
                        }
                    
                        oLevel3CCatLib = oSelectedCompCatLib.getItem(L2CompCat);
                        if (!Picker.CheckInArray(L3CompCat, oLevel3CCatLib)) {
                            len = oLevel3CCatLib.length;
                            oLevel3CCatLib[len] = L3CompCat;                        
                        }
                        LastLevelCompCat = L3CompCat;    //if exist L3CompCat, last level company cat is L3CompCat
                    }
                    
                    //exclude hidden product category
                    var showL1PCatId = 0;
                    var showL2PCatId = 0;
                    var showL3PCatId = 0;
                    var showL4PCatId = 0;
                    
                    var oTopCompanyProductCat = new Array();
                    if (CompanyCatTopLevelProductCatLib.hasItem(LastLevelCompCat)) {
                        oTopCompanyProductCat = CompanyCatTopLevelProductCatLib.getItem(LastLevelCompCat);
                    }
                    
                    if (Picker.CheckInArray(L1ProdCat, oTopCompanyProductCat)) {
                        showL1PCatId = L1ProdCat;
                        showL2PCatId = L2ProdCat;
                        showL3PCatId = L3ProdCat;
                        showL4PCatId = L4ProdCat;
                    } else if (Picker.CheckInArray(L2ProdCat, oTopCompanyProductCat)) {
                        showL1PCatId = L2ProdCat;
                        showL2PCatId = L3ProdCat;
                        showL3PCatId = L4ProdCat;
                    } else if (Picker.CheckInArray(L3ProdCat, oTopCompanyProductCat)) {
                        showL1PCatId = L3ProdCat;
                        showL2PCatId = L4ProdCat;
                    } else if (Picker.CheckInArray(L4ProdCat, oTopCompanyProductCat)) {
                        showL1PCatId = L4ProdCat;
                    }
                    
                    //organise oSelectedProdCatLib
                    if (!oSelectedCompProdCatLib.hasItem(LastLevelCompCat)) 
                        oSelectedCompProdCatLib.setItem(LastLevelCompCat, new Hash());
                        
                    var oSelectedProdCatLib = oSelectedCompProdCatLib.getItem(LastLevelCompCat);
                    if (!oSelectedProdCatLib.hasItem('-1'))
                        oSelectedProdCatLib.setItem('-1', new Array());
                    
                    if (showL1PCatId != 0) {
                        //level 1 show product category...
                        oLevel1PCatLib = oSelectedProdCatLib.getItem('-1');
                        if (!Picker.CheckInArray(showL1PCatId, oLevel1PCatLib)) {
                            len = oLevel1PCatLib.length;
                            oLevel1PCatLib[len] = showL1PCatId;                        
                        }
                        
                        if (showL2PCatId != 0) {
                            if (!oSelectedProdCatLib.hasItem(showL1PCatId)) {
                                oSelectedProdCatLib.setItem(showL1PCatId, new Array());
                            }
                            
                            //level 2 show product category...
                            oLevel2PCatLib = oSelectedProdCatLib.getItem(showL1PCatId);
                            if (!Picker.CheckInArray(showL2PCatId, oLevel2PCatLib)) {
                                len = oLevel2PCatLib.length;
                                oLevel2PCatLib[len] = showL2PCatId;                        
                            }
                            
                            if (showL3PCatId != 0) {
                                if (!oSelectedProdCatLib.hasItem(showL2PCatId)) {
                                    oSelectedProdCatLib.setItem(showL2PCatId, new Array());
                                }
                                
                                //level 3 show product category...
                                oLevel3PCatLib = oSelectedProdCatLib.getItem(showL2PCatId);
                                if (!Picker.CheckInArray(showL3PCatId, oLevel3PCatLib)) {
                                    len = oLevel3PCatLib.length;
                                    oLevel3PCatLib[len] = showL3PCatId;                        
                                }
                                
                                //suppose showL4PCatId should always be equal to 0
                                if (showL4PCatId != 0) {
                                    if (!oSelectedProdCatLib.hasItem(showL3PCatId)) {
                                        oSelectedProdCatLib.setItem(showL3PCatId, new Array());
                                    }
                                    
                                    //level 4 show product category...
                                    oLevel4PCatLib = oSelectedProdCatLib.getItem(showL3PCatId);
                                    if (!Picker.CheckInArray(showL4PCatId, oLevel3PCatLib)) {
                                        len = oLevel4PCatLib.length;
                                        oLevel4PCatLib[len] = showL4PCatId;                        
                                    }
                                }
                            }
                        }
                    }
                }
            }                
        }        
                        
        var SelectedCatHolder = document.getElementById(inLayer);
        SelectedCatHolder.innerHTML = '';
            
        //(2) render selected cat lib...
        oL1CCatLib = oSelectedCompCatLib.getItem('-1');
        for (var C1=0; C1<oL1CCatLib.length; C1++) {
            L1CCatID = oL1CCatLib[C1];
            L1CCatName = CompanyCatLib.getItem(L1CCatID);
            
            //render company cat...
            //level 1 company cat
            var divLevel1CCatHolder = document.createElement('div');
            divLevel1CCatHolder.className = 'MsgEntry3';
            
            var L1CCatItem = document.createElement('div');
            L1CCatItem.className = 'BlockStyle30';
            L1CCatItem.innerHTML = L1CCatName;                   
            divLevel1CCatHolder.appendChild(L1CCatItem);
            SelectedCatHolder.appendChild(divLevel1CCatHolder);
            
            //level 2 company cat...
            oL2CCatLib = oSelectedCompCatLib.getItem(L1CCatID);
            for (var C2=0; C2<oL2CCatLib.length; C2++) {
                L2CCatID = oL2CCatLib[C2];
                L2CCatName = CompanyCatLib.getItem(L2CCatID);
                
                var L2CCatItem = document.createElement('div');                                                
                L2CCatItem.className = 'ul SelectedCompCat2';
                L2CCatItem.innerHTML = L2CCatName;
                       
                var divLevel2CCatHolder = document.createElement('div');
                divLevel2CCatHolder.className = 'SelectorSubItem1a';
                divLevel2CCatHolder.appendChild(L2CCatItem);
                divLevel1CCatHolder.appendChild(divLevel2CCatHolder);
                
                if (oSelectedCompCatLib.hasItem(L2CCatID)) {
                    //level 3 company cat...
                    oL3CCatLib = oSelectedCompCatLib.getItem(L2CCatID);
                    for (var C3=0; C3< oL3CCatLib.length; C3++) {
                        L3CCatID = oL3CCatLib[C3];
                        L3CCatName = CompanyCatLib.getItem(L3CCatID);
                
                        var L3CCatItem = document.createElement('div');                                                
                        L3CCatItem.className = 'ul SelectedCompCat2';
                        L3CCatItem.innerHTML = L3CCatName;
                        
                        var divLevel3CCatHolder = document.createElement('div');
                        divLevel3CCatHolder.className = 'SelectorSubItem1a';
                        divLevel3CCatHolder.appendChild(L3CCatItem);
                        divLevel2CCatHolder.appendChild(divLevel3CCatHolder);
                        
                        //render selected product cat lib...
                        Picker.renderSelectedCompanyProductCatLib(L1CCatID, L2CCatID, L3CCatID, oSelectedCompProdCatLib, divLevel3CCatHolder, showCheckbox);
                    }
                } else {
                    //render selected product cat lib...
                    Picker.renderSelectedCompanyProductCatLib(L1CCatID, L2CCatID, 0, oSelectedCompProdCatLib, divLevel2CCatHolder, showCheckbox);
                }
            }
        }          
    }    
    
    Picker.renderSelectedCompanyProductCatLib = function (inL1CCatID, inL2CCatID, inL3CCatID, inSelectedCompProdCatLib, inParentHolder, showCheckbox) {
        var LastLevelCompanyCat;
        if (inL3CCatID != 0) {
            LastLevelCompanyCat = inL3CCatID;
        } else {
            LastLevelCompanyCat = inL2CCatID;
        }
        
        if (inSelectedCompProdCatLib.hasItem(LastLevelCompanyCat)) {
            inSelectedProductCatLib = inSelectedCompProdCatLib.getItem(LastLevelCompanyCat);
            
            oL1PCatLib = inSelectedProductCatLib.getItem('-1');                    
            for (var P1=0; P1< oL1PCatLib.length; P1++) {                
                L1PCatID = oL1PCatLib[P1];
                L1PCatName = ProductCatLib.getItem(L1PCatID);
                
                if (inSelectedProductCatLib.hasItem(L1PCatID)) {
                    var L1PCatItem = document.createElement('div');                                                
                    L1PCatItem.className = 'ul SelectedCompCat2';
                    L1PCatItem.innerHTML = L1PCatName;
                                       
                    var divLevel1PCatHolder = document.createElement('div');
                    divLevel1PCatHolder.className = 'SelectorSubItem1a';
                    divLevel1PCatHolder.appendChild(L1PCatItem);
                    inParentHolder.appendChild(divLevel1PCatHolder);
                    
                    oL2PCatLib = inSelectedProductCatLib.getItem(L1PCatID);
                    for (var P2=0; P2<oL2PCatLib.length; P2++) {
                        L2PCatID = oL2PCatLib[P2];
                        L2PCatName = ProductCatLib.getItem(L2PCatID);
                        
                        if (inSelectedProductCatLib.hasItem(L2PCatID)) {
                            var L2PCatItem = document.createElement('div');                                                
                            L2PCatItem.className = 'ul SelectedCompCat2';
                            L2PCatItem.innerHTML = L2PCatName;
                                               
                            var divLevel2PCatHolder = document.createElement('div');
                            divLevel2PCatHolder.className = 'SelectorSubItem1a';
                            divLevel2PCatHolder.appendChild(L2PCatItem);
                            divLevel1PCatHolder.appendChild(divLevel2PCatHolder);
                            
                            oL3PCatLib = inSelectedProductCatLib.getItem(L2PCatID);
                            for (var P3=0; P3<oL3PCatLib.length; P3++) {
                                L3PCatID = oL3PCatLib[P3];
                                L3PCatName = ProductCatLib.getItem(L3PCatID);
                                
                                Picker.renderCatWithCheckbox(inL1CCatID, inL2CCatID, inL3CCatID, L3PCatID, L3PCatName, divLevel2PCatHolder, showCheckbox);
                            }
                        } else {
                            Picker.renderCatWithCheckbox(inL1CCatID, inL2CCatID, inL3CCatID, L2PCatID, L2PCatName, divLevel1PCatHolder, showCheckbox);                            
                        }
                    }
                } else {
                    Picker.renderCatWithCheckbox(inL1CCatID, inL2CCatID, inL3CCatID, L1PCatID, L1PCatName, inParentHolder, showCheckbox);                            
                }
            } 
        }
    }
    
    
    Picker.renderCatWithCheckbox = function (inL1CCatID, inL2CCatID, inL3CCatID, inProdCatID, inProdCatName, inPHolder, inShowCheckbox) {
        catHolder = document.createElement('div');
        catHolder.style.paddingLeft = '10px';                                    
                    
        if (inShowCheckbox) {
            var pPath = '';    //parent product category path...
            var parentPCatLib = new Array();
            
            if (ProductCatPathLib.hasItem(inProdCatID)) {
                parentPCatLib = ProductCatPathLib.getItem(inProdCatID);
            }
    
            if (parentPCatLib.length > 1) {
                for (len=1; len<parentPCatLib.length; len++) {
                    pPath += parentPCatLib[len] + '_';
                } 
                pPath += inProdCatID + '_';
            }
            
            catPath = '_' + inL1CCatID + '_' + inL2CCatID + '_' + inL3CCatID + '_' + pPath;
            var inputCheckbox = document.createElement('input');
            inputCheckbox.setAttribute('type','checkbox');
            inputCheckbox.style.border = '0px';
            inputCheckbox.id = 'remove' + catPath;
            inputCheckbox.setAttribute('catpath', catPath);
    
            inputCheckbox.onclick = function () { 
                Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedNatureLib);  	                            
            }
            
            var divChkMain = document.createElement('div');
            divChkMain.className = 'fleft';                       
            divChkMain.appendChild(inputCheckbox);
            
            catHolder.appendChild(divChkMain);
        }
        
        var divMain = document.createElement('div');
        divMain.className = 'fleft';   	  	                        
        divMain.innerHTML = inProdCatName;		  	            	  	        

        var divBr = document.createElement('div');
        divBr.className = 'DivBR';
        
        catHolder.appendChild(divMain);
        catHolder.appendChild(divBr);
        
        inPHolder.appendChild(catHolder);
    }
    //**** End Of Methods for operate company category selector ****    
    
    
    
    //(2) Product Category Picker
    //for product category selector...
    Picker.ShowSelectedProductCatLib = new Hash();    //store displaying product cat paths    
    Picker.SelectedProductCatLib = new Hash();        //store selected product cat paths, it may be diff from ShowSelectedProductCatLib    
    Picker.DeselectedProductCatLib = new Hash();      //store deselected product cat paths
    Picker.DefaultSelectedL1ProdCat = 700;            //default selected level 1 product cat id
    Picker.CurrentSelectedL1ProdCat = null;           //current selected level 1 product cat id
    Picker.ProductCatCheckBoxLib = new Hash()         //store cat paths related to add checkboxes of product category selector
    
    //**** Start Of Methods for operate product category selector ****    
    //create company category selector
    //this will be called once at the beginning...
    Picker.createProductCatSelector = function (inWordArray, inShowSelectedCatLib, inDisplayCatHolder, inUnhighlightHolder) {    
        //(1) create layout for cat selector...
        document.write('<div id="ProductCatSelector" style="width: 750px; height: 410px; top: 0px; left: 0px; overflow: auto; position: absolute; z-index: 100; display:none;" class="BlockWhite">');
        document.write('<div style="padding: 1px;">');
        document.write('<div style="width: 748px; height: 408px;" class="BlockStyle32">');
        document.write('<div style="padding: 2px;">');
        document.write('<div class="BlockStyle32 white bold" style="height: 20px; padding: 2px;" onMouseDown="startDragLayer(\'ProductCatSelector\',event.clientX,event.clientY);" onMouseUp="stopDragLayer();">');
        document.write('<div class="fleft" style="margin-top: 1px;">' + inWordArray[0] + '</div>');
        document.write('<div class="fright"><a href="javascript: void(0);" onClick="hideLayer(\'ProductCatSelector\', Picker.ComboList)"><img src="/images/0/but_close.gif" alt="Close"></a></div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        document.write('<div id="Div2" class="BlockWhite" style="width: 744px; height: 378px;">');
        document.write('<div style="padding: 5px;">');
        document.write('<div class="fleft BlockStyle20" style="width: 530px; height: 335px; padding: 1px">');
        document.write('<div class="bold" style="padding: 2px">'+ inWordArray[1] +'</div>');
        document.write('<div class="BlockWhite" style="height: 315px;">');
        //<!-- Start of Popup Left -->
        document.write('<div style="padding-top: 2px; width:530px">');
        document.write('<div id="ProductTopCatHolder" class="fleft" style="width: 180px; height: 310px; overflow: auto;">');
        document.write('<div style="padding: 2px"></div>');
        document.write('</div>');
        document.write('<div class="fleft BlockStyle20" style="width: 350px; height: 310px;">');
        document.write('<div style="padding: 2px">');
        document.write('<div id="ProductSubCatHolder" class="BlockWhite" style="width: 346px; height: 275px; overflow: auto;"></div><div class="BlockStyle20" style="padding: 3px;">' + inWordArray[2] + '</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        //<!-- End of Popup Left -->                                    
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="fright BlockStyle30" style="width: 200px; height: 335px; padding: 1px;">');
        document.write('<div class="bold" style="padding: 2px">' + inWordArray[3] + '</div>');
        document.write('<div style="height: 282px;" class="BlockWhite">');
        document.write('<div id="ProductSelectedCatHolder" style="width: 198px; height: 282px; overflow: auto;"></div>');
        document.write('</div>');        
        document.write('<div class="BlockStyle30">');
	    document.write('<div class="fleft Button3" style="margin: 2px;"><a href="javascript:Picker.DeselectOnClick(Picker.SelectedProductCatLib, Picker.DeselectedProductCatLib, Picker.ProductCatCheckBoxLib,1); Picker.renderSelectedProductCatLib(\'ProductSelectedCatHolder\', Picker.SelectedProductCatLib, true);" class="Button3">' + inWordArray[4] + '</a></div>');
	    document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
	    document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'ProductCatSelector\', Picker.ComboList);Picker.SelectedProductCatLib = Picker.ReorganiseCat(Picker.ShowSelectedProductCatLib); Picker.renderSelectedProductCatLib(\''+inDisplayCatHolder + '\', Picker.SelectedProductCatLib, false);">' + inWordArray[5] + '</a></div>');
	    document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'ProductCatSelector\', Picker.ComboList);Picker.ShowSelectedProductCatLib = Picker.ReorganiseCat(Picker.SelectedProductCatLib); Picker.renderSelectedProductCatLib(\''+inDisplayCatHolder + '\', Picker.SelectedProductCatLib, false);Picker.UnhightlightHolder(\'' + inUnhighlightHolder + '\');">' + inWordArray[6] + '</a></div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
	    document.write('</div>');
	    
        
	    //(3) render top level company category
	    Picker.renderTopLevelProductCat('ProductTopCatHolder');
	    
	    //(4) set ShowSelectedNatureLib with inShowSelectedCatLib
	    Picker.ShowSelectedProductCatLib = Picker.ReorganiseCat(inShowSelectedCatLib);
	    
	    Picker.SelectedProductCatLib = Picker.ReorganiseCat(inShowSelectedCatLib);
    }
    
    //Function: popupProductCatSelector
    Picker.popupProductCatSelector = function () {   
        if (Picker.CurrentSelectedL1ProdCat == null) {
            Picker.renderLevel2ProductCat(Picker.DefaultSelectedL1ProdCat);
        } else {
            Picker.renderLevel2ProductCat(Picker.CurrentSelectedL1ProdCat);
        }                        
        Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.ShowSelectedProductCatLib, true);
        showLayer('ProductCatSelector', Picker.ComboList);	        
    }    
    
    //Function: renderTopLevelProductCat
    Picker.renderTopLevelProductCat = function (inTopCatHolder) {
        TopCatHolder = document.getElementById(inTopCatHolder);
        TopCatHolder.innerHTML = '';

        var Level1ProductCatLib = ProductCatChildLib.getItem('-1');		
	    for (tItem in Level1ProductCatLib) {
	        L1PCatID = Level1ProductCatLib[tItem];
	        		        			        			        
    	    hrefTopCat = document.createElement('a');
    	    hrefTopCat.className = 'ul';
    	    hrefTopCat.href = 'javascript:void(0);';
    	    hrefTopCat.innerHTML = ProductCatLib.getItem(L1PCatID);
    	    hrefTopCat.id = 'hrefProdCat' + L1PCatID;
    	    hrefTopCat.setAttribute('Level1ProductCatID', L1PCatID);

			divMain = document.createElement('div');
    	    divMain.id = 'prodCatHolder' + L1PCatID;
    	    divMain.setAttribute('Level1ProductCatID', L1PCatID);		    	    
    	    divMain.className = 'SelectorNavItem ptr';		    	    
    	    divMain.appendChild(hrefTopCat);

			TopCatHolder.appendChild(divMain);
			hrefTopCat.onclick = function() { Picker.renderLevel2ProductCat(this.getAttribute('Level1ProductCatID')); }			  	    
			divMain.onclick = function() { Picker.renderLevel2ProductCat(this.getAttribute('Level1ProductCatID')); }			  	    			
	    }            
    }
    
    //Function: renderLevel2ProductCat
    //rendering level 2 product category for product category selector
    Picker.renderLevel2ProductCat = function (inLevel1ProdCatId) {
        Picker.ProductCatCheckBoxLib = new Hash();    //reset hash...
        
        //highlight current selected top product cat item...
  	    var Level1ProductCatLib = ProductCatChildLib.getItem('-1');
  	    for (tItem in Level1ProductCatLib) {
  	        if (Level1ProductCatLib[tItem] == inLevel1ProdCatId) {	  	            
  	            Picker.CurrentSelectedL1ProdCat = inLevel1ProdCatId;
  			    document.getElementById('prodCatHolder'+Level1ProductCatLib[tItem]).className = 'SelectorNavItemSelecteda ptr';
  		    } else {
  			    document.getElementById('prodCatHolder'+Level1ProductCatLib[tItem]).className = 'SelectorNavItem ptr';
  		    }	
  	    }  	    
        
        var SubCatHolder = document.getElementById('ProductSubCatHolder');
        SubCatHolder.innerHTML = '';
        
        var level1PCatId = inLevel1ProdCatId;
        var Level2ProductCats = ProductCatChildLib.getItem(inLevel1ProdCatId);        
  	    for (pItem2 in Level2ProductCats) {
  	        var level2PCatId = Level2ProductCats[pItem2];
  	        var level2PCatName = ProductCatLib.getItem(level2PCatId);
  	        
  	        var catPath = '_' + level1PCatId + '_' + level2PCatId + '_';	  	        	  	        
  	        var hasSubCat = ProductCatChildLib.hasItem(level2PCatId);
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedProductCatLib);
  	        
  	        if (hasSubCat) {   
                //render the current category...
                var imgMain = document.createElement('img');	  	        
	  	        
  	            divImgMain = document.createElement('div');
  	            divImgMain.className = 'SelectorSubItem1a fleft ptr';   
  	            divImgMain.setAttribute('id', 'imgProdHolder'+catPath);
  	            divImgMain.setAttribute('catpath', catPath);	  	        	  	          	            
  	            divImgMain.setAttribute('Level1ProductCatID', level1PCatId);
  	            divImgMain.setAttribute('Level2ProductCatID', level2PCatId);
  	            divImgMain.appendChild(imgMain);		  
	  	        
  	            divMain = document.createElement('div');
  	            divMain.className = 'SelectorSubItem1a ul fleft ptr';   
  	            divMain.setAttribute('id', 'prodCatHolder' + catPath);
  	            divMain.setAttribute('catpath', catPath);	    	            
  	            divMain.setAttribute('Level1ProductCatID', level1PCatId);
  	            divMain.setAttribute('Level2ProductCatID', level2PCatId);	        	        
  	            divMain.innerHTML = level2PCatName;
	  	        
  	            var divBr = document.createElement('div');
                divBr.className = 'DivBR';
	  	        
                var divCatHolder = document.createElement('div');	  	        
                divCatHolder.appendChild(divImgMain);
                divCatHolder.appendChild(divMain);
                divCatHolder.appendChild(divBr);
	  	        
                var divSubCatHolder = document.createElement('div');
                divSubCatHolder.setAttribute('id', 'subProdCatHolder' + catPath);	  	
                divSubCatHolder.style.paddingLeft = '20px'; 
	  	        
                var divHolder = document.createElement('div');
                divHolder.className = 'SelectorSubItem1';
                divHolder.appendChild(divCatHolder);
                divHolder.appendChild(divSubCatHolder);  	        
	  	        
                SubCatHolder.appendChild(divHolder);    	                           
  	            
                if (isSelectCat) {
                    imgMain.src = '/images/0/but_minus.gif';			  	            
                    divImgMain.onclick = function() { Picker.close('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath')); }
                    divMain.onclick = function() { Picker.close('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath')); }
	  	            
                    divSubCatHolder.style.display = '';
	  	            
                    //render product cat now...	  	                
                    Picker.renderLevel3ProductCat(level1PCatId, level2PCatId, 'subProdCatHolder'+catPath);
                } else {
                    imgMain.src = '/images/0/but_plus.gif';
                    divImgMain.onclick = function() {                        
                        Picker.renderLevel3ProductCat(this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), 'subProdCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'));
                    }
                    divMain.onclick = function() {                         
                        Picker.renderLevel3ProductCat(this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), 'subProdCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'));
                    }
	  	            
                    divSubCatHolder.style.display = 'none';
                }
            } else {
                //gen check box
                var inputCheckbox = document.createElement('input');
	            inputCheckbox.setAttribute('type','checkbox');	
	            inputCheckbox.style.border = '0px';	        		        
	            inputCheckbox.setAttribute('catpath', catPath); 				        
	            inputCheckbox.id = 'add'+catPath;
	            Picker.ProductCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	            if (isSelectCat) {				
		            inputCheckbox.setAttribute('defaultChecked', true);
		            inputCheckbox.setAttribute('checked', true);			        
		        }               
		        
	            inputCheckbox.onclick = function () { 
	                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedProductCatLib);  
	                Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.SelectedProductCatLib, true);
	            }
		        
	            var divChkMain = document.createElement('div');
  	            divChkMain.className = 'fleft';   
  	            divChkMain.style.paddingLeft = '15px';
  	            divChkMain.appendChild(inputCheckbox);
	  	        
  	            var divMain = document.createElement('div');
  	            divMain.className = 'fleft';   	  	        
  	            divMain.style.paddingLeft = '10px';
  	            divMain.innerHTML = level2PCatName;		  	            	  	        
	  	        
  	            var divBr = document.createElement('div');
  	            divBr.className = 'DivBR';
	  	        
  	            var divCatHolder = document.createElement('div');	  	        	  	        
  	            divCatHolder.appendChild(divChkMain);
  	            divCatHolder.appendChild(divMain);
  	            divCatHolder.appendChild(divBr);	  	                 	       
                
  	            SubCatHolder.appendChild(divCatHolder);		  	            	        
            }
        }          
    }
    
    
    //Function: renderLevel3ProductCat
    //rendering level 3 product category for product category selector
    Picker.renderLevel3ProductCat = function (inLevel1ProductCatId, inLevel2ProductCatId, inHolderId) {            
        var oL3PCatHolder = document.getElementById(inHolderId);
        oL3PCatHolder.innerHTML = '';  
        
        var level1PCatId = inLevel1ProductCatId;
        var level2PCatId = inLevel2ProductCatId;
        
        var Level3ProductCats = ProductCatChildLib.getItem(inLevel2ProductCatId);  
              
  	    for (pItem3 in Level3ProductCats) {
  	        var level3PCatId = Level3ProductCats[pItem3];
  	        var level3PCatName = ProductCatLib.getItem(level3PCatId);
  	        
  	        var catPath = '_' + level1PCatId + '_' + level2PCatId + '_' + level3PCatId + '_'; 
  	        var hasSubCat = ProductCatChildLib.hasItem(level3PCatId);
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedProductCatLib);
  	        
  	        if (hasSubCat) {   
                //render the current category...
                var imgMain = document.createElement('img');	  	        
	  	        
  	            divImgMain = document.createElement('div');
  	            divImgMain.className = 'SelectorSubItem1b fleft ptr';   
  	            divImgMain.setAttribute('id', 'imgProdHolder'+catPath);
  	            divImgMain.setAttribute('catpath', catPath);	  	        	  	          	            
  	            divImgMain.setAttribute('Level1ProductCatID', level1PCatId);
  	            divImgMain.setAttribute('Level2ProductCatID', level2PCatId);
  	            divImgMain.setAttribute('Level3ProductCatID', level3PCatId);
  	            divImgMain.appendChild(imgMain);		  
	  	        
  	            divMain = document.createElement('div');
  	            divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	            divMain.setAttribute('id', 'prodCatHolder' + catPath);
  	            divMain.setAttribute('catpath', catPath);	    	            
  	            divMain.setAttribute('Level1ProductCatID', level1PCatId);
  	            divMain.setAttribute('Level2ProductCatID', level2PCatId);	        	        
  	            divMain.setAttribute('Level3ProductCatID', level3PCatId);	        	        
  	            divMain.innerHTML = level3PCatName;
  	                
                var inputSelectAllCheckbox = document.createElement('input');
                inputSelectAllCheckbox.setAttribute('id', 'checkCompCatHolder' + catPath + "SelectAllBox");
                inputSelectAllCheckbox.setAttribute('type','hidden');	
                inputSelectAllCheckbox.style.border = '0px';	
                
                var inputSelectAllImage = document.createElement('img');
                inputSelectAllImage.setAttribute('id', 'imgCompCatHolder' + catPath + "SelectAllBox");
                inputSelectAllImage.src = "/images/spacer.gif";
                inputSelectAllImage.style.width = "20px";
                inputSelectAllImage.style.height = "20px";
                inputSelectAllImage.style.border = '0px';	        		 

                var divSelectAllMain = document.createElement('div');
                divSelectAllMain.className = 'fleft ptr pickerCheckBox'; 
                divSelectAllMain.setAttribute('id', 'checkCompCatHolder' + catPath);
                divSelectAllMain.setAttribute('catpath', catPath);	  	            
  	            divSelectAllMain.setAttribute('Level1ProductCatID', level1PCatId);
  	            divSelectAllMain.setAttribute('Level2ProductCatID', level2PCatId);	        	        
  	            divSelectAllMain.setAttribute('Level3ProductCatID', level3PCatId);	
                divSelectAllMain.appendChild(inputSelectAllImage);
                
  	            var divBr = document.createElement('div');
                divBr.className = 'DivBR';
	  	        
                var divCatHolder = document.createElement('div');	  	        
                divCatHolder.appendChild(divImgMain);
                divCatHolder.appendChild(divSelectAllMain);
                divCatHolder.appendChild(divMain);
                divCatHolder.appendChild(divBr);
	  	        
                var divSubCatHolder = document.createElement('div');
                divSubCatHolder.setAttribute('id', 'subProdCatHolder' + catPath);	  	
                divSubCatHolder.style.paddingLeft = '20px'; 
	  	        
                var divHolder = document.createElement('div');
                divHolder.className = 'SelectorSubItem1';
                divHolder.appendChild(divCatHolder);
                divHolder.appendChild(divSubCatHolder);  	        
	  	        
                oL3PCatHolder.appendChild(divHolder);    	                           
  	            
                if (isSelectCat) {
                    imgMain.src = '/images/0/but_minus.gif';			  	            
                    divImgMain.onclick = function() { Picker.close('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'), 1); }
                    divMain.onclick = function() { Picker.close('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'), 1); }
	  	            divSelectAllMain.onclick = function() { Picker.selectAllInProductCat('checkCompCatHolder'+this.getAttribute('catpath')); }
	  	            
                    divSubCatHolder.style.display = '';
	  	            
                    //render product cat now...	  	                
                    Picker.renderLevel4ProductCat(level1PCatId, level2PCatId, level3PCatId, 'subProdCatHolder'+catPath);
                } else {
                    imgMain.src = '/images/0/but_plus.gif';
                    divImgMain.onclick = function() {                        
                        Picker.renderLevel4ProductCat(this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), this.getAttribute('Level3ProductCatID'), 'subProdCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'), 1);
                    }
                    divMain.onclick = function() {                         
                        Picker.renderLevel4ProductCat(this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), this.getAttribute('Level3ProductCatID'), 'subProdCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'), 1);
                    }
                    divSelectAllMain.onclick = function() {    
                        Picker.renderLevel4ProductCat(this.getAttribute('Level1ProductCatID'), this.getAttribute('Level2ProductCatID'), this.getAttribute('Level3ProductCatID'), 'subProdCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgProdHolder' + this.getAttribute('catpath'), 'prodCatHolder'+this.getAttribute('catpath'), 'subProdCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'), 1);
                        Picker.selectAllInProductCat('checkCompCatHolder'+this.getAttribute('catpath')); 
                    }
	  	            
                    divSubCatHolder.style.display = 'none';
                }
            } else {
                //gen check box
                var inputCheckbox = document.createElement('input');
	            inputCheckbox.setAttribute('type','checkbox');	
	            inputCheckbox.style.border = '0px';	        		        
	            inputCheckbox.setAttribute('catpath', catPath); 				        
	            inputCheckbox.id = 'add'+catPath;
	            Picker.ProductCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	            if (isSelectCat) {				
		            inputCheckbox.setAttribute('defaultChecked', true);
		            inputCheckbox.setAttribute('checked', true);			        
		        }               
		        
	            inputCheckbox.onclick = function () { 
	                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedProductCatLib);  
	                Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.SelectedProductCatLib, true);
	            }
		        
	            var divChkMain = document.createElement('div');
  	            divChkMain.className = 'fleft';   
  	            divChkMain.style.paddingLeft = '15px';
  	            divChkMain.appendChild(inputCheckbox);
	  	        
  	            var divMain = document.createElement('div');
  	            divMain.className = 'fleft';   	  	        
  	            divMain.style.paddingLeft = '10px';
  	            divMain.innerHTML = level3PCatName;		  	            	  	        
	  	        
  	            var divBr = document.createElement('div');
  	            divBr.className = 'DivBR';
	  	        
  	            var divCatHolder = document.createElement('div');	  	        	  	        
  	            divCatHolder.appendChild(divChkMain);
  	            divCatHolder.appendChild(divMain);
  	            divCatHolder.appendChild(divBr);	  	                 	       
                
  	            oL3PCatHolder.appendChild(divCatHolder);		  	            	        
            }
        }          
    }
    
    
    //Function: renderLevel4ProductCat
    //rendering level 4 product category for product category selector
    Picker.renderLevel4ProductCat = function (inLevel1ProductCatId, inLevel2ProductCatId, inLevel3ProductCatId, inHolderId) {            
        var oL4PCatHolder = document.getElementById(inHolderId);
        oL4PCatHolder.innerHTML = '';       
        var inputCheckboxCheckedCount = 0 ;
        var inputCheckboxCount = 0;
        var selectAllCheckBoxPath = ""; 
        
        level1PCatId = inLevel1ProductCatId;
        level2PCatId = inLevel2ProductCatId;
        level3PCatId = inLevel3ProductCatId;
              
        var Level4ProductCats = ProductCatChildLib.getItem(inLevel3ProductCatId);
  	    for (pItem4 in Level4ProductCats) {
  	        var level4PCatId = Level4ProductCats[pItem4];
  	        var level4PCatName = ProductCatLib.getItem(level4PCatId);
  	        
  	        var catPath = '_' + level1PCatId + '_' + level2PCatId + '_' + level3PCatId + '_' + level4PCatId + '_';	
  	        var selectAllCheckBoxPath = '_' + level1PCatId + '_' + level2PCatId + '_' + level3PCatId + '_' ;
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedProductCatLib);
  	        
  	        //gen check box
            var inputCheckbox = document.createElement('input');
            inputCheckbox.setAttribute('type','checkbox');	
            inputCheckbox.style.border = '0px';	        		        
            inputCheckbox.setAttribute('catpath', catPath); 				        
            inputCheckbox.id = 'add'+catPath;
            Picker.ProductCatCheckBoxLib.setItem(catPath, catPath);    //add item to hash...
            inputCheckboxCount++;
            if (isSelectCat) {				
	            inputCheckbox.setAttribute('defaultChecked', true);
	            inputCheckbox.setAttribute('checked', true);	
	            inputCheckboxCheckedCount++;		        
	        }               
	        
            inputCheckbox.onclick = function () {
                tempNum = 0; 
                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedProductCatLib);  
	            Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.SelectedProductCatLib, true);
	            selectAllCheckBox = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath + "SelectAllBox");
	            selectAllDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath);
	            var tempArray = this.getAttribute('catpath').split("_");
                var Level4ProductCats = ProductCatChildLib.getItem(tempArray[3]);
                totalCheckBox = Level4ProductCats.length;
                for (pItem4 in Level4ProductCats){
                    var level4PCatId = Level4ProductCats[pItem4];
                    var catPath = '_' + tempArray[1] + '_' + tempArray[2] + '_' + tempArray[3] + '_' + level4PCatId + '_';	
                    tempInputCheckbox = document.getElementById('add'+catPath);
                    if ( tempInputCheckbox.checked == true )
                        tempNum++;
                }
                if ( tempNum == totalCheckBox ){
            
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
                }
                else if ( tempNum == 0 ){
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";
                }
                else{
                
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";
                }
            }
	        
            var divChkMain = document.createElement('div');
            divChkMain.className = 'fleft';   
            divChkMain.style.paddingLeft = '15px';
            divChkMain.appendChild(inputCheckbox);
  	        
            var divMain = document.createElement('div');
            divMain.className = 'fleft';   	  	        
            divMain.style.paddingLeft = '10px';
            divMain.innerHTML = level4PCatName;		  	            	  	        
  	        
            var divBr = document.createElement('div');
            divBr.className = 'DivBR';
  	        
            var divCatHolder = document.createElement('div');	  	        	  	        
            divCatHolder.appendChild(divChkMain);
            divCatHolder.appendChild(divMain);
            divCatHolder.appendChild(divBr);	  	                 	       
            
            oL4PCatHolder.appendChild(divCatHolder);  	            	                       
        }    
        
        if ( inputCheckboxCount == 0 ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.innerHTML = "";
        }
               
        if ( inputCheckboxCount != 0 && inputCheckboxCheckedCount > 0 ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-disabled";
        }
                  
        if ( inputCheckboxCount != 0 && inputCheckboxCount == inputCheckboxCheckedCount ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-checked";
        }
        
    }
    
    //Function: renderSelectedProductCatLib
    //reorganise Picker.SelectedProductCatLib and rendering them
    Picker.renderSelectedProductCatLib = function (inLayer, inCatLib, showCheckbox) {                                 
        var oSelectedProdCatLib = new Hash();        
        oSelectedProdCatLib.setItem('-1', new Array());        
        
        //(1) organise the selected cat lib...        
        //*** the format of catLib item is _p1_p2_(p3_)
        for (path in inCatLib.items) {
            var pathArray = inCatLib.getItem(path).split('_');
            if (pathArray.length >= 4) {
                //item 0 is ""
                //item 1 is level 1 product cat
                //item 2 is level 2 product cat                
                //item 3 is may be level 3 product cat / or a empty string
                //item 4 is a empth string if it has...                
                var L1ProdCat = 0;
                var L2ProdCat = 0;
                var L3ProdCat = 0;   
                var L4ProdCat = 0             
                
                if (pathArray[1] != '') L1ProdCat = pathArray[1];
                if (pathArray[2] != '') L2ProdCat = pathArray[2];
                if (pathArray[3] != '') L3ProdCat = pathArray[3];                
                if (pathArray.length >= 5) {
                    if (pathArray[4] != '') L4ProdCat = pathArray[4];                
                }
                
                //organise oSelectedProdCatLib
                oLevel1PCatLib = oSelectedProdCatLib.getItem('-1');
                //level 1 product cat
                if (!Picker.CheckInArray(L1ProdCat, oLevel1PCatLib)) {
                    len = oLevel1PCatLib.length;
                    oLevel1PCatLib[len] = L1ProdCat;                        
                }
                
                if (!oSelectedProdCatLib.hasItem(L1ProdCat)) {
                    oSelectedProdCatLib.setItem(L1ProdCat, new Array());
                }                
                
                //level 2 product cat
                oLevel2PCatLib = oSelectedProdCatLib.getItem(L1ProdCat);
                if (!Picker.CheckInArray(L2ProdCat, oLevel2PCatLib)) {
                    len = oLevel2PCatLib.length;
                    oLevel2PCatLib[len] = L2ProdCat;                        
                }                
                
                if (L3ProdCat != 0) {
                    //level 3 product cat                 
                    if (!oSelectedProdCatLib.hasItem(L2ProdCat)) {
                        oSelectedProdCatLib.setItem(L2ProdCat, new Array());
                    }
                
                    oLevel3PCatLib = oSelectedProdCatLib.getItem(L2ProdCat);
                    if (!Picker.CheckInArray(L3ProdCat, oLevel3PCatLib)) {
                        len = oLevel3PCatLib.length;
                        oLevel3PCatLib[len] = L3ProdCat;                        
                    }
                    
                    if (L4ProdCat != 0) {
                        //level 4 product cat                 
                        if (!oSelectedProdCatLib.hasItem(L3ProdCat)) {
                            oSelectedProdCatLib.setItem(L3ProdCat, new Array());
                        }
                    
                        oLevel4PCatLib = oSelectedProdCatLib.getItem(L3ProdCat);
                        if (!Picker.CheckInArray(L4ProdCat, oLevel4PCatLib)) {
                            len = oLevel4PCatLib.length;
                            oLevel4PCatLib[len] = L4ProdCat;                        
                        }
                    }
                }
            }            
        }        
        
        var SelectedCatHolder = document.getElementById(inLayer);
        SelectedCatHolder.innerHTML = '';
            
        //(2) render selected cat lib...
        oL1PCatLib = oSelectedProdCatLib.getItem('-1');
        for (var P1=0; P1<oL1PCatLib.length; P1++) {
            L1PCatID = oL1PCatLib[P1];
            L1PCatName = ProductCatLib.getItem(L1PCatID);            
            
            //level 1 product cat
            var divLevel1PCatHolder = document.createElement('div');
            divLevel1PCatHolder.className = 'MsgEntry3';
            
            var L1PCatItem = document.createElement('div');
            L1PCatItem.className = 'BlockStyle30';
            L1PCatItem.innerHTML = L1PCatName;                   
            divLevel1PCatHolder.appendChild(L1PCatItem);
            SelectedCatHolder.appendChild(divLevel1PCatHolder);
            
            oL2PCatLib = oSelectedProdCatLib.getItem(L1PCatID);
            for (var P2=0; P2<oL2PCatLib.length; P2++) {
                L2PCatID = oL2PCatLib[P2];
                L2PCatName = ProductCatLib.getItem(L2PCatID);                                                  
                
                var hasL3ProdCat = oSelectedProdCatLib.hasItem(L2PCatID);
                                        
                if (hasL3ProdCat) {
                    //level 2 product cat with sub cats...
                    var L2PCatItem = document.createElement('div');                                                
                    L2PCatItem.className = 'ul SelectedCompCat2';
                    L2PCatItem.innerHTML = L2PCatName;
                                       
                    var divLevel2PCatHolder = document.createElement('div');
                    divLevel2PCatHolder.className = 'SelectorSubItem1a';
                    divLevel2PCatHolder.appendChild(L2PCatItem);
                    divLevel1PCatHolder.appendChild(divLevel2PCatHolder);
                    
                    oL3PCatLib = oSelectedProdCatLib.getItem(L2PCatID);
                    for (var P3=0; P3<oL3PCatLib.length; P3++) {
                        L3PCatID = oL3PCatLib[P3];
                        L3PCatName = ProductCatLib.getItem(L3PCatID);                                                 
                        
                        var hasL4ProdCat = oSelectedProdCatLib.hasItem(L3PCatID);
                        
                        if (hasL4ProdCat) {
                            //level 3 product with sub cats...
                            var L3PCatItem = document.createElement('div');                                                
                            L3PCatItem.className = 'ul SelectedCompCat2';
                            L3PCatItem.innerHTML = L3PCatName;
                                               
                            var divLevel3PCatHolder = document.createElement('div');
                            divLevel3PCatHolder.className = 'SelectorSubItem1a';
                            divLevel3PCatHolder.appendChild(L3PCatItem);
                            divLevel2PCatHolder.appendChild(divLevel3PCatHolder);
                            
                            oL4PCatLib = oSelectedProdCatLib.getItem(L3PCatID);
                            for (var P4=0; P4<oL4PCatLib.length; P4++) {
                                L4PCatID = oL4PCatLib[P4];
                                L4PCatName = ProductCatLib.getItem(L4PCatID);    
                                
                                catPath = '_' + L1PCatID + '_' + L2PCatID + '_' + L3PCatID + '_' + L4PCatID + '_';                
                                catHolder = document.createElement('div');
                                catHolder.style.paddingLeft = '10px';
                                
                                if (showCheckbox) {
                                    //level 4 product cat with sub cats...
                                    var inputCheckbox = document.createElement('input');
                                    inputCheckbox.setAttribute('type','checkbox');
                                    inputCheckbox.style.border = '0px';
                                    inputCheckbox.id = 'remove' + catPath;
                                    inputCheckbox.setAttribute('catpath', catPath);
                            
                                    inputCheckbox.onclick = function () {                                     
                                        Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedProductCatLib);  	                                
                                    }
                                    
                                    var divChkMain = document.createElement('div');
                                    divChkMain.className = 'fleft';                       
                                    divChkMain.appendChild(inputCheckbox);
                                    
                                    catHolder.appendChild(divChkMain);
                                }
                                
                                var divMain = document.createElement('div');
                                divMain.className = 'fleft';   	  	                        
                                divMain.innerHTML = L4PCatName;		  	            	  	        
                    
                                var divBr = document.createElement('div');
                                divBr.className = 'DivBR';
                                
                                
                                catHolder.appendChild(divMain);
                                catHolder.appendChild(divBr);
                                
                                divLevel3PCatHolder.appendChild(catHolder);	                                                
                            }   
                        } else {
                            //level 3 product cats with check box...
                            catHolder = document.createElement('div');
                            catHolder.style.paddingLeft = '10px';
                            
                            catPath = '_' + L1PCatID + '_' + L2PCatID + '_' + L3PCatID + '_';                
                    
                            if (showCheckbox) {                                
                                var inputCheckbox = document.createElement('input');
                                inputCheckbox.setAttribute('type','checkbox');
                                inputCheckbox.style.border = '0px';
                                inputCheckbox.id = 'remove' + catPath;
                                inputCheckbox.setAttribute('catpath', catPath);
                        
                                inputCheckbox.onclick = function () { 
                                    Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedProductCatLib);  	                            
                                }
                                
                                var divChkMain = document.createElement('div');
                                divChkMain.className = 'fleft';                       
                                divChkMain.appendChild(inputCheckbox);
                                
                                catHolder.appendChild(divChkMain);
                            }
                            
                            var divMain = document.createElement('div');
                            divMain.className = 'fleft';   	  	                        
                            divMain.innerHTML = L3PCatName;		  	            	  	        
                
                            var divBr = document.createElement('div');
                            divBr.className = 'DivBR';
                            
                            catHolder.appendChild(divMain);
                            catHolder.appendChild(divBr);
                            
                            divLevel2PCatHolder.appendChild(catHolder);	
                        }                                        
                    }                            
                } else {
                    //level 2 product cat with checkbox...
                    catHolder = document.createElement('div');
                    catHolder.style.paddingLeft = '10px';
                    
                    catPath = '_' + L1PCatID + '_' + L2PCatID + '_';                
                    
                    if (showCheckbox) {                    
                        var inputCheckbox = document.createElement('input');
                        inputCheckbox.setAttribute('type','checkbox');
                        inputCheckbox.style.border = '0px';
                        inputCheckbox.id = 'remove' + catPath;
                        inputCheckbox.setAttribute('catpath', catPath);
                
                        inputCheckbox.onclick = function () { 
                            Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedProductCatLib);  	                            
                        }
                        
                        var divChkMain = document.createElement('div');
                        divChkMain.className = 'fleft';                       
                        divChkMain.appendChild(inputCheckbox);
                        
                        catHolder.appendChild(divChkMain);
                    }
                    
                    var divMain = document.createElement('div');
                    divMain.className = 'fleft';   	  	                        
                    divMain.innerHTML = L2PCatName;		  	            	  	        
        
                    var divBr = document.createElement('div');
                    divBr.className = 'DivBR';
                    
                    catHolder.appendChild(divMain);
                    catHolder.appendChild(divBr);
                    
                    divLevel1PCatHolder.appendChild(catHolder);	
                }
            }
        }
    }    
    
    
    //****** Start Of Catalogue Category Picker ***** //
    Picker.ShowSelectedCatalogueCatLib = new Hash();    //store displaying catalogue cat paths    
    Picker.SelectedCatalogueCatLib = new Hash();        //store selected catalogue cat paths, it may be diff from ShowSelectedCatalogueCatLib    
    Picker.DeselectedCatalogueCatLib = new Hash();      //store deselected catalogue cat paths
    Picker.DefaultSelectedL1CatalogueCat = 1;         //default selected level 1 catalogue cat id
    Picker.CurrentSelectedL1CatalogueCat = null;        //current selected level 1 catalogue cat id
    Picker.CatalogueCatCheckBoxLib = new Hash()         //store cat paths related to add checkboxes of catalogue category selector
    
    //**** Start Of Methods for operate catalogue category selector ****    
    //create catalogue category selector
    //this will be called once at the beginning...
    Picker.createCatalogueCatSelector = function (inWordArray, inShowSelectedCatLib, inDisplayCatHolder, inUnhighlightHolder) {    
        //(1) create layout for cat selector...
        document.write('<div id="CatalogueCatSelector" style="width: 750px; height: 412px; top: 0px; left: 0px; overflow: auto; position: absolute; z-index: 100; display:none;" class="BlockWhite">');
        document.write('<div style="padding: 1px;">');
        document.write('<div style="width: 748px; height: 408px;" class="BlockStyle32">');
        document.write('<div style="padding: 2px;">');
        document.write('<div class="BlockStyle32 white bold" style="height: 20px; padding: 2px;" onMouseDown="startDragLayer(\'CatalogueCatSelector\',event.clientX,event.clientY);" onMouseUp="stopDragLayer();">');
        document.write('<div class="fleft" style="margin-top: 1px;">' + inWordArray[0] + '</div>');
        document.write('<div class="fright"><a href="javascript: void(0);" onClick="hideLayer(\'CatalogueCatSelector\', Picker.ComboList)"><img src="/images/0/but_close.gif" alt="Close"></a></div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        document.write('<div id="Div2" class="BlockWhite" style="width: 744px; height: 378px;">');
        document.write('<div style="padding: 5px;">');
        document.write('<div class="fleft BlockStyle20" style="width: 530px; height: 335px; padding: 1px">');
        document.write('<div class="bold" style="padding: 2px">'+ inWordArray[1] +'</div>');
        document.write('<div class="BlockWhite" style="height: 315px;">');
        //<!-- Start of Popup Left -->
        document.write('<div style="padding-top: 2px; width:530px">');
        document.write('<div id="CatalogueTopCatHolder" class="fleft" style="width: 180px; height: 310px; overflow: auto;">');
        document.write('<div style="padding: 2px"></div>');
        document.write('</div>');
        document.write('<div class="fleft BlockStyle20" style="width: 350px; height: 310px;">');
        document.write('<div style="padding: 2px">');
        document.write('<div id="CatalogueSubCatHolder" class="BlockWhite" style="width: 346px; height: 275px; overflow: auto;"></div><div class="BlockStyle20" style="padding: 3px;">' + inWordArray[2] + '</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
        //<!-- End of Popup Left -->                                    
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="fright BlockStyle30" style="width: 200px; height: 335px; padding: 1px;">');
        document.write('<div class="bold" style="padding: 2px">' + inWordArray[3] + '</div>');
        document.write('<div style="height: 282px;" class="BlockWhite">');
        document.write('<div id="CatalogueSelectedCatHolder" style="width: 198px; height: 282px; overflow: auto;"></div>');
        document.write('</div>');        
        document.write('<div class="BlockStyle30">');
	    document.write('<div class="fleft Button3" style="margin: 2px;"><a href="javascript:Picker.DeselectOnClick(Picker.SelectedCatalogueCatLib, Picker.DeselectedCatalogueCatLib, Picker.CatalogueCatCheckBoxLib,2); Picker.renderSelectedCatalogueCatLib(\'CatalogueSelectedCatHolder\', Picker.SelectedCatalogueCatLib, true);" class="Button3">' + inWordArray[4] + '</a></div>');
	    document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('<div class="DivBR"></div>');
	    document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'CatalogueCatSelector\', Picker.ComboList);Picker.SelectedCatalogueCatLib = Picker.ReorganiseCat(Picker.ShowSelectedCatalogueCatLib); Picker.renderSelectedCatalogueCatLib(\''+inDisplayCatHolder + '\', Picker.SelectedCatalogueCatLib, false);">' + inWordArray[5] + '</a></div>');
	    document.write('<div class="fright Button3" style="margin: 2px;"><a href="javascript:void(0);" class="Button3" onclick="hideLayer(\'CatalogueCatSelector\', Picker.ComboList);Picker.ShowSelectedCatalogueCatLib = Picker.ReorganiseCat(Picker.SelectedCatalogueCatLib); Picker.renderSelectedCatalogueCatLib(\''+inDisplayCatHolder + '\', Picker.SelectedCatalogueCatLib, false);Picker.UnhightlightHolder(\'' + inUnhighlightHolder + '\');">' + inWordArray[6] + '</a></div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
        document.write('</div>');
	    document.write('</div>');
	    
        
	    //(3) render top level catalogue category
	    Picker.renderTopLevelCatalogueCat('CatalogueTopCatHolder');
	    
	    //(4) set ShowSelectedCatalogueLib with inShowSelectedCatLib
	    Picker.ShowSelectedCatalogueCatLib = Picker.ReorganiseCat(inShowSelectedCatLib);
	    
	    Picker.SelectedCatalogueCatLib = Picker.ReorganiseCat(inShowSelectedCatLib);
    }
    
    //Function: popupCatalogueCatSelector
    Picker.popupCatalogueCatSelector = function () {   
        if (Picker.CurrentSelectedL1CatalogueCat == null) {
            Picker.renderLevel2CatalogueCat(Picker.DefaultSelectedL1CatalogueCat);
        } else {
            Picker.renderLevel2CatalogueCat(Picker.CurrentSelectedL1CatalogueCat);
        }                        
        Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.ShowSelectedCatalogueCatLib, true);
        showLayer('CatalogueCatSelector', Picker.ComboList);	        
    }    
    
    //Function: renderTopLevelCatalogueCat
    Picker.renderTopLevelCatalogueCat = function (inTopCatHolder) {    
        TopCatHolder = document.getElementById(inTopCatHolder);
        TopCatHolder.innerHTML = '';

        var Level1ECCatLib = CatalogueCatChildLib.getItem('-1'); 
	    for (tItem in Level1ECCatLib) {
	        L1ECCatID = Level1ECCatLib[tItem];
	        		        			        			        
    	    hrefTopCat = document.createElement('a');
    	    hrefTopCat.className = 'ul';
    	    hrefTopCat.href = 'javascript:void(0);';
    	    hrefTopCat.innerHTML = CatalogueCatLib.getItem(L1ECCatID);
    	    hrefTopCat.id = 'hrefECCat' + L1ECCatID;
    	    hrefTopCat.setAttribute('Level1ECCatID', L1ECCatID);

			divMain = document.createElement('div');
    	    divMain.id = 'ECCatHolder' + L1ECCatID;
    	    divMain.setAttribute('Level1ECCatID', L1ECCatID);		    	    
    	    divMain.className = 'SelectorNavItem ptr';		    	    
    	    divMain.appendChild(hrefTopCat);

			TopCatHolder.appendChild(divMain);
			hrefTopCat.onclick = function() { Picker.renderLevel2CatalogueCat(this.getAttribute('Level1ECCatID')); }			  	    
			divMain.onclick = function() { Picker.renderLevel2CatalogueCat(this.getAttribute('Level1ECCatID')); }			  	    			
	    }            
    }
    
    //Function: renderLevel2ProductCat
    //rendering level 2 product category for product category selector
    Picker.renderLevel2CatalogueCat = function (inLevel1CatId) {
        Picker.CatalogueCatCheckBoxLib = new Hash();    //reset hash...
        
        //highlight current selected top product cat item...
  	    var Level1ECCatLib = CatalogueCatChildLib.getItem('-1');
  	    for (tItem in Level1ECCatLib) {
  	        if (Level1ECCatLib[tItem] == inLevel1CatId) {	  	            
  	            Picker.CurrentSelectedL1CatalogueCat = inLevel1CatId;
  			    document.getElementById('ECCatHolder'+Level1ECCatLib[tItem]).className = 'SelectorNavItemSelecteda ptr';
  		    } else {
  			    document.getElementById('ECCatHolder'+Level1ECCatLib[tItem]).className = 'SelectorNavItem ptr';
  		    }	
  	    }  	    
        
        var SubCatHolder = document.getElementById('CatalogueSubCatHolder');
        SubCatHolder.innerHTML = '';
        
        var level1CatId = inLevel1CatId;
        var Level2ECCats = CatalogueCatChildLib.getItem(level1CatId);        
  	    for (pItem2 in Level2ECCats) {
  	        var level2CatId = Level2ECCats[pItem2];
  	        var level2CatName = CatalogueCatLib.getItem(level2CatId);
  	        
  	        var catPath = '_' + level1CatId + '_' + level2CatId + '_';	  	        	  	        
  	        var hasSubCat = CatalogueCatChildLib.hasItem(level2CatId);
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedCatalogueCatLib);
  	        
  	        if (hasSubCat) {   
                //render the current category...
                var imgMain = document.createElement('img');	  	        
	  	        
  	            divImgMain = document.createElement('div');
  	            divImgMain.className = 'SelectorSubItem1a fleft ptr';   
  	            divImgMain.setAttribute('id', 'imgECHolder'+catPath);
  	            divImgMain.setAttribute('catpath', catPath);	  	        	  	          	            
  	            divImgMain.setAttribute('Level1ECCatID', level1CatId);
  	            divImgMain.setAttribute('Level2ECCatID', level2CatId);
  	            divImgMain.appendChild(imgMain);		  
	  	        
  	            divMain = document.createElement('div');
  	            divMain.className = 'SelectorSubItem1a ul fleft ptr';   
  	            divMain.setAttribute('id', 'ECCatHolder' + catPath);
  	            divMain.setAttribute('catpath', catPath);	    	            
  	            divMain.setAttribute('Level1ECCatID', level1CatId);
  	            divMain.setAttribute('Level2ECCatID', level2CatId);	        	        
  	            divMain.innerHTML = level2CatName;
	  	        
  	            var divBr = document.createElement('div');
                divBr.className = 'DivBR';
	  	        
                var divCatHolder = document.createElement('div');	  	        
                divCatHolder.appendChild(divImgMain);
                divCatHolder.appendChild(divMain);
                divCatHolder.appendChild(divBr);
	  	        
                var divSubCatHolder = document.createElement('div');
                divSubCatHolder.setAttribute('id', 'subECCatHolder' + catPath);	  	
                divSubCatHolder.style.paddingLeft = '20px'; 
	  	        
                var divHolder = document.createElement('div');
                divHolder.className = 'SelectorSubItem1';
                divHolder.appendChild(divCatHolder);
                divHolder.appendChild(divSubCatHolder);  	        
	  	        
                SubCatHolder.appendChild(divHolder);    	                           
  	            
                if (isSelectCat) {
                    imgMain.src = '/images/0/but_minus.gif';			  	            
                    divImgMain.onclick = function() { Picker.close('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath')); }
                    divMain.onclick = function() { Picker.close('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath')); }
	  	            
                    divSubCatHolder.style.display = '';
	  	            
                    //render product cat now...	  	                
                    Picker.renderLevel3CatalogueCat(level1CatId, level2CatId, 'subECCatHolder'+catPath);
                } else {
                    imgMain.src = '/images/0/but_plus.gif';
                    divImgMain.onclick = function() {                        
                        Picker.renderLevel3CatalogueCat(this.getAttribute('Level1ECCatID'), this.getAttribute('Level2ECCatID'), 'subECCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'));
                    }
                    divMain.onclick = function() {                         
                        Picker.renderLevel3CatalogueCat(this.getAttribute('Level1ECCatID'), this.getAttribute('Level2ECCatID'), 'subECCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'));
                    }
	  	            
                    divSubCatHolder.style.display = 'none';
                }
            } else {
                //gen check box
                var inputCheckbox = document.createElement('input');
	            inputCheckbox.setAttribute('type','checkbox');	
	            inputCheckbox.style.border = '0px';	        		        
	            inputCheckbox.setAttribute('catpath', catPath); 				        
	            inputCheckbox.id = 'add'+catPath;
	            Picker.CatalogueCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	            if (isSelectCat) {				
		            inputCheckbox.setAttribute('defaultChecked', true);
		            inputCheckbox.setAttribute('checked', true);			        
		        }               
		        
	            inputCheckbox.onclick = function () { 
	                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedCatalogueCatLib);  
	                Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.SelectedCatalogueCatLib, true);
	            }
		        
	            var divChkMain = document.createElement('div');
  	            divChkMain.className = 'fleft';   
  	            divChkMain.style.paddingLeft = '15px';
  	            divChkMain.appendChild(inputCheckbox);
	  	        
  	            var divMain = document.createElement('div');
  	            divMain.className = 'fleft';   	  	        
  	            divMain.style.paddingLeft = '10px';
  	            divMain.innerHTML = level2CatName;		  	            	  	        
	  	        
  	            var divBr = document.createElement('div');
  	            divBr.className = 'DivBR';
	  	        
  	            var divCatHolder = document.createElement('div');	  	        	  	        
  	            divCatHolder.appendChild(divChkMain);
  	            divCatHolder.appendChild(divMain);
  	            divCatHolder.appendChild(divBr);	  	                 	       
                
  	            SubCatHolder.appendChild(divCatHolder);		  	            	        
            }
        }          
    }
    
    
    //Function: renderLevel3ProductCat
    //rendering level 3 product category for product category selector
    Picker.renderLevel3CatalogueCat = function (inLevel1CatId, inLevel2CatId, inHolderId) {            
        var oL3CatHolder = document.getElementById(inHolderId);
        oL3CatHolder.innerHTML = '';  
        
        var level1CatId = inLevel1CatId;
        var level2CatId = inLevel2CatId;
        
        var Level3ECCats = CatalogueCatChildLib.getItem(level2CatId);  
              
  	    for (pItem3 in Level3ECCats) {
  	        var level3CatId = Level3ECCats[pItem3];
  	        var level3CatName = CatalogueCatLib.getItem(level3CatId);
  	        
  	        var catPath = '_' + level1CatId + '_' + level2CatId + '_' + level3CatId + '_'; 
  	        var hasSubCat = CatalogueCatChildLib.hasItem(level3CatId);
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedCatalogueCatLib);
  	        
  	        if (hasSubCat) {   
                //render the current category...
                var imgMain = document.createElement('img');	  	        
	  	        
  	            divImgMain = document.createElement('div');
  	            divImgMain.className = 'SelectorSubItem1b fleft ptr';   
  	            divImgMain.setAttribute('id', 'imgECHolder'+catPath);
  	            divImgMain.setAttribute('catpath', catPath);	  	        	  	          	            
  	            divImgMain.setAttribute('Level1ECCatID', level1CatId);
  	            divImgMain.setAttribute('Level2ECCatID', level2CatId);
  	            divImgMain.setAttribute('Level3ECCatID', level3CatId);
  	            divImgMain.appendChild(imgMain);		  
	  	        
  	            divMain = document.createElement('div');
  	            divMain.className = 'SelectorSubItem1b ul fleft ptr';   
  	            divMain.setAttribute('id', 'ECCatHolder' + catPath);
  	            divMain.setAttribute('catpath', catPath);	    	            
  	            divMain.setAttribute('Level1ECCatID', level1CatId);
  	            divMain.setAttribute('Level2ECCatID', level2CatId);	        	        
  	            divMain.setAttribute('Level3ECCatID', level3CatId);	        	        
  	            divMain.innerHTML = level3CatName;
  	                
                var inputSelectAllCheckbox = document.createElement('input');
                inputSelectAllCheckbox.setAttribute('id', 'checkCompCatHolder' + catPath + "SelectAllBox");
                inputSelectAllCheckbox.setAttribute('type','hidden');	
                inputSelectAllCheckbox.style.border = '0px';	
                
                var inputSelectAllImage = document.createElement('img');
                inputSelectAllImage.setAttribute('id', 'imgCompCatHolder' + catPath + "SelectAllBox");
                inputSelectAllImage.src = "/images/spacer.gif";
                inputSelectAllImage.style.width = "20px";
                inputSelectAllImage.style.height = "20px";
                inputSelectAllImage.style.border = '0px';	        		 

                var divSelectAllMain = document.createElement('div');
                divSelectAllMain.className = 'fleft ptr pickerCheckBox'; 
                divSelectAllMain.setAttribute('id', 'checkCompCatHolder' + catPath);
                divSelectAllMain.setAttribute('catpath', catPath);	  	  	    	            
  	            divSelectAllMain.setAttribute('Level1ECCatID', level1CatId);
  	            divSelectAllMain.setAttribute('Level2ECCatID', level2CatId);	        	        
  	            divSelectAllMain.setAttribute('Level3ECCatID', level3CatId);		
                divSelectAllMain.appendChild(inputSelectAllImage);
	  	        
                var divBr = document.createElement('div');
                divBr.className = 'DivBR';
	  	        
                var divCatHolder = document.createElement('div');	  	        
                divCatHolder.appendChild(divImgMain);	
	  	        
  	            var divBr = document.createElement('div');
                divBr.className = 'DivBR';
	  	        
                var divCatHolder = document.createElement('div');	  	        
                divCatHolder.appendChild(divImgMain);
                divCatHolder.appendChild(divSelectAllMain);
                divCatHolder.appendChild(divMain);
                divCatHolder.appendChild(divBr);
	  	        
                var divSubCatHolder = document.createElement('div');
                divSubCatHolder.setAttribute('id', 'subECCatHolder' + catPath);	  	
                divSubCatHolder.style.paddingLeft = '20px'; 
	  	        
                var divHolder = document.createElement('div');
                divHolder.className = 'SelectorSubItem1';
                divHolder.appendChild(divCatHolder);
                divHolder.appendChild(divSubCatHolder);  	        
	  	        
                oL3CatHolder.appendChild(divHolder);    	                           
  	            
                if (isSelectCat) {
                    imgMain.src = '/images/0/but_minus.gif';			  	            
                    divImgMain.onclick = function() { Picker.close('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),2); }
                    divMain.onclick = function() { Picker.close('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),2); }
	  	            divSelectAllMain.onclick = function() { Picker.selectAllInProductECat('checkCompCatHolder'+this.getAttribute('catpath')); }
	  	            divSubCatHolder.style.display = '';
	  	            
                    //render product cat now...	  	                
                    Picker.renderLevel4CatalogueCat(level1CatId, level2CatId, level3CatId, 'subECCatHolder'+catPath);
                } else {
                    imgMain.src = '/images/0/but_plus.gif';
                    divImgMain.onclick = function() {                        
                        Picker.renderLevel4CatalogueCat(this.getAttribute('Level1ECCatID'), this.getAttribute('Level2ECCatID'), this.getAttribute('Level3ECCatID'), 'subECCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),2);
                    }
                    divMain.onclick = function() {                         
                        Picker.renderLevel4CatalogueCat(this.getAttribute('Level1ECCatID'), this.getAttribute('Level2ECCatID'), this.getAttribute('Level3ECCatID'), 'subECCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),2);
                    }
                    divSelectAllMain.onclick = function() {    
                        Picker.renderLevel4CatalogueCat(this.getAttribute('Level1ECCatID'), this.getAttribute('Level2ECCatID'), this.getAttribute('Level3ECCatID'), 'subECCatHolder' + this.getAttribute('catpath'));	  	                
                        Picker.expand('imgECHolder' + this.getAttribute('catpath'), 'ECCatHolder'+this.getAttribute('catpath'), 'subECCatHolder'+this.getAttribute('catpath'),'checkCompCatHolder'+this.getAttribute('catpath'),2);
                        Picker.selectAllInProductECat('checkCompCatHolder'+this.getAttribute('catpath')); 
                    }
	  	            
                    divSubCatHolder.style.display = 'none';
                }
            } else {
                //gen check box
                var inputCheckbox = document.createElement('input');
	            inputCheckbox.setAttribute('type','checkbox');	
	            inputCheckbox.style.border = '0px';	        		        
	            inputCheckbox.setAttribute('catpath', catPath); 				        
	            inputCheckbox.id = 'add'+catPath;
	            Picker.CatalogueCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
	            if (isSelectCat) {				
		            inputCheckbox.setAttribute('defaultChecked', true);
		            inputCheckbox.setAttribute('checked', true);			        
		        }               
		        
	            inputCheckbox.onclick = function () { 
	                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedCatalogueCatLib);  
	                Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.SelectedCatalogueCatLib, true);
	            }
		        
	            var divChkMain = document.createElement('div');
  	            divChkMain.className = 'fleft';   
  	            divChkMain.style.paddingLeft = '15px';
  	            divChkMain.appendChild(inputCheckbox);
	  	        
  	            var divMain = document.createElement('div');
  	            divMain.className = 'fleft';   	  	        
  	            divMain.style.paddingLeft = '10px';
  	            divMain.innerHTML = level3CatName;		  	            	  	        
	  	        
  	            var divBr = document.createElement('div');
  	            divBr.className = 'DivBR';
	  	        
  	            var divCatHolder = document.createElement('div');	  	        	  	        
  	            divCatHolder.appendChild(divChkMain);
  	            divCatHolder.appendChild(divMain);
  	            divCatHolder.appendChild(divBr);	  	                 	       
                
  	            oL3CatHolder.appendChild(divCatHolder);		  	            	        
            }
        }          
    }
    
    
    //Function: renderLevel4CatalogueCat
    //rendering level 4 catalogue category for catalogue category selector
    Picker.renderLevel4CatalogueCat = function (inLevel1CatId, inLevel2CatId, inLevel3CatId, inHolderId) {            
        var oL4CatHolder = document.getElementById(inHolderId);
        oL4CatHolder.innerHTML = ''; 
        var inputCheckboxCount = 0;     
        var inputCheckboxCheckedCount = 0;     
        var selectAllCheckBoxPath = 0;       
        
        level1CatId = inLevel1CatId;
        level2CatId = inLevel2CatId;
        level3CatId = inLevel3CatId;
              
        var Level4Cats = CatalogueCatChildLib.getItem(level3CatId);
  	    for (pItem4 in Level4Cats) {
  	        var level4CatId = Level4Cats[pItem4];
  	        var level4CatName = CatalogueCatLib.getItem(level4CatId);
  	        
  	        var catPath = '_' + level1CatId + '_' + level2CatId + '_' + level3CatId + '_' + level4CatId + '_';	  
  	        var selectAllCheckBoxPath = '_' + level1CatId + '_' + level2CatId + '_' + level3CatId + '_' ;	        	  	        
  	        var isSelectCat = Picker.IsSelected(catPath, Picker.SelectedCatalogueCatLib);
  	        
  	        //gen check box
            var inputCheckbox = document.createElement('input');
            inputCheckbox.setAttribute('type','checkbox');	
            inputCheckbox.style.border = '0px';	        		        
            inputCheckbox.setAttribute('catpath', catPath); 				        
            inputCheckbox.id = 'add'+catPath;
            Picker.CatalogueCatCheckBoxLib.setItem(catPath, catPath);    //add item to hash...
            inputCheckboxCount++;		        
            if (isSelectCat) {				
	            inputCheckbox.setAttribute('defaultChecked', true);
	            inputCheckbox.setAttribute('checked', true);
	            inputCheckboxCheckedCount++;		        			        
	        }               
	        
            inputCheckbox.onclick = function () { 
                tempNum = 0;
                Picker.SelectCat(this.getAttribute('catpath'), Picker.SelectedCatalogueCatLib);  
	            Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.SelectedCatalogueCatLib, true);
	            selectAllCheckBox = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath + "SelectAllBox");
	            selectAllDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath);
	            var tempArray = this.getAttribute('catpath').split("_");
                var Level4ProductCats = CatalogueCatChildLib.getItem(tempArray[3]);
                totalCheckBox = Level4ProductCats.length;
                for (pItem4 in Level4ProductCats){
                    var level4PCatId = Level4ProductCats[pItem4];
                    var catPath = '_' + tempArray[1] + '_' + tempArray[2] + '_' + tempArray[3] + '_' + level4PCatId + '_';	
                    tempInputCheckbox = document.getElementById('add'+catPath);
                    if ( tempInputCheckbox.checked == true )
                        tempNum++;
                }
                if ( tempNum == totalCheckBox ){
            
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
                }
                else if ( tempNum == 0 ){
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";
                }
                else{
                
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";
                }
            }
	        
            var divChkMain = document.createElement('div');
            divChkMain.className = 'fleft';   
            divChkMain.style.paddingLeft = '15px';
            divChkMain.appendChild(inputCheckbox);
  	        
            var divMain = document.createElement('div');
            divMain.className = 'fleft';   	  	        
            divMain.style.paddingLeft = '10px';
            divMain.innerHTML = level4CatName;		  	            	  	        
  	        
            var divBr = document.createElement('div');
            divBr.className = 'DivBR';
  	        
            var divCatHolder = document.createElement('div');	  	        	  	        
            divCatHolder.appendChild(divChkMain);
            divCatHolder.appendChild(divMain);
            divCatHolder.appendChild(divBr);	  	                 	       
            
            oL4CatHolder.appendChild(divCatHolder);  	            	                       
        }      
        
        if ( inputCheckboxCount == 0 ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.innerHTML = "";
        }
               
        if ( inputCheckboxCount != 0 && inputCheckboxCheckedCount > 0 ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-disabled";
        }
                  
        if ( inputCheckboxCount != 0 && inputCheckboxCount == inputCheckboxCheckedCount ){
            selectAllCheckBoxDiv = document.getElementById('checkCompCatHolder'+selectAllCheckBoxPath );
            selectAllCheckBoxDiv.className = "fleft ptr pickerCheckBox-checked";
        }
        
    }
    
    //Function: renderSelectedNatureLib
    //reorganise Picker.SelectedNatureLib and rendering them
    Picker.renderSelectedCatalogueCatLib = function (inLayer, inCatLib, showCheckbox) {                                 
        var oSelectedECCatLib = new Hash();        
        oSelectedECCatLib.setItem('-1', new Array());        
        
        //(1) organise the selected cat lib...        
        //*** the format of catLib item is _p1_p2_(p3_)
        for (path in inCatLib.items) {
            var pathArray = inCatLib.getItem(path).split('_');
            if (pathArray.length >= 4) {
                //item 0 is ""
                //item 1 is level 1 catalogue cat
                //item 2 is level 2 catalogue cat                
                //item 3 is may be level 3 catalogue cat / or a empty string
                //item 4 is a empth string if it has...                
                var L1ECCat = 0;
                var L2ECCat = 0;
                var L3ECCat = 0;   
                var L4ECCat = 0             
                
                if (pathArray[1] != '') L1ECCat = pathArray[1];
                if (pathArray[2] != '') L2ECCat = pathArray[2];
                if (pathArray[3] != '') L3ECCat = pathArray[3];                
                if (pathArray.length >= 5) {
                    if (pathArray[4] != '') L4ECCat = pathArray[4];                
                }
                
                //organise oLevel1ECCatLib
                oLevel1ECCatLib = oSelectedECCatLib.getItem('-1');
                
                //level 1 catalogue cat
                if (!Picker.CheckInArray(L1ECCat, oLevel1ECCatLib)) {
                    len = oLevel1ECCatLib.length;
                    oLevel1ECCatLib[len] = L1ECCat;                        
                }
                
                if (!oSelectedECCatLib.hasItem(L1ECCat)) {
                    oSelectedECCatLib.setItem(L1ECCat, new Array());
                }                
                
                //level 2 product cat
                oLevel2ECCatLib = oSelectedECCatLib.getItem(L1ECCat);
                if (!Picker.CheckInArray(L2ECCat, oLevel2ECCatLib)) {
                    len = oLevel2ECCatLib.length;
                    oLevel2ECCatLib[len] = L2ECCat;                        
                }                                
                
                if (L3ECCat != 0) {
                    //level 3 product cat                 
                    if (!oSelectedECCatLib.hasItem(L2ECCat)) {
                        oSelectedECCatLib.setItem(L2ECCat, new Array());
                    }
                          
                    oLevel3ECCatLib = oSelectedECCatLib.getItem(L2ECCat);
                    if (!Picker.CheckInArray(L3ECCat, oLevel3ECCatLib)) {
                        len = oLevel3ECCatLib.length;
                        oLevel3ECCatLib[len] = L3ECCat;                        
                    }                    
                
                    if (L4ECCat != 0) {
                        //level 4 product cat                 
                        if (!oSelectedECCatLib.hasItem(L3ECCat)) {
                            oSelectedECCatLib.setItem(L3ECCat, new Array());
                        }
                    
                        oLevel4ECCatLib = oSelectedECCatLib.getItem(L3ECCat);
                        if (!Picker.CheckInArray(L4ECCat, oLevel4ECCatLib)) {
                            len = oLevel4ECCatLib.length;
                            oLevel4ECCatLib[len] = L4ECCat;                        
                        }
                    }
                }
            }            
        }        
        
        var SelectedCatHolder = document.getElementById(inLayer);
        SelectedCatHolder.innerHTML = '';
            
        //(2) render selected cat lib...
        oL1ECCatLib = oSelectedECCatLib.getItem('-1');
        for (var EC1=0; EC1<oL1ECCatLib.length; EC1++) {
            L1ECCatID = oL1ECCatLib[EC1];
            L1ECCatName = CatalogueCatLib.getItem(L1ECCatID);            
            
            //level 1 catalogue cat
            var divLevel1ECCatHolder = document.createElement('div');
            divLevel1ECCatHolder.className = 'MsgEntry3';
            
            var L1ECCatItem = document.createElement('div');
            L1ECCatItem.className = 'BlockStyle30';
            L1ECCatItem.innerHTML = L1ECCatName;                   
            divLevel1ECCatHolder.appendChild(L1ECCatItem);
            SelectedCatHolder.appendChild(divLevel1ECCatHolder);
            
            oL2ECCatLib = oSelectedECCatLib.getItem(L1ECCatID);
            for (var EC2=0; EC2<oL2ECCatLib.length; EC2++) {
                L2ECCatID = oL2ECCatLib[EC2];
                L2ECCatName = CatalogueCatLib.getItem(L2ECCatID);                                                  
                
                var hasL3ECCat = oSelectedECCatLib.hasItem(L2ECCatID);
                                        
                if (hasL3ECCat) {
                    //level 2 product cat with sub cats...
                    var L2ECCatItem = document.createElement('div');                                                
                    L2ECCatItem.className = 'ul SelectedCompCat2';
                    L2ECCatItem.innerHTML = L2ECCatName;
                                       
                    var divLevel2ECCatHolder = document.createElement('div');
                    divLevel2ECCatHolder.className = 'SelectorSubItem1a';
                    divLevel2ECCatHolder.appendChild(L2ECCatItem);
                    divLevel1ECCatHolder.appendChild(divLevel2ECCatHolder);
                    
                    oL3ECCatLib = oSelectedECCatLib.getItem(L2ECCatID);
                    for (var EC3=0; EC3<oL3ECCatLib.length; EC3++) {
                        L3ECCatID = oL3ECCatLib[EC3];
                        L3ECCatName = CatalogueCatLib.getItem(L3ECCatID);                                                 
                        
                        var hasL4ECCat = oSelectedECCatLib.hasItem(L3ECCatID);
                        
                        if (hasL4ECCat) {
                            //level 3 product with sub cats...
                            var L3ECCatItem = document.createElement('div');                                                
                            L3ECCatItem.className = 'ul SelectedCompCat2';
                            L3ECCatItem.innerHTML = L3ECCatName;
                                               
                            var divLevel3ECCatHolder = document.createElement('div');
                            divLevel3ECCatHolder.className = 'SelectorSubItem1a';
                            divLevel3ECCatHolder.appendChild(L3ECCatItem);
                            divLevel2ECCatHolder.appendChild(divLevel3ECCatHolder);
                            
                            oL4ECCatLib = oSelectedECCatLib.getItem(L3ECCatID);
                            for (var EC4=0; EC4<oL4ECCatLib.length; EC4++) {
                                L4ECCatID = oL4ECCatLib[EC4];
                                L4ECCatName = CatalogueCatLib.getItem(L4ECCatID);    
                                
                                catPath = '_' + L1ECCatID + '_' + L2ECCatID + '_' + L3ECCatID + '_' + L4ECCatID + '_';                
                                catHolder = document.createElement('div');
                                catHolder.style.paddingLeft = '10px';
                                
                                if (showCheckbox) {
                                    //level 4 product cat with sub cats...
                                    var inputCheckbox = document.createElement('input');
                                    inputCheckbox.setAttribute('type','checkbox');
                                    inputCheckbox.style.border = '0px';
                                    inputCheckbox.id = 'remove' + catPath;
                                    inputCheckbox.setAttribute('catpath', catPath);
                            
                                    inputCheckbox.onclick = function () {                                     
                                        Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedCatalogueCatLib);  	                                
                                    }
                                    
                                    var divChkMain = document.createElement('div');
                                    divChkMain.className = 'fleft';                       
                                    divChkMain.appendChild(inputCheckbox);
                                    
                                    catHolder.appendChild(divChkMain);
                                }
                                
                                var divMain = document.createElement('div');
                                divMain.className = 'fleft';   	  	                        
                                divMain.innerHTML = L4ECCatName;		  	            	  	        
                    
                                var divBr = document.createElement('div');
                                divBr.className = 'DivBR';
                                
                                
                                catHolder.appendChild(divMain);
                                catHolder.appendChild(divBr);
                                
                                divLevel3ECCatHolder.appendChild(catHolder);	                                                
                            }   
                        } else {
                            //level 3 product cats with check box...
                            catHolder = document.createElement('div');
                            catHolder.style.paddingLeft = '10px';
                            
                            catPath = '_' + L1ECCatID + '_' + L2ECCatID + '_' + L3ECCatID + '_';                
                    
                            if (showCheckbox) {                                
                                var inputCheckbox = document.createElement('input');
                                inputCheckbox.setAttribute('type','checkbox');
                                inputCheckbox.style.border = '0px';
                                inputCheckbox.id = 'remove' + catPath;
                                inputCheckbox.setAttribute('catpath', catPath);
                        
                                inputCheckbox.onclick = function () { 
                                    Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedCatalogueCatLib);  	                            
                                }
                                
                                var divChkMain = document.createElement('div');
                                divChkMain.className = 'fleft';                       
                                divChkMain.appendChild(inputCheckbox);
                                
                                catHolder.appendChild(divChkMain);
                            }
                            
                            var divMain = document.createElement('div');
                            divMain.className = 'fleft';   	  	                        
                            divMain.innerHTML = L3ECCatName;		  	            	  	        
                
                            var divBr = document.createElement('div');
                            divBr.className = 'DivBR';
                            
                            catHolder.appendChild(divMain);
                            catHolder.appendChild(divBr);
                            
                            divLevel2ECCatHolder.appendChild(catHolder);	
                        }                                        
                    }                            
                } else {
                    //level 2 product cat with checkbox...
                    catHolder = document.createElement('div');
                    catHolder.style.paddingLeft = '10px';
                    
                    catPath = '_' + L1ECCatID + '_' + L2ECCatID + '_';                
                    
                    if (showCheckbox) {                    
                        var inputCheckbox = document.createElement('input');
                        inputCheckbox.setAttribute('type','checkbox');
                        inputCheckbox.style.border = '0px';
                        inputCheckbox.id = 'remove' + catPath;
                        inputCheckbox.setAttribute('catpath', catPath);
                
                        inputCheckbox.onclick = function () { 
                            Picker.DeselectCat(this.getAttribute('catpath'), Picker.DeselectedCatalogueCatLib);  	                            
                        }
                        
                        var divChkMain = document.createElement('div');
                        divChkMain.className = 'fleft';                       
                        divChkMain.appendChild(inputCheckbox);
                        
                        catHolder.appendChild(divChkMain);
                    }
                    
                    var divMain = document.createElement('div');
                    divMain.className = 'fleft';   	  	                        
                    divMain.innerHTML = L2ECCatName;		  	            	  	        
        
                    var divBr = document.createElement('div');
                    divBr.className = 'DivBR';
                    
                    catHolder.appendChild(divMain);
                    catHolder.appendChild(divBr);
                    
                    divLevel1ECCatHolder.appendChild(catHolder);	
                }
            }
        }
    }    
    
    //****** End Of Catalogue Category Picker ***** //
    
    
    
    //include js file
    Picker.include = function (file) {
  	    var script  = document.createElement('script');
  	    script.src  = file;
  	    script.type = 'text/javascript';
  	    script.defer = true;
  	    document.getElementsByTagName('head').item(0).appendChild(script);
    }        
    
    //select a cat, add a path to a lib...
    Picker.SelectCat = function (inPath, inLib) {
        if (inLib.hasItem(inPath)) {
            inLib.removeItem(inPath);
        } else {        
            inLib.setItem(inPath, inPath);
        }
    }
    
    //deselect a cat, remove a item from a lib...
    Picker.DeselectCat = function (inPath, inLib) {        
        if (!inLib.hasItem(inPath)) {
            inLib.setItem(inPath, inPath);
        }
    }
    
    //assert whether a value is in a array...
    Picker.CheckInArray = function (inVal, inArray) {
        for (J=0; J<inArray.length; J++) {
            if (inVal == inArray[J]) {
                return true;
            }
        }
        
        return false;
    }
    
    //assert whether a cat is selected...
    Picker.IsSelected = function (inPath, inLib) {
        for (tItem in inLib.items) {
            if (inLib.getItem(tItem).indexOf(inPath) != -1) {
                return true;
            }
        }
        
        return false;
    }
    
    Picker.expand = function (inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase) {
        document.getElementById(inImgHolder).innerHTML = '';
        document.getElementById(inImgHolder).innerHTML = "<img src='/images/0/but_minus.gif'>";
        document.getElementById(inImgHolder).onclick = function() { Picker.close(inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase); }
        document.getElementById(inCatHolder).onclick = function() { Picker.close(inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase); }	
        if ( inCheckHolder != null ) {
            document.getElementById(inCheckHolder).onclick = function() { 
                if ( inCase == 0 )
                    Picker.selectAllInCategory(inCheckHolder); 
                else if ( inCase == 1 )
                    Picker.selectAllInProductCat(inCheckHolder); 
                else if ( inCase == 2 )
                    Picker.selectAllInProductECat(inCheckHolder); 
                else
                    Picker.selectAllInCategory(inCheckHolder); 
            }	 
        }               
        document.getElementById(inSubCatHolder).style.display = '';		                        
    }
  
    Picker.close = function (inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase) {        
        document.getElementById(inImgHolder).innerHTML = '';
        document.getElementById(inImgHolder).innerHTML = "<img src='/images/0/but_plus.gif'>";
        document.getElementById(inImgHolder).onclick = function() { Picker.expand(inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase); }
        document.getElementById(inCatHolder).onclick = function() { Picker.expand(inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase); }	  
        if ( inCheckHolder != null ) {
            document.getElementById(inCheckHolder).onclick = function() { 
                if ( inCase == 0 )
                    Picker.selectAllInCategory(inCheckHolder); 
                else if ( inCase == 1 )
                    Picker.selectAllInProductCat(inCheckHolder); 
                else if ( inCase == 2 )
                    Picker.selectAllInProductECat(inCheckHolder); 
                else
                    Picker.selectAllInCategory(inCheckHolder); 
                Picker.expand(inImgHolder, inCatHolder, inSubCatHolder, inCheckHolder, inCase); 
            }
        }	                
        document.getElementById(inSubCatHolder).style.display = 'none';	
    }
    
    //select/deselect All products under a Company Product category
    Picker.selectAllInCategory = function ( inCheckHolder ) {
        selectAllDiv = document.getElementById(inCheckHolder);
        selectAllCheckBox = document.getElementById(inCheckHolder+ "SelectAllBox");
        var Level2CompanyCatProductCatChildLib = new Array();
        var currCompanyCatProductCatChildLib = new Hash();
        
        if ( selectAllDiv.getAttribute('Level3CompanyCatID') == 0 ){
           currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + selectAllDiv.getAttribute('Level2CompanyCatID')); 
              
            if (currCompanyCatProductCatChildLib.hasItem(selectAllDiv.getAttribute('Level1ProductCatID'))) {
                Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(selectAllDiv.getAttribute('Level1ProductCatID'));
            }
            if (currCompanyCatProductCatChildLib.hasItem(selectAllDiv.getAttribute('Level2ProductCatID'))) {
                Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(selectAllDiv.getAttribute('Level2ProductCatID'));
            }
        }
        else{
            currCompanyCatProductCatChildLib = eval("CompanyCatProductCatChildLib_" + selectAllDiv.getAttribute('Level3CompanyCatID')); 
            if (currCompanyCatProductCatChildLib.hasItem(selectAllDiv.getAttribute('Level1ProductCatID'))) {
                Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem(selectAllDiv.getAttribute('Level1ProductCatID'));
            }
            else if (currCompanyCatProductCatChildLib.hasItem('-1')) {
                Level2CompanyCatProductCatChildLib = currCompanyCatProductCatChildLib.getItem('-1');
            }
        }
        
        for (pItem2 in Level2CompanyCatProductCatChildLib) {
            var level2PCatId = Level2CompanyCatProductCatChildLib[pItem2];
            
            var pPath = '';    //parent product category path...
            var parentPCatLib = new Array();
            if (ProductCatPathLib.hasItem(level2PCatId)) {
                parentPCatLib = ProductCatPathLib.getItem(level2PCatId);
            }

            if (parentPCatLib.length > 1) {
                for (len=1; len<parentPCatLib.length; len++) {
                    pPath += parentPCatLib[len] + '_';
                } 
                pPath += level2PCatId + '_';
            }

            var catPath = '_'+selectAllDiv.getAttribute('Level1CompanyCatID')+'_'+selectAllDiv.getAttribute('Level2CompanyCatID') + '_' + selectAllDiv.getAttribute('Level3CompanyCatID') + '_' + pPath;	  	
            var inputCheckBox = document.getElementById("add"+catPath);   
            if ( inputCheckBox != null ){ 
                if (  selectAllDiv.className == "fleft ptr pickerCheckBox-checked" ){
                    inputCheckBox.checked = false;
                    if (Picker.SelectedNatureLib.hasItem(catPath)) 
                        Picker.SelectedNatureLib.removeItem(catPath, catPath);
                    Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.SelectedNatureLib, true);
                }
                else{
                    inputCheckBox.checked = true;
	                Picker.NatureCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
                    if (!Picker.SelectedNatureLib.hasItem(catPath)) 
                        Picker.SelectedNatureLib.setItem(catPath, catPath);
                    Picker.renderSelectedNatureLib('CompanySelectedCatHolder', Picker.SelectedNatureLib, true);
                }
            }
        } 
        
        if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
            selectAllDiv.className = "fleft ptr pickerCheckBox";
            
        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
    
    }
    
    //select/deselect All products under a Product category
    Picker.selectAllInProductCat = function ( inCheckHolder ) {
        selectAllDiv = document.getElementById(inCheckHolder);
        selectAllCheckBox = document.getElementById(inCheckHolder+ "SelectAllBox");
        
        var level1PCatId = selectAllDiv.getAttribute('Level1ProductCatID');
        var level2PCatId = selectAllDiv.getAttribute('Level2ProductCatID');
        var level3PCatId = selectAllDiv.getAttribute('Level3ProductCatID');
        
        var Level4ProductCats = ProductCatChildLib.getItem(level3PCatId);  
                      
  	    for (pItem3 in Level4ProductCats) {
  	        var level4PCatId = Level4ProductCats[pItem3];
  	        var level4PCatName = ProductCatLib.getItem(level4PCatId);
  	        
  	        var catPath = '_' + level1PCatId + '_' + level2PCatId + '_' + level3PCatId + '_' + level4PCatId + '_'; 
  	        var hasSubCat = ProductCatChildLib.hasItem(level4PCatId);
  	        
  	        if (!hasSubCat) { 
                //gen check box
                var inputCheckbox = document.getElementById('add'+catPath);
	            
                if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked" ){
                    inputCheckbox.checked = false;
                    if (Picker.SelectedProductCatLib.hasItem(catPath)) 
                        Picker.SelectedProductCatLib.removeItem(catPath, catPath);
                    Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.SelectedProductCatLib, true);
                }
                else{
                    inputCheckbox.checked = true;
	                Picker.ProductCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
                    if (!Picker.SelectedProductCatLib.hasItem(catPath)) 
                        Picker.SelectedProductCatLib.setItem(catPath, catPath);
                    Picker.renderSelectedProductCatLib('ProductSelectedCatHolder', Picker.SelectedProductCatLib, true);
                }
	            
		        	  	            	        
            }
        } 
        
        
        if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
            selectAllDiv.className = "fleft ptr pickerCheckBox";
            
        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
               
            
    }
    
    //select/deselect All products under a Product eCatalogue category
    Picker.selectAllInProductECat = function ( inCheckHolder ) {
        selectAllDiv = document.getElementById(inCheckHolder);
        selectAllCheckBox = document.getElementById(inCheckHolder+ "SelectAllBox");
        
        var level1PCatId = selectAllDiv.getAttribute('Level1ECCatID');
        var level2PCatId = selectAllDiv.getAttribute('Level2ECCatID');
        var level3PCatId = selectAllDiv.getAttribute('Level3ECCatID');
        
        var Level4ProductCats = CatalogueCatChildLib.getItem(level3PCatId);  
              
  	    for (pItem3 in Level4ProductCats) {
  	        var level4PCatId = Level4ProductCats[pItem3];
  	        var level4PCatName = CatalogueCatLib.getItem(level4PCatId);
  	        
  	        var catPath = '_' + level1PCatId + '_' + level2PCatId + '_' + level3PCatId + '_' + level4PCatId + '_'; 
  	        var hasSubCat = CatalogueCatChildLib.hasItem(level4PCatId);
  	        
  	        if (!hasSubCat) { 
                //gen check box
                var inputCheckbox = document.getElementById('add'+catPath);
	            
                if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked" ){
                    inputCheckbox.checked = false;
                    if (Picker.SelectedCatalogueCatLib.hasItem(catPath)) 
                        Picker.SelectedCatalogueCatLib.removeItem(catPath, catPath);
                    Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.SelectedCatalogueCatLib, true);
                }
                else{
                    inputCheckbox.checked = true;
	                Picker.CatalogueCatCheckBoxLib.setItem(catPath, catPath);      //add item to hash...
                    if (!Picker.SelectedCatalogueCatLib.hasItem(catPath)) 
                        Picker.SelectedCatalogueCatLib.setItem(catPath, catPath);
                    Picker.renderSelectedCatalogueCatLib('CatalogueSelectedCatHolder', Picker.SelectedCatalogueCatLib, true);
                }
	            
		        	  	            	        
            }
        }    
        
        if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";

        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
            selectAllDiv.className = "fleft ptr pickerCheckBox";
            
        else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
            selectAllDiv.className = "fleft ptr pickerCheckBox-checked";
 
            
    }
    
    //deselect button on click...
    Picker.DeselectOnClick = function (inSelectedLib, inDeselectedLib, inCheckBoxLib, inCase) {        
        for (tItem in inDeselectedLib.items) {
            inSelectedLib.removeItem(tItem);
            inDeselectedLib.removeItem(tItem);
            
            if (inCheckBoxLib.hasItem(tItem)) document.getElementById('add'+tItem).checked = false;
            var tempNum = 0;
            var pathArray = tItem.split("_");
            if ( inCase == 0 ){
                if ( pathArray[3] != 0 )
                    var theCompProdCatChildLib = eval("CompanyCatProductCatChildLib_"+pathArray[3]);
                else
                    var theCompProdCatChildLib = eval("CompanyCatProductCatChildLib_"+pathArray[2]);
                var Level4ProductCats = theCompProdCatChildLib.getItem(pathArray[pathArray.length-3]);
            }
            else if ( inCase == 1 )
                var Level4ProductCats = ProductCatChildLib.getItem(pathArray[pathArray.length-3]);
            else if ( inCase == 2 )
                var Level4ProductCats = CatalogueCatChildLib.getItem(pathArray[pathArray.length-3]);
            else{
                if ( pathArray[3] != 0 )
                    var theCompProdCatChildLib = eval("CompanyCatProductCatChildLib_"+pathArray[3]);
                else
                    var theCompProdCatChildLib = eval("CompanyCatProductCatChildLib_"+pathArray[2]);
                var Level4ProductCats = theCompProdCatChildLib.getItem(pathArray[pathArray.length-3]);
            }
                    
            totalCheckBox = Level4ProductCats.length;
            totalCheckBox --;
            for (pItem4 in Level4ProductCats){
                var catPath = "";
                for ( tID=0; tID < pathArray.length-2; tID++ )
                    catPath += pathArray[tID] + "_";
                selectAllDiv = document.getElementById('checkCompCatHolder'+catPath);
                var level4PCatId = Level4ProductCats[pItem4];
                catPath += level4PCatId + '_';
                tempInputCheckbox = document.getElementById('add'+catPath);
                if ( tempInputCheckbox != null ){
                    if ( tempInputCheckbox.checked == true )
                        tempNum++;
                }
                else
                    totalCheckBox--;
            }
            if ( selectAllDiv != null ){
                if ( tempNum == 0 ){
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-disabled")
                        selectAllDiv.className = "fleft ptr pickerCheckBox";
                }
                else{
                    if ( selectAllDiv.className == "fleft ptr pickerCheckBox")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";

                    else if ( selectAllDiv.className == "fleft ptr pickerCheckBox-checked")
                        selectAllDiv.className = "fleft ptr pickerCheckBox-disabled";
                }
            }  
            
        }
    }
    
    //reoganise cat
    Picker.ReorganiseCat = function (inSourceCatLib) {
        var outCatLib = new Hash();
        for (tItem in inSourceCatLib.items) {
            outCatLib.setItem(tItem, tItem);            
        }
        return outCatLib;        
    }
    
    Picker.UnhightlightHolder = function (inHolder) {
        if (inHolder != '' && inHolder != null) {
            if (document.getElementById(inHolder)) document.getElementById(inHolder).style.background = '#ffffff';
        }
    }

