var press = {
	img: null,
	prepair_img: function(src) {
		this.img = new Image();
		this.img.src = src;
		if (this.img.complete) {
			this.img_ready();
		}
		else {
			this.img.onload = press.img_ready;
		}
	},
	img_ready: function() {
		var div_obj = $('popup');
		var img_obj = $('popup_pic');

		img_obj.src = press.img.src;
		var width = (window.innerWidth) ? window.innerWidth : document.body.clientWidth;
		var div_width = parseFloat( press.img.width );
		var new_location = (width - div_width) / 2;
		var y = 0;
		y = 100+(!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop);
		div_obj.style.top = (y) + 'px';
		div_obj.style.left = (new_location - 20 ) + 'px';
		div_obj.style.display = 'block';
	}
};

function check_order() {
	var err 	= false;
	var inpts 	= ['full_name', 'phone1', 'mail', 'city', 'street', 'postcode', 'province'];
	var SO 		= inpts.length;

	for ( var i = 0; i < SO; i++ ) {
		if ( !$(inpts[i]).value ) {
			$(inpts[i] + '_text').style.color = 'red';
			err = true;
		}
		else {
			$(inpts[i] + '_text').style.color = '#7a7a7a';
		}
	}

	if ( !$('country').selectedIndex ) {
		$('country_text').style.color = 'red';
		err = true;
	}
	else {
		$('country_text').style.color = '#7a7a7a';
	}

	if ( !err ) $('order_form').submit();
}

var swap_img = {
	img: null,

	load_img: function(src) {
		this.img = new Image();
		this.img.src = src;
		if ( this.img.complete ) this.img_ready();
		else this.img.onload = swap_img.img_ready;
	},

	img_ready: function() {
		var img_obj = $('main_img');
		img_obj.src = swap_img.img.src;
	}
}

function change_div(div_id) {
	var obj_id, obj;

	for ( var i = 1; i <=4; i++ ) {
		obj_id 	= 'main_img_div_' + i;
		obj 	= $(obj_id);
		if ( obj ) {
			obj.style.visibility = 'hidden';
		}
	}

	obj = $(div_id);
	if ( obj ) {
		obj.style.visibility = 'visible';
	}
}

function change_img( img_path ) {
	swap_img.load_img(img_path);
}

function popup_press( img_path ) {	
	press.prepair_img(img_path);
}

function chCategory(name) {
	var o = $('gallery');
	if (o && o.changeCategory ) o.changeCategory(name);
}

//function addEvent(element, listener, handler) { addEvent designed by Aaron Moore 
//	if (typeof element[listener] != 'function' || typeof element[listener + '_num'] == 'undefined'){
//		element[listener + '_num'] = 0;
//		if(typeof element[listener] == 'function') {
//			element[listener + 0] = element[listener];
//			element[listener + '_num']++;
//		}
//		element[listener] = function(e){
//			var r = true;
//			e = (e) ? e : window.event;
//			for(var i = 0; i < element[listener + '_num']; i++) if(element[listener + i](e) === false) r = false;
//			return r;
//		}
//	}
//	for (var i = 0; i < element[listener + '_num']; i++) if(element[listener + i] == handler) return;
//	element[listener + element[listener + '_num']] = handler;
//	element[listener + '_num']++;
//}

function format(digit, dec, decPoint, thousSep) {
	var res = digit.toFixed(dec).toString().replace(',', '.').split('.');

	if (thousSep != '') {
		var tmp = '', j = 0, i = res[0].length - 1;
		for (; i > -1; --i) {
			if (j == 3) {
				tmp += thousSep;
				j = 0;
			}
			tmp += res[0].charAt(i);
			j++;
		}
		res[0] = reverse(tmp);
	}

	return res.join('.');
}

function reverse(s) {
	var src = s.toString(), res = '', i = src.length - 1;
	for (; i > -1; --i) res += src.charAt(i);
	return res;
}

