var Site = function(){
	var self = this;
	var settings = new Settings();
	this.init = function(){
		help_text();
		carousel();
		select_replace();
		cart_optional_fields();
		grayscale_images();
		recalc_cart();
		js_back();
		fancy_form();
		print();
		sortForm();
		zoom();
	};
	
	var sortForm = function(){
		$('.sort_form select').change(function(){
			$(this).closest('form').submit();
		});
	}
	var print =  function(){
		$('a.print').click(function(e){
			e.preventDefault();
			window.print();
		});
	}
	
	var js_back = function(){
		$('.js_back').show();
		$('.js_back_2').click(function(e){
			e.preventDefault();
			history.go(-2);
		});
		$('.js_back_3').click(function(e){
			e.preventDefault();
			history.go(-3);
		});
	};
	var help_text = function(){
	       $('.help_text, .single_login_form .label').each(function(){
	         $(this).css({
	               'position':'absolute',
				   'display':'inline'
	           });
	           $(this).parent().css({
	               'position':'relative'
	           });
	           if ($(this).parent().css('display')=='inline'){
	               $(this).parent().css({
	                   'display':'inline-block'
	               });
	           }
	           var T =this;
	           var valueChecker = '';
	           var input = $(this).parent().find('input,textarea');
	           var position = $(input).position();
	           var padding_top = parseInt($(input).css('padding-top') ? $(input).css('padding-top') : 0);
	           var padding_left = parseInt($(input).css('padding-left') ? $(input).css('padding-left') : 0);
	           var margin_left = parseInt(typeof(parseInt($(input).css('margin-left')))=='number' ? $(input).css('margin-left') : 0);
	           var margin_top = parseInt($(input).css('margin-top')?$(input).css('margin-top'):0);
	           var font = $(input).css('font-family');
	           var font_size = $(input).css('font-size');
	           var height = $(input).height();
	           var line_height = height+'px';
	           var color = $(input).css('color');
	           var border_left_width=typeof($(input).css('border-left-width'))!='undefined' ? parseInt($(input).css('border-left-width')?$(input).css('border-left-width'):0):0;
	           var border_top_width=parseInt($(input).css('border-top-width')?$(input).css('border-top-width'):0);

	           if (input.is('textarea')){
	               height='16px';
	               line_height='16px';
	           }
	          margin_left = isNaN(margin_left) ? 0 : margin_left;

	          margin_top = isNaN(margin_top) ? 0 : margin_top;
	           $(this).css({
	               'font-family':font,
	               'font-size':font_size,
	               'left': position.left +margin_left+padding_left+border_left_width+'px',
	               'top': position.top +padding_top+margin_top+border_top_width+'px',
	               'z-index':1000,
	               'position':'absolute',
	               'color':color,
	               'line-height':line_height,
	               'height':height
	           });

	           triggerKeydownOnValueChange = function(input,prevVal){
	               if (typeof(pval)=='undefined')
	                   var pVal = prevVal;
	               if ($(input).val()!=pVal)
	                   $(input).trigger('keydown');

	               if (typeof(pval)=='undefined')
	                   var pVal='';
	               pVal = $(input).val();
	           };
	           $(input).focusin(function(){
	               $(T).css('opacity',0.5);
	               if ($(input).attr('type')=='text' && $('input[type=password]').length){
	                   var prevVal = $(input).val();
	                   valueChecker = setInterval(function(){triggerKeydownOnValueChange($(input),prevVal);},500);
	               }
	           });
	           $(input).keydown(function(){
	               $(T).hide();
	               if ($(input).attr('type')=='text' && $('input[type=password]').length){
	                   var pass = $('input[type=password]',$(input).closest('form'));
	                   $(pass).each(function(){
	                       if ($.trim($(this).val())!=''){
	                           $(this).trigger('keydown');
	                       }
	                   });
	               }
	           });

	           if ($.trim($(input).val())!=''){
	               $(input).trigger('keydown');
	           }
	           $(input).change(function(){
	               $(input).trigger('keydown');
	           });
	           $(input).focusout(function(){
	               if ($('input[type=password]').length)
	                   clearInterval(valueChecker);
	               if ($.trim($(this).val())=='')
	                   $(T).show();
	                   $(T).css('opacity',1);
	           });
	       });
	   };
	var carousel =  function(){
		if ($.isFunction($().jcarousel)){
			$('#jcarousel').jcarousel({
			});
			$('#jcarousel a, .proper_album .image a').live('click',function(e){
				e.preventDefault();
				$(this).parent().siblings().removeClass('active');
				$(this).closest('li').addClass('active');
				$('*').css('cursor','wait');
				$.get($(this).attr('href')+'?ajax=1', function(data){
					var big_image = $('.image:first');
					var img = $(data).find('.image:first');
					//console.log($(data).find('#big_img').attr('src'));
					$(big_image).replaceWith(img);
					
					$('*').css('cursor','');
				});
			});
		}
	};

	var select_replace = function(){
		if ($('body').has('.sel_replace')){
			var replacement = $('<div />', {'class':'select_replace'});
			var options_list = $('<ol />',{'class':'select_option_list'});
			$('.sel_replace, .pay_replace').each(function(){
				var select = $(this);
				var replacer = $(replacement).clone();
				var id = $(select).attr('id')+'_replacer';
				var textholder = $('<span />',{'class': 'textholder', 'text':$('option:selected',select).length ? $('option:selected',select).text() : $('option:first-child',select).text()});
				$(replacer).append(textholder).append('<a href="#'+id+'_target" class="show_replaced_select"><img src="/images/sel_more.png" alt="pokaż" /></a>');
				var options = $(options_list).clone().attr('id', id+'_target');
				var li = $('<li />');
				$('option',select).each(function(){
					var a = $('<a />',{'href':$(this).attr('value'), 'text': $(this).attr('text')});
					var opt = $(li).clone().append(a);
					if ($(this).attr('selected')=='selected')
						$(opt).addClass('selected');

					$(options).append(opt);
				});
				$(replacer).attr('id',id);
				$(select).parent().append(replacer);
				$('body').append(options);
			});
			$('.show_replaced_select').bind('click',function(e){
				e.preventDefault();
				var T = $(this);
				var select = $('#'+$(this).parent().attr('id').replace('_replacer',''));
				var list = $(T.attr('href'));
				if (!$(list).hasClass('show')){
					var parent  = $(this).parent();
					var left = parseInt($(parent).offset().left)+parseInt($(parent).outerWidth())+'px';
					var top = parseInt($(parent).offset().top)+'px';
					$(list).css({
						'position' 	: 'absolute',
						'z-index'	: 20,
						'top'		: top,
						'left'		: left
					});
					$(list).show().addClass('show');
					$('a',list).one('click',function(e){
						e.preventDefault();

						$('.textholder',T.parent()).text($(this).text());
						$(this).parent().addClass('selected').siblings().removeClass('selected');
						$(select).val($(this).attr('href'));
						$(select).trigger('change');
						$(list).hide().removeClass('show');
					});
				}else{
					$(list).hide().removeClass('show');
				}
			});
		}
	};

	var cart_optional_fields = function(){
		if ($('#register_input').attr('checked')){
			$('.register_form .password_li, .register_form .confirm_password_li').show();
		}
		$('#register_input').click(function(){
			$('.register_form .password_li, .register_form .confirm_password_li').toggle('slow');
		});
		if($('#VAT_invoice_input').attr('checked')){
			$('.register_form .company_li, .register_form .tax_id_li').show();
		}
		$('#VAT_invoice_input').click(function(){
			$('.register_form .company_li, .register_form .tax_id_li').toggle('slow');
		});
	};
	
	var grayscale_images = function(){
		if (typeof(grayscale)!='undefined' && $('html').hasClass('canvas')){ //new version of IE or modern browser supporting canvas
			$('.galleries img').each(function(){
				prepareMouseOverImage(this, $(this).attr('src'));
				$(this).css('visibility','visible');
			});
		}else{ //ie or some old browser
			try {
				$('.galleries img').css({'filter':'gray','visibility':'visible'});
				$('.galleries img').hover(
					function(){$(this).css('filter','');},
					function(){$(this).css('filter','gray');});
			} catch (e) {}
		}
	};
	
	recalc_cart = function(){
		$('.cart .payment select').bind('change',function(){
			var value= $('#value');
			var value_amount = value.data('value');
			var change= 0;
			$('option:selected',$(this).closest('fieldset')).each(function(){
				change = change + $(this).data('price');
			});
			value.text(parseFloat(value_amount+change).toFixed(2));
		});
		
		//for onload
		$('.cart .payment select').trigger('change');
	};
	
	var fancy_form = function(){
		$('a.fancy').fancybox({
			onComplete : function(){help_text();}
		});
		/*button, #fancybox-content .single_login_form input[type=submit]*/
		$('#fancybox-content .single_login_form ').live('submit',function(e){
			var form = $(this).closest('form');
			var url = $(form).attr('action');
			e.preventDefault();
			$.fancybox.showActivity();
			$.ajax({
				type	: "POST",
				cache	: false,
				url		: url,
				data	: $(form).serializeArray(),
				success: function(data) {
					$.fancybox(data);
					$.fancybox.hideActivity();
					setTimeout(function(){help_text();},1000);
				}
			});
		});
	};
	
	var zoom = function(){

	}
	
};
$(document).ready(function(){
	site = new Site();
	site.init();
});
