
/*
Array.js
*/

p = Array.prototype;

p.indexOf = function ( find ) {
	for( var i = this.length - 1; i >= 0 && this[ i ] != find; i-- )
		{}

	return i;
}

p.has = function ( find ) {
	return ( this.indexOf( find ) >= 0 );
}


/*
document.js
*/

document.getTagsByClassName = function (sTagName, sClassName) {
	return Element_getTagsByClassName(this, sTagName, sClassName);
}

Element_getTagsByClassName = function (elem, sTagName, sClassName) {
	var tags = elem.getElementsByTagName(sTagName);

	var tagsReturn = new Array();

	var regExp = new RegExp('\\b' + sClassName + '\\b');

	for(var iTag = 0; iTag < tags.length; iTag++) {
		var tag = tags[iTag];

		if( regExp.test(tag.className) ) {
			tagsReturn.push(tag);
			//updated by Abel to omit the push method which bombs in IE5
			//tagsReturn[tagsReturn.length] = tag;
		}
	}

	return tagsReturn;
}



/*
ie.js
*/

function offsetsLeft( elem ) {
	var iOffset = 0;

	for( ; elem; elem = elem.offsetParent ) {
		iOffset += elem.offsetLeft;
	}

	return iOffset;
}

function offsetsTop( elem ) {
	var iOffset = 0;

	for( ; elem; elem = elem.offsetParent ) {
		iOffset += elem.offsetTop;
	}

	return iOffset;
}



/*
debug.js
*/

function list( array, elem ) {
	var body = document.body;
	var htmlRoot = document.documentElement;

	var sList = '';

	for( var i = 0; i < array.length; i++ ) {
		sList += array[ i ] + '=';
		if( array[ i ].indexOf( '.' ) == 0 )
			sList += eval( 'elem' + array[ i ] );
		else
			sList += eval( array[ i ] );

		sList += '\n';
	}

	return sList;
}


/*
		list(
			[
				'event.offsetX',
				'event.clientX',
				'htmlRoot.scrollLeft',
				'htmlRoot.scrollWidth',
				'htmlRoot.offsetWidth',
				'htmlRoot.clientWidth',
				'body.scrollLeft',
				'body.scrollWidth',
				'body.offsetWidth',
				'body.clientWidth',
				'body.offsetLeft',
				'body.clientLeft',
				'a.offsetLeft',
				'a.clientLeft',
				'offsetsLeft( elem )'
			]
			, a
		);
*/

/*
		alert(
			list(
				[
					'event.y',
					'event.offsetY',
					'event.clientY',
					'htmlRoot.scrollTop',
					'htmlRoot.scrollHeight',
					'htmlRoot.offsetHeight',
					'htmlRoot.clientHeight',
					'body.scrollTop',
					'body.scrollHeight',
					'body.offsetHeight',
					'body.clientHeight',
					'body.offsetTop',
					'body.clientTop',
					'offsetsTop( elem )'
				]
				, a
			)
		);
*/


