$(document).ready(function(){
	if($('#gallery.fright').length){
		enVisual();
	}
	
	if($('#index').length){
		ruVisual();
	}
	if($('#estates').length){
		ruVisual2();
	}
	
	if($('.absoluteBasket').length){
		absoluteBasket();
	}
	
	
});

function gotoOrder(){
	location.href = "/realty/materials/basket/"
}

function absoluteBasket(){
	var minY = 25;
	var $aB = $('.absoluteBasket');
	var ofT = $aB.offset().top;
	var mt = 0;
	
	$(window).scroll(function(){
		$aB.stop(true);
		mt = $(this).scrollTop() - ofT;
		//console.log(mt);
		if(mt < minY){
			mt = minY;
		}else{
			mt = mt + minY;
		}
		$aB.animate({'margin-top': mt}, 300);
	});
}

function ruVisual(){
	//alert(1);
	var $index = $('#index');
	var $cont = $('#index .slider_container');
	var $controls = $('#index .m_slider_controls');
	var $cHtml = $controls.find('.msPad')
	var $changer = $index.parent().find('.changer');
	var $cL = $('#msLeft');
	var $cR = $('#msRight');
	
	var cW = ($('#index .visible').width()+20)*$('#index .visible').length;
	var eW = $('#index .visible').width()+20;
	var w = $index.width();
	var sQ = Math.floor((w+20)/eW);
	var q = $('#index .visible').length;
	var cBlockHtml = '<span class="b"><span class="bg"></span></span>';
	var eqB = 0;
	var eqE = sQ-1;
	var cA = 0;
	
	$index.width(eW*sQ);
	setupControls();
	
	$('#index .b').live({
		mouseenter:onHover,
		mouseleave:onMouseOut
	});
	$('#index .b').live('click', onClick);
	
	function setupControls(){
		cA = 0;
		eqB = 0;
		eqE = sQ-1;
		$cL.addClass('inactive');
		$cR.removeClass('inactive');
		$cont.css('left', 0);
		if(sQ>=q){
			$controls.hide();
			return false;
		}else{
			$cHtml.html('');
			for(var i = 0; i < q; i++){
				$cHtml.append(cBlockHtml);
			}
			var cnt = sQ;
			$cHtml.find('.b:eq('+cnt+')').prevAll().addClass('a');
			
			$controls.show();
			return true;
		}
	}
	
	checkControls();
	
	function checkControls(){
		if(eqB <= 0){
			$cL.addClass('inactive');
		}else{
			$cL.removeClass('inactive');
		}
		
		if(eqE >= q-1){
			$cR.addClass('inactive');
		}else{
			$cR.removeClass('inactive');
		}	
	}
	
	$cL.click(function(){
		if(!$cL.hasClass('inactive')){
			$cR.removeClass('inactive');
			cA = cA-(sQ-1);
			if(cA <= 0){
				cA = 0;
				$cL.addClass('inactive');
			}
			$cont.stop(true);
			var curL = $cont.position().left;
			curL = Math.round(Math.abs(curL/eW)) - cA;
			var time = Math.round(Math.abs(curL)*200);
			$cont.animate({left:eW*cA*-1}, time);
			$cHtml.find('.a').removeClass('a')
			for(var i = cA; i < cA+sQ; i++){
				$cHtml.find('.b:eq('+i+')').addClass('a');
			}
			//checkControls();
		}
	});
	
	$cR.click(function(){
		if(!$cR.hasClass('inactive')){
			$cL.removeClass('inactive');
			cA = cA+(sQ-1);
			if(cA+sQ >= q){
				cA = q - sQ;
				$cR.addClass('inactive');
			}
			$cont.stop(true);
			var curL = $cont.position().left;
			curL = Math.round(Math.abs(curL/eW)) - cA;
			var time = Math.round(Math.abs(curL)*200);
			$cont.animate({left:eW*cA*-1}, time);
			$cHtml.find('.a').removeClass('a')
			for(var i = cA; i < cA+sQ; i++){
				$cHtml.find('.b:eq('+i+')').addClass('a');
			}
			//checkControls();
		}
	});
	
	function onClick(e){
		$cont.stop(true);
		var curL = $cont.position().left;
		curL = Math.round(Math.abs(curL/eW)) - eqB;
		var time = Math.round(Math.abs(curL)*200);
		$cont.animate({left:eW*eqB*-1}, time);
		cA = eqB;
		$cHtml.find('.a').removeClass('a')
		for(var i = eqB; i <= eqE; i++){
			$cHtml.find('.b:eq('+i+')').addClass('a');
		}
		
		checkControls();
	}
	
	function onHover(e){
		var pos = Math.floor(sQ/2);
		if(pos == sQ/2){
			eqB = $(this).index() - pos+1;
			eqE = $(this).index() + pos;
		}else{
			eqB = $(this).index() - pos;
			eqE = $(this).index() + pos;
		}
		
		if(eqB < 0){
			eqE = eqE + eqB*-1;
			eqB = 0;
		}
		
		if(eqE > q-1){
			eqB = eqB - (eqE - (q-1));
			eqE = q-1;
		}
		for(var i = eqB; i <= eqE; i++){
			$cHtml.find('.b:eq('+i+')').addClass('h');
		}
	}
	
	function onMouseOut(e){
		$controls.find('.h').removeClass('h');
	}
	
	function reInit(){
		$index.css('width','100%');
		w = $index.width();
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	}
	
	
	$(window).resize(function(){
		$index.css('width','100%');
		w = $index.width();
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	});
	
	$('#selector span').click(function(){
		$index.css('width','100%');
		w = $index.width();
		$cont.stop(true,true);
		$cont.css({left: 0});
		q = $('#index .visible').length;
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	});
	
	$changer.find('.fleft').click(function(){
		$index.css('width','100%');
		w = $index.width();
		q = $('#index .visible').length;
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	});
	
	$changer.find('.fright').click(function(){
		$cont.stop(true, true);
		$cont.css({left: 0});
	});
}