var basket = {
	adding: false,
	anim_delay: 2000,
	basket: getCookie('basket'),
	cnt: 0,
	init: function() {
		var cnt = 0,
			i 	= 0;
		if (basket.basket) {
			var SO = basket.basket.length;
			for ( ; i < SO; i++) {
				if (basket.basket[i] == ':') {
					cnt++;
				}
			}
		}
		basket.cnt = cnt;
		basket.print_cnt();

	},
	print_cnt: function() {
		$('products_cnt').innerHTML = basket.cnt > 0 ? basket.cnt : '';
		$('basket_img').src = basket.cnt > 0  ?'/img/menu/basket_a.png' : '/img/menu/basket.png';
	},
	add: function(id) {
		if (basket.adding) return;
		basket.adding = true;
		$('add2basket').firstChild.firstChild.src = '/img/basket.adding.gif';
		$('a2b0').style.visibility = 'hidden';
		$('a2b1').style.display = '';
		setTimeout(basket.check4added, basket.anim_delay);
		basket._add2cookie(id);
	},
	edit: function(uid, o ) {
		var
			amount = parseInt(o, 10),
			so = basket.price4edit.length,
			i = 0,
			res_price = 0,
			res_basket = '';

		amount = isNaN(amount) ? 0 : Math.abs(amount);
		for ( i = 0; i < so; i++) {
			o = basket.price4edit[i];
			if ( uid == o.uid ) {
				o.amount = amount;
			}
			res_price 	+= o.amount * o.price;
			res_basket 	+= '|'+ o.id +','+ o.color +','+ o.size +':'+ o.amount +'|';
		}

		$('total_price').innerHTML = format(res_price, 0, '.', '.');
		basket.basket = res_basket;
		basket._sync_basket2cookie();
	},
	remove: function(uid, o) {
		var tr = o.parentNode.parentNode, table = tr.parentNode;
		if (tr.nextSibling) table.removeChild(tr.nextSibling);
		table.removeChild(tr);
		var so = basket.price4edit.length, i = 0, res_price = 0, res_basket = '', res_price4edit = [];

		for (; i < so; i++) {
			o = basket.price4edit[i];
			if ( uid == o.uid ) continue;
			res_price 	+= o.amount * o.price;
			res_basket 	+= '|'+ o.id +','+ o.color +','+ o.size +':'+ o.amount +'|';
			res_price4edit.push(o);
		}
		
		$('total_price').innerHTML = format(res_price, 0, '.', '.');
		basket.basket 		= res_basket;
		basket.price4edit 	= res_price4edit;
		basket._sync_basket2cookie();
		Scroll.SlideBar.refresh();
	},
	removeAll: function() {
		basket.basket = '';
		basket.price4edit = [];
		basket._sync_basket2cookie();
		location.reload(true);
	},
	_add2cookie: function(id) {
		var qO 	= $('q'),
			add = parseInt(qO.value, 10),
			cO 	= $('c'),
			c 	= (cO ? cO.value : '0'),
			sO 	= $('s'),
			s 	= ( sO ? sO.value : '0' );
		
		add = isNaN(add) ? 0 : Math.abs(add);
		id = '|'+ id +','+ c +','+ s +':';
		if (!basket.basket) {
			basket.basket = id + add +'|';
			basket._sync_basket2cookie();
			return true;
		}
		
		var lpos = basket.basket.indexOf(id);
		if (lpos !== -1) {
			var rpos 	= basket.basket.indexOf('|', lpos + 4),
				amount 	= basket.basket.substr(lpos + 1, rpos - lpos - 1).split(':')[1];
				
			basket.basket = basket.basket.substr(0, lpos) + basket.basket.substr(rpos + 1) + id + (parseInt(amount, 10) + add) +'|';
			basket._sync_basket2cookie();
			return false;
		}
		basket.basket += id + add +'|';
		basket._sync_basket2cookie();
		return true;
	},
	_sync_basket2cookie: function() {
		basket.init();
		setCookie('basket', basket.basket, 30, '/');
	},
	check4added: function() {
		$('add2basket').firstChild.firstChild.src = '/img/basket.png';
		$('a2b1').style.display = 'none';
		$('a2b2').style.display = '';
		setTimeout(basket.finalize_add, basket.anim_delay);
	},
	finalize_add: function() {
		$('q').value = '1';
		$('a2b0').style.visibility = '';
		$('a2b2').style.display = 'none';
		basket.adding = false;
	}
}

