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 paymentHelp(type) {
	var types = ['firstdata', 'paypal', 'wired'], i = types.length - 1;
	for (; i >= 0; i--) $(types[i] +'_help').style.display = type === types[i] ? '' : 'none';
}

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

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

	if (!/^[^\@]+\@[a-z0-9\-\_\.]+\.[a-z]{2,6}$/i.test(email.value)) {
		$('mail_text').style.color = 'red';
		err = true;
	} else $('mail_text').style.color = '#7a7a7a';
	
	
	if (order.current_status) {
		var i = 0, err = false, inpts = ['full_name_billing', 'phone1_billing', 'mail_billing', 'city_billing', 'street_billing', 'postcode_billing'], SO = inpts.length, email = document.getElementById('mail_billing');

		for (; 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 (!/^[^\@]+\@[a-z0-9\-\_\.]+\.[a-z]{2,6}$/i.test(email.value)) {
			$('mail_text').style.color = 'red';
			err = true;
		} else $('mail_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,
	discount: 0,
	basket: getCookie('basket'),
	cnt: 0,
	discount_used: false,
	init: function(syn_basket) {
		if (typeof syn_basket !== 'undefined') basket.basket = syn_basket;
		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() {
		var o = $('products_cnt');
		if (!o) return;
		o.innerHTML = basket.cnt > 0 ? basket.cnt : '';
	},
	reset_adding: function() {
		
	},
	add: function(id, max_count) {
		if (basket.adding) return;
		basket.adding = true; // To prevent waiting animation
		$('add2basket').firstChild.firstChild.src = '/img/basket.adding.gif';
		$('a2b0').style.visibility = 'hidden';
		$('a2b1').style.display = '';
		setTimeout(basket.check4added, basket.anim_delay);
		basket._add2cookie(id);
		basket.showPopup(id);
	},
	edit: function(uid, amount) {
		var so = basket.price4edit.length, o, i = 0, res_price = 0, res_basket = '', mail_price = 0;
		// Check if entered number is normal to purchase
		if (! /^[0-9]+$/.test(amount) || amount == 0) {
			o = basket.price4edit[uid-1];
			$('q'+ o['produid']).value = 1;
		}
		
		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 +'|';
			mail_price += o.delivery_by_mail * o.amount;
		}

		var delivery_price_by_mail = $('delivery_price_by_mail');
		if (delivery_price_by_mail) {
			delivery_price_by_mail.innerHTML = format(mail_price, 2, '.', ' ');
			basket.current_delivery_prices['mail'] = mail_price;
		}
		var diff = $('total_price').innerHTML - res_price;
		o = basket.price4edit[uid-1];
		o['amount'] = parseInt($('q'+ o['produid']).value, 10);
		basket.ajax_refresh_product_delivery_price(basket.country_uid, basket.tariff_id, o['size_d'], o['size_h'], o['size_w'], (o['weight'] * o['amount']), o['uid']);
	},
	country_uid: null,
	tariff_id: null,
	remove: function(uid, o) {
		basket.delivery_prices_by_country = false;
		var tr = o.parentNode.parentNode, table = tr.parentNode;
		if (tr.nextSibling) table.removeChild(tr.nextSibling);
		table.removeChild(tr);
		
		basket.refreshPrices(uid);
		if (basket.price4edit.length == 0) {
			location.reload(true);
		}
		basket.check_show_delivery_by_mail();
		//Scroll.SlideBar.refresh();
	},
	check_show_delivery_by_mail: function() {
		if (!document.getElementsByTagName('no_mail') && $('by_mail_show_1') && $('by_mail_show_2')) {
			//$('by_mail_show_1').style.display = ''; // TODO Show BY_MAIL block
			//$('by_mail_show_2').style.display = '';
		}
	},
	ajax_refresh_product_delivery_price: function(country_uid, tariff_id, l, h, w, weight, product_uid) {
		basket.delivery_prices_by_country[country_uid] = false;
		var url = '/en/daction/delivery_price/?uid='+ country_uid +'&tariff='+ tariff_id +'&l='+ l/100 +'&h='+ h/100 +'&w='+ w/100 +'&weight='+ weight;
		ajax(url, 'basket.getAjaxResult('+ product_uid +');');
		basket.ajax_refresh_country_delivery(country_uid);
	},
	ajax_get_discount: function(code) {
//		if (basket.discount_used) return;
		var url = '/en/daction/discount_code/?cc='+ code;
		ajax(url, 'basket.getDiscountResult("'+ code +'");');
	},
	getDiscountResult : function(code) {
		var discount = parseInt(ajaxReq.responseText, 10);
		if (!isNaN(discount) && discount <= 100) {
			basket.discount = discount;
		}
		setCookie('discount_code', code, 30, '/');
//		basket.discount_used = true;
		basket.refreshPrices(-1);
	},
	getAjaxResult: function(uid) {
		if (basket.price4edit[uid]) basket.price4edit[uid]['delivery_price'] = parseInt(ajaxReq.responseText, 10);
		basket.refreshPrices();
		setTimeout(basket.hide_loader, 300);
	},
	delivery_prices_by_country: {},
	ajax_refresh_country_delivery: function(country_uid, uid, no_check) {
		basket.country_uid = country_uid;
		if (basket.delivery_prices_by_country && basket.delivery_prices_by_country[country_uid]) {
			basket.current_delivery_prices['tnt'] = basket.delivery_prices_by_country[country_uid]['price'];
			basket.calculate_price_from_cache(country_uid);
		}
		else {
			setCookie('delivery_country_uid', country_uid, 30, '/');
			basket.loader_timer = setTimeout(basket.show_loader, 80);
			//$('standard').checked = true;
			basket.country_uid = country_uid;
			var url = '/en/daction/delivery_price/?uid='+ country_uid;
			ajax(url, 'basket.getDeliveryAjax('+ uid +', true);');
		}
	},
	getDeliveryAjax: function(uid, no_check) {
		var text = ajaxReq.responseText.split('|'), price = text[0], days = text[1];
		if (!price || price < 1 || isNaN(price)) return;
		if (!basket.delivery_prices_by_country) basket.delivery_prices_by_country = {};
		if (basket.country_uid) {
			basket.delivery_prices_by_country[basket.country_uid] = {};
			basket.delivery_prices_by_country[basket.country_uid]['price'] = price;
			basket.delivery_prices_by_country[basket.country_uid]['days'] = days;
		}
		if (!days) days ='1-10';
		$('transit_days').innerHTML = days;
		$('transit_days_multi').innerHTML = days !== '1' ? 's' : '';
		basket.delivery_price = $('delivery_price_standard').innerHTML = parseFloat(price);
		basket.current_delivery_prices['tnt'] = basket.delivery_price;
		basket.refreshPrices(uid, no_check);
		clearTimeout(basket.loader_timer);
		basket.hide_loader();
	},
	calculate_price_from_cache: function(uid) {
		if (!basket.delivery_prices_by_country[uid]) return;
		var price = basket.current_delivery_prices['tnt'];
		var days = basket.delivery_prices_by_country[uid]['days'];
		if (!days) days ='1-10';
		$('transit_days').innerHTML = days;
		$('transit_days_multi').innerHTML = days !== '1' ? 's' : '';
		basket.delivery_price = $('delivery_price_standard').innerHTML = parseFloat(price);
		basket.refreshPrices();
	},
	refreshPrices: function(uid, no_check) {
		var so = basket.price4edit.length, i = 0, res_price = 0, res_basket = '', res_price4edit = [];

		for (; i < so; i++) {
			o = basket.price4edit[i];
			if (uid && uid == o.uid) continue;
			o.amount = Math.abs(o.amount);
			if (!o.amount) o.amount = 0;
			res_price += o.amount * o.price;
			res_basket += '|'+ o.id +','+ o.color +','+ o.size +':'+ o.amount +'|';
			res_price4edit.push(o);
		}
		var delivery_price, selected_shipping;
		if ($('standard').checked) {
			delivery_price = basket.current_delivery_prices['tnt'];
			selected_shipping = 1;
		}
		if ($('by_mail') && $('by_mail').checked) {
			delivery_price = basket.current_delivery_prices['mail'];
			selected_shipping = 3;
		}
		if ($('no_shipping').checked) {
			delivery_price = basket.current_delivery_prices['no'];
			selected_shipping = 2;
		}

		res_price = res_price - (basket.discount /100) * res_price;
		$('total_price').innerHTML = format(parseFloat(res_price), 2, '.', ' ');
		if ($('standard').checked) $('delivery_price_standard').innerHTML = format(parseFloat(basket.delivery_price), 2, '.', ' ');
		$('total_price1').innerHTML = $('total_price2').innerHTML = $('total_delivery').innerHTML = format(parseFloat(res_price) + parseFloat(delivery_price), 2, '.', ' ');
		
		basket.basket = res_basket;
		basket.price4edit = res_price4edit; /* ADDED 29.11.2010*/
		basket._sync_basket2cookie();
		if (uid && !no_check) basket.ajax_refresh_country_delivery(basket.country_uid, uid, true);
		setCookie('basket', basket.basket, 30, '/');
		setCookie('shipping', selected_shipping, 30, '/');
	},
	delivery_price: 0,
	removeAll: function(no_reload) {
		basket.basket = '';
		basket.price4edit = [];
		basket._sync_basket2cookie();
		if (!isset(no_reload) || (isset(no_reload) && no_reload == false)) {
			setTimeout(function() {
				location.reload(true);
			}, 9);
		}
	},
	_add2cookie: function(id) {
		var qO = $('q'),
			cO = $('c'),
			sO = $('s'),
			add = (qO ? parseInt(qO.value, 10) : 0),
			c = (cO ? cO.value : '0'),
			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;
	},
	showPopup: function(id) {
		var price = parseInt($('main_price').innerHTML, 10), quantity = parseInt($('q').value, 10);
		// Check if total count of this product is not higher than allowed
		var cur_count = basket.getProductCurrentCount(id);
		var total_count = cur_count + quantity;
		if (total_count > basket.max_count) total_count = basket.max_count;
		quantity = basket.max_count - total_count;
		if (!quantity) quantity = 1;
		var sum = price * quantity;
		$('basket_popup_img').src = $('main_image_for_popup_1').src;
		$('main_price_popup').innerHTML = sum;
		basket.total_price += sum;
		$('subtotal_popup').innerHTML = basket.total_price;
		$('basket_add_popup').style.display = '';
		setTimeout(basket.hidePopup, 3000);
	},
	hidePopup: function() {
		$('basket_add_popup').style.display = 'none';
	},
	total_price: 0,
	check_order: function() {
		if ($('country').value == '') {
			$('country_span').style.color = 'red';
			return;
		}
		$('basket_form').submit();
	},
	show_loader: function () {
		//$('delivery_price_standard').style.display = 'none';
		$('loader_image').style.display = 'block';
	},
	hide_loader: function() {
		$('loader_image').style.display = 'none';
		//$('delivery_price_standard').style.display = '';
	},
	loader_timer: null,
	checkMaxCount: function(o, max_count) {
		var cur = o.value;
		if (! /^[0-9]+$/.test(cur) || cur == 0) {
			cur = 1;
		}
		if (cur > max_count) cur = max_count;
		o.value = cur;
	},
	getProductCurrentCount: function(id) {
		var split_basket = basket.basket.split('||'), o, o2;
		var so = split_basket.length, i = 0;
		for (i = 0; i < so; i++) {
			o = split_basket[i].replace('|', '').split(':');
			o2 = o[0].split(',');
			if (id == o2[0]) return o[1];
		}
		return 0;
	},
	current_delivery_prices: {}
}

var Product = {
	defaultPrice: 0,
	pricesByColours: [],
	setSelectedPrice: function(colour_id) {
		var o = $('c'), price;
		if (!o) return;
		if (!colour_id) colour_id = o.value;
		o = $('main_price');
		if (Product.pricesByColours[colour_id]) price = Product.pricesByColours[colour_id];
		else price = Product.defaultPrice;
		o.innerHTML = price;
	}
}

var Scroll =  {
	intID: null,
	content: false,
	twitter: false,
	ini: function(scroll_bar_height, content_visible_height) {
		var o = $('bcontent');
		if (!o) {
			return;
		}
		Scroll.content = o;
		Scroll.SlideBar.ini(scroll_bar_height, content_visible_height);
	},
	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(scroll_bar_height, content_visible_height) {
			Scroll.SlideBar.scroll_bar_height = scroll_bar_height;
			Scroll.SlideBar.content_visible_height = content_visible_height;

			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';

			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);

		}
	},
	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, scroll_bar_height, content_visible_height) {
		var so = ids.length;
		for (var i = 0; i < so; i++) {
			NewsSlider.startEvent(ids[i]);
		}
		Scroll.ini(scroll_bar_height, content_visible_height);
		
	},
	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();
		var img = document.createElement('img');
		img.src = image_path;
		this.images[id] = img;
	},
	getImage : function(id) {
		if (this.images[id].src) {
			return this.images[id].src;
		} else {
			return '';
		}
	}
}

