Powered By Blogger

Monday, November 29, 2010

Icons Gallery 01




Icons Gallery












A Great Soap Client Request Maker, Thanks to its Author to provide this file

/*****************************************************************************\


Javascript "SOAP Client" library

@version: 2.4 - 2007.12.21
@author: Matteo Casati - http://www.guru4.net/

Syntax to use Soap Client :-
function GetSoapResponseUpdateUserDetail(useridupdate, usernameupdate)
{
var p6 = new SOAPClientParameters();
p6.add('userId', useridupdate);
p6.add('userName', usernameupdate);
 SOAPClient.invoke("http://dummy.net/web/server.php", "getUserDetails", p6, true, GetSoapResponseUpdateUserDetail_callBack);
}

function GetSoapResponseUpdateUserDetail_callBack(r, soapResponse)
{
try
{
           var resultList = ((new XMLSerializer()).serializeToString(soapResponse));
            alert(resultList);  //Get Positive Response, if all is right
}
catch (ee)
 {          alert(ee.message);
}
}


\*****************************************************************************/

function SOAPClientParameters()
{
var _pl = new Array();
this.add = function(name, value)
{
_pl[name] = value;
return this;
}
this.toXml = function()
{
var xml = "";
for(var p in _pl)
{
switch(typeof(_pl[p]))
{
case "string":
case "number":
case "boolean":
case "object":
xml += "<" + p + ">" + SOAPClientParameters._serialize(_pl[p]) + "</" + p + ">";
break;
default:
break;
}
}
return xml;
}
}
SOAPClientParameters._serialize = function(o)
{
var s = "";
switch(typeof(o))
{
case "string":
s += o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); break;
case "number":
case "boolean":
s += o.toString(); break;
case "object":
// Date
if(o.constructor.toString().indexOf("function Date()") > -1)
{

var year = o.getFullYear().toString();
var month = (o.getMonth() + 1).toString(); month = (month.length == 1) ? "0" + month : month;
var date = o.getDate().toString(); date = (date.length == 1) ? "0" + date : date;
var hours = o.getHours().toString(); hours = (hours.length == 1) ? "0" + hours : hours;
var minutes = o.getMinutes().toString(); minutes = (minutes.length == 1) ? "0" + minutes : minutes;
var seconds = o.getSeconds().toString(); seconds = (seconds.length == 1) ? "0" + seconds : seconds;
var milliseconds = o.getMilliseconds().toString();
var tzminutes = Math.abs(o.getTimezoneOffset());
var tzhours = 0;
while(tzminutes >= 60)
{
tzhours++;
tzminutes -= 60;
}
tzminutes = (tzminutes.toString().length == 1) ? "0" + tzminutes.toString() : tzminutes.toString();
tzhours = (tzhours.toString().length == 1) ? "0" + tzhours.toString() : tzhours.toString();
var timezone = ((o.getTimezoneOffset() < 0) ? "+" : "-") + tzhours + ":" + tzminutes;
s += year + "-" + month + "-" + date + "T" + hours + ":" + minutes + ":" + seconds + "." + milliseconds + timezone;
}
// Array
else if(o.constructor.toString().indexOf("function Array()") > -1)
{
for(var p in o)
{
if(!isNaN(p)) // linear array
{
(/function\s+(\w*)\s*\(/ig).exec(o[p].constructor.toString());
var type = RegExp.$1;
switch(type)
{
case "":
type = typeof(o[p]);
case "String":
type = "string"; break;
case "Number":
type = "int"; break;
case "Boolean":
type = "bool"; break;
case "Date":
type = "DateTime"; break;
}
s += "<" + type + ">" + SOAPClientParameters._serialize(o[p]) + "</" + type + ">"
}
else // associative array
s += "<" + p + ">" + SOAPClientParameters._serialize(o[p]) + "</" + p + ">"
}
}
// Object or custom function
else
for(var p in o)
s += "<" + p + ">" + SOAPClientParameters._serialize(o[p]) + "</" + p + ">";
break;
default:
break; // throw new Error(500, "SOAPClientParameters: type '" + typeof(o) + "' is not supported");
}
return s;
}