function ruVisual2(){
	var $index = $('#estates .thumbs');
	var $cont = $('#estates .slider_container');
	var $controls = $('#estates .m_slider_controls');
	var $cHtml = $controls.find('.msPad')
	var $changer = $index.parent().find('.changer');
	var $cL = $('#msLeft2');
	var $cR = $('#msRight2');
	
	var cW = ($('#estates .visible').width()+20)*$('#estates .visible').length;
	var eW = $('#estates .visible').width()+20;
	var w = $index.width();
	var sQ = Math.floor((w+20)/eW);
	var q = $('#estates .visible').length;
	if(q>15){
		$('#estates .visible').removeClass('visible');
		var count = 0;
		while(count <= 15){
			var ind = getRandomInt(0, q-1);
			var $obj = $('#estates .thumb:eq('+ind+')');
			if(!$obj.hasClass('visible')){
				$obj.addClass('visible');
				count++;
			}
		} 
		q = $('#estates .visible').length;
	}
	
	var cBlockHtml = '<span class="b"><span class="bg"></span></span>';
	var eqB = 0;
	var eqE = sQ-1;
	var cA = 0;
	
	$index.width(eW*sQ);
	setupControls();
	
	$('#estates .b').live({
		mouseenter:onHover,
		mouseleave:onMouseOut
	});
	$('#estates .b').live('click', onClick);
	
	function setupControls(){
		cA = 0;
		eqB = 0;
		eqE = sQ-1;
		$cL.addClass('inactive');
		$cR.removeClass('inactive');
		$cont.css('left', 0);
		if(sQ>=q){
			$controls.hide();
			return false;
		}else{
			$cHtml.html('');
			for(var i = 0; i < q; i++){
				$cHtml.append(cBlockHtml);
			}
			var cnt = sQ;
			$cHtml.find('.b:eq('+cnt+')').prevAll().addClass('a');
			
			$controls.show();
			return true;
		}
	}
	
	checkControls();
	
	function checkControls(){
		if(eqB <= 0){
			$cL.addClass('inactive');
		}else{
			$cL.removeClass('inactive');
		}
		if(eqE >= q-1){
			$cR.addClass('inactive');
		}else{
			$cR.removeClass('inactive');
		}	
	}
	
	$cL.click(function(){
		if(!$cL.hasClass('inactive')){
			$cR.removeClass('inactive');
			cA = cA-(sQ-1);
			if(cA <= 0){
				cA = 0;
				$cL.addClass('inactive');
			}
			$cont.stop(true);
			var curL = $cont.position().left;
			curL = Math.round(Math.abs(curL/eW)) - cA;
			var time = Math.round(Math.abs(curL)*200);
			$cont.animate({left:eW*cA*-1}, time);
			$cHtml.find('.a').removeClass('a')
			for(var i = cA; i < cA+sQ; i++){
				$cHtml.find('.b:eq('+i+')').addClass('a');
			}
			//checkControls();
		}
	});
	
	$cR.click(function(){
		if(!$cR.hasClass('inactive')){
			$cL.removeClass('inactive');
			cA = cA+(sQ-1);
			if(cA+sQ >= q){
				cA = q - sQ;
				$cR.addClass('inactive');
			}
			$cont.stop(true);
			var curL = $cont.position().left;
			curL = Math.round(Math.abs(curL/eW)) - cA;
			var time = Math.round(Math.abs(curL)*200);
			$cont.animate({left:eW*cA*-1}, time);
			$cHtml.find('.a').removeClass('a')
			for(var i = cA; i < cA+sQ; i++){
				$cHtml.find('.b:eq('+i+')').addClass('a');
			}
			//checkControls();
		}
	});
	
	function onClick(e){
		$cont.stop(true);
		var curL = $cont.position().left;
		curL = Math.round(Math.abs(curL/eW)) - eqB;
		var time = Math.round(Math.abs(curL)*200);
		$cont.animate({left:eW*eqB*-1}, time);
		cA = eqB;
		$cHtml.find('.a').removeClass('a')
		for(var i = eqB; i <= eqE; i++){
			$cHtml.find('.b:eq('+i+')').addClass('a');
		}
		
		checkControls();
	}
	
	function onHover(e){
		var pos = Math.floor(sQ/2);
		if(pos == sQ/2){
			eqB = $(this).index() - pos+1;
			eqE = $(this).index() + pos;
		}else{
			eqB = $(this).index() - pos;
			eqE = $(this).index() + pos;
		}
		
		if(eqB < 0){
			eqE = eqE + eqB*-1;
			eqB = 0;
		}
		
		if(eqE > q-1){
			eqB = eqB - (eqE - (q-1));
			eqE = q-1;
		}
		for(var i = eqB; i <= eqE; i++){
			$cHtml.find('.b:eq('+i+')').addClass('h');
		}
	}
	
	function onMouseOut(e){
		$controls.find('.h').removeClass('h');
	}
	
	function reInit(){
		$index.css('width','100%');
		w = $index.width();
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	}
	
	
	$(window).resize(function(){
		$index.css('width','100%');
		w = $index.width();
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	});
	
	$changer.find('.fleft').click(function(){
		$index.css('width','100%');
		w = $index.width();
		q = $('#estates .visible').length;
		
		if(q>15){
			$('#estates .visible').removeClass('visible');
			var count = 0;
			while(count <= 15){
				var ind = getRandomInt(0, q-1);
				var $obj = $('#estates .thumb:eq('+ind+')');
				if(!$obj.hasClass('visible')){
					$obj.addClass('visible');
					count++;
				}
			} 
			q = $('#estates .visible').length;
		}
		sQ = Math.floor((w+20)/eW);
		$index.width(eW*sQ);
		setupControls();
	});
	
	$changer.find('.fright').click(function(){
		$cont.stop(true, true);
		$cont.css({left: 0});
		$('#estates .thumb').addClass('visible');
	});
}






