var Contact = new Class({
	
	Implements: [Options, Events],
	
	options: {
		zIndex: 1,
		moveDuration: 500,
		opacityDuration: 500
	},
	
	initialize: function(contactContainer, options) {
		var ie6 = Browser.Engine.trident4;
		var contactContainer = $(contactContainer);
		this.setOptions(options);
		var imgs = contactContainer.getElements("img");
		var contact = imgs[0].setStyle("z-index", this.options.zIndex);
		if(!ie6) {
			contact.setOpacity(1);
		}
		contact.originalTop = contact.getStyle("top").toInt();
		var contactOpen = imgs[1].setStyle("z-index", this.options.zIndex + 1);
		if(!ie6) {
			contactOpen.setOpacity(0);
		}
		
		// FX
		var contactFx = new Fx.Tween(contact, {
			duration: this.options.moveDuration,
			"link": "cancel"
		});
		var contactOpentFx = new Fx.Tween(contactOpen, {
			duration: this.options.opacityDuration,
			"link": "cancel"
		});
		var chainFx;
		contactContainer.addEvents({
			"mouseenter": function() {
				if(chainFx) {
					chainFx.clearChain();
				}
				chainFx = contactFx.start("top", 0).chain(function() {
					ie6 ? contactOpentFx.start("visibility", "visible") : contactOpentFx.start("opacity", 1);
				});
			},
			"mouseleave": function() {
				if(chainFx) {
					chainFx.clearChain();
				}
				chainFx = (ie6 ? contactOpentFx.start("visibility", "hidden") : contactOpentFx.start("opacity", 0)).chain(function() {
					contactFx.start("top", contact.originalTop);
				});
			},
			"click": function() {
				this.fireEvent("onContactClick");
			}.bind(this)
		});
	}
	
});