function SOAPClient() {}

SOAPClient.username = null;
SOAPClient.password = null;

SOAPClient.invoke = function(url, method, parameters, async, callback)
{
try
{
if(async)
SOAPClient._loadWsdl(url, method, parameters, async, callback);
else
return SOAPClient._loadWsdl(url, method, parameters, async, callback);
}
catch(exx)
{
//alert(exx.message);
}
}

// private: wsdl cache
SOAPClient_cacheWsdl = new Array();

// private: invoke async
SOAPClient._loadWsdl = function(url, method, parameters, async, callback)
{
try
{
// load from cache?
var wsdl = SOAPClient_cacheWsdl[url];
if(wsdl + "" != "" && wsdl + "" != "undefined")
return SOAPClient._sendSoapRequest(url, method, parameters, async, callback, wsdl);
// get wsdl
var xmlHttp = SOAPClient._getXmlHttp();
xmlHttp.open("GET", url + "?wsdl", async);
if(async)
{
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
SOAPClient._onLoadWsdl(url, method, parameters, async, callback, xmlHttp);
}
}
xmlHttp.send(null);
if (!async)
return SOAPClient._onLoadWsdl(url, method, parameters, async, callback, xmlHttp);
}
catch(exx)
{
//alert(exx.message);
}
}
SOAPClient._onLoadWsdl = function(url, method, parameters, async, callback, req)
{
try
{
var wsdl = req.responseXML;
SOAPClient_cacheWsdl[url] = wsdl; // save a copy in cache
return SOAPClient._sendSoapRequest(url, method, parameters, async, callback, wsdl);
}
catch (exx)
{
//alert(exx.message);
}
}
SOAPClient._sendSoapRequest = function(url, method, parameters, async, callback, wsdl)
{
// get namespace
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
// build SOAP request
var sr =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Body>" +
"<" + method + " xmlns=\"" + ns + "\">" +
parameters.toXml() +
"</" + method + "></soap:Body></soap:Envelope>";
// send request
var xmlHttp = SOAPClient._getXmlHttp();
if (SOAPClient.userName && SOAPClient.password){
xmlHttp.open("POST", url, async, SOAPClient.userName, SOAPClient.password);
// Some WS implementations (i.e. BEA WebLogic Server 10.0 JAX-WS) don't support Challenge/Response HTTP BASIC, so we send authorization headers in the first request
xmlHttp.setRequestHeader("Authorization", "Basic " + SOAPClient._toBase64(SOAPClient.userName + ":" + SOAPClient.password));
}
else
xmlHttp.open("POST", url, async);
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + method;
xmlHttp.setRequestHeader("SOAPAction", soapaction);
xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
if(async)
{
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
SOAPClient._onSendSoapRequest(method, async, callback, wsdl, xmlHttp);
}
}
xmlHttp.send(sr);
if (!async)
return SOAPClient._onSendSoapRequest(method, async, callback, wsdl, xmlHttp);
}

