/**
 * @author lyykfi
**/
 
var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
var IE7 = false /*@cc_on || @_jscript_version == 5.7 @*/;
var gteIE7 = false /*@cc_on || @_jscript_version >= 5.7 @*/;
var isMSIE = /*@cc_on!@*/false;

//Cufon.replace('test', { fontFamily: 'test',hover: true });

jQuery.preloadImages = function() {
  for(var i = 0; i<arguments.length; i++) {
    jQuery("<img>").attr("src", arguments[i]);
  }
}

if(IE6) {
	 DD_belatedPNG.fix('.png');
}


$(function (){  
    //$("#footer").css("margin-top","-"+($("#footer").height()+1));
    //$("#wrapper .wrapper_1").css("padding-bottom",($("#footer").height()+1));
});


/**
 * @author paulcodiny <paulcodiny@gmail.com>
**/
$(function() {

	var Debug = {
		show: function(str) {
			if (typeof console != 'undefined') {
				console.log(str);
			}
		}
	};

	$('#login .enter input:image').hover(function() {
		$(this).attr('src', '/themes/mervin/img/login_text_hover.png');
	}, function() {
		$(this).attr('src', '/themes/mervin/img/login_text.png');
	});

	$('#email')
		.focus(function() {
			if ($(this).val() == 'e-mail') {
				$(this).val('');
			}
		})
		.blur(function() {
			if ($(this).val() == '') {
				$(this).val('e-mail');
			}
		});

	$('#passwd')
		.focus(function() {
			if ($(this).val() == 'пароль') {
				$(this).val('');
			}
		})
		.blur(function() {
			if ($(this).val() == '') {
				$(this).val('пароль');
			}
		});

	$('#passwd_again').blur(function() {
		if ($(this).val() != $('#reg #passwd').val()) {
			$('#passwds_diff').show('fast');
		} else {
			$('#passwds_diff').hide('fast');
		}
	});

	$('#search_query')
		.focus(function() {
			if ($(this).val() == 'Что искать?') {
				$(this).val('');
			}
		})
		.blur(function() {
			if ($(this).val() == '') {
				$(this).val('Что искать?');
			}
		});


	SlideShow = {
		current:  0,
		$wrapper: $("#slideshow"),
		count:    $('#slideshow > li').length,

		interval:    {},
		change_time: 8000,

		disable_next: false,
		disable_prev: false,

		init: function() {
			var t = this;
			$('#container3 .left_nav a').click(function() {
				t.prev();
				return false;
			});
			$('#container3 .right_nav a').click(function() {
				t.next();
				return false;
			});

			$('li:not(:first)', t.$wrapper).each(function(index) {
				$.preloadImages('/themes/mervin/img/banners/' + index + '.jpg');
				$(this).hide();
			});

			t.interval = window.setInterval(function() {
				t.next();
			}, t.change_time);
		},

		next: function() {
			var t = this;
			if (t.disable_next) {
				return;
			}
			t.disable_next = true;
			t.interval_stop();
			$('li', t.$wrapper).eq(t.current).fadeOut('fast', function() {
				++t.current;
				if (t.current == t.count) {
					t.current = 0;
				}
				$('li', t.$wrapper).eq(t.current).fadeIn('fast', function() {
					t.disable_next = false;
				});
				t.interval_start();
			});
		},

		prev: function() {
			var t = this;
			if (t.disable_prev) {
				return;
			}
			t.disable_prev = true;
			t.interval_stop();
			$('li', t.$wrapper).eq(t.current).fadeOut('fast', function() {
				--t.current;
				if (t.current == -1) {
					t.current = t.count - 1;
				}
				$('li', t.$wrapper).eq(t.current).fadeIn('fast', function() {
					t.disable_prev = false;
				});
				t.interval_start();
			});
		},

		interval_start: function() {
			var t = this;
			t.interval = window.setInterval(function() {
				t.next();
			}, t.change_time);
		},

		interval_stop: function() {
			var t = this;
			window.clearInterval(t.interval);
			t.interval = false;
		}

	}

	if ($('#slideshow').length > 0) {
		SlideShow.init();
	}

	$('.gender a').click(function() {
		// change hidden input value
		$(this).siblings().removeClass('current').end().toggleClass('current');
		return false;
	});

	CategoryMenu =  function(el){
		this.wrapper = $(el),
		this.countdown = null,
		this.init = function() {
			var t = this;
			$('.trigger', t.wrapper)
				.hover(function() {
					t.open();
				}, function() {
					t.countdown_close();
				});

			$('.navigation-sub', t.wrapper).hover(function() {
				t.open();
			}, function() {
				t.countdown_close();
			});

			$('.navigation-sub ul a', t.wrapper).click(function() {
				var g = $('.navigation-sub .gender a.current').attr('rel');
				if (g) {
					$(this).attr('href', $(this).attr('href') + '?f[g]=' + g);
				}
			});
		},

		this.open = function() {
			var t = this;
			if (t.countdown) {
				window.clearTimeout(t.countdown);
				t.countdown = null;
			}
			$('.navigation-sub', t.wrapper).fadeIn('fast', function() {
				t.state_open = true;
			});
		},

		this.countdown_close = function() {
			var t = this;
			this.countdown = window.setTimeout(function(){t.close.call(t)}, 300);
		},
		
		this.close = function() {
			var t = this;
			$('.navigation-sub', t.wrapper).fadeOut('fast', function() {
				t.state_open = false;
			});
		}
		
		this.init();
	};
	
	var menu = [];
	$('#topnav2 ul .type2').each(function(index, el){
		menu.push(new CategoryMenu($(el)));	
	});
	

	$('.right_1 #catalog1 #product_list li').css('clear', 'none');
	$('.right_1 #catalog1 #product_list li').each(function(index) {
		if (index > 0 && index % 3 == 0) {
			$(this).css('clear', 'both');
		}
	});


	var BrandDescription = {

		$link: $('#brand-toggle'),
		$descr: $('#brand-description'),

		init: function() {
			var t = this;
			
			t.$link.toggle(function() {
				t.$descr.slideDown('fast');
				return false;
			}, function() {
				t.$descr.slideUp('fast');
				return false;
			});

			if (window.location.href.indexOf('#history') > 0) {
				t.$link.click();
			}
		}

	};

	if ($('#brand-description').length > 0) {
		BrandDescription.init();
	}

	var Filter = {

		price_slider: $('#price-slider'),

		init: function() {
			var t = this;
			t.init_price();
			t.init_buttons();
			$('#set-filter').click(function() {
				$('.filter').toggle('fast');
				return false;
			});
			$('.filter .close').click(function() {
				$('.filter').toggle('fast');
				return false;
			});
		},

		init_price: function() {
			var t = this,
				$min_field = $('#f_min'),
				$max_field = $('#f_max'),
				min_val = $('#min-price-id').val(),
				max_val = $('#max-price-id').val();

			t.price_slider
				.slider({
					range: true,
					values: [min_val, max_val],
					step: 100,
					min: 500,
					max: 10000,
					slide: function(e, ui) {
						$min_field.val(ui.values[0]);
						$max_field.val(ui.values[1]);
					}
				});
			
			$min_field.val(min_val);
			$max_field.val(max_val);

			$min_field.change(function() {
				var val = $(this).val();
				if (val >= 500) {
					t.$price_slider.slider('values', 0, val);
				} else {
					alert('Минимальное значение должно быть 500');
					return false;
				}
			});

			$max_field.change(function() {
				var val = $(this).val();
				if (val <= 10000) {
					t.$price_slider.slider('values', 1, val);
				} else {
					alert('Максимальное значение должно быть 10000');
					return false;
				}				
			});

			window.setTimeout(function() {
				$("#price-slider a:first").css({
					'backgroundPosition': 'right top'
				});
				$("#price-slider a:last").css({
					'marginLeft': '-6px',
					'backgroundPosition': 'right top'
				});
			}, 500);
		},

		init_buttons: function() {
			var t = this;
			$('.filter .drop').click(function() {
				var link = t.generate_link($(this).attr('href'));
				$(this).attr('href', link);
			});
			$('.filter .apply').click(function() {
				var params = t.generate_filter(),
					link = t.generate_link(params);
				$(this).attr('href', link);
				if (params == 0) {
					alert('Вы не выбрали параметров фильтрации');
					return false;
				}
			});
		},

		generate_link: function(param_string) {
			var t = this,
				loc = window.location,
				url = loc.href,
				url_param_string = loc.search.substr(1),
				url_params = [],
				parameter = {
					key: '',
					val: '',
					used: false
				},
				parameters = [],
				url_parameters = [],
				params = [],
				result_query;

			// url
			url_params = url_param_string.split('&');

			// target
			if (param_string.indexOf('&') != -1) {
				params = param_string.split('&');
			} else {
				params[0] = param_string;
			}

			// url
			var i = 0, tmp = "", p;
			for (p in url_params) {
				tmp = p.split('=');
				parameter.key = tmp[0];
				parameter.val = tmp[1];
				url_parameters[i++] = parameter;
			}

			// target
			i = 0;
			tmp = "";
			for (p in params) {
				tmp = p.split('=');
				parameter.key = tmp[0];
				parameter.val = tmp[1];
				parameters[i++] = parameter;
			}

			result_query = "?";
			for (p in parameters) {
				for (var url_p in url_parameters) {
					if (p.key == url_p.key && !p.used && !url_p.used) {
						result_query += '&' + p.key + '=' + p.val;
						p.used = true;
						url_p.used = true;
					}
				}
			}
			for (p in parameters) {
				if (!p.used) {
					result_query += '&' + p.key + '=' + p.val;
				}
			}
			for (p in url_parameters) {
				if (!p.used) {
					result_query += '&' + p.key + '=' + p.val;
				}
			}

			url = param_string;

			return url;
		},

		generate_filter: function() {
			var t = this,
				params = "?";
				
			$('.filter .filter-field').each(function() {
				//Debug.show($(this).find('.field-head').length);
				if ($(this).find('.field-head').find('input:checked').length > 0) {
					//Debug.show('hooray');
					// name and price
					$(this).find('.field-body').find('input').each(function() {
						if (params != '?') {
							params += '&';
						}
						params += $(this).attr('name') + '=' + $(this).val();
					});

					// brand
					if ($(this).find('.field-body').find('select').length > 0) {
						if (params != '?') {
							params += '&';
						}
						//Debug.show($(this).find('.field-body').find('select').val());
						params += 'f[b]=' + $(this).find('.field-body').find('select').val();
					}

					// gender
					if ($(this).find('.field-body').find('.gender').length > 0) {

						var g = $(this).find('.field-body .gender a.current');
						if (g.length > 0) {
							params += params != '?' ? '&' : '';
							params += 'f[g]=' + g.attr('rel');
						}
					}
					
				} else {
					// name and price
					$(this).find('.field-body').find('input').each(function() {
						if (params != '?') {
							params += '&';
						}
						params += $(this).attr('name') + '=0';
					});

					// brand
					if ($(this).find('.field-body').find('select').length > 0) {
						if (params != '?') {
							params += '&';
						}
						
						params += 'f[b]=0';
					}

					// gender
					if ($(this).find('.field-body').find('.gender').length > 0) {
						if (params != '?') {
							params += '&';
						}

						params += 'f[g]=0';
					}
				}
			});
			//Debug.show(params);
			return params;
		}
	}

	if ($('.filter').length > 0) {
		Filter.init();
	}


	var SimilarSlider = {

		init: function() {

			var $pages     = $('div.pages'),
			$products      = $('#product_list'),
			pages_ul_width = ($products.children().size() - 4) * 240,
			left           = 0;

			$('#similar-slider').slider({
			  slide: function(event, ui) {
				left = ((pages_ul_width - $pages.width()) * ui.value) / 100;
				$products.css('left', -left);
			  }
			});

		}
	}

	if ($('#similar-slider').length > 0) {
		if ($('#product_list').children().length > 4) {
			SimilarSlider.init();
		} else {
			$('#similar-slider').hide();
		}
	}

	if ($('#account-creation_form').length > 0) {
		$('#account-creation_form').validationEngine({
			success:  false
		});
	}

});