var Scroll =  {
	intID: null,
	content: false,
	twitter: false,

	ini: function() {
		var o = $('bcontent');
		if (!o) {
			return;
		}		
		Scroll.content = o;
		Scroll.SlideBar.ini();		
	},
	SlideBar: {
		slider_obj: false,
		moo_slider: false,
		scroll_bar_height: 319,
		cur_pos: 0,
		min_height: 20,
		content_visible_height : 348,
		stop_timer : true,
		ini: function() {
			var scroller_o = $('scroller');
			if (!scroller_o) {
				return;
			}
			Scroll.SlideBar.slider_obj = scroller_o;
                       
			Scroll.SlideBar.moo_slider = new Slider($('scroll_bar'), scroller_o, {
				steps: Scroll.SlideBar.scroll_bar_height,
				mode: 'vertical',
				onChange: function(step) {
					Scroll.SlideBar.onMove(step);					
				}
			}).set(Scroll.SlideBar.cur_pos);
			Scroll.SlideBar.refresh();
		},
		onMove : function (step) {
			
			if (!step) {
				Scroll.content.scrollTop = 0;
				return;
			}			
			
			if (!Scroll.SlideBar.stop_timer) {
				return;
			}
			var content_visible_height = Scroll.SlideBar.content_visible_height,
				content_height = (Scroll.content.scrollHeight < content_visible_height ? content_visible_height : Scroll.content.scrollHeight),
				content_height2 = content_height - content_visible_height > 0 ? content_height - content_visible_height : 1,
				bar_height = Scroll.SlideBar.scroll_bar_height;

			if (step > bar_height) {
				step = bar_height;
			}
			var k = step / bar_height;
			if (isNaN(k)) {
				return;
			}
			
			Scroll.SlideBar.stop_timer = false;			
			Scroll.SlideBar.positioning(content_height2 * k);			
		},
		
		positioning : function (pos) {
			if (pos > 0) {
				 Scroll.twitter = false;
			}
			Scroll.content.scrollTop = pos;
			Scroll.SlideBar.stop_timer = true;
		},
		refresh : function () {
			var 	
				content_visible_height = Scroll.SlideBar.content_visible_height,
				content_height = (Scroll.content.scrollHeight < content_visible_height ? content_visible_height : Scroll.content.scrollHeight),
				content_height2 = content_height - content_visible_height > 0 ? content_height - content_visible_height : 1,
				content_offset_top = Scroll.content.scrollTop,
				bar_height = Scroll.SlideBar.scroll_bar_height,
				min_bar_height = Scroll.SlideBar.min_height;

			var slider_obj = Scroll.SlideBar.slider_obj;

			var k = content_visible_height / content_height,
				slider_new_height = Math.round(bar_height * k);
                        
                        if (content_height > content_visible_height) $('scroll_bar_area').style.visibility = 'visible';
                        else $('scroll_bar_area').style.visibility = 'hidden';
			//alert(content_height +':'+ content_visible_height);
                        

			if (slider_new_height < min_bar_height) {
				slider_new_height = min_bar_height;
			}
			//slider_obj.style.height = slider_new_height + 'px';

			var	k2 = (content_offset_top) / content_height2,
				slider_offset_top = Math.round(bar_height * k2);

            var tmp = Math.round(bar_height*k);
            if (tmp < Scroll.SlideBar.min_height) tmp = Scroll.SlideBar.min_height;
            Scroll.SlideBar.moo_slider.drag.element.style.height = tmp+'px';
            Scroll.SlideBar.moo_slider.full = Scroll.SlideBar.moo_slider.max - tmp;
            Scroll.SlideBar.moo_slider.half = Math.round(tmp/2, 10);
			
            Scroll.SlideBar.moo_slider.drag.options.limit['y'][0] = 0;
            Scroll.SlideBar.moo_slider.drag.options.limit['y'][1] = Scroll.SlideBar.moo_slider.max - tmp;
			
			Scroll.SlideBar.moo_slider.set(slider_offset_top);
			//alert(content_offset_top);
		}
	},
	down: function(co) {
		var o = Scroll.content;
		if (!o) {
			return;
		}
		if (!isset(co)) co = 5;
		o.scrollTop = parseInt(o.scrollTop, 10) + co;
		Scroll.SlideBar.refresh();
	},
	up: function(co) {
		if (!isset(co)) co = 5;
		var o = Scroll.content;
		if (!o) {
			return;
		}
		o.scrollTop = parseInt(o.scrollTop, 10) - co;
		Scroll.SlideBar.refresh();
	},
	register_down: function() {
		if (!Scroll.intID) {
			Scroll.intID = setInterval(Scroll.down, 10);
		}
	},
	register_up: function() {
		if (!Scroll.intID) {
			Scroll.intID = setInterval(Scroll.up, 10);
		}
	},
	release: function() {
		if (Scroll.intID) {
			clearInterval(Scroll.intID);
			Scroll.intID = null;
		}
	}
};


