/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||the factory||||||||||||||||||||||||||||||||copyright 2006 bartosz solowiej|||*/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||for developments that don't need the kitchen sink. treats html as a robust|||*/
/*|||factory of scripted nodes.|||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||questions? comments? praises? complaints? |||||||||||||toszter@gmail.com|||||*/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/



/*__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__
 * Convenience Objects
 *================================================================================*/
var $ = new Object();
$.id = function(node){
/* replaces document.getElementById */
	var _n = document.getElementById(node);
	_n = node ? node.nodeType && node.nodeType == 1 ? node : _n ? _n : false : false;
	return _n;
};
$.tN = function(str,par){
/* replaces document.getElementsByTagName */
	par = $.id(par);
	par = par ? par : document;
	return par.getElementsByTagName(str); 
};
$.n = function(node,par){
/* replaces document.getElementsByName */
	par = $.id(par);
	par = par ? par : document;
	return par.getElementsByName(str);
};
$.cN = function(className,par,tagName){
/* introduces document.getElementsByClassName */
	var _rgx, _n, _nodes = [];
	par = $.id(par);
	par = par ? par : document.body;
	
	_rgx = new RegExp(className);
	if (tagName) {
		_n = par.getElementsByTagName(tagName);
		for (var i=0;i<_n.length;i++){
			if (_rgx.test(_n[i].className)){
				_nodes.push(_n[i]);
			}
		}
	} else {  // THIS IS INCOMPLETE... NodeIterator is not fully supported. :(
		var _filter = function(n){
			if (n.nodeType == Node.ELEMENT_NODE && !_rgx.test(n.className)){
				return NodeFilter.FILTER_SKIP;
			}
			return NodeFilter.FILTER_ACCEPT;
		};
		var _ni = document.createNodeIterator(par, NodeFilter.SHOW_ELEMENT, null, false);
		for(var j=_ni.nextNode();j!=null;j=_ni.nextNode()){
			_nodes.push(j);
		}
		_ni.detach();								  
	}
	return _nodes;
};
$.cE = function(str){
/* replaces document.createElement */
	return document.createElement(str);
};
$.aC = function(par,chi){
/* replaces document.appendChild */
	chi = chi && chi.nodeType == 1 ? chi : chi = $.ce(chi) ? chi : false;
	if (!chi) return false;
	par = $.id(par);
	return par.appendChild(chi);
};

/*__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__
 * Event Factory
 *================================================================================*/
var event = function(elm, ev, fun) {
	if (elm && elm.addEventListener){
		elm.addEventListener(ev.replace('on',''), fun, false);
	} else if (elm && elm.attachEvent){
		return elm.attachEvent(ev, fun);
	} else {
		var r = elm['ev'] = fun;
		return r;
	}
};
event.halt = function(e){
	return e && e.preventDefault ? e.preventDefault() : event && event.preventDefault ? event.preventDefault() : false;
};



/*__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__..=='^'==..__
 * Node Factory
 *================================================================================*/
factory = new Object();
factory.init = function(){
	skott.init();
};

factory.a = function(innerH,href,target,title,alt,clas,evFunArray){
    var _a, _evF = evFunArray ? evFunArray : false;
    _a 		  = $.cE("a");
    _a.innerHTML = innerH;
    _a.href   = href ? href : "";
    _a.target = target ? target : "";
    _a.title  = title ? title : "";
    _a.alt	  = alt ? alt : "";
    _a.className = clas || "";
    _evF && _evF.length > 0 ? new event(_a,_evF[0],_evF[1]) : _evF;
    return _a;
};

/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/
/*|||||||||||||||||||||||||||||||END OF FACTORY|||||||||||||||||||||||||||||||||||*/
/*||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/