SOAPClient._onSendSoapRequest = function(method, async, callback, wsdl, req)
{
var o = null;
var nd = SOAPClient._getElementsByTagName(req.responseXML, method + "Result");
if(nd.length == 0)
nd = SOAPClient._getElementsByTagName(req.responseXML, "return"); // PHP web Service?
if(nd.length == 0)
{
if(req.responseXML.getElementsByTagName("faultcode").length > 0)
{
if(async || callback)
o = new Error(500, req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);
else
throw new Error(500, req.responseXML.getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);
}
}
else
o = SOAPClient._soapresult2object(nd[0], wsdl);
if(callback)
callback(o, req.responseXML);
if(!async)
return o;
}
SOAPClient._soapresult2object = function(node, wsdl)
{
var wsdlTypes = SOAPClient._getTypesFromWsdl(wsdl);
return SOAPClient._node2object(node, wsdlTypes);
}
SOAPClient._node2object = function(node, wsdlTypes)
{
// null node
if(node == null)
return null;
// text node
if(node.nodeType == 3 || node.nodeType == 4)
return SOAPClient._extractValue(node, wsdlTypes);
// leaf node
if (node.childNodes.length == 1 && (node.childNodes[0].nodeType == 3 || node.childNodes[0].nodeType == 4))
return SOAPClient._node2object(node.childNodes[0], wsdlTypes);
var isarray = SOAPClient._getTypeFromWsdl(node.nodeName, wsdlTypes).toLowerCase().indexOf("arrayof") != -1;
// object node
if(!isarray)
{
var obj = null;
if(node.hasChildNodes())
obj = new Object();
for(var i = 0; i < node.childNodes.length; i++)
{
var p = SOAPClient._node2object(node.childNodes[i], wsdlTypes);
obj[node.childNodes[i].nodeName] = p;
}
return obj;
}
// list node
else
{
// create node ref
var l = new Array();
for(var i = 0; i < node.childNodes.length; i++)
l[l.length] = SOAPClient._node2object(node.childNodes[i], wsdlTypes);
return l;
}
return null;
}
SOAPClient._extractValue = function(node, wsdlTypes)
{
var value = node.nodeValue;
switch(SOAPClient._getTypeFromWsdl(node.parentNode.nodeName, wsdlTypes).toLowerCase())
{
default:
case "s:string":
return (value != null) ? value + "" : "";
case "s:boolean":
return value + "" == "true";
case "s:int":
case "s:long":
return (value != null) ? parseInt(value + "", 10) : 0;
case "s:double":
return (value != null) ? parseFloat(value + "") : 0;
case "s:datetime":
if(value == null)
return null;
else
{
value = value + "";
value = value.substring(0, (value.lastIndexOf(".") == -1 ? value.length : value.lastIndexOf(".")));
value = value.replace(/T/gi," ");
value = value.replace(/-/gi,"/");
var d = new Date();
d.setTime(Date.parse(value));
return d;
}
}
}
SOAPClient._getTypesFromWsdl = function(wsdl)
{
var wsdlTypes = new Array();
// IE
var ell = wsdl.getElementsByTagName("s:element");
var useNamedItem = true;
// MOZ
if(ell.length == 0)
{
ell = wsdl.getElementsByTagName("element");
useNamedItem = false;
}
for(var i = 0; i < ell.length; i++)
{
if(useNamedItem)
{
if(ell[i].attributes.getNamedItem("name") != null && ell[i].attributes.getNamedItem("type") != null)
wsdlTypes[ell[i].attributes.getNamedItem("name").nodeValue] = ell[i].attributes.getNamedItem("type").nodeValue;
}
else
{
if(ell[i].attributes["name"] != null && ell[i].attributes["type"] != null)
wsdlTypes[ell[i].attributes["name"].value] = ell[i].attributes["type"].value;
}
}
return wsdlTypes;
}
SOAPClient._getTypeFromWsdl = function(elementname, wsdlTypes)
{
var type = wsdlTypes[elementname] + "";
return (type == "undefined") ? "" : type;
}
// private: utils
SOAPClient._getElementsByTagName = function(document, tagName)
{
try
{
// trying to get node omitting any namespaces (latest versions of MSXML.XMLDocument)
return document.selectNodes(".//*[local-name()=\""+ tagName +"\"]");
}
catch (ex) {}
// old XML parser support
return document.getElementsByTagName(tagName);
}
// private: xmlhttp factory
SOAPClient._getXmlHttp = function()
{
try
{
if(window.XMLHttpRequest)
{
var req = new XMLHttpRequest();
// some versions of Moz do not support the readyState property and the onreadystate event so we patch it!
if(req.readyState == null)
{
req.readyState = 1;
req.addEventListener("load",
function()
{
req.readyState = 4;
if(typeof req.onreadystatechange == "function")
req.onreadystatechange();
},
false);
}
return req;
}
if(window.ActiveXObject)
return new ActiveXObject(SOAPClient._getXmlHttpProgID());
}
catch (ex) {}
throw new Error("Your browser does not support XmlHttp objects");
}
SOAPClient._getXmlHttpProgID = function()
{
if(SOAPClient._getXmlHttpProgID.progid)
return SOAPClient._getXmlHttpProgID.progid;
var progids = ["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
var o;
for(var i = 0; i < progids.length; i++)
{
try
{
o = new ActiveXObject(progids[i]);
return SOAPClient._getXmlHttpProgID.progid = progids[i];
}
catch (ex) {};
}
throw new Error("Could not find an installed XML parser");
}

SOAPClient._toBase64 = function(input)
{
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;

do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);

enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;

if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}

