//  COPYRIGHT © 2006 ESRI
//
//  TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
//  Unpublished material - all rights reserved under the
//  Copyright Laws of the United States and applicable international
//  laws, treaties, and conventions.
// 
//  For additional information, contact:
//  Environmental Systems Research Institute, Inc.
//  Attn: Contracts and Legal Services Department
//  380 New York Street
//  Redlands, California, 92373
//  USA
// 
//  email: contracts@esri.com

var TreeViewPlusObjects=new Array();

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function TreeViewPlusObject(tvpID, expandedImage, collapsedImage, clearImage, callbackFunctionString)
{
    this.id = tvpID;
    this.callbackFunctionString=callbackFunctionString;
    this.expandedImage=expandedImage;
    this.collapsedImage=collapsedImage;
    this.clearImage=clearImage;
    
    this.toggleNodeState=function (nodeID, fireClickedEvent)
    {
        var argument='nodeID=' + nodeID + '&';
	    var childrenContainer=document.getElementById(nodeID+'_childrenContainer');
	    var button=document.getElementById(nodeID + '_StateButton');
	    if (childrenContainer==null || button==null) return;
	    if (fireClickedEvent==null)fireClickedEvent=false;
	    if (childrenContainer.style.display=='none')
	    {
	        argument+='EventArg=expanded&Value=true';
	        if (fireClickedEvent)argument+='&Action=clicked';
		    childrenContainer.style.display='';
		    button.src=this.expandedImage;
	    }
	    else
	    {
	        argument+='EventArg=expanded&Value=false';
	        if (fireClickedEvent)argument+='&Action=clicked';
		    childrenContainer.style.display='none';
		    button.src=this.collapsedImage;
	    }
    	
	    var context = null;
	    eval(this.callbackFunctionString);
    }
    
    this.nodeChecked=function (nodeID)
    {
        var blnNoCR = true;
        var argument='nodeID=' + nodeID + '&';
	    var checkBox=document.getElementById(nodeID + '_CheckBox');
	    if (checkBox==null) return;
	    if (checkBox.checked==false)
	    {
	        argument+='EventArg=checked&Value=false';
	        checkBox.value=false;
	    }
	    else
	    {
	        argument+='EventArg=checked&Value=true';
	        checkBox.value=true;
	    }
	    
	    if(checkBox.outerHTML.indexOf("Toc") != -1) {
	        var layerName = "";
	        if (isIE) {
	            layerName = document.getElementById(nodeID).innerText.trim();

	            var myChar = '';
	            var numChars = layerName.length-1;
	            var index = 0;
	            while (index < numChars) {
	                if((layerName.charCodeAt(index) == 10) | (layerName.charCodeAt(index) == 13)) {
	                    index--;
	                    break;
	                }
	                index++;
	            }	
	            
	            if(index != layerName.length-1) {
	                layerName = layerName.substring(0, index)
	            }    
	        } else {
	            layerName = document.getElementById(nodeID).textContent.trim();
	            
	            var myChar = '';
	            var numChars = layerName.length-1;
	            var index = 0;
	            while (index < numChars) {
	            
	                if((layerName.charCodeAt(index) == 10) | (layerName.charCodeAt(index) == 13)) {
	                    blnNoCR = false;
	                    break;
	                }
	                index++;
	            }
	            
	            if (blnNoCR) {
	                index++;
	            }	
	            
	            if(index != layerName.length) {
	                layerName = layerName.substring(0, index)
	            }
	        }
	        FireCallBack("ToggleLayer","ToggleLayer","show=" + checkBox.value + "&name=" + layerName);
	    }
    	
	    var context = null;
	    eval(this.callbackFunctionString);
    }

    this.nodeClicked=function (nodeID)
    {
        var argument='nodeID=' + nodeID + '&EventArg=nodeClicked';
	    var context = null;
	    eval(this.callbackFunctionString);
    }
    
    this.clearNode=function (nodeID)
    {
        var argument='nodeID=' + nodeID + '&EventArg=clearNode';
	    var context = null;
	    eval(this.callbackFunctionString);
    }
    
    this.nextPage=function (nodeID)
    {
        var argument='nodeID=' + nodeID + '&EventArg=nextPage';
	    var context = null;
	    eval(this.callbackFunctionString);
    }

    this.previousPage=function (nodeID)
    {
        var argument='nodeID=' + nodeID + '&EventArg=previousPage';
	    var context = null;
	    eval(this.callbackFunctionString);
    }

    this.clearAllNodes=function ()
    {
        var argument='EventArg=clearAllNodes';
	    var context = null;
	    eval(this.callbackFunctionString);
    }

    this.nodeLegendClicked=function (nodeID)
    {
        var argument='nodeID=' + nodeID + '&EventArg=nodeLegendClicked';
	    var context = null;
	    eval(this.callbackFunctionString);
    }
        
    this.unselectNode=function (nodeID, backColor, hoverColor)
    {
        var node=document.getElementById(nodeID);
        if (node==null)return;
        node.style.backgroundColor=backColor;
        node.onmouseover=function(){this.style.backgroundColor=hoverColor;}
        node.onmouseout=function(){this.style.backgroundColor=backColor;}
    }
}
