
var	  gSProxyRdfDataSouce		= "rdf:local-store";
const gSProxyRdfRoot			= "http://mozilla.org/package/gproxy/rdf/all";
const gSProxyRdfNodeUriRoot		= "http://mozilla.org/package/gproxy/rdf"
const gSProxyRdfNodeId			= gSProxyRdfNodeUriRoot+ "#id";
const gSProxyRdfNodeName		= gSProxyRdfNodeUriRoot+ "#name";
const gSProxyRdfNodeProxy		= gSProxyRdfNodeUriRoot+ "#proxy";

const ggproxy_Version	= "1.62";
const ggproxy_DownloadSite	= "http://gpass1.com/";

var	gSProxyStrBundle = null;

var ggproxy_options = new Array();
	ggproxy_options['networkProxyType']				= "network.proxy.type";
	ggproxy_options['networkProxyHTTP']				= "network.proxy.http";
	ggproxy_options['networkProxyHTTP_Port']		= "network.proxy.http_port";
	ggproxy_options['networkProxyHTTPShare']		= "network.proxy.share_proxy_settings";
	ggproxy_options['networkProxySSL']				= "network.proxy.ssl";
	ggproxy_options['networkProxySSL_Port']			= "network.proxy.ssl_port";
	ggproxy_options['networkProxyFTP']				= "network.proxy.ftp";
	ggproxy_options['networkProxyFTP_Port']			= "network.proxy.ftp_port";
	ggproxy_options['networkProxyGopher']			= "network.proxy.gopher";
	ggproxy_options['networkProxyGopher_Port']		= "network.proxy.gopher_port";
	ggproxy_options['networkProxySOCKS']			= "network.proxy.socks";
	ggproxy_options['networkProxySOCKS_Port']		= "network.proxy.socks_port";
	ggproxy_options['networkProxySOCKSVersion']		= "network.proxy.socks_version";
	ggproxy_options['networkProxyNone']				= "network.proxy.no_proxies_on";
	ggproxy_options['networkProxyAutoconfigURL']	= "network.proxy.autoconfig_url";
	
var ggproxy_options_defaults = new Array();
	ggproxy_options_defaults['networkProxyType']			= 2;
	ggproxy_options_defaults['networkProxyHTTP']			= "127.0.0.1";
	ggproxy_options_defaults['networkProxyHTTP_Port']		= 8000;
	ggproxy_options_defaults['networkProxyHTTPShare']		= false;
	ggproxy_options_defaults['networkProxySSL']			 	= "";
	ggproxy_options_defaults['networkProxySSL_Port']		= 0;
	ggproxy_options_defaults['networkProxyFTP']				= "";
	ggproxy_options_defaults['networkProxyFTP_Port']		= 0;
	ggproxy_options_defaults['networkProxyGopher']			= "";
	ggproxy_options_defaults['networkProxyGopher_Port']		= 0;
	ggproxy_options_defaults['networkProxySOCKS']			= "127.0.0.1";
	ggproxy_options_defaults['networkProxySOCKS_Port']		= 8000;
	ggproxy_options_defaults['networkProxySOCKSVersion']	= 5;
	ggproxy_options_defaults['networkProxyNone']			= "localhost, 127.0.0.1";
	ggproxy_options_defaults['networkProxyAutoconfigURL']	= "";
	
/*
* Global Functions
*/
	//Get String Bundle
	function gproxy_getString(sKey){
		try{
		
			if(gSProxyStrBundle == null){
				var oBundle			= Components.classes['@mozilla.org/intl/stringbundle;1'].getService(Components.interfaces.nsIStringBundleService);
				gSProxyStrBundle	= oBundle.createBundle('chrome://gproxy/locale/locale.properties');
			}
			
			return gSProxyStrBundle.GetStringFromName(sKey);
				
		}catch(err){}
		
		return "";
	}
	
	// Focus Opener
	function gproxy_openerFocus(){
		try{
			if(opener != null && opener.focus != null){
				opener.focus();
			}
		} catch(err) { }
	}
	
	//Is string empty
	function gproxy_isEmpty(str){
		var oRegExp = new RegExp("([^\\s])", "g");
		
		if(str == "")
			return true;
		
		return !oRegExp.test(str);
	}
	
	// Does this sValue exist in oList
	function gproxy_existsInList(oList, sValue){
		
		for(var i = 0; i < oList.getRowCount(); i++){
			if(oList.getItemAtIndex(i).value == sValue){
				return true;
			}
		}
		
		return false;
	}
	
	// Trims space from both sides of str
	function gproxy_trim(str){
		str	= str.replace(new RegExp("^[\\s\\n\\r]*", "g"), "");
		str	= str.replace(new RegExp("[\\s\\n\\r]*$", "g"), "");
		
		return str;
	}
	
	// Splits a domain or IP from it's port number
	//	returns array[1]
	//		array[0] = (String) Domain or IP
	//		array[1] = (String) Port Number	
	function gproxy_splitDomain(sDomain){
		var aOut	 = new Array();
		var iPort	= -1;
		
		if( (iPort = sDomain.indexOf(":")) > -1){
			aOut[0] = sDomain.substring(0, iPort);
			aOut[1] = sDomain.substring(iPort + 1);
		}
		else{
			aOut[0] = sDomain;
			aOut[1] = "80";
		}
		
		return aOut;
	}
	
	// Returns if str is valid domain or IP address
	function gproxy_isValidDomain(str){
		
		var oValidDomain = new RegExp("^[a-zA-Z0-9][a-zA-Z0-9-\\.:]{0,63}[a-zA-Z0-9]?$", "i");
		
		return oValidDomain.test(str);
	}
	
/*
* Debug Functions
*/
	//Get Properties for an object
	function gproxy_debug_getProps(obj){
		var props = "";
		var i = -1;
		for(prop in obj){
			i++;
			props += prop + " | ";
			
			if(i > 3){
				i = -1;
				props += "\n";
			}
		}
		alert(props);
	}
