

//FF - this class is overridden by toolbar
//IE - this class catches all the calls IE didn't catch.
var _TPI =
{
	Result : "",
	
	ResetResult : function()
	{
		this.Result = "";
	},
	
	SetResult : function(strResult)
	{
		this.Result += strResult;
	},
	
	GetResult : function(bIsMultipleResponse)
	{
		return _TPIHelper.GetResult(this.Result,bIsMultipleResponse);
	},
	
	ExecuteApiFunction : function(strFuncName,strParam)
	{
		//do nothing
	}
}

//Wrapped JS function for IE to return Result
function _TPISetResult(strXmlResult)
{
	_TPI.SetResult(strXmlResult);
}

//Helper object with service functions for interaction with the toolbar.
var _TPIHelper =
{
	//This function interacts directly with toolbar, by calling JS functions,
	//which IE interprets as navigation, and FF gets the function itself.
	//arguments :   [0] -       boolean isMultiple response
	//              [1] -       function name
	//              [2]..[n]    function arguments
	ExecuteFunction : function()
	{
		_TPI.ResetResult();
		var bIsMultipleResponse = arguments[0];

		var strHref = "javascript:_TPI.ExecuteApiFunction(";
		for(var i=1;i<arguments.length;i++)
		{
			strHref += "'" + arguments[i] + "'";
			if(i < arguments.length - 1)
			{
				strHref += ",";
			}
		}
		
		strHref += ")";
		
		if(this.GetBrowser() == "IE")
		{
			var frameSrc = "about:blank#" + strHref;
			this.NavigateInIFrame(frameSrc);
		}
		else
		{
			location.href = strHref;
		}
		
		return _TPI.GetResult(bIsMultipleResponse);
	},

	GetBrowser : function()
	{
		var bVersion = "";
		if(!window.ActiveXObject)
		{
			bVersion = "FF";
		}
		
		else
		{	
			bVersion = "IE";
			/*
			var uAgent = navigator.userAgent;
			if(uAgent.match('MSIE 6.'))
			{
				bVersion = "IE6";
			}
			else if(uAgent.match('MSIE 7.'))
			{
				bVersion = "IE7";
			}
			*/
		}
		return bVersion;
	},
	
	//FOR IE-7, because it didn't catches JS function calls as navigation.
	NavigateInIFrame : function(frameSrc)
	{
		var arrBody = document.getElementsByTagName('body');
		iFrame = document.createElement('iframe');
		iFrame.setAttribute("width","0"); 
		iFrame.setAttribute("height","0"); 
		arrBody[0].appendChild(iFrame);
		iFrame.src = frameSrc;
		arrBody[0].removeChild(iFrame);
	},
	
	//Parse Result XML
	//If bIsMultipleResponse = true, return array of objects, each contains response from specific toolbar.
	GetResult : function(strResult,bIsMultipleResponse)
	{
		var oResult = new Object();
		var arrResult = null;
		
		if(strResult != "")
		{
			strResult = "<ROOT>" + strResult + "</ROOT>";
			var oRootXML = null;
			var bIsMulty = false;
			
			if(window.ActiveXObject)
			{
				oRootXML = new ActiveXObject("Microsoft.XMLDOM");
				oRootXML.async = "false";
				oRootXML.loadXML(strResult);
				oRootXML = oRootXML.documentElement;
			}
			else
			{
				var parser = new DOMParser();
				oRootXML = parser.parseFromString(strResult, "text/xml");
				oRootXML = oRootXML.documentElement;
			}
			
			if(oRootXML.childNodes.length > 1 || bIsMultipleResponse)
			{
				bIsMulty = true;
				arrResult = new Array();
			}
			
			for(var z=0;z<oRootXML.childNodes.length;z++)
			{
				oXML = oRootXML.childNodes[z];
				//Convert Result XML to an Object
				for(var i=0;i<oXML.childNodes.length;i++)
				{
					if(oXML.childNodes[i].tagName == "RETURN_VALUE")
					{
						oResult.returnValue = this.GetBooleanValue(this.GetXMLNodeValue(oXML.childNodes[i]));
					}
					else if(oXML.childNodes[i].tagName == "ERROR_CODE")
					{
						oResult.errorCode = this.GetXMLNodeValue(oXML.childNodes[i]);
					}
					else if(oXML.childNodes[i].tagName == "DATA")
					{
						var oXmlNode = oXML.childNodes[i];
					    this.DataFactory(oResult,oXmlNode);
					}
				}
				
				if(bIsMulty)
				{
					arrResult.push(oResult);
					oResult = new Object();
				}
			}
			if(bIsMulty)
			{
				oResult = arrResult;
			}
		}
		else
		{
			oResult.returnValue = false;
			oResult.errorCode	= 0;
		}
		return oResult;
	},
	
	//Function which transfers string TRUE or FALSE into boolean.
	GetBooleanValue : function(strBool)
	{
	    var bBool = (strBool.toLowerCase() == "true") ? true : false;
	    return bBool;
	},
	
	//Factory for parsing data node from toolbar's response.
	DataFactory : function(oData,oXmlNode)
	{
		var xmlNode = null;
		
		for(var j=0;j<oXmlNode.childNodes.length;j++)
        {
	        xmlNode = oXmlNode.childNodes[j];
	        
	        if(xmlNode.tagName == "TOOLBAR_INFO")
	        {
		        for(var i=0;i<xmlNode.childNodes.length;i++)
		        {
			        if(xmlNode.childNodes[i].tagName == "VERSION")
			        {
				        oData.version = this.GetXMLNodeValue(xmlNode.childNodes[i]);
			        }
			        else if(xmlNode.childNodes[i].tagName == "NAME")
			        {
				        oData.name = this.GetXMLNodeValue(xmlNode.childNodes[i]);
			        }
			        else if(xmlNode.childNodes[i].tagName == "CURRENT_CTID")
			        {
				        oData.CTID = this.GetXMLNodeValue(xmlNode.childNodes[i]);
			        }
			        else if(xmlNode.childNodes[i].tagName == "ORIGINAL_CTID")
			        {
				        oData.originalCTID = this.GetXMLNodeValue(xmlNode.childNodes[i]);
			        }
			        else if(xmlNode.childNodes[i].tagName == "IS_MULTICOMMUNITY")
			        {
				        oData.isMulticommunity = this.GetBooleanValue(this.GetXMLNodeValue(xmlNode.childNodes[i]));
			        }
			        else if(xmlNode.childNodes[i].tagName == "IS_GROUPING")
			        {
				        oData.isGrouping = this.GetBooleanValue(this.GetXMLNodeValue(xmlNode.childNodes[i]));
			        }
		        }
		    }
		}
	},
	
	GetOldApiResult : function(bResult)
	{
		var oResult = new Object();
		oResult.returnValue = bResult;
		oResult.errorCode	= 0;
		return oResult;
	},
	
	//Cross browser.
	GetXMLNodeValue : function(xmlNode)
	{
		if(xmlNode.text)
		{
			return xmlNode.text;
		}
		else if(xmlNode.childNodes.length != 0)
		{
			
			return xmlNode.childNodes[0].nodeValue;
		}
		else
		{
		    return "";
		}
	},
	
	ToLegalXML : function(strXML)
	{
		strXML = strXML.replace(/&/g, '&amp;');
		strXML = strXML.replace(/</g, '&lt;');
		strXML = strXML.replace(/>/g, '&gt;');
		strXML = strXML.replace(/\'/g, '&apos;');
		strXML = strXML.replace(/\"/g, '&quot;');
		
		return strXML;
	},
	
	//Returns correct XML defining toolbar button
	BuildButtonXml : function(buttonLabel,buttonIcon,buttonTooltip,xmlData,
					   optionsDisplayText,optionsDisplayIcon,uniqueComponentID)
	{
		var strXML =  '<BUTTON>';
			strXML += '<PERMISSIONS><EDIT>True</EDIT><MOVE>True</MOVE><DELETE>True</DELETE></PERMISSIONS>';
			strXML += '<USER_ATTRIBUTES><PERMISSION>FULL</PERMISSION><SHOW_IN_CHEVRON>True</SHOW_IN_CHEVRON></USER_ATTRIBUTES>';
			strXML += '<UNIQUE_COMP_ID>'+this.ToLegalXML(uniqueComponentID)+'</UNIQUE_COMP_ID>';
			strXML += '<DEFAULT_BUTTON_TEXT>'+this.ToLegalXML(buttonLabel)+'</DEFAULT_BUTTON_TEXT>';
			strXML += '<BUTTON_ICON_URL>'+this.ToLegalXML(buttonIcon)+'</BUTTON_ICON_URL>';
			strXML += '<BUTTON_TOOLTIP>'+this.ToLegalXML(buttonTooltip)+'</BUTTON_TOOLTIP>';
			//options display text/icon
			strXML += '<DISPLAY_TEXT>'+this.ToLegalXML(optionsDisplayText)+'</DISPLAY_TEXT>';
			strXML += '<DISPLAY_ICON>'+this.ToLegalXML(optionsDisplayIcon)+'</DISPLAY_ICON>';
			//data node
			strXML += xmlData;
			strXML += '</BUTTON>';
		
		return strXML;
	},
	
	//Returns correct XML defining toolbar RSS component
	BuildRssXml : function(buttonLabel,buttonIcon,rssFeedUrl,buttonNewMessagesIcon,optionsDisplayText,
									optionsDisplayIcon,refreshIntervalInMinutes,uniqueComponentID)
	{
		
		var strXML = '<RSS_FEED_ITEM>';
		strXML += '<PERMISSIONS><EDIT>True</EDIT><MOVE>True</MOVE><DELETE>True</DELETE></PERMISSIONS>';
		strXML += '<USER_ATTRIBUTES><PERMISSION>FULL</PERMISSION><SHOW_IN_CHEVRON>True</SHOW_IN_CHEVRON></USER_ATTRIBUTES>';
		strXML += '<UNIQUE_COMP_ID>'+this.ToLegalXML(uniqueComponentID)+'</UNIQUE_COMP_ID>';
		strXML += '<DISPLAY_TEXT>'+this.ToLegalXML(optionsDisplayText)+'</DISPLAY_TEXT>';
		strXML += '<DISPLAY_ICON>'+this.ToLegalXML(optionsDisplayIcon)+'</DISPLAY_ICON>';
		strXML += '<TITLE>'+this.ToLegalXML(buttonLabel)+'</TITLE>';
		strXML += '<LINK>'+this.ToLegalXML(rssFeedUrl)+'</LINK>';
		strXML += '<ICON_NORMAL_URL>'+this.ToLegalXML(buttonIcon)+'</ICON_NORMAL_URL>';
		strXML += '<ICON_STARED_URL>'+this.ToLegalXML(buttonNewMessagesIcon)+'</ICON_STARED_URL>';
		strXML += '<LIVE_MODE>False</LIVE_MODE>';
		strXML += '<INTERVAL>'+this.ToLegalXML(refreshIntervalInMinutes)+'</INTERVAL>';
		strXML += '<COMMENTS_LINK/>';
		strXML += '<RSS_VIEW>ADJUSTIVE</RSS_VIEW>';
		strXML += '</RSS_FEED_ITEM>';
		
		return strXML;
	},
	
	//Returns correct XML defining toolbar RadioSation
	BuildRadioStationXml : function(name,url,contantType,mediaType,uniqueComponentID)
	{
	    var strXML = '<RADIO_STATION>';
        strXML  += '<STATION_ID>'+this.ToLegalXML(uniqueComponentID)+'</STATION_ID>';
        strXML  += '<STATION_NAME>'+this.ToLegalXML(name)+'</STATION_NAME>';
        strXML  += '<STATION_URL>'+this.ToLegalXML(url)+'</STATION_URL>';
        strXML  += '<TYPE>'+mediaType+'</TYPE>';
        strXML  += '<CONTENT_TYPE>'+contantType+'</CONTENT_TYPE>';
        strXML  += '</RADIO_STATION>';
        
        return strXML;
    }
}

//User object to interact with toolbar / toolbars
var TPI = 
{	
	Toolbar : function(strCTID)
	{

		this.CTID = strCTID;
		if(this.CTID)
		{
		    this.IsLatestApi = _TPIHelper.ExecuteFunction(false,"IsLatestApi",strCTID).returnValue;
		    this.IsToolbarInstalled = -1;
		}
		this.Refresh = function()
		{	
			if(this.CTID)
			{
			    if(this.IsLatestApi)
			    {
				    return _TPIHelper.ExecuteFunction(false,"RefreshToolbarByCTID",this.CTID);
			    }
			    else
			    {
				    var bResult = RefreshToolbarByCTID(this.CTID);
				    return _TPIHelper.GetOldApiResult(bResult);
			    }
			}
			else
			{
			    return this.NoCTID();
			}
		};
		
		this.IsVisible = function()
		{
			if(this.CTID)
			{
			    if(this.IsLatestApi)
			    {
				    return _TPIHelper.ExecuteFunction(false,"IsToolbarVisible",this.CTID);
			    }
			    else
			    {
				    var bResult = IsToolbarInstalled(this.CTID)
				    return _TPIHelper.GetOldApiResult(bResult);
			    }
			}
			else
			{
			    return this.NoCTID();
			}
		};
		
		this.AddComponentByXML = function(strXML)
		{ 
			if(this.CTID)
			{
			    if(this.IsLatestApi)
			    {
				    return _TPIHelper.ExecuteFunction(false,"AddComponentByXML",strXML,this.CTID);
			    }
			    else
			    {
				    var bResult = AddComponentByXML(strXML,this.CTID)
				    return _TPIHelper.GetOldApiResult(bResult);
			    }
			}
			else
			{
			    return this.NoCTID();
			}
		};
		
		this.GetInfo = function()
		{
			if(this.CTID)
			{
			    if(this.IsLatestApi)
			    {
				    return _TPIHelper.ExecuteFunction(false,"GetToolbarInfo",this.CTID);
			    }
			    else
			    {
				    if(!this.GetIsToolbarInstalled())
				    {
				        return this.NoToolbarInstalled();
				    }
				    return this.UnsupportedCommand()
			    }
			}
			else
			{
			    return this.NoCTID();
			}
		};
		
		this.AddGadget = function(buttonLabel,buttonIcon,buttonTooltip,linkTargetUrl,
					   width,height,defaultTarget,optionsDisplayText,optionsDisplayIcon,uniqueComponentID)
		{
			if(this.CTID)
			{
			    //parameters checks
			    if(buttonLabel == "" && buttonIcon == "" && optionsDisplayIcon == "" && optionsDisplayText == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof linkTargetUrl == "undefined" || linkTargetUrl == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof width == "undefined" || width == "" || height == "undefined" || height == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof optionsDisplayText == "undefined" || optionsDisplayText == "")
			    {
				    optionsDisplayText = buttonLabel;
			    }
    			
			    if(typeof optionsDisplayIcon == "undefined" || optionsDisplayIcon == "")
			    {
				    optionsDisplayIcon = buttonIcon;
			    }
    			
			    if(typeof uniqueComponentID == "undefined" || uniqueComponentID == "")
			    {
				    uniqueComponentID = "gadget" + linkTargetUrl + width + height;
			    }
    			
			    if(typeof defaultTarget == "undefined" || defaultTarget == "")
			    {
				    linkTarget = "_SELF";
			    }
    			
			    var xmlData = "<DATA><TYPE>POP_HTML</TYPE><POP_HTML><URL>"+_TPIHelper.ToLegalXML(linkTargetUrl)+"</URL>";
			    xmlData += "<DEFAULT_TARGET>"+_TPIHelper.ToLegalXML(defaultTarget)+"</DEFAULT_TARGET><WIDTH>"+width+"</WIDTH><HEIGHT>"+height+"</HEIGHT></POP_HTML></DATA>";
    			
			    var strXML = _TPIHelper.BuildButtonXml(buttonLabel,buttonIcon,buttonTooltip,xmlData,
					       optionsDisplayText,optionsDisplayIcon,uniqueComponentID);
    					   
    					   
			    return this.AddComponentByXML(strXML);
			}
			else
			{
			    return this.NoCTID();
			}
		};
		
		this.AddRSS = function(buttonLabel,buttonIcon,rssFeedUrl,buttonNewMessagesIcon,optionsDisplayText,
									optionsDisplayIcon,refreshIntervalInMinutes,uniqueComponentID)
		{
			if(this.CTID)
			{
			    //parameters checks
			    if(buttonLabel == "" && buttonIcon == "" && optionsDisplayIcon == "" && optionsDisplayText == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof rssFeedUrl == "undefined" || rssFeedUrl == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof optionsDisplayText == "undefined" || optionsDisplayText == "")
			    {
				    optionsDisplayText = buttonLabel;
			    }
    			
			    if(typeof optionsDisplayIcon == "undefined" || optionsDisplayIcon == "")
			    {
				    optionsDisplayIcon = buttonIcon;
			    }
    			
			    if(typeof buttonNewMessagesIcon == "undefined" || buttonNewMessagesIcon == "")
			    {
				    buttonNewMessagesIcon = buttonIcon;
			    }
    			
			    if(typeof uniqueComponentID == "undefined" || uniqueComponentID == "")
			    {
				    uniqueComponentID = "rss" + rssFeedUrl;
			    }
    			
			    if(typeof refreshIntervalInMinutes == "undefined" || refreshIntervalInMinutes == "")
			    {
				    refreshIntervalInMinutes = "120";
			    }
    			
			    var strXML = _TPIHelper.BuildRssXml(buttonLabel,buttonIcon,rssFeedUrl,buttonNewMessagesIcon,optionsDisplayText,
									    optionsDisplayIcon,refreshIntervalInMinutes,uniqueComponentID);
    					   
			    return this.AddComponentByXML(strXML);
			}
			else
			{
			    return this.NoCTID();
			}
		
		};
		
		this.AddLinkButton = function(buttonLabel,buttonIcon,buttonTooltip,linkTargetUrl,
					   linkTarget,optionsDisplayText,optionsDisplayIcon,uniqueComponentID)
		{
			if(this.CTID)
			{
			    //parameters checks
			    if(buttonLabel == "" && buttonIcon == "" && optionsDisplayIcon == "" && optionsDisplayText == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof linkTargetUrl == "undefined" || linkTargetUrl == "")
			    {
				    return this.ParametersError();
			    }
    			
			    if(typeof optionsDisplayText == "undefined" || optionsDisplayText == "")
			    {
				    optionsDisplayText = buttonLabel;
			    }
    			
			    if(typeof optionsDisplayIcon == "undefined" || optionsDisplayIcon == "")
			    {
				    optionsDisplayIcon = buttonIcon;
			    }
    			
			    if(typeof uniqueComponentID == "undefined" || uniqueComponentID == "")
			    {
				    uniqueComponentID = "button" + linkTargetUrl;
			    }
    			
			    if(typeof linkTarget == "undefined" || linkTarget == "")
			    {
				    linkTarget = "SELF";
			    }
    			
			    var xmlData = "<DATA><TYPE>LINK</TYPE><LINK><URL>"+_TPIHelper.ToLegalXML(linkTargetUrl)+"</URL><TARGET>"+_TPIHelper.ToLegalXML(linkTarget)+"</TARGET></LINK></DATA>";
    			
			    var strXML = _TPIHelper.BuildButtonXml(buttonLabel,buttonIcon,buttonTooltip,xmlData,
					       optionsDisplayText,optionsDisplayIcon,uniqueComponentID);
    					   
			    return this.AddComponentByXML(strXML);
			}
			else
			{
			    return this.NoCTID();
			}
			
		};
	    
	    this.AddRadioStation = function(name,url,contantType,mediaType,uniqueComponentID)
	    {
	        if(!name || !url)
	        {
	            return this.ParametersError();
	        }
	        
	        if(!contantType)
	        {
	            contantType = "MP";
	        }
	        
	        if(!mediaType)
	        {
	            mediaType = "STREAM";
	        }
	        
	        if(!uniqueComponentID)
	        {
	            uniqueComponentID = url;
	        }
	        
	        var strXML = _TPIHelper.BuildRadioStationXml(name,url,contantType,mediaType,uniqueComponentID);
	        
	        if(this.CTID)
			{
			    if(this.IsLatestApi)
			    {
				    return _TPIHelper.ExecuteFunction(false,"AddRadioStation",strXML,this.CTID);
			    }
			    else
			    {
				    if(!this.GetIsToolbarInstalled())
				    {
				        return this.NoToolbarInstalled();
				    }
				    return this.UnsupportedCommand()
			    }
			}
			else
			{
			    return this.NoCTID();
			}
	    };
	    
		//builds xml for response parser, for unsupported command
		this.UnsupportedCommand = function()
		{
			var strXmlResult = "<RETURN_OBJECT><RETURN_VALUE>false</RETURN_VALUE><ERROR_CODE>2</ERROR_CODE></RETURN_OBJECT>";
			return _TPIHelper.GetResult(strXmlResult);
		};
		
		//builds xml for response parser, for input parameters error
		this.ParametersError = function()
		{
			var strXmlResult = "<RETURN_OBJECT><RETURN_VALUE>false</RETURN_VALUE><ERROR_CODE>3</ERROR_CODE></RETURN_OBJECT>";
			return _TPIHelper.GetResult(strXmlResult);
		};
		
		this.NoToolbarInstalled = function()
		{
		    var strXmlResult = "<RETURN_OBJECT><RETURN_VALUE>false</RETURN_VALUE><ERROR_CODE>0</ERROR_CODE></RETURN_OBJECT>";
			return _TPIHelper.GetResult(strXmlResult);
		};
		
		this.NoCTID = function()
		{
			var strXmlResult = "<RETURN_OBJECT><RETURN_VALUE>false</RETURN_VALUE><ERROR_CODE>6</ERROR_CODE></RETURN_OBJECT>";
			return _TPIHelper.GetResult(strXmlResult);
		};
		
		this.GetIsToolbarInstalled = function()
		{
		    if(this.IsToolbarInstalled == -1)
			{  
			    this.IsToolbarInstalled = IsToolbarInstalled(this.CTID);
			}
			
			return this.IsToolbarInstalled;
		}
	},
	
	//Helper manager to interract with multiple toolbars
	Manager : function()
	{
		this.GetAllToolbarsInfo = function()
		{
			// underscore is to tell the return object parser that the return object is array.
			return _TPIHelper.ExecuteFunction(true,"GetAllToolbarsInfo");
		};
		
		this.AddAlert = function(alertId)
		{
		    return _TPIHelper.ExecuteFunction(false,"AddAlert", alertId);
		};
		
		this.IsSubscribedToAlert = function(alertId)
		{
		    return _TPIHelper.ExecuteFunction(false,"IsSubscribedToAlert", alertId);
		};
	}
}

// ======================= Older API Functions ========================

//this is a blank object
//this object is used to catch all the calls 
//that the toolbars(IE & Firefox) didn't catch
var EBToolbarApi = 
{
	Result		: false,
	
	ResetResult : function()
	{
		this.SetResult(false);
	},
	
	SetResult : function(bValue)
	{
		this.Result = bValue;
	},
	
	GetResult : function()
	{
	    return this.Result;
	},
	
	RefreshAllToolbars : function()
	{
		//do nothing...
	},
	
	RefreshToolbarByCTID : function(strCTID)
	{
		//do nothing...	
	},
	
	IsToolbarInstalled : function(strCTID)
	{
		//do nothing...
	},
	
	AddComponentByXML : function(strXML,strCTID)
	{
		//do nothing...
	}
}

//wrapped function to set result (for IE)
function EBSetResult(bValue)
{
	EBToolbarApi.SetResult(bValue);	
}

//-------------------------------------------------------------------

			/***** Public API Functions *****/

/******************************** - IMPORTTANT - **********************************/
//                                                                                //
//	The functions should be called the earliset at the onload event of the page   //
//                                                                                //
/**********************************************************************************/

/************************************************/
/*			bool RefreshAllToolbars()			*/
/*	This function refreshes all toolbars.		*/
/************************************************/			
function RefreshAllToolbars()
{
	EBToolbarApi.ResetResult();

	if(_TPIHelper.GetBrowser() == "IE7")
	{
		var frameSrc = 'about:blank#javascript:EBToolbarApi.RefreshAllToolbars();';
		_TPIHelper.NavigateInIFrame(frameSrc);
	}
	else
	{
		location.href = 'javascript:EBToolbarApi.RefreshAllToolbars();';
	}
	
    return EBToolbarApi.GetResult();
}

/************************************************/
/*		bool RefreshToolbarByCTID(strCTID)		*/
/*	This function refreshes the toolbar by CTID.*/
/************************************************/			
function RefreshToolbarByCTID(strCTID)
{
	EBToolbarApi.ResetResult();
	
	if(_TPIHelper.GetBrowser() == "IE7")
	{
		var frameSrc = 'about:blank#javascript:EBToolbarApi.RefreshToolbarByCTID(\'' + strCTID + '\');';
		_TPIHelper.NavigateInIFrame(frameSrc);
	}
	else
	{
		location.href = 'javascript:EBToolbarApi.RefreshToolbarByCTID(\'' + strCTID + '\');';
	}
	
    return EBToolbarApi.GetResult();
}

/************************************************/
/*		bool IsToolbarInstalled(strCTID)	    */
/*	This function returns true if the toolbar   */
/*	with the given CTID is installed.			*/
/************************************************/		
function IsToolbarInstalled(strCTID)
{
	EBToolbarApi.ResetResult();
	
	if(_TPIHelper.GetBrowser() == "IE7")
	{
		var frameSrc = 'about:blank#javascript:EBToolbarApi.IsToolbarInstalled(\'' + strCTID + '\');';
		_TPIHelper.NavigateInIFrame(frameSrc);
	}
	else
	{
		location.href = 'javascript:EBToolbarApi.IsToolbarInstalled(\'' + strCTID + '\');';
	}

    return EBToolbarApi.GetResult();
}

/************************************************/
/*		bool AddComponentByXML(strXML,strCTID)  */
/*	This function returns true if the toolbar   */
/*	with the given CTID is installed.			*/
/************************************************/		
function AddComponentByXML(strXML,strCTID)
{
	EBToolbarApi.ResetResult();
	if(_TPIHelper.GetBrowser() == "IE7")
	{
		var frameSrc = "about:blank#javascript:EBToolbarApi.AddComponentByXML(\""+strXML+"\",\"CTID="+strCTID.toUpperCase()+"\");";
		_TPIHelper.NavigateInIFrame(frameSrc);
	}
	else
	{
		location.href = 'javascript:EBToolbarApi.AddComponentByXML("'+strXML+'","CTID='+strCTID.toUpperCase()+'");';
	}
	
    return EBToolbarApi.GetResult();
}