output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
keyStr.charAt(enc3) + keyStr.charAt(enc4);
} while (i < input.length);

return output;
}

HTTP Request and Response Observer

var httpRequestObserver =
{
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request") {
var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
  var WebAddress = httpChannel.originalURI.spec;
   },

get observerService() {
return Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
},

register: function()
{
this.observerService.addObserver(this, "http-on-modify-request", false);
},

QueryInterface: function(aIID){
if (aIID.equals(Ci.nsIObserver) || aIID.equals(Ci.nsISupports))
{
return this;
}
throw Components.results.NS_NOINTERFACE;
},
unregister: function()
{
this.observerService.removeObserver(this, "http-on-modify-request");
}
};

WEB Progress Listener

  1. const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;  
  2. const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;  
  3. var myListener =  
  4. {  
  5.   QueryInterface: function(aIID)  
  6.   {  
  7.    if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||  
  8.        aIID.equals(Components.interfaces.nsISupportsWeakReference) ||  
  9.        aIID.equals(Components.interfaces.nsISupports))  
  10.      return this;  
  11.    throw Components.results.NS_NOINTERFACE;  
  12.   },  
  13.   
  14.   onStateChange: function(aWebProgress, aRequest, aFlag, aStatus)  
  15.   {  
  16.    // If you use myListener for more than one tab/window, use  
  17.    // aWebProgress.DOMWindow to obtain the tab/window which triggers the state change  
  18.    if(aFlag & STATE_START)  
  19.    {  
  20.      // This fires when the load event is initiated  
  21.    }  
  22.    if(aFlag & STATE_STOP)  
  23.    {  
  24.      // This fires when the load finishes  
  25.    }  
  26.   },  
  27.   
  28.   onLocationChange: function(aProgress, aRequest, aURI)  
  29.   {  
  30.    // This fires when the location bar changes; i.e load event is confirmed  
  31.    // or when the user switches tabs. If you use myListener for more than one tab/window,  
  32.    // use aProgress.DOMWindow to obtain the tab/window which triggered the change.  
  33.   },  
  34.   
  35.   // For definitions of the remaining functions see related documentation  
  36.   onProgressChange: function(aWebProgress, aRequest, curSelf, maxSelf, curTot, maxTot) { },  
  37.   onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage) { },  
  38.   onSecurityChange: function(aWebProgress, aRequest, aState) { }  
  39. }  

Event Listeners for Tabbed Browser

var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", InitializeFunction , false);
container.addEventListener("TabClose", unloadingFunctionTab , false);
container.addEventListener("TabSelect", tabSelectedFunction , false);

Get Current Geolocation

navigator.geolocation.getCurrentPosition(displayLocation);

function displayLocation(loc)
{

var City= loc.address.city;
var State =loc.address.state;
var Country =loc.address.country;
var County = loc.address.county;
var Street = loc.address.street;
var Latitude= loc.coords.latitude
var Longitude = loc.coords.longitude
var Premises = loc.address.premises;
var Region = loc.address.region;
var Country_Code = loc.address.street.countrycode;
var Postal_Code = loc.address.postalcode;

alert("Your location:-"
+"\n---------------------------------"
+"\nLatitude:"+ Latitude
+"\nLongitude:"+ Longitude
+"\nStreet:"+ Street
+"\nPremises:"+ Premises
+"\nCity:"+City
+"\nCounty:"+County
+"\nRegion:"+ Region
+"\nState:"+State
+"\nCountry:"+Country);
}