var News = {
	img: null,
	ToggleComments: function (id) {
		var o = $(id +'_comments_content');
		o.style.display = o.style.display == 'none' ? '' : 'none';
		var base = location.protocol +'//'+ location.host;
		var img = $('toggle_comments_' + id);
		img.src = base + (img.src == base +'/img/rose_plus.gif' ? '/img/rose_minus.gif' : '/img/rose_plus.gif');
	},
	ToggleForm: function (id) {
		var o = $('commentFormBlock'+ id);
		o.style.display = o.style.display == 'none' ? '' : 'none';
		var base = location.protocol +'//'+ location.host;
		var img = $('toggle_comment_form_' + id);
		img.src = base + (img.src == base +'/img/rose_plus.gif' ? '/img/rose_minus.gif' : '/img/rose_plus.gif');
		NewsSlider.sliders[id].slideIn();
	},
	SendComment: function (url, new_id) {
		ajax(url, 'News.callBackSendComment()',
			'gjkly='+ $('gjkly').value +
			'&name='+ encodeURIComponent($('commentName'+ new_id).value) +
			'&email='+ encodeURIComponent($('commentEmail'+ new_id).value) +
			'&text='+ encodeURIComponent($('commentText'+ new_id).value)
		);
	},
	callBackSendComment: function () {
		try {
			var o = eval('('+ ajaxReq.responseText +')');
		} catch (e) {
			alert(e.message);
		}
		if (o.ok) {
			$('comments_count'+ o.new_id).innerHTML = o.comments.length;
			this.LoadComments(o.new_id, o.comments);
		}
	},
	LoadComments: function (id, comments) {
		var data, new_id;
		if (isset(comments)) {
			data = comments;
			new_id = id;
		} else {
			try {
				var tmp = eval('('+ ajaxReq.responseText +')');
				data = tmp.comments;
				new_id = tmp.new_id;
			} catch (e) {
				return false;
			}
		}
		$('commentText'+ new_id).value = '';
		var SO = data.length;
		if (SO > 0) {
			var i = 0, html = [], comment = {};
			html.push('<table>');
			for (; i < SO; i++) {
				comment = data[i];
				html.push('<tr>');
				html.push('<td><div class="comment_author"><a href="mailto:'+ comment.email +'">'+ comment.name +'</a></div><div class="comment_author_text">'+ comment.comment +'</div></td>');
				html.push('</tr>');
			}
			html.push('</table>');
			$('comments'+ new_id).innerHTML = html.join('');
		} else {
			$('comments'+ new_id).innerHTML = trs['no_comments'];
		}
		NewsSlider.sliders[new_id].slideIn();
	},
	ShowImageData: function (type, data) {
		switch (type) {
			case 0:
				this.img = new Image();
				this.img.src = data;
				if (this.img.complete) this.img_ready();
				else this.img.onload = News.img_ready;
				break;
			case 1:
				var o = $('popup_content');
				o.innerHTML = '<div id="popup_flash"></div>';
				var flash = new SWFObject(data +'autoplay=1', "popup_flash", "425", "344", "8", "#FFFFFF");
				flash.write('popup_flash');
				// o.innerHTML = html;
				var w = o.firstChild.firstChild.width;
				var h = o.firstChild.firstChild.height;
				var width = (window.innerWidth) ? window.innerWidth : document.body.clientWidth;
				var new_location = (width - w) / 2;
				var y = 0;
				y = 100 + (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop);
				$('popup').style.top 	= (y)+'px';
				$('popup').style.left 	= (new_location - 20 ) +'px';
				$('popup').style.display = 'block';
				break;
		}
	},
	img_ready: function() {
		var div_obj = $('popup');
		$('popup_content').innerHTML = '<img id="popup_pic" src="" />';
		var img_obj = $('popup_pic');
		img_obj.src = News.img.src;
		var width = (window.innerWidth) ? window.innerWidth : document.body.clientWidth;
		var div_width = parseFloat( News.img.width );
		var new_location = (width - div_width) / 2;
		var y = 0;
		y = 100+(!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop);
		div_obj.style.top 	= (y)+'px';
		div_obj.style.left 	= (new_location - 20 ) +'px';
		div_obj.style.display = 'block';
	},
	CorrectComment: function (id, trs) {
		var no_errors = true;
		if ($('commentName'+ id).value == '') {
			$('commentNameText'+ id).style.color = '#ff3c8e';
			no_errors = false;
		} else $('commentNameText'+ id).style.color = '#fff';
		if ($('commentEmail'+ id).value == '') {
			$('commentEmailText'+ id).style.color = '#ff3c8e';
			no_errors = false;
		} else $('commentEmailText'+ id).style.color = '#fff';
		if ($('commentText'+ id).value == '') {
			$('commentCommentText'+ id).style.color = '#ff3c8e';
			no_errors = false;
		} else $('commentCommentText'+ id).style.color = '#fff';
		return no_errors;
	}
};


