registerEvents = function () {
	//cache.prefetch();
	if (jQuery('.gallery').size() > 0) {
		jQuery('.gallery').fancybox ({
			'overlayOpacity': 0.5,
			'itemLoadCallback': getGroupItems,
			'overlayShow': true 
		 });
	}
}	

function getGroupItems(opts) {
	jQuery.each(jQuery('.gallery'), function(i, val) {
		var currentImage = {'url': jQuery(val).attr('href'), 'title': jQuery(val).attr('title'), 'rel': jQuery(val).attr('rel')};
		opts.itemArray.push(currentImage);
	});
}
	
jQuery(document).ready(function () {
	registerEvents();
	setOpacity();
	initMenu();
	jQuery('.print').click(printPage);
	jQuery('.orderLink').click(showForm);
});

function setOpacity () {
	
	jQuery("[class*='opacity']").each(function (i) {
		var opacityValue = this.className.substr(this.className.indexOf('opacity-') + 'opacity-'.length, 2);
		jQuery(this).css('opacity','.' + opacityValue);
		jQuery(this).css('filter','Alpha(opacity=' + opacityValue+')');
	});
	return true;
}

var menuTimeOut;

var menuTimeOutMS = 1000;

function initMenu () {
	jQuery('.menu-item').bind('mouseover', function() {
		jQuery('.submenu').filter('[id!='+this.id+']').hide('fast');
		if (jQuery('#' + this.id + '-submenu').css('display') == 'none') {
			jQuery('#' + this.id + '-submenu').show('fast');
		}
	});
	jQuery('.menu-item').bind('mouseout', function() {
		if (menuTimeOut == 0 && this.id) {
			menuTimeOut = setTimeout("jQuery('#" + this.id + "-submenu').hide('fast')", menuTimeOutMS);
		}
	});
	jQuery('.submenu').bind('mouseout', function() {
		if (menuTimeOut == 0 && this.id) {
			menuTimeOut = setTimeout("jQuery('#" + this.id + "').hide('fast')", menuTimeOutMS);
		}
	});
	jQuery('.submenu').bind('mouseover', function() {
		clearTimeout(menuTimeOut);
	});
	return true;
}

/* Ajax query */

	var waiting = '<div><img  src="templates/default/images/ajax.gif" alt="" /></div>';
	
	function Query (href, block, data, method, wait, nocache) {
		
		if (!method) {
			method = 'POST';
		}
		if (!wait){
			wait = waiting
		}
		if (cache.is(href) && !nocache) {
			
			jQuery(block).html(cache.get(href));
			return true;
		} else {
			jQuery(block).html(wait);
		}
	
		jQuery.ajax({
		    cache		: true,
		    timeout		: 10000,
		    dataType	: 'html',
		    type		: method,
		    url			: href,
		    data		: data + '&ajax=true',

			success: function(response){
				if (!nocache){
					cache.put(href, response);
				}
				jQuery(block).html(response);
			}
	   	});
	}


/* Cache */
	
	function Cache () {
	  
	   	var cacheData 		= new Object();
		var cachePrefetch  	= false;
	  
	  	this.get = function (href) {
			return cacheData[href];
		}
		
		this.is = function (href) {
			if (cacheData[href] != undefined && cacheData[href] != '') {
				return true;		
			}
			return false;
		}
		
		this.put = function (href, content) {
			
			cacheData[href] = content;
			return true;
		}

		this.remove = function (href) {
			cacheData[href] = '';
			return true;
		}

		this.prefetch = function () {
			
			jQuery.each(jQuery('.prefetch'), function(i, currentLink) {
				go(currentLink,'',true);
			});
			return true;
		}
	}
	var cache = new Cache ();

/* Common functions */
		
	function refreshCodeImage(){
		jQuery('#codeimageChangeable').attr('src','codeimage/' + Math.random());
	}
	
	function printPage () {
		if (window.print) {
			window.print();
		} else {
			var WebBrowser = '<object id="WebBrowserPrint" width="0" height="0" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
			document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
			WebBrowserPrint.ExecWB(6,2);
		}
		return false;
	}

/* Text tabs function */

	function hideTabElement(id) {
		jQuery('#'+id).hide();
	}
	
	function hideAllTabElements(){
		jQuery('.tab-text').hide();
		jQuery('.tabsLink').removeClass('tab-hovered');
	}
	
	function toggleTabElement(id){
		hideAllTabElements();
		jQuery('#'+id).toggle();
		jQuery('#link-'+id).addClass('tab-hovered');
	}


