//<--
/*
	@name: Traveler's Coffee
	@author: SWAT (Rostovtsev Ruslan)
	@url: http://www.jsysteam.ru
	@version: 1.0.0

*/



var MooZoom = new Class({
	Implements: Options,

	elements: null,
	options: {
		linkSelector: ".mzoom",
		imageSelector: "img",
		imageRoot: "/bitrix/templates/home/images/",
		transition: Fx.Transitions.linear.easeOut,
		duration: 250,
		close: "top-left"
	},

	initialize: function(options) {
		this.setOptions(options);
		if (this.options.imageRoot[this.options.imageRoot.length-1] != "/")
			this.options.imageRoot += "/";

		this.elements = document.getElements(this.options.linkSelector);
		this.elements.each(function(a) {
			//a.getElements(this.options.imageSelector).each(function(img) {
				this.setupImage(a, a);
			//}.bind(this));
		}.bind(this));
	},

	setupImage: function(a, img) {
		var href = a.getProperty("href");
		//a.setProperty("href", null);
		//a.setStyle("cursor", "pointer");

		var container = new Element("img", {
			src: href,
			styles: {
				"opacity": 0,
				"top": -99999,
				"left": -99999,
				"position": "absolute",
				"cursor": "pointer",
				"border": "1px solid #000",
				"z-index": 999
			}
		}).inject(document.body);

		if (this.options.close) {
			var close = new Element("img", {
				src: this.options.imageRoot+"moozoom_close.png",
				styles: {
					"opacity": 0,
					"top": -99999,
					"left": -99999,
					"position": "absolute",
					"cursor": "pointer",
					"z-index": 999
				}
			}).inject(document.body); 
		}

		var bigCoords = null;
		var smallCoords = null;

		a.addEvent("click", function(e) {

			e.stop(); 
			if (!bigCoords) bigCoords = {width: container.width, height: container.height};
			if (!smallCoords) smallCoords = img.getCoordinates();

			var startWidth = (smallCoords.width/bigCoords.width) * bigCoords.width;
			var startHeight = (smallCoords.height/bigCoords.height) * bigCoords.height;
			var bodyElem = document.id(document.body);
			var endTop = bodyElem.getScroll().y + (bodyElem.getHeight() - bigCoords.height)/2;
			var endLeft = bodyElem.getScroll().x + (bodyElem.getWidth() - bigCoords.width)/2;

			if (this.options.close) {

				var closeTop = endTop - 10;
				var closeLeft = endLeft - 10;
				switch (this.options.close) {
					case "bottom-right":
						closeTop = endTop + bigCoords.height - 14;
						closeLeft = endLeft + bigCoords.width - 14;
						break;
					case "bottom-left":
						closeTop = endTop + bigCoords.height - 14;
						break;
					case "top-right":
						closeLeft = endLeft + bigCoords.width - 14;
						break;
				}

				close.setStyles({
					"top": smallCoords.top,
					"left": smallCoords.left,
					"opacity": 0,
					"width": 1,
					"height": 1
				});

				new Fx.Morph(close, {
					transition: this.options.transition,
					duration: this.options.duration
				}).start({
					height: 24,
					width: 24,
					opacity: 1,
					top: closeTop,
					left: closeLeft
				});
			}

			container.setStyles({
				"position": "absolute",
				"top": smallCoords.top,
				"left": smallCoords.left,
				"opacity": 0,
				"width": startWidth,
				"height": startHeight
			});

			new Fx.Morph(container, {
				transition: this.options.transition,
				duration: this.options.duration,
				onComplete: function(e) {
					container.setStyles({
						"-moz-box-shadow": "0px 2px 15px #000",
						"-webkit-box-shadow": "0px 2px 15px #000",
						"box-shadow": "0px 2px 15px #000"
					});
				}.bind(this)
			}).start({
				height: bigCoords.height,
				width: bigCoords.width,
				opacity: 1,
				top: endTop,
				left: endLeft
			});
		}.bind(this));

		var closeEvent = function(e) {
			if (!bigCoords) bigCoords = {width: container.width, height: container.height};
			if (!smallCoords) smallCoords = img.getCoordinates();

			var endWidth = (smallCoords.width/bigCoords.width) * bigCoords.width;
			var endHeight = (smallCoords.height/bigCoords.height) * bigCoords.height;

			container.setStyles({
				"-moz-box-shadow": "none",
				"-webkit-box-shadow": "none",
				"box-shadow": "none"
			});

			if (this.options.close) {
				new Fx.Morph(close, {
					transition: this.options.transition,
					duration: this.options.duration,
					onComplete: function() {
						close.setStyles({
							"top": -99999,
							"left": -99999
						});
					}
				}).start({
					width: 1,
					height: 1,
					opacity: 0,
					top: smallCoords.top,
					left: smallCoords.left
				});
			}

			new Fx.Morph(container, {
				transition: this.options.transition,
				duration: this.options.duration,
				onComplete: function() {
					container.setStyles({
						"top": -99999,
						"left": -99999
					});
				}
			}).start({
				width: endWidth,
				height: endHeight,
				opacity: 0,
				top: smallCoords.top,
				left: smallCoords.left
			});

			e.stopPropagation();
		}.bind(this);

		container.addEvent("click", closeEvent);
		if (this.options.close) {
			close.addEvent("click", closeEvent);
		}
	}
});





