var jQ = jQuery.noConflict();
jQ(function(){

	//подключаем галлерею
	jQ("a#fancy").click(function(){
		ShowPopup(jQ(this).attr('href'));
		return false;
	});

	// carousel  у нас не присутствует в попапах или через аякс, поэтому ее не упдатим
	jQ(function(){
		jQ(".carousel").carousel({ animSpeed: "slow", dispItems: 4 });
	});

	update_controls();
	
    var preloader = '<div align="center"><img src="/images/ajax-loader.gif" alt="Loading..."/></div>';

    //для сброса формы
    function resetForm(_id){
        jQ(_id).each(function(){
            this.reset();
        });
    } 

	//favorite open
	jQ("#favorite .fav").toggle(
		function(){ jQ(this).closest("#favorite").find(".drop").show(); },
		function(){ jQ(this).closest("#favorite").find(".drop").hide(); }
	);  	

	//update_controls
	function update_controls(){


	//подгружаем qtip
	//jQ("a.tooltip[title]").qtip();
		
		JT_init();
		
		//inset
		jQ(".inset .ilinks a").click(function(){
			var jQparent = jQ(this).closest("li");
			var jQpraparent = jQ(this).closest(".inset");
			var ind = jQparent.index();
			jQpraparent.find(".ilinks .active").removeClass("active");
			jQparent.addClass("active");
			
			if( jQpraparent.find(".ibox:eq("+ind+")").is(":hidden") ) {
				jQpraparent.find(".ibox.active").hide().removeClass("active");
				jQpraparent.find(".ibox:eq("+ind+")").show().addClass("active");
			} else {
			}
			
			return true; // !jQ(this).hasClass('noscroll');  //если ненадо скроллить
		});		
		//minipopup
		jQ(".pos .posbox").hover(
			function(){ jQ(this).show() }, 
			function(){ jQ(this).hide(); }
		);
		jQ(".pos .catitem").hover(
			function(){
				var jQparent = jQ(this).closest(".pos");
				var position = jQ(this).position();
				var position2 = jQ(this).closest("ul").position();
				var jQboxCnt = jQ(this).html();
				jQparent.find(".posbox").find(".inner").html(jQboxCnt);
				jQparent.find(".posbox").css({top: position.top - 25 + "px", left: position.left + position2.left - 17 + "px"}).show();
			}, 
			function(){
				jQ(".pos .posbox").hide();
			}
		);
		jQ(".pos .posbox .close").click(function(){
			jQ(this).closest(".posbox").hide();
			return false;
		});
		
		//style select
		jQ("select.select").css({opacity:'0', filter:'alpha(opacity=0)'});
		jQ("<span/>").addClass("styled").insertBefore("select.select");
		jQ("select.select").change(function () {
			var str = "";
			var dataVals = "";
			jQ(this).closest('.mokselect').find('select.select option:selected').each(function(){
				dataVals += jQ(this).text() + " ";
			});
			jQ(this).closest('.mokselect').find('span.styled').html(
			"<span class='selecttext'>" + dataVals + "</span><span class='selectbutton'></span>"
			);
		}).change();
		//class width***px = width="***px" or width***pr = width="***%"
		var pattern = /width(\d+)(px|pr)/;
		jQ("*[class*=width]").each(function(index, item) {
			var res = jQ(item).attr("class").match(pattern);
			if (res === null) return;
			jQ(item).css('width', res[1]+''+(res[2]=='px'?'px':'%'));
		});		
	}

	function HidePopup(){
		jQ("#shadow").hide();
		jQ("#popup").hide();		
	}

	function ShowPopup(_url){
		var pos = jQ(window).scrollTop();
		jQ("#popup").css('top', pos + 100 + 'px');
		jQ("#popupcontent").html(preloader);		
		jQ("#popup").show();
		jQ("#shadow").show();
		jQ.ajax({
			url:_url,
			success:function(data){
				jQ("#popupcontent").html(data);
				update_controls();
			},
			error:function(msg){
				jQ("#popupcontent").html(msg);
			}
		});		
		
	}

	jQ("#shadow").live('click',function(){
		HidePopup();
		return false;
	});

    //закрыть попап
    jQ("#popup .close").live('click', function(){
        //resetForm("#orderform");
        HidePopup();
        return false;
    });

//=========== всякие примочки, которые использую попап =================
    jQ("#do_feedback,#do_callback,#do_newcar").live('click', function(){
		//alert('WILL DO');
		ShowPopup(jQ(this).attr('href'));
        return false;
    });

    //отправка попапа
    jQ("#sendfeed,#sendcall,#sendnewcar").live('click', function(){
        var formdata = jQ("#popupform").serialize();
        var _url = jQ("#popupform").attr('action');
        jQ("#popupcontent").html(preloader);
        var pos = jQ("#popup").position();
        jQ(window).scrollTop(pos.top-30);
        //console.log(_url);
        jQ.ajax({
            type: "POST",
            url: _url,
            data: formdata,
            success: function(msg){
				//console.log(msg);
                jQ("#popupcontent").html(msg);    
                update_controls();
            },
            error: function(msg){
                jQ("#popupcontent").html('Во время отпраки заказа возникли проблемы...');
            } 
        });
        
        return false;
    });

//=============== ИЗБРАННОЕ ============================	 
    //добавление в "избранное" на сайте
    jQ(".favorite a, .article .data .addfav a").live('click', function (){
        var href = jQ(this).attr('href');
        var obj = jQ(this); 
        if (jQ(this).is(".active") ){
            //удалить из списка избранного
            jQ.ajax({
                type: "GET",
                url: href,
                data: null,
                success: function(msg){
                    //обновить блок "избранное"
                    jQ("#favorite div.drop").load("/favorite/list");
                    //меняем стиль ссылки ("гаснет")
                    obj.removeClass("active");
                    obj.attr("title","Добавить в избранное");
                },
                error: function(msg){
                    alert( "Something was wrong!");
                }       
            });
		}else{
            //добавляем в список избранного
            jQ.ajax({
                type: "GET",
                url: href,
                data: null,
                success: function(msg){
                    //обновить блок "избранное"
                    jQ("#favorite div.drop").load("/favorite/list");
                    //меняем стиль ссылки ("звездочка светится")
                    obj.addClass("active");
                    obj.attr("title","Удалить из избранного");
                },
                error: function(msg){
                    alert( "Something was wrong!");
                }       
            });
            
		}
        return false;
    });

//=========отправка вопросов на странице товаров================
    jQ("#question_btn").live('click',function(){
       //alert("Будем отправлять");
       //получаем данные формы
       var formdata = "body="+jQ("#feedmess").val()+"&"+"email="+jQ("#feedmail").val();
       //alert('Will send question!');
       jQ("#gblock_form").html(preloader);
       jQ.ajax({
            type: "POST",
            url: "/question/send/",
            data: formdata,
            success: function(msg){
                jQ("#gblock_form").html(msg);
            },
            error: function(msg){
                jQ("#gblock_form").html('Не удалось отправить запрос. Попробуйте, пожалуйста, позже...');
            }
       });
       
       return false; 
    });

//===================== ЗАКАЗ =========================
//отображение формы заказа
    jQ(".byit").live('click', function(){
		ShowPopup(jQ(this).attr('href'));
        return false;
    });
    
    //увеличение кол-ва
    jQ("#popup .wid .rud").live('click', function(){
        var v = jQ(this).siblings(".sinp").find("input").val();
        jQ(this).siblings(".sinp").find("input").val(parseInt(v)+1);
        jQ(this).siblings(".sinp").find("input").change();
        return false;
    });
    
    //уменьшение кол-ва
    jQ("#popup .wid .lud").live('click', function(){
        var v = jQ(this).siblings(".sinp").find("input").val();
        if(parseInt(v)>0)jQ(this).siblings(".sinp").find("input").val(parseInt(v)-1);
        jQ(this).siblings(".sinp").find("input").change();
        return false;
    });
   
    //пересчет общей стоимости
    jQ("input#good_qty, input#mount_qty").live('change', function(){
        
        if(parseInt(jQ("#good_qty").val())<0)jQ("#good_qty").val(0);
        if(parseInt(jQ("#mount_qty").val())<0)jQ("#mount_qty").val(0);
        
        var g = jQ("#good_qty").val() * jQ("#good_price").val();
        var m = jQ("#mount_qty").val() * jQ("#mount_price").val();
        var t = g+m;
                
        jQ("#good_total .cos strong").text(g);
        jQ("#mount_total .cos strong").text(m);       
        jQ("#ordertotal .cos strong").text(t);
    });

	//чекбокс в окне заказа
	jQ("#my_delivery").live('change',function(){
		//скрыть/отобразить адрес доставки
		if(jQ(this).prop('checked'))jQ("#address").hide();
		else jQ("#address").show();
	});

    //отправка заказа
    jQ("#sendorder").live('click', function(){
        var formdata = jQ("#popupform").serialize();
        jQ("#popupcontent").html(preloader);
        var pos = jQ("#popup").position();
        jQ(window).scrollTop(pos.top-30);
        jQ.ajax({
            type: "POST",
            url: "/order/save/",
            data: formdata,
            success: function(msg){
                jQ("#popupcontent").html(msg);    
                update_controls();
            },
            error: function(msg){
                jQ("#popupcontent").html('Во время отпраки заказа возникли проблемы...');
            } 
        });
        
        return false;
    });

//======================== для комментариев ============================

    //отображение попап окна
    jQ(".commentit").live('click', function(){
		//alert('Load Comment form!');
        ShowPopup(jQ(this).attr('href'));
        return false;
    }); 
    
    //установка оценки
    jQ(".stars a").live('click', function(){
        //находим количество звездочек до выбранной
        var rank = jQ(this).prevAll("a").length;
        ++rank;
        
        //убираем всем звездочкам класс
        jQ(this).siblings("a").removeClass();
        //надо присвоить класс active звездочкам с 1-й по rank
        jQ(this).prevAll("a").addClass("active");
        jQ(this).addClass("active");
                
        jQ("#rank").val(rank);
        
        return false;
    });
    
    //отправка отзыва
    jQ("#commentsend").live('click', function(){
        var formdata = jQ("#commentform").serialize();
               
        jQ("#popupcontent").html(preloader);
        
        jQ.ajax({
            type: "POST",
            url: "/comments/send/",
            data: formdata,
            success: function(msg){
                jQ("#popupcontent").html(msg);   

            },
            error: function(msg){
                alert("Something was wrong!\n\n"+msg);
            } 
        });
        
        return false; 
    });
    
    //читать больше отзывов
    jQ("a#readmorecomments").click(function(){
       jQ(".inset .ilinks a:eq(1)").click(); 
       //return false;
    });

    //читать больше статей
    jQ("a#readmorearticles").click(function(){
       jQ(".inset .ilinks a:eq(2)").click(); 
       //return false;
    });
    
    // ПОСТРАНИЧНАЯ НАВИГАЦИЯ ДЛЯ КОММЕНТАРИЕВ НА СТРАНИЦЕ МОДЕЛИ И МОДИФИКАЦИИ
    // чтобы не перезагружать всю страницу
    jQ("#commentsarea .navi a").live('click',function(){
        var href= jQ(this).attr("href");
        var id = jQ("#commentsarea").data("goodid");
        var table = jQ("#commentsarea").data("goodtable");
        
        href = '/comments/show/'+table+'/'+id+'/'+href.substr(href.lastIndexOf('/')+1,10);
        
        //alert(href);
             
        jQ("#commentsarea").html(preloader);        
        jQ.ajax({
            type: "POST",
            url: href,
            success: function(msg){
                jQ("#commentsarea").html(msg);   
            },
            error: function(msg){
                alert("Не получилось загрузить страницу комментариев!");
            } 
        });
        
        return false;    
    });
    

//======================== ПОДБОР =========================

    //поиск по тексту
    jQ("#search form").submit(function(){
        var action = jQ(this).attr('action');
        var text = jQ(this).find('input:text').val();
        jQ(this).attr('action',action+text);
        return true;
    });

	//клики на ссылках в боковом меню на главной странице или в пути по сайту
	jQ("a.needjs").click(function(){
		var href = jQ(this).attr('href');
		href = href.replace(/tires\//,'tires#');
		href = href.replace(/wheels\//,'wheels#');
		jQ(this).attr('href',href);
		return true;
	});
	

	//клики на ссылках и инпутах в доп.параметрах подбора
	jQ(".dop a").live('click',function(){
		var cb = jQ(this).parent().find(':checkbox');
		cb.prop('checked', !cb.prop('checked'));
		make_search(jQ(this).attr('href'));
		return false;
	});
	jQ(".dop input:checkbox").live('click',function(){
		make_search(jQ(this).parent().find('a').attr('href'));
	});

	//клики на пейджинге
	jQ("#centermain .navi a").live('click',function(){
		make_search(jQ(this).attr('href'));
		jQ(window).scrollTop(100);
		return false;
	});	

	var activeRequest = null; //активен ли сейчас запрос на ПОДБОР

	function make_search(_url){
		//надо убрать "/tires/" и "/wheels/"
		var search = _url;//.substring(_url.indexOf('?')+1);
		//alert('url="'+_url+'"\n'+'search="'+search+'"');
		if(activeRequest){activeRequest.abort();}
        jQ("#centermain").html(preloader);        
		//делаем запрос и рассовываем результат по дивам
		activeRequest = jQ.ajax({
			url:_url,
			dataType:'json',
			success:function(data){
				//console.log(data);
				//alert('ok');
				activeRequest = null;
				//результаты
				jQ("#center").html(data.result);
				//дополнительные параметры подбора
				jQ("#side").html(data.side);
				//подменяем ссылку в строке адреса
				search = search.replace(/\/tires\//,'');
				search = search.replace(/\/wheels\//,'');
				search = search.replace(/\/auto\//,'');
				window.location.hash = search;
				update_controls();
			},
			error:function(msg){
				alert('Ошибка поиска');
				//console.log(msg);
			}
		});
	}

	//клики на кнопках подобрать в диве "Подбор"
	//1. Если тип совпадает - ajax'ом шлем запрос
	//2. Если тип не совпадает - то переход по ссылке на др.страницу, с передачей параметров ГЕТом
	//3. доп. параметры всегда сбрасываются

    jQ("#selection a.wbut").live('click', function(e){
		var id=jQ(this).attr('id');
		var searchtype = id.replace(/search/,'');
		var pathname = window.location.pathname;
        var formid = "#"+jQ(this).attr('id')+'form';
        //console.log(params);
		var size,pcd,diameter,url,new_url;
		var filters = new Array();
		if(searchtype=='tire'){
			//тут из ширины, высоты и диаметра делаем размер
			size = (jQ("#diameter").val())?"R"+jQ("#diameter").val():"";
			size = jQ("#width").val() + "-" + jQ("#height").val() + "-" + size;
			if(size=='--')size='';
			//смотрим фильтры на предмет сезона 
			if(jQ("#summerchk").prop('checked'))filters[filters.length]='summer';
			if(jQ("#winterchk").prop('checked'))filters[filters.length]='winter';
			if(jQ("#allseasonchk").prop('checked'))filters[filters.length]='allseason';
			filter = filters.join('/');	
			url = ((filter)?filter:'')+((size)?(((filter)?'/':'')+'size='+size):'');
			new_path = '/tires';
		}
		if(searchtype=='wheel'){
			size = (jQ("#wheel_diameter").val())?"R"+jQ("#wheel_diameter").val():"";
			size = size + "- "+jQ("#wheel_pcd").val();
			if(size=='-')size='';
			url = (size)?'size='+size:'';
			new_path = '/wheels';
		}
		if(searchtype=='auto'){
			extra = jQ("#engine").val();
			//while(extra.indexOf('&')>=0)
			//	extra = extra.replace(/&/,'/');
			url = ((extra)?'engine='+extra:'');
			new_path = '/auto';
		}
		
		//ЭТО ОСТАВЛЯЕМ
		if(pathname.indexOf(searchtype)>=0){
			make_search(new_path+'/'+url);
		}
		else{
			window.location = new_path+'#'+url;
		}       
        return false;
    });
    
    jQ("#car, #carmodel, #year").live('change', function(e){
        //динамическая загрузка списков 
        var listname;
        var id = jQ(this).attr('id'); 
        var value = jQ(this).val(); 
        if(id=="car")listname="carmodel";
        if(id=="carmodel")listname="year";
        if(id=="year")listname="engine";       
        
        if(value){        
            if(id=="car")jQ("#year").val('').attr('disabled','disabled');
            if(id=="carmodel" || id=="car")jQ("#engine").val('').attr('disabled','disabled');    
            
            jQ.get("/auto/getlist/"+id+"/"+value,function(data){
                jQ("#"+listname).html(data).removeAttr('disabled');
                jQ("#"+listname).change();
            });
        }
    });

	//поиск по авто...
	function make_search_by_auto(_url){
		jQ.ajax({
			url:_url,
			dataType:'json',
			success:function(data){
				jQ("#search_params").html(data.params);
				jQ("#search_result").html(data.search);
				jQ("#side").html(data.side);
				var pos = jQ("#search_params").position();
				jQ(window).scrollTop(pos.top-50);				
			},
			error:function(msg){
				alert('Ошибка поиска');
				//console.log(msg);
			},
		});
	}

	//
	jQ(".dopauto a").live('click',function(){
		var cb = jQ(this).parent().find(':checkbox');
		cb.prop('checked', !cb.prop('checked'));
		make_search_by_auto(jQ(this).attr('href'));
		return false;
	});
	jQ(".dopauto input:checkbox").live('click',function(){
		make_search_by_auto(jQ(this).parent().find('a').attr('href'));
	});

    jQ("a.line, #search_result .navi a").live('click',function(){
		var href = jQ(this).attr('href'); 
		make_search_by_auto(href);
		return false;
    });

//===================== ОПРОСЫ =====================

	//после просмотра результатов - выбираем новый
    jQ("#pollnew").live('click',function(){
		jQ("#poll").html(preloader);
		jQ.ajax({
			url: '/poll/new',
			type: 'GET',
			success: function(msg){
                jQ("#poll").replaceWith(msg);
            },
            error: function(msg){
                alert('Ошибка загрузки опроса');
            }
		});
		return false;
	});

    jQ("#pollvote, #pollresult").live('click',function(){
        var formdata = jQ("#voteform").serialize();
        //alert(formdata);
        jQ("div.poll").html(preloader);
        jQ.ajax({
            type: "POST", 
            url: "/poll/vote",
            data: formdata,
            success: function(msg){
                jQ("div.poll").html(msg);
            },
            success: function(msg){
                jQ("div.poll").html(msg);
            }
        });
       
        return false;
    });
    
//===================== проверяем hash =================================
	var hash = window.location.hash;
	var pathname = window.location.pathname;
	if(pathname.indexOf('/',2)<0)pathname=pathname+'/';
	if(hash.length>1)
	{
		//если мы на странице подбора надо этот хеш обработать как search
		if(jQ("#selection").length)
		{
			hash = hash.substring(1);
			make_search(pathname+hash);
		}
		//для перехода на статьи или отзывы на странице модели/модификации
		if(hash=='#testamonials')jQ(".inset .ilinks a:eq(1)").click();
		if(hash=='#articles')jQ(".inset .ilinks a:eq(2)").click();
	}

});

//---------  ---------- JTIP ------------------- -----------------------
/*
 * JTip
 * By Cody Lindley (http://www.codylindley.com)
 * Under an Attribution, Share Alike License
 * JTip is built on top of the very light weight jquery library.
 */

//on page load (as soon as its ready) call JT_init
//jQ(document).ready(JT_init);

function JT_init(){
	       //jQ("a.jTip")
	       jQ("a.tooltip")
		   .hover(function(){JT_show(jQ(this).attr('href'),jQ(this).attr('id'),jQ(this).attr('name'))},function(){jQ('#JT').remove()})
           .click(function(){return false});	   
}

function JT_show(url,linkId,title){
	if(title == false)title="&nbsp;";
	var de = document.documentElement;
	var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var hasArea = w - getAbsoluteLeft(linkId);
	var clickElementy = getAbsoluteTop(linkId) - 3; //set y position
	
	var queryString = url.replace(/^[^\?]+\??/,'');
	var params = parseQuery( queryString );
	if(params['width'] === undefined){params['width'] = 250};
	if(params['link'] !== undefined){
	jQ('#' + linkId).bind('click',function(){window.location = params['link']});
	jQ('#' + linkId).css('cursor','pointer');
	}
	
	if(hasArea>((params['width']*1)+75)){
		jQ("body").append("<div id='JT' style='width:"+params['width']*1+"px'><div id='JT_arrow_left'></div><div id='JT_close_left'>"+title+"</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");//right side
		var arrowOffset = getElementWidth(linkId) + 11;
		var clickElementx = getAbsoluteLeft(linkId) + arrowOffset; //set x position
	}else{
		jQ("body").append("<div id='JT' style='width:"+params['width']*1+"px'><div id='JT_arrow_right' style='left:"+((params['width']*1)+1)+"px'></div><div id='JT_close_right'>"+title+"</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");//left side
		var clickElementx = getAbsoluteLeft(linkId) - ((params['width']*1) + 15); //set x position
	}
	
	jQ('#JT').css({left: clickElementx+"px", top: clickElementy+"px"});
	jQ('#JT').show();
	jQ('#JT_copy').load(url);

}

function getElementWidth(objectId) {
	x = document.getElementById(objectId);
	return x.offsetWidth;
}

function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	o = document.getElementById(objectId);
	oLeft = o.offsetLeft;            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent;    // Get parent object reference
		oLeft += oParent.offsetLeft; // Add parent left position
		o = oParent;
	}
	return oLeft;
}

function getAbsoluteTop(objectId) {
	// Get an object top position from the upper left viewport corner
	o = document.getElementById(objectId);
	oTop = o.offsetTop;            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent; // Get parent object reference
		oTop += oParent.offsetTop;// Add parent top position
		o = oParent;
	}
	return oTop;
}

function parseQuery ( query ) {
   var Params = new Object ();
   if ( ! query ) return Params; // return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function blockEvents(evt) {
  if(evt.target){
	evt.preventDefault();
  }else{
	evt.returnValue = false;
  }
}


