/**
 * jQuery extension package 1
 *
 * $.pageSize()
 * $.pageScroll()
 * $().x()
 * $().y()
 *
 * @name jquery-ext1.js
 * @author Berea Cezar-Mihail
 * @version 0.1
 * @date July 01, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Berea Cezar-Mihail
 */
(function($){
	/**
	 * getPageSize() by quirksmode.com
	 *
	 * @return Array Return an array with page width, height and window width, height
	 */
	$.getPageSize = function(){
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			if (document.documentElement.clientWidth) {
				windowWidth = document.documentElement.clientWidth;
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}
				// for small pages with total height less then height of the viewport
		if (yScroll < windowHeight) {
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		}
				// for small pages with total width less then width of the viewport
		if (xScroll < windowWidth) {
			pageWidth = xScroll;
		} else {
			pageWidth = windowWidth;
		}
		arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
		return arrayPageSize;
	}

	/**
	 * getPageScroll() by quirksmode.com
	 *
	 * @return Array Return an array with x,y page scroll values.
	 */
	$.getPageScroll = function() {
		var xScroll, yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;
		}
		arrayPageScroll = new Array(xScroll,yScroll)
		return arrayPageScroll;
	};

	$.fn.x = function(n) {
		var result = null;
		var origSet = this;
		this.each(function() {
			var o = this;
			if (n === undefined) {
				var x = 0;
				if (o.offsetParent) {
					while (o.offsetParent) {
						x += o.offsetLeft;
						o = o.offsetParent;
					}
				}
				if (result === null) {
					result = x;
				} else {
					result = Math.min(result, x);
				}
			} else {
				o.style.left = n + 'px';
				result = origSet;
			}
		});
		return result;
	};

	$.fn.y = function(n) {
		var result = null;
		var origSet = this;
		this.each(function() {
			var o = this;
			if (n === undefined) {
				var y = 0;
				if (o.offsetParent) {
					while (o.offsetParent) {
						y += o.offsetTop;
						o = o.offsetParent;
					}
				}
				if (result === null) {
					result = y;
				} else {
					result = Math.min(result, y);
				}
			} else {
				o.style.top = n + 'px';
				result = origSet;
			}
		});
		return result;
	};
})(jQuery);


