var jss = {};
jss.util = {};

jss.keywords = {
	jssType: "jssType",
	jssSkin: "jssSkin"
};


/* jss.constants */
jss.constants = {};

jss.constants.node = {
	ELEMENT_NODE: 1,
	ATTRIBUTE_NODE: 2,
	TEXT_NODE: 3,
	CDATA_SECTION_NODE: 4,
	ENTITY_REFERENCE_NODE: 5,
	ENTITY_NODE: 6,
	PROCESSING_INSTRUCTION_NODE: 7,
	COMMENT_NODE: 8,
	DOCUMENT_NODE: 9,
	DOCUMENT_TYPE_NODE: 10,
	DOCUMENT_FRAGMENT_NODE: 11,
	NOTATION_NODE: 12
};



function $(strElement) {
	return document.getElementById(strElement);
}

function $$(oEvent) {
	var oTarget;
	if (!oEvent) { var oEvent = window.event; }
	
	oTarget = oEvent.target ? oEvent.target : oEvent.srcElement;
	
	if (oTarget.nodeType == jss.constants.node.TEXT_NODE) { oTarget = oTarget.parentNode; }
	return oTarget;
}


// Add an event
function $$add(obj, type, fn) {
    if (obj.addEventListener) { obj.addEventListener(type, fn, false); }
    else if(obj.attachEvent) {
        obj["e" + type + fn] = fn;
        obj[type + fn] = function() { obj["e" + type + fn ] (window.event); }
        obj.attachEvent("on" + type, obj[type + fn]);
    }
}

// Remove an event
function $$remove(obj, type, fn) {
  if (obj.removeEventListener) { obj.removeEventListener(type, fn, false); }
  else if(obj.detachEvent) {
    obj.detachEvent("on" + type, obj[type + fn]);
    obj[type + fn] = null;
    obj["e" + type + fn] = null;
  }
}



String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }
String.prototype.ltrim = function() { return this.replace(/^\s+/, ""); }
String.prototype.rtrim = function() { return this.replace(/\s+$/, ""); }
