//# PB Toolbox Base Utils

//# CSS


function toolbox_style_toggleDisplay(obj) {
	if (obj.style.display=='none') {
		obj.style.display = '';
	} else {
		obj.style.display='none';
	}
}

//# DOM

function toolbox_nodes_getFirstOf(obj,ntype) {
	if (obj && obj!=undefined) {
		chElements = obj.getElementsByTagName(ntype);
		return chElements[0];
	}
}

function toolbox_nodes_getActiveLink(root,url) {
	var refList = root.getElementsByTagName("a");
	var i = 0;
	while(refList[i]) {
		if (refList[i].href == url) {
			return refList[i];
		}
		i++;
	}

}

function toolbox_nodes_getFirstParentByType(root,ntype) {
	var p = root.parentNode;
	while(p!=undefined && p.nodeName!=ntype) {
		p = p.parentNode;
	}
	if (p==undefined) {
		return root.parentNode;
	} else {
		return p;
	}

}

function toolbox_toggleSubCheckboxes(obj) {
	var root = toolbox_nodes_getFirstParentByType(obj,'LI');
	var togstate = obj.checked;
	//alert(togstate);
	toolbox_checkSubCheckboxes(root,togstate);
	obj.disabled = false;
}

function toolbox_checkSubCheckboxes(obj,togstate) {
	var i=0;
	var al='';
	//obj =
	//obj = document.getElementById(objID);
	var colObj = obj.childNodes;
	while(colObj[i]) {
		colName = new String(colObj[i].nodeName);
		al+=colName+'\n'

		if (colName == 'INPUT') {
			//alert(colName);
			colObj[i].checked = togstate;

			colObj[i].disabled=togstate;

		}
		if (colObj[i].childNodes.length > 0) {
			toolbox_checkSubCheckboxes(colObj[i],togstate);
		}
		i++;
	}
	//alert(al);
}

function stripQueryString(uri) {
	var newuri = parseUri(uri);
	return newuri.protocol+'://'+newuri.authority+newuri.path;
}

function parseUri (str) {
	var	o   = parseUri.options,
	m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
	uri = {},
	i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};