Get Current Tab URL

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);

var currenturl = mainWindow.getBrowser().selectedBrowser.contentWindow.location.host;

Write to Windows Registry

var wrk = Components.classes["@mozilla.org/windows-registry-key;1"].createInstance(Components.interfaces.nsIWindowsRegKey);
wrk.open(wrk.ROOT_KEY_CURRENT_USER, "SOFTWARE\\Dummy", wrk.ACCESS_WRITE);

wrk.writeStringValue("DummyKeyName","DummyValue");
wrk.close();

Read Value from Windows Registry

var wrk = Components.classes["@mozilla.org/windows-registry-key;1"].createInstance(Components.interfaces.nsIWindowsRegKey);
wrk.open(wrk.ROOT_KEY_CURRENT_USER, "SOFTWARE\\Dummy", wrk.ACCESS_READ);
var DummyValue = wrk.readStringValue("DummyKeyName");
wrk.close();

Write to XML File using XPI

function Dummy_WriteCityNameToXML()
{
try
{
var CityName = document.getElementById("Dummy002").getAttribute("label");

const DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1","nsIProperties");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
var path=(new DIR_SERVICE()).get("ProfD", Components.interfaces.nsIFile).path;
if (path.search(/\\/) != -1) { path = path + "\\"; } else { path = path + "/";}
path = path+"extensions\\"+XPI_ID+"\\xmls\\Dummysettings.xml";
file.initWithPath(path);

var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var detailoutput = sis.read( sis.available() );
is.close();

var OtherCompleteTagText = detailoutput;
var iStartIndex, iEndIndex;

iStartIndex=OtherCompleteTagText.indexOf("<lastSelectedCity");
OtherCompleteTagText=OtherCompleteTagText.substring(iStartIndex);
iEndIndex=OtherCompleteTagText.indexOf('/>');
OtherCompleteTagText=OtherCompleteTagText.substring(0, iEndIndex+2);

var OldStyleText = OtherCompleteTagText;
var NewStyleText = "<lastSelectedCity cityname='"+CityName+"'/>";

detailoutput = detailoutput.replace(OldStyleText, NewStyleText);

var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance( Components.interfaces.nsIFileOutputStream );
outputStream.init( file, 0x04 | 0x08 | 0x20, 420, 0 );
var output = detailoutput;
var result = outputStream.write(detailoutput, detailoutput.length );
outputStream.close();
}
catch(ee)
{
  alert(ee.message);
}
}

Dummy Function for XML Parsing

var Dummy_obDummyOMParser = new DOMParser();
var Dummy_objXMLDOMParseData = Dummy_obDOMParser.parseFromString(ToolbarXMLSFileContent,"text/xml"); // See Read File Example in this website
var Dummy_ControlList=Dummy_objXMLDOMParseData.childNodes;
var Dummy_MainTag = Dummy_ControlList[0];
var Dummy_MainTag = Dummy_MainTag.childNodes[1];
var Dummy_Current_Element_id, Dummy_Current_Element_class, Dummy_Current_Element_type;
var Dummy_Current_Element_name, Dummy_Current_Element_imagepath, Dummy_Current_Element_tooltiptext;
var Dummy_Current_Element_oncommand, Dummy_Current_Element;
var Dummy_Current_Toolbar = document.getElementById("Dummytoolbartoolbar");

