var Tabs = Class.create({
	initialize: function(list, tabs, options) {
		this.items	= list;
		this.tabs	= tabs;

		this.options = Object.extend({
			selected: this.tabs.first().id
		}, options || {});

		if (this.items) {
            this.items.invoke('observe', 'click', this.click.bind(this));
        }

		this.selectTab(this.options.selected);
	},

	click: function(event) {
		event.stop();

		var item = event.findElement('a');

		this.selectTab(item.rel);
	},

	selectTab: function(item) {
		this.tabs.invoke('hide');
		this.items.invoke('removeClassName', 'selected');

		$(item).show();
		this.items.find((function(elm) { return elm.rel == item }).bind(this)).addClassName('selected');
	}
});

Element.addMethods({
	setWidth: function (element, width) {
		$(element).setStyle({width: width + 'px'});
		return Element.extend(element);
    },

	setHeight: function (element, height) {
		$(element).setStyle({height: height + 'px'});
		return Element.extend(element);
    },

	setTop: function (element, top) {
		$(element).setStyle({top: top + 'px'});
		return Element.extend(element);
    },

	getTop: function (element, top) {
		return parseInt($(element).getStyle('top'));
    },

	setLeft: function (element, left) {
		$(element).setStyle({left: left + 'px'});
		return Element.extend(element);
    },

	center: function (element) {
		element.setStyle({marginLeft: -(Math.round(element.getWidth()) / 2) + 'px'});
		return Element.extend(element);
    }
});

function getPageSize() {
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) {
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else {
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }

	var windowWidth, windowHeight;

	if (self.innerHeight) {
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) {
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }

	if (yScroll < windowHeight) {
		pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }

	if (xScroll < windowWidth) {
		pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }

	objPageSize = {page_width: pageWidth, page_height: pageHeight, window_width: windowWidth, window_height: windowHeight};

	return objPageSize;
}

function getPageScroll() {
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        yScroll = document.documentElement.scrollTop;
    } else if (document.body) {
        yScroll = document.body.scrollTop;
    }

	return yScroll;
}

function userAgent() {
	var return_, UA;
	return_ = 'unknown';
	UA = navigator.userAgent;

	if ((/Konqueror|Safari|KHTML/.test(UA))) {
		return_ = 'KHTML';
    }
	if ((/Gecko/.test(UA)) && (return_ != 'KHTML')) {
		return_ = 'Gecko';
    }
	if ((/Opera/.test(UA))) {
		return_ = 'Opera';
    }
	if ((/MSIE/.test(UA)) && (return_ != 'Opera')) {
		return_ = 'MSIE';
    }
	if ((return_ == 'MSIE') && !((/MSIE 6\./.test(UA)) && (return_ != 'Opera'))) {
		return_ = 'MSIE7';
    }
	return return_;
}

document.observe('dom:loaded', function() {
	// Toggle default text for text fields
	$$('.toggle').each(function (elm) {
		elm.observe('focus', function (event) {
			elm.up('div').removeClassName('error');
			if (elm.value == elm.title) {
				elm.up('div').addClassName('focus');
				elm.value = '';
			}
		}).observe('blur', function (event) {
			if (elm.value == '') {
				elm.up('div').removeClassName('focus');
				elm.value = elm.title;
			}
		});
	});
	
	// Hover for different elements on iedie
	$$('.do-hover').each(function(elm) {
		elm.observe('mouseover', function() {
			elm.addClassName('hover');
		}).observe('mouseout', function() {
			elm.removeClassName('hover');
		});
	});
});