var NewsSlider = {
	sliders : {},
	init : function(ids) {
		var so = ids.length;
		for (var i = 0; i < so; i++) {
			NewsSlider.startEvent(ids[i]);
		}
		Scroll.ini();
		
	},
	startEvent : function(id) {
		NewsSlider.sliders[id] = new Fx.Slide(id +'_full').hide('vertical');
		$(id +'_toggle_news').addEvent('click',
			function(e) {
				e.stop();
				NewsSlider.sliders[id].toggle();
			}
		);
		$(id +'_short_more').addEvent('click',
			function(e) {
				e.stop();
				NewsSlider.sliders[id].toggle();
			}
		);
		NewsSlider.sliders[id].addEvent('complete',
			function() {
				var
					more_span_obj = $(id +'_short_more'),
					img_obj = $('toggle_news_' + id),
					base = location.protocol +'//'+ location.host;

				Scroll.SlideBar.refresh();
				if (NewsSlider.sliders[id].open) {
					img_obj.src = base + '/img/rose_minus.gif';
					more_span_obj.style.visibility = 'hidden';
				} else {
					img_obj.src = base + '/img/rose_plus.gif';
					more_span_obj.style.visibility = '';
				}				
			}
		);
	}
};

var WhellScroller = {
	in_scrolling_area : false,

	inScrollArea : function () {
		WhellScroller.in_scrolling_area = true;
	},
	outScrollArea : function () {
		WhellScroller.in_scrolling_area = false;
	},
	handleScroll : function (delta) {
		if (delta < 0) {
			Scroll.down(25);
		} else {
			Scroll.up(25);
		}
		//setTimeout('Scroll.release()', 400);
	},
	wheel : function (event) {
		
		if (!WhellScroller.in_scrolling_area) {
			return;
		}
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) { // IE, Opera.
			delta = event.wheelDelta/120;
//			if (window.opera) {
//				delta = -delta;
//			}
		} else if (event.detail) {
			delta = -event.detail/3;
		}
		if (delta) {
			WhellScroller.handleScroll(delta);
		}
		if (event.preventDefault) {
			event.preventDefault();
		}
		event.returnValue = false;
	}
};

if (window.addEventListener) {
	window.addEventListener('DOMMouseScroll', WhellScroller.wheel, false);
	
} //else window.onmousewheel = document.onmousewheel = WhellScroller.wheel;
document.onmousewheel = WhellScroller.wheel;

var MenuImages = {
	images: {},
	addImage : function(id, image_path) {
		var img = new Image();
		img.src = image_path;
		this.images[id] = img;
	},
	getImage : function(id) {
		if (this.images[id].src) {
			return this.images[id].src;
		} else {
			return '';
		}
	}
}