var preloadImages = function() {
	var d = document;
	if(d.images) { 
		if(!d.MM_p) { d.MM_p = new Array(); }
		var i, j = d.MM_p.length, a = arguments; 
		for (i=0; i<a.length; i++) {
			if (a[i].indexOf("#")!=0) { d.MM_p[j] = new Image; d.MM_p[j++].src=a[i]; }
		}
	}
}

var toggleImageHover = function(el) {
	el = $(el);
	var src = el.getAttribute('src');
	if(src.lastIndexOf('Hover') == -1){
		imageHoverOn(el);
	} else {
		imageHoverOff(el);
	}
};

var imageHoverOn = function(el) {
	el = $(el);
	var src = el.getAttribute('src'),
		len = src.length;
	src = src.substr(0, len-4) + 'Hover' + src.substr(len-4, len);
	el.setAttribute('src', src);
}

var imageHoverOff = function(el) {
	el = $(el);
	var src = el.getAttribute('src');
	src = src.replace('Hover','');
	el.setAttribute('src', src);
}

// browser versions detection
Prototype.BrowserVersion = {
	IE:     null,
    Opera:  null,
    WebKit: null,
    Gecko:  null,
    MobileSafari: null
};
if (Prototype.Browser.IE) {
	Prototype.BrowserVersion.IE = parseFloat(navigator.appVersion.match(/MSIE ([0-9\.]+);/)[1]);
}

LightboxOptions = {
    fileLoadingImage:        '/img/lightbox/loading.gif',     
    fileBottomNavCloseImage: '/img/lightbox/close.gif',
    overlayOpacity: 0.7,
    animate: true,
    resizeSpeed: 9,
    borderSize: 10,
	labelImage: "Фото",
	labelOf: "из"
};

var initHighslide = function(options) {
	if (typeof hs == "undefined") { return false; }

	var options = options || {}, 
		rule = options['rule'] || "[rel~=highslide]",
		img_path = options['img_path'] || "/img/highslide/",
		on_event = options['on_event'] || "click"
	;

	hs.graphicsDir = img_path;
	hs.wrapperClassName = 'wide-border';
	hs.numberOfImagesToPreload = 0;
	hs.showCredits = false;
	hs.lang = {
		cssDirection: 'ltr',
		loadingText : 'Загрузка...',
		loadingTitle : 'Нажмите, чтобы убрать',
		focusTitle : 'Нажмите, чтобы показать на первом плане',
		fullExpandTitle : 'Показать в полный размер (f)',
		creditsText : '',
		creditsTitle : '',
		restoreTitle : 'Нажмите, чтобы закрыть изображение, нажмите и потащите, чтобы переместить. Используйте клавиши-стрелки, чтобы перейти к следующему/предыдущему слайду.'
	};
	$$(rule).each(function(el) {
		el.observe(on_event, function(e) {
			Event.stop(e);
			hs.expand(el);
		});
	});

	return true;
}

var Basket = {
	options: {},
    init: function(options) {
		this.options = Object.extend({
			'basketSelector': '#basket-content',
			'updateBasketHref' : null,
			'gotoBasketHref': null
		}, (options || {}));
	},

    updateHtmlBlock: function() {
		Ajax.MyUpdater(this.options['basketSelector'], this.options['updateBasketHref'], {
			onSuccess: function(transp) {
				if((typeof transp.responseJS['quantity'] != 'undefined')/* && (parseInt(transp.responseJS.quantity) > 0)*/) {
					$$(this.options['basketSelector']).each(function(el) {
						var options = el.hasClassName('ghosted') ?
							{ startcolor: '#fffaaa', endcolor: '#dddddd' } :
							{ startcolor: '#fb1a11', endcolor: '#3b1a11', keepBackgroundImage: true };
						new Effect.Highlight(el, options);
					});
				}
			}.bind(this)
		});
    },

	initDebug: function() {
		$$(this.options['basketSelector']).invoke('observe', 'click', function(e) {
			var el = e.element();
			var options = el.hasClassName('ghosted') ?
				{ startcolor: '#fffaaa', endcolor: '#dddddd' } :
				{ startcolor: '#fb1a11', endcolor: '#3b1a11', keepBackgroundImage: true };
			new Effect.Highlight(el, options);
		});
	}
}

// показывать фиксированный блок с ценой при скролле
var Ghosts = {
	selector: null,
	options: {
		'onClone': null,
		'onRefreshElement': null,
		'onRefresh': null
	},
	// высота от верхней границы окна, по достижении которой названием раздела, появляется фиксированный блок
	minHeight: 0,

	init: function(selector, options) {
		this.selector = selector;
		this.options = Object.extend(this.options, (options || {}));
		this.update();

		var refresh = this.refresh.bind(this);
		// повесть ф-цию отображение названий на скролл и ресайз окна
		window.onresize = refresh;
		document.observe('scroll', refresh);
		window.onscroll = refresh; // IE
	},

	clone: function() {
		// подготовить фиксированные блоки
		$$(this.selector).each(function(el) {
			var elId = el.identify();
			var cloneId = 'clone_' + elId;
			if(!$(cloneId) && !el.hasClassName('ghosted')) {
				var clone = el.clone(true)
					.writeAttribute({'el_id': elId, 'id': cloneId})
					.addClassName('ghosted')
					.setStyle({
						'position': 'fixed',
						//'width': el.getWidth() + 'px',
						//'left': el.viewportOffset().left + 'px',
						'top': this.minHeight + 'px',
						'opacity': 0.8
					})
					.hide();
				el.insert({after: clone});
			}
		}.bind(this));
		if(this.options['onClone']) {
			this.options['onClone'].call();
		}
	},

	update: function() {
		this.clone();
		this.refresh();
	},

	refresh: function() {
		// спрятать все лишнее
		$$('.ghosted').invoke('hide')
		// показать фиксированное название раздела, если начало списка вышло за верхнюю границу экрана
		.each(function(clone) {
			var el = $(clone.readAttribute('el_id'));
			var maxHeight = this.minHeight + clone.getHeight(),
				offset = el.viewportOffset().top;
			if (offset <= this.minHeight - (clone.getHeight() * 0.5)) {
				clone.show();
			}
			if(this.options['onRefreshElement']) {
				this.options['onRefreshElement'].call(this, clone);
			}
		}.bind(this));
		if(this.options['onRefresh']) {
			this.options['onRefresh'].call();
		}
	}
};

var MainMenu = {
	options: {},
	addSubmenu: function(menu_id, content_id) {
		this.options = arguments[2] || {};
		if (!$(content_id)) { return; }
		// расположение угла
		var stem = 'topMiddle',
			hook = { target: 'bottomMiddle', tip: 'topMiddle' },
        	offset = { x: 0, y: -5 };
		
		// расположение меню, и, в зависимости от этого, прорисовка меню
		if (this.options['position']) {
			switch (this.options['position']) {
				case 'top':
					stem = 'topMiddle';
					hook = { target: 'bottomMiddle', tip: 'topMiddle' };
		        	offset = { x: 0, y: -5 };
				break;
				case 'left':
					stem = 'leftMiddle';
					hook = { target: 'rightMiddle', tip: 'leftMiddle' };
		        	offset = { x: -5, y: 0 };
				break;
			}
		}
		new Tip(menu_id, $(content_id).innerHTML, { 
        	style: 'bordo',
            width: 'auto',
            hideOn: false,
            hideAfter: 1,
			hideOthers: true,
            viewport: true,
        	hook: hook,
        	offset: offset,
            stem: stem
        });
	}
}