if (Dummy_MainTag.nodeType == 1)
{
for (i=0;i<Dummy_MainTag.childNodes.length;i++)
{
if (Dummy_MainTag.childNodes[i].nodeType == 1)
{
for (counterb =0 ; counterb < Dummy_MainTag.childNodes[i].attributes.length ; counterb++)
{
if (Dummy_MainTag.childNodes[i].attributes[counterb].nodeType == 2)
{
if (Dummy_MainTag.childNodes[i].attributes[counterb].nodeName == 'id')
{
Dummy_Current_Element_id = Dummy_MainTag.childNodes[i].attributes[counterb].nodeValue;
}

Add Bookmark to Firefox Browser

function Dummy_Execute_Bookmark()
{
try
{
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
var currenturl = mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;
if (currenturl != "about:blank")
{
var currentTitle = mainWindow.getBrowser().selectedBrowser.contentTitle;
var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(currenturl, null, null);
if (!bmsvc.isBookmarked(uri)) {
bmsvc.insertBookmark(bmsvc.bookmarksMenuFolder, uri, bmsvc.DEFAULT_INDEX, currentTitle);
}
alert("Page bookmarked successfully");
}

}
catch (ee)
{
alert(ee.message);
}
}

Create Chevron using example function

function Dummy_ResizeToolbar()
{
try
{
var Dummy_Pos_Last_Element_Pos_X, Dummy_Pos_Last_Element_Pos_Y, countResize;
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);

var Dummy_FX_Window_Width = mainWindow.innerWidth ;

var Dummy_ToolbarPaletteObject = document.getElementById("Dummytoolbar");

var Dummy_ToolbarPalette_CountChild = Dummy_ToolbarPaletteObject.childNodes.length;

// Set Hidden Property to True
for (countResize = 0; countResize < Dummy_ToolbarPalette_CountChild ; countResize++)
{
Dummy_ToolbarPaletteObject.childNodes[countResize].setAttribute("hidden", "false");
if (Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("label") == ">>")
{Dummy_ToolbarPaletteObject.removeChild(Dummy_ToolbarPaletteObject.childNodes[countResize]);}
if (Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("id") == "Dummy_Chevron_Menubar")
{Dummy_ToolbarPaletteObject.removeChild(Dummy_ToolbarPaletteObject.childNodes[countResize]);}
}

// Set Hidden Property to True
Dummy_ToolbarPalette_CountChild = Dummy_ToolbarPaletteObject.childNodes.length ;
var Dummy_ChevronMenubar = document.createElement('menubar');
Dummy_ChevronMenubar.setAttribute("id","Dummy_Chevron_Menubar");
var Dummy_ChevronToolbarButtonObj = document.createElement('toolbarbutton');
Dummy_ChevronToolbarButtonObj.setAttribute("type","menu");
Dummy_ChevronToolbarButtonObj.setAttribute("label",">>");
var Dummy_ActivateChevron =0 ;
var Dummy_ChevronMenuPopupObj = document.createElement("menupopup");
for (countResize = 0; countResize < Dummy_ToolbarPalette_CountChild; countResize++)
{
var Dummy_Chevron_ItemList_Name , Dummy_Chevron_ItemList_ToolTip;
var Dummy_Chevron_ItemList_Command, Dummy_ChevronPopupMenuList, Dummy_Chevron_ItemList_Image;
Dummy_Pos_Last_Element_Pos_X = Dummy_ToolbarPaletteObject.childNodes[countResize].boxObject.x + 150;
if (Dummy_Pos_Last_Element_Pos_X > Dummy_FX_Window_Width)
{
Dummy_Chevron_ItemList_Name = Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("label");
Dummy_Chevron_ItemList_ToolTip = Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("tooltiptext");
Dummy_Chevron_ItemList_Command = Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("oncommand");
Dummy_Chevron_ItemList_Image = Dummy_ToolbarPaletteObject.childNodes[countResize].getAttribute("image");

var Dummy_Check_ToolTip_Item = Dummy_Chevron_ItemList_ToolTip.toLowerCase();
var Dummy_ChevronPopupMenuList = document.createElement('menuitem');

if (countResize == 0)
Dummy_ChevronPopupMenuList.setAttribute("oncommand", "Dummy_LoadUrl('http://www.JustDial.com');");
else
Dummy_ChevronPopupMenuList.setAttribute("oncommand", Dummy_Chevron_ItemList_Command);

if (Dummy_Chevron_ItemList_Name == "")
Dummy_ChevronPopupMenuList.setAttribute("label", " "+Dummy_Chevron_ItemList_ToolTip);
else
Dummy_ChevronPopupMenuList.setAttribute("label", " "+Dummy_Chevron_ItemList_Name);

Dummy_ChevronPopupMenuList.setAttribute("class","menuitem-iconic");
Dummy_ChevronPopupMenuList.setAttribute("image",Dummy_Chevron_ItemList_Image);

if (Dummy_ToolbarPaletteObject.childNodes[countResize].nodeName == "toolbarbutton" )
{
Dummy_ChevronMenuPopupObj.appendChild(Dummy_ChevronPopupMenuList);
}

Dummy_ToolbarPaletteObject.childNodes[countResize].setAttribute("hidden", "true");
Dummy_ActivateChevron++;
}
}

Dummy_ChevronToolbarButtonObj.appendChild(Dummy_ChevronMenuPopupObj);
Dummy_ChevronMenubar.appendChild(Dummy_ChevronToolbarButtonObj);
if (Dummy_ActivateChevron > 0)
{
Dummy_ToolbarPaletteObject.appendChild(Dummy_ChevronMenubar);
}
}

catch(ee)
{
alert(ee.message);
}
}
// Add event listener
window.addEventListener("load", Dummy_ResizeToolbar, false);
window.addEventListener("resize", Dummy_ResizeToolbar, false);

Read a File (For Example Here : XML File )

DummyGUID = "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";

const DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1","nsIProperties");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
var path=(new DIR_SERVICE()).get("ProfD", Components.interfaces.nsIFile).path;
if (path.search(/\\/) != -1) { path = path + "\\"; } else { path = path + "/";}
  path = path+"extensions\\"+DummyGUID+"\\xmls\\xmlsfilenm.xml";
file.initWithPath(path);

var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
  var detailoutput = sis.read( sis.available() ); //Detailoutput string will contain all texts
is.close();

// Now , you can perform XML Parsing using DOM Parser, read XML Parsing for complete tutorial

Function to Uninstall Toolbar

DummyGUID = {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX};
function JD_uninstall()
{
      try
      {
            if (confirm("Are you sure you want to uninstall Dummy Toolbar?"))
            {
                      var objExtensionManager = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
                      if(objExtensionManager.uninstallExtension)
                      {
                               objExtensionManager.start(true);
                               objExtensionManager.uninstallExtension(DummyGUID);
                               alert("Please restart your browser to complete uninstallation");
                      }
                      else
                     {
                               objExtensionManager.uninstallItem(DummyGUID);
                               alert("Please restart your browser to complete uninstallation");
                     }
                     close();
                     return;
            }
      }
      catch(ee)
     {
           alert(ee.message);
      }
}

Execute external file from XPI (Example: Executing Skype with callTo Mode)

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
var wrk = Components.classes["@mozilla.org/windows-registry-key;1"].createInstance(Components.interfaces.nsIWindowsRegKey);
wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, "SOFTWARE\\Skype\\Phone", wrk.ACCESS_READ);
var SkypeEXEPath = wrk.readStringValue("SkypePath");
wrk.close();
file.initWithPath(SkypeEXEPath);
process.init(file);
var args = ["/callto:+91-0000000000"];
process.run(false, args, args.length);

Redirect to a Url with GET Method

window._content.document.location=WebLink;
window.content.focus();

Redirect to a Url with POST Method

const Cc = Components.classes;
const Ci = Components.interfaces;
var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream);

var URL= "http://www.example.com/search/search.php";
var dataString="srch=true"+"&searchtype="+searchTerms;

if ("data" in stringStream)
stringStream.data = dataString;
else
stringStream.setData(dataString, dataString.length);
var postData = Cc["@mozilla.org/network/mime-input-stream;1"].createInstance(Ci.nsIMIMEInputStream);
postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
postData.addContentLength = true;
postData.setData(stringStream);
loadURI(URL,null,postData);