var projects_back = {
	hover: function(id) {
		document.getElementById('link'+ id).className = 'project_table_title_a_hover';
		document.getElementById('div'+ id).className = 'project_table_title_hover';
	},
	out: function(id) {
		document.getElementById('link'+ id).className = 'project_table_title_a';
		document.getElementById('div'+ id).className = 'project_table_title';
	}
}

function Gallery(id, imageList, class_name, current) {
	if (typeof id !== 'string') {
		alert('Internal error. First parameter in Gallery() should be a string.');
		return false;
	}

	if (typeof imageList !== 'object' || !(imageList instanceof Array)) {
		alert('Internal error. Second parameter in Gallery() should be an array.');
		return false;
	}

	var type = typeof current;
	if (type !== 'undefined') {
		if (type !== 'number') {
			alert('Internal error. Third parameter in Gallery() should be a number.');
			return false;
		}
		if (current > imageList.length - 1) {
			alert('Internal error. Third parameter in Gallery() is greater than total amount of images in rotation.');
			return false;
		}
	} else current = 0;

	if (imageList.length === 0) return false;

	var o = $(id);
	if (!o) {
		alert('Internal error. Could not get node with id "'+ id +'".');
		return false;
	}

	this.o = o;
	this.id = id;
	this.imageList = imageList;
	this.current = current;
	this.cached = false;
	this.class_name = (typeof class_name === 'undefined' ? 'gallery_image' : class_name);
	this.html();

	return this;
}
Gallery.prototype.html = function(current) {
	var type = typeof current;

	if (type !== 'undefined') {
		if (type !== 'number') {
			alert('Internal error. First parameter in Gallery.html() should be a number.');
			return false;
		}
		if (current > this.imageList.length - 1) {
			alert('Internal error. First parameter in Gallery.html() is greater than total amount of images in rotation.');
			return false;
		}
		this.current = current;
	}

	var html = [], so = this.imageList.length, i = 0;

	html[html.length] = '<div class="'+ this.class_name +'" onclick="'+ this.id +'.html('+ (this.current + 1 >= so ? 0 : this.current + 1) +');return false"><img src="'+ this.imageList[this.current] +'" alt=""></div><div class="gallery">';
	if (so > 1) {
		html[html.length] = '<table><tr>';

		var from = 0, till = so;
		if (till - from > 10) {
			if (this.current > 7) from = this.current - 7;
			if (till - from > 9) till = from + 9;
			if (till == so) from = till - 9;
		}

		if (this.current > 0) html[html.length] = '<td style="width:14px"><a href="" onclick="'+ this.id +'.html('+ (this.current - 1) +');return false"><img src="/_/left.png" alt=""></a></td>';
		else html[html.length] = '<td style="width:14px"><img src="/_/left.png" alt=""></td>';
		for (i = from; i < till; ++i) {
			html[html.length] = '<td style="width:14px;text-align:center"'+ (this.current == i ? ' class="selected_td"' : '') +'><a href=""'+ (this.current == i ? ' class="selected"' : '') +' onclick="'+ this.id +'.html('+ i +');return false">'+ (i + 1) +'</a></td>';
		}

		if (this.current < so - 1) html[html.length] = '<td style="padding-left:6px"><a href="" onclick="'+ this.id +'.html('+ (this.current + 1) +');return false"><img src="/_/right.png" alt=""></a></td>';
		else html[html.length] = '<td style="padding-left:6px"><img src="/_/right.png" alt=""></td>';

		html[html.length] = '<//tr></table>';
	}
	html[html.length] = '</div>';

	this.o.innerHTML = html.join('');
	if (this.current > 0 && !this.cached) this.cache(this.current);
	return true;
}
Gallery.prototype.cache = function(skip) {
	if (typeof skip === 'undefined') skip = 0;
	var so = this.imageList.length, i = 1;
	for (; i < so; i++) {
		if (i !== skip) CacheElements.store(this.imageList[i]);
	}
	CacheElements.now();
	this.cached = true;
	return true;
}
var CacheElements = {
	o: null,
	storage: [],
	stored: [],
	store: function(src) {
		var es = this.storage, i = 0, so = es.length;
		for (; i < so; i++) {
			if (es[i] === src) return;
		}
		this.storage[so] = src;
		this.stored[so] = false;
	},
	now: function() {
		if (!this.o) {
			var div = document.createElement('DIV');
			div.style.position = 'absolute';
			div.style.top = '-9999px';
			div.style.left = '-9999px';
			this.o = document.body.appendChild(div);
			div = document.createElement('DIV');
			div.style.position = 'relative';
			div.id = 'elements_image_preloader';
			this.o = this.o.appendChild(div);
		}
		var i = 0, so = this.storage.length, img;
		for (; i < so; i++) {
			if (this.stored[i]) continue;
			img = document.createElement('IMG');
			img.style.position = 'absolute';
			img.style.top = 0;
			img.style.left = 0;
			img.src = this.storage[i];
			this.o.appendChild(img);
			this.stored[i] = true;
		}
	}
}

