//  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();

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 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;
	    }
    	
	    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;}
    }
}