/* Forms */
	
	function checkmail (email) { 
		dog = email.indexOf("@"); 
		if (dog == -1) return false; 
		if (email.indexOf(".") == -1) return false; 
		if ((dog < 1) || (dog > email.length - 5)) return false;  
		if ((email.charAt(dog - 1) == '.') || (email.charAt(dog + 1) == '.')) return false; 
		return true;
	} 
	
	function checkForm () {
		
		var error = 0;
		
		jQuery.each(fieldArray, function(i, field) {
      		jQuery('#error-'+ field).html('');
			if 	((jQuery('#xfield-'+field).val() == '') ||
				(jQuery('#xfield-'+field).html() == '' && jQuery('#xfield-'+field).attr('tagName') == 'textarea') ||
				(jQuery('#xfield-'+field).attr('type') == 'checkbox' && jQuery('#xfield-'+field).attr('checked') == false)) {
				
				jQuery('#error-'+ field).html('��������� ������ ����');	
				error = 1;
			}
		});
		
		jQuery.each(emailArray, function(i, field) {
			jQuery('#error-'+ field).html('');
			if 	(jQuery('#xfield-'+field).val() == '') {
				jQuery('#error-'+ field).html('��������� ������ ����');	
				error = 1;
			} else if (!checkmail(jQuery('#xfield-'+field).val())) {
				 jQuery('#error-'+ field).html('������������ email');	
				error = 1; 
			}
		});
	
		if (error) return false;
	
		return true;
	}

	function getBodyScrollTop()	{
	  return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
	}

	function showForm () {
	
		jQuery.ajax({
		    cache		: true,
		    timeout		: 10000,
		    dataType	: 'html',
		    type		: 'POST',
		    
		    url			: this.href,
		    data		: {'ajax':'true'},
		    
		    error: function(){
		    },
		    
		    success: function(response){
				clientHeight = document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
				createdForm = jQuery('<div class="shadow" id="shadow"></div><div class="middle" id="middle"><div class="middle-0"><div class="middle-1"><div class="middle-2" id="middle2"></div></div></div></div>');
				jQuery('.footer').css('display','none');
				jQuery('.page').append(createdForm);
				jQuery('#shadow').height(jQuery('.page').height());
				jQuery('#middle').css('top',getBodyScrollTop() + 'px');
				jQuery('#middle').height(clientHeight);
				
				
				jQuery('#shadow').fadeTo('fast','.1',function(){jQuery('#shadow').show();});
				jQuery('#shadow').fadeTo('slow','.4',function(){
					jQuery('#middle').fadeIn('fast');
					jQuery('#middle2').html(response);
					refreshCodeImage();
					jQuery('.shadow-form').append('<div id="shadowClose" class="shadow-close"><img src="templates/common/images/close.gif" alt="close" /></div>');
					jQuery('#shadowClose').click(closeForm);
				});
		    }
	   	});
		
		return false;
	}

	function closeForm () {	
		jQuery('#middle').fadeOut('slow',function(){ jQuery('#shadow').fadeTo('slow','.1',function(){jQuery('#shadow').remove();jQuery('.footer').css('display','block');});});
	}
	
	function sendForm () {
		
		if (!checkForm()) return false;

		jQuery.ajax({
		    cache		: true,
		    timeout		: 10000,
		    dataType	: 'html',
		    type		: 'POST',
		    
		    url			: jQuery('#orderForm').attr('action'),
		    data		: jQuery('#orderForm').serialize()+'&ajax=true',
		    
		    error: function(){
		    },
		    
		    success: function(response){
			
				jQuery('#middle2').html(response);	
				if (jQuery(response).find('#orderForm').length > 0) {
					refreshCodeImage();
				} else {
					setTimeout(closeForm,1500);
				}
		    }
	   	});
		return false;
	}
	
function go (href, block, prefetch){
		
		
		if (cache.is(href)) {
			if (!prefetch) {
				jQuery(block).html(cache.get(href));
				registerEvents();
			}
			return true;
		}

		if (!prefetch) {
			jQuery('.pages').html(waiting);
		}
		
		jQuery.ajax({
		    cache		: true,
		    timeout		: 10000,
		    dataType	: 'html',
		    type		: 'POST',
		    
		    url			: href,
		    data		: {'ajax':'true'},
		    
		    error: function(){
		    },
		    
		    success: function(response){
				if (!prefetch) {
					cache.put(href, response);
					jQuery(block).html(response);
					registerEvents();
				} else {
					randomNumber = Math.floor(Math.random()*100+1);
					jQuery('#cache').append('<div id="cache'+randomNumber+'">'+response+'</div>'); 
						registerEvents();
					cache.put(href, jQuery('#cache'+randomNumber).html());
					jQuery('#cache'+randomNumber).remove();
				}
		    }
	   	});
	}