var BannerShow = new Class({

	Implements: Options,

	options: {
		width:740,
		height:250,
		delay: 10000
	},
	
	el: null,
	pages: null,
	banner: null,
	block: null,
	cur: -1,
	timer: null,

	initialize: function(el, options) {
		this.setOptions(options);
		
		this.el = $(el);
		this.pages = this.el.getElement('.page-list').getElements('a');
		this.block = this.el.getElement('.ban-block').setStyles({width: this.options.width, height: this.options.height});
		this.pages.each(function(a, i) {
			
			a.addEvent('click', function(e) {
				e.stop();
				$clear(this.timer);
				this.cancel = true;
				this.show(i);
			}.bind(this));
			
		}.bind(this));
		this.start();
	},
	
	show: function(idx) {
		
		if(this.pages.length > idx) {
		
			var fn = this.pages[idx].getProperty('rel');
			
			if(this.banner) {
				if(this.banner.destroy)
					this.banner.destroy();
				else
					this.banner.toElement().destroy();
			}
			
						
			this.pages.removeClass('active');
			this.pages[idx].addClass('active');
			this.cancel = false;
			this.cur = idx;
		
			if(fn.test(".swf"))	{

				this.banner = new Swiff(fn, {
				    id: 'banner_movie',
				    width: this.options.width,
				    height: this.options.height,
				    params: {
				        wmode: 'opaque'
				    },
					styles: {'display': 'none'}
				});
				
				this.onload();
				
			} else {
				
				var href = this.pages[idx].getProperty('href');
				
				if(href != '#' && href != '' && href != null) {
					this.banner = new Element('a', {href: href, styles: {'display': 'none'}});
					this.banner.adopt(new Asset.image(fn, {width: this.options.width, height: this.options.height, onload: this.onload.bind(this)}));
				} else {
					this.banner = new Asset.image(fn, {styles: {'display': 'none'}, width: this.options.width, height: this.options.height, onload: this.onload.bind(this)});	
				}
			}
	
		}
	},
	
	start: function() {
		
		this.cur++;
		
		if(this.cur >= this.pages.length) {
			this.cur = 0;
		}
		this.show(this.cur);
	},
	
	onload: function() {
		
		if(this.cancel) {
			this.cancel = false;
			return;
		}
						
		if(this.pages.length > 1) {
			this.timer = this.start.delay(this.options.delay, this);
		}

		this.block.adopt(this.banner);
		
		if(this.banner.reveal)
			this.banner.setStyle('opacity', 0).setStyle('display', 'block').tween('opacity', [0, 1]);
		else
			this.banner.toElement().setStyle('opacity', 0).setStyle('display', 'block').tween('opacity', [0, 1]);
	}
	
});




var Travelers = new Class({

	Implements: Options,

	options: {

	},

	initialize: function(options) {
		this.setOptions(options);
		new MooZoom();
	},

	ShowCoodinates: function(map, name, coord) {
		window.open('/chain/showmap.php?map='+map+'&coord='+coord+'&name='+name, 'Map', 'menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=640,height=480,directories=no,titlebar=no');
		return false;
	},
		
	ShowOrder: function() {
		window.open('/business/catalog/order.php', 'Order', 'menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=640,height=480,directories=no,titlebar=no');
		return false;
	},
		
	ScrollTo: function(el) {
		new Fx.Scroll(window, {
    		duration: 1000,
    		wait: false,
    		transition: Fx.Transitions.Expo.easeOut
		}).toElement(el);
		return false;
	}
});


var Site = Site || {};


window.addEvent('domready', function() { 
								 
	try {
		Site = new Travelers();
	} catch(E) {
		alert(E);	
	}
	
});