function enVisual(){
	var $gal = $('#gallery.fright');
	var $imgs = $('#gallery.fright .pic');
	var $curImg = $imgs.first();
	var $nextImg;
	var $ctrl = $('#gallery.fright .cControls');
	var $cont = $ctrl.find('.cgContainer');
	var $cItem = $ctrl.find('.item');
	var $cL = $ctrl.find('#cgLeft');
	var $cR = $ctrl.find('#cgRight');
	
	/*Gallery Controls*/
	var itemWidth = 41;
	var itemsCount = $ctrl.find('.item').length;
	var cOffset = 0;
	var maxOffset = 0;
	var maxOffset = -1 *(itemsCount*itemWidth - $ctrl.find('.cgOverflow').width());
	
	$imgs.each(function(){
		$(this).css({left: ($gal.width() - $(this).width())/2,top:($gal.height() - $(this).height())/2});
	});
	
	$gal.everyTime(5000, onTimer);
	
	function onTimer(){
		if($curImg.next('.pic').length){
			$nextImg = $curImg.next('.pic');
		}else{
			$nextImg = $imgs.first();
		}
		var move = false;
		var rel = $nextImg.attr('rel');
		$ctrl.find('.active').removeClass('active');
		var $item = $cItem.filter('[rel='+rel+']').addClass('active');
		
		if($item.next().next().length && $item.prev().prev().length){
			cOffset = cOffset - 41;
			$cL.show();
			$cR.show();
		}else{
			if($item.next().length == 0){
				$cL.show();
				$cR.hide();
			}
			if($item.prev().length == 0){
				cOffset = 0;
				$cL.hide();
				$cR.show();
			}
		}
		$cont.animate({left:cOffset}, 200);
		$curImg.stop(true, true);
		$nextImg.stop(true, true);
		$curImg.fadeOut(200, function(){
			$nextImg.fadeIn(200);
			$curImg = $nextImg;
		});
	}
	
	$gal.hover(function(){
		$gal.stopTime();
	}, function(){
		$gal.everyTime(5000, onTimer);
	});
	
	
	
	$(window).resize(function(){
		$imgs.each(function(){
			$(this).css({left: ($gal.width() - $(this).width())/2,top:($gal.height() - $(this).height())/2});
		});
	});
	
	
	/*Gallery controls*/
	$cL.hide();
	$cR.show();
	
	$cL.click(function(){
		$cR.show();
		if(cOffset <= -1*itemWidth){
			cOffset = cOffset + itemWidth;
		}else{
			cOffset = 0;
		}
		if(cOffset == 0){$cL.hide();}
		$cont.stop(true, true);
		$cont.animate({left:cOffset}, 150);
	});
	
	$cR.click(function(){
		$cL.show();
		if(cOffset - itemWidth >= maxOffset){
			cOffset = cOffset - itemWidth;
		}else{
			cOffset = maxOffset;
		}
		if(cOffset == maxOffset){$cR.hide();}
		$cont.stop(true, true);
		$cont.animate({left:cOffset}, 150);
	});
	
	$cItem.click(function(){
		var rel = $(this).attr('rel');
		$ctrl.find('.active').removeClass('active');
		$(this).addClass('active');
		$nextImg = $imgs.filter('[rel='+rel+']');
		$curImg.stop(true,true);
		$nextImg.stop(true,true);
		$curImg.fadeOut(200, function(){
			$nextImg.fadeIn(200);
			$curImg = $nextImg;
		});
	});
}


/*Support functions*/
function getRandomInt (min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

function getRandomArbitary (min, max) {
    return Math.random() * (max - min) + min;
}