function whatIsKatzCodePopupOpen() {
	return;
	var popup_width = 350;
	var popup_height = 250;

	my_window=popup('', 'What is Katz Code', popup_width, popup_height);
	my_window.document.write(
		'<body style=\'background-color: #000; color: #fff;\'><H2>'+ header +'</H2>\n\
		<br>'+ text +'\n\
		</body>');
}

var order = {
	show_billing_address: function() {
		if (!order.current_status) {
			$('billing_address1').style.display = 'block';
			$('billing_address2').style.display = 'block';
			$('area1').style.height = '370px';
			$('area2').style.height = '370px';
		} else {
			$('billing_address1').style.display = 'none';
			$('billing_address2').style.display = 'none';
			$('area1').style.height = '145px';
			$('area2').style.height = '145px';
		}
		order.current_status = !order.current_status;
	},
	current_status: 0,
	save_data_to_local: function(el) {
		if (!el) return;
		var id = el.id, value = el.value;
		if (!id || !value) return;
		this.st.set(id, value);
	},
	init: function() {
		this.st = new storageLocal('katz_order_details');
	},
	restore_detail_data: function() {
		var ids = ['full_name', 'company', 'phone1', 'phone2', 'mail', 'full_name_billing', 'company_billing', 'phone1_billing', 'phone2_billing', 'mail_billing', 'city', 'street', 'postcode', 'city_billing', 'street_billing', 'postcode_billing'], i = 0, so = ids.length, el, val;
		for (; so >= i; i++) {
			if (!ids[i]) continue;
			el = document.getElementById(ids[i]);
			if (!el) continue;
			val = this.st.get(ids[i]);
			if (val) el.value = val;
		}
	}
}

// Localstorage
function storageLocal(name) {
	if (typeof name !== 'string' || name === '') {
		alert('Storage error. Name should not be an empty string.');
		return;
	}
	this.store = localStorage ? localStorage : false;
	this.name = name;
}
storageLocal.prototype.key = function(key) {
	return this.name +'_'+ key;
}
storageLocal.prototype.get = function(key) {
	return this.store ? this.store.getItem(this.key(key)) : false;
}
storageLocal.prototype.set = function(key, value) {
	return this.store ? this.store.setItem(this.key(key), value) : false;
}
// remove by key (key = name + key)
storageLocal.prototype.remove = function(key) {
	return this.store ? this.store.removeItem(this.key(key)) : false;
}
// remove by key (key = key)
storageLocal.prototype.removeByFullKey = function(key) {
	this.store ? this.store.removeItem(key) : false;
}
storageLocal.prototype.getByFullKey = function(key) {
	return this.store ? this.store.getItem(key) : false;
}
storageLocal.prototype.getStoragesKeyList = function() {
	if (!this.store) return false;
	var storeSize = this.store.length, keys = [], i = 0;
	for (; i < storeSize; i++) keys.push(this.store.key(i));
	return keys;
}

if (typeof localStorage != "undefined" && localStorage) order.init();

