/** shuffle **/
(function($){
	$.fn.shuffle = function() {
		return this.each(function(){
			var items = $(this).children().clone(true);
			return (items.length) ? $(this).html($.shuffle(items)) : this;
		});
	}
	$.shuffle = function(arr) {
		for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
		return arr;
	}
})(jQuery);

var setupNSearch = function() {
    $("input[type=text]").each(function() {
        if ($(this).attr('title')) {
            if ($(this).val() == "" || $(this).val() == $(this).attr("title")) {
                $(this).val($(this).attr("title")).css('color', '#AAA0A0');
            } else {
                $(this).css('color', '#000');
            }
            $(this).focus(function() {
                if ($(this).val() == $(this).attr("title")) {
                    $(this).val("").css('color', '#000');
                }
            }).blur(function() {
                if ($(this).val() == "" || $(this).val() == $(this).attr("title")) {
                    $(this).val($(this).attr("title")).css('color', '#AAA0A0');
                } 
            });
        }
    });
}
$(document).ready(function() {setupNSearch();});

var setupNConsultant = function() {
	$('body').bind('click', function() {
		$('.online-consultant>table').hide();
	});
	$('.online-consultant>table').hide();
	$('.online-consultant>p>a').click(function() {
		setupNConsultOver1 = true;
		$('.online-consultant>table').toggle();
		return false;
	});
	$('.online-consultant>table').bind('click', function(event) {
		event.stopPropagation(); 
	});
}

if (typeof console == "undefined") {
    window.console = {
        log: function () {}
    };
}

var setupNHMenuTimer = false;
var setupNHMenuHider = function() {
	$('#menu>li>ul').hide();
	$('#menu>li>div').hide();
}

var setupNHMenu = function(pixelImage) {
	$('#menu>li>ul').each(function() {
		$(this).wrap('<div style="background: url(' + pixelImage + '); display:none; position:absolute; left:-15px; top:0; width:' + $(this).outerWidth() + 'px; height: ' + ($(this).outerHeight() + 30) + 'px; text-align:left;" />');
		$(this).parent().prepend($(this).parent().prev().clone().css('margin-left', '15px'));
		$(this).css({'left': '0'});
	});
	$('#menu>li>div').hover(function() {
		clearTimeout(setupNHMenuTimer);
	}).mouseleave(function() {
		$(this).hide();
		$(this).next().next().hide();
	});
	$('#menu>li>div>a').css({'cursor':'default'});
	$('#menu>li>a').mouseenter(function() {
		$('#menu>li>ul').hide();
		$('#menu>li>div').hide();
		$(this).next().show();
		setupNHMenuTimer = setTimeout(setupNHMenuHider, 200);
	});
}

var setupNScroller = function(panel, elem, prev, next, distance, timer, func) {
	var argsLength = arguments.length;
	var mainSelector, elemSelector, nextSelector, prevSelector, distance;

	if (argsLength > 0)	mainSelector = arguments[0]; else return false;
	if (argsLength > 1)	elemSelector = arguments[1]; else return false;
	if (argsLength > 2)	prevSelector = arguments[2]; else prevSelector = false;
	if (argsLength > 3)	nextSelector = arguments[3]; else nextSelector = false;
	if (argsLength > 4)	distance = arguments[4]; else distance = false;
	if (argsLength > 5)	timer = arguments[5]; else timer = false;
	if (argsLength > 6)	func = arguments[6]; else func = false;

	panel = $(mainSelector);
	if (panel.length > 0) {
		var parent = panel.parent();
		elems = panel.find(elemSelector);
		if (elems.length > 0) {
			var elemsWidth = 0;
			elems.each(function() {
				elemsWidth = elemsWidth + $(this).outerWidth();
			});
			panel.width(elemsWidth);
			if (elemsWidth > parent.width()) {

				if (!distance) {
					distance = parent.width();
				}

				var wL = 0;
				var wR = 0;
				var preparer = function() {
					var e = elems.first();
					var l = elems.last();
					wR = 0;
					wL = 0;
					
					while (wR < parent.width()) {
						panel.append(e.clone());
						wR = wR + e.outerWidth();
						e = e.next();
					}
					panel.width(panel.outerWidth() + wR);

					while (wL < parent.width()) {
						panel.prepend(l.clone());
						wL = wL + l.outerWidth();
						l = l.prev();
					}
					panel.width(panel.outerWidth() + wL).css('margin-left', '-=' + wL);
				}
				preparer();

				var tester = function() {
					var margin = parseInt(panel.css('margin-left'));
					if (margin > - parseInt(wL)) {
						panel.css('margin-left', '-=' + elemsWidth);
					} else if (margin < - parseInt(elemsWidth)) {
						panel.css('margin-left', '+=' + elemsWidth);
					}
					if (margin % distance != 0) {
						panel.css('margin-left', parseInt(margin / distance) * distance);
					}
				}

				var mover_can = true;
				var mover = function(distance) {
					if (mover_can) {
						mover_can = false;
						panel.animate({'margin-left': distance}, function() {
							if (func) func(this);
							tester();
							mover_can = true;
						});
					}
				}

				if (nextSelector && nextSelector.length > 0) {
					$(nextSelector).click(function() {
						mover('-=' + distance);
						return false;
					});
				}

				if (prevSelector && prevSelector.length > 0) {
					$(prevSelector).click(function() {
						mover('+=' + distance);
						return false;
					});
				}

				if (timer) {
					var timerHandle = false;
					timedRun = function() {
						mover('-=' + distance);
						timerHandle = setTimeout("timedRun()", timer);
					};
					setTimeout("timedRun()", timer);
				}
			}
		}
	}
}

var setupNBrandModel = function(carsparams) {
	// Functions
	var changeBrand = function() {
		var nowType = $('input[name=carsearch]:checked').val();
		var nowBrand = $('#carsearchBrand').val();
		var i = 0;
		var html = '';
		for (i in carsparams[nowType][nowBrand]) {
			html = html + '<option value="' + carsparams[nowType][nowBrand][i] + '">' + carsparams[nowType][nowBrand][i] + '</option>';
		}
		$('#carsearchModel').html(html);
	}
	var beforeTypeBrand = $('#carsearchBrand').val();
	var beforeTypeModel = $('#carsearchModel').val();
	var changeType = function() {
		var nowTypeBrand = $('#carsearchBrand').val();
		var nowTypeModel = $('#carsearchModel').val();
		var nowType = $('input[name=carsearch]:checked').val();
		var html = '';
		for (i in carsparams[nowType]) {
			html = html + '<option value="' + i + '">' + i + '</option>';
		}
		$('#carsearchBrand').html(html);
		$('#carsearchBrand').val(beforeTypeBrand);
		changeBrand();
		$('#carsearchModel').val(beforeTypeModel);
		beforeTypeBrand = nowTypeBrand;
		beforeTypeModel = nowTypeModel;
	}
	changeType();

	// Events
	$('#carsearchBrand').change(function() {
		changeBrand();
	}).keyup(function(e){
		if (e.keyCode>=37 && e.keyCode<=40) {
			changeBrand();
		}
	});
	$('input[name=carsearch]').change(function() {
		changeType();
	});
}

/**
 * @author: Ilya Ermolin <dotpack@gmail.com>
 */
var setupNHandFixer = function() {
	$(window).load(function() {
		// Инициализация
		var menu, menu_offset, menu_t, menu_l, menu_w, menu_h, hand_min_top, hand_max_top;
		var hidded = false;
		var fixxed = true;
		var hand_const = 180;
		var e6ible = $.browser.msie && parseInt($.browser.version) < 7;
		var e7ible = $.browser.msie && parseInt($.browser.version) <= 7;

		var hand_init = function() {
			if (hand_max_top - hand_min_top >= hand_const) {
				var new_fixed = parseInt($(window).scrollTop()) - hand_max_top;
				if (new_fixed < 0) {
					if (e6ible) {
						$('.rhand')[0].style.setExpression('top', 'eval(document.documentElement.scrollTop)');
					} else {
						$('.rhand').css({'top': hand_min_top});
					}
				} else {
					if (e6ible) {
						$('.rhand')[0].style.setExpression('top', 'eval(parseInt(document.documentElement.scrollTop) - ' + new_fixed + ')');
					} else {
						$('.rhand').css({'top': hand_min_top - new_fixed});
					}
				}
			}
		}

		var menu_init = function() {
			menu = $('.rcolumn');
			menu_offset = menu.offset();
			menu_t = menu_offset.top;
			menu_l = menu_offset.left;
			menu_w = menu.outerWidth();
			menu_h = menu.outerHeight();
			
			var action_div = $('div.actualactions');
			action_div.css({'width': '680px'});
			
			hand_min_top = parseInt(action_div.offset().top);
			hand_max_top = parseInt(action_div.height()) - hand_const;

			hand_init();
		}

		menu_init();
		$(window).resize(function() {
			menu_init();
		});
	
		// Фиксация правой руки при прокрутке вниз
		$(window).scroll(function() {
			hand_init();
		});

		// Скрытие правой руки
		$('body').mousemove(function(event) {
			var x = event.pageX - menu_l;
			var y = event.pageY - menu_t;
			if (x > 0 && x < menu_w && y > 0 && y < menu_h) {
				if (!hidded) {
					if (e7ible) {
						$('.rhand').hide();
						hidded = true;
					} else {
						$('.rhand').fadeOut(200, function() { hidded = true; });
					}
				}
			} else {
				if (hidded) {
					if (e7ible) {
						$('.rhand').show();
						hidded = false;
					} else {
						$('.rhand').fadeIn(200, function() { hidded = false; });
					}
				}
			}
			return true;
		});
	});
}
