var time=2000;
var time2=700;
var size = 146;
var total_len;
var i_wait = false;
var flag=true;
var loc = window.location + "";
var tt=false;
var cm = false;
var load = false;
var hashflag = false;

jQuery(function(){

	

	if (hash() && hash().indexOf("site")==0) {
	
		//alert(hash());

		var tmp = hash().split("=");
		window.location.replace("?site="+tmp[1]);

	}
	
	bind_click();
	total_len = jQuery("#peleng_items .wr>div").length;
	jQuery(".promo:first").addClass("active").addClass("ready");
    load_2_images();
	clone_siblings(); //clone elements in pelengator
	
	jQuery("#main_portfolio .left").click(function(){
		if(i_wait==false && flag==true)
		{
			flag=false;
			
			var obj = jQuery(".promo.active"); 
			var prev = obj.prev();
			if(!prev.hasClass("promo"))
				{
					prev = jQuery(".promo:last");
				}
			if(prev.hasClass("ready"))
				{
					cm=false;
					prev.css({"left":"-100%"});
					prev.animate({"left":"0%"},time,function(){
						
						jQuery(this).addClass("active");
						obj.removeClass("active");
						
						
					});
								
					obj.animate({"left":"100%"},time,function(){
							
							jQuery(".promo.active").prev().css({"left":"-100%"});
							//bind_click();
							
					});
					move_pelengator(true,1,true);
					
				}
				
				else
				{
					i_wait = "left";
					jQuery(this).find("div").fadeIn();
					if(!prev.hasClass("ready") && cm==true) {load_img(prev.attr("ref"),"prev");}
				}
			}
			return false;
		});
		
	jQuery("#main_portfolio .right").click(function(){
		if(i_wait==false && flag==true)
		{
			flag=false;
			var obj = jQuery(".promo.active");
			var next = obj.next();
			if(!next.hasClass("promo"))
				{
					next = jQuery(".promo:first");
				}
			if(next.hasClass("ready"))
				{
					cm=false;
					next.css({"left":"100%"});
					next.animate({"left":"0%"},time,function(){
						
						jQuery(this).addClass("active");
						obj.removeClass("active");
						
					});
						
					obj.animate({"left":"-100%"},time,function(){
						
						jQuery(".promo.active").next().css({"left":"100%"});
						//bind_click();
					});
					move_pelengator(false,1,true);
				}
			else
				{
					i_wait = "right";
					jQuery(this).find("div").fadeIn();
					if(!next.hasClass("ready") && cm==true){ load_img(next.attr("ref"),"next");}
				}
			}
			return false;			
		});
		
		
	jQuery("#rightarr_peleng a").click(function(evt){
		if(flag==true){
			flag=false;
			if((jQuery("#peleng_items .wr .active").nextAll()).length<7) teleport_pelengator("next");
			slide_pics("next");
		}
		evt.preventDefault();
	});

	jQuery("#leftarr_peleng a").click(function(evt){
		if(flag==true){
			flag=false;
			if((jQuery("#peleng_items .wr .active").prevAll()).length<7) teleport_pelengator("prev");
			slide_pics("prev");
		}
		evt.preventDefault();
	});
	


});



/*****************************FUNCTIONS*********************************/

function fade_teleport(dir,ref){
	var animatesize = size*5;
    if(dir=="next"){
				jQuery(".promo.ready[ref='"+ref+"']").css({"left":"100%"});
				jQuery(".promo.ready[ref='"+ref+"']").animate({"left":"0%"},time,function(){
						jQuery(this).addClass("active");
						cm=true;
					});
						
					jQuery(".promo.active").animate({"left":"-100%"},time,function(){
						jQuery(this).removeClass("active");
						bind_click();
					});
		jQuery("#rightarr_peleng a").fadeIn().next().fadeOut();
		var obj = jQuery("#peleng_items .wr>div.active").next().next().next().next().next();
		
		jQuery("#peleng_items>div").fadeOut(time2,function(){
			jQuery("#peleng_items .wr>div.active").removeClass("active").css({"bottom":"0"});
			obj.addClass("active").css({"bottom":"22px"});
			setTimeout(function(){jQuery("#peleng_items>div").fadeIn(time2)},time-time2*2);
			
		});
		jQuery("#peleng_items .wr").animate({"left":"-="+animatesize+"px"},time);
					}
	else {
				jQuery(".promo.ready[ref='"+ref+"']").css({"left":"-100%"});
				jQuery(".promo.ready[ref='"+ref+"']").animate({"left":"0%"},time,function(){
						jQuery(this).addClass("active");
						cm=true;
					});
						
					jQuery(".promo.active").animate({"left":"100%"},time,function(){
						jQuery(this).removeClass("active");
						bind_click();
					});
		jQuery("#leftarr_peleng a").fadeIn().next().fadeOut();
		var obj = jQuery("#peleng_items .wr>div.active").prev().prev().prev().prev().prev();
		
		jQuery("#peleng_items>div").fadeOut(time2,function(){
			jQuery("#peleng_items .wr>div.active").removeClass("active").css({"bottom":"0"});
			obj.addClass("active").css({"bottom":"22px"});
			setTimeout(function(){jQuery("#peleng_items>div").fadeIn(time2)},time-time2*2);
			
			
		});
		jQuery("#peleng_items .wr").animate({"left":"+="+animatesize+"px"},time);
	}
	
}

function slide_pics(dir){
	if(dir=="next"){
		var obj = jQuery("#peleng_items .wr>div.active").next().next().next().next().next();
		var ref = obj.attr('ref');
		//alert(id);
		if(jQuery(".promo[ref='"+ref+"']").hasClass("ready")) fade_teleport("next",ref);
		else
		{
		
			i_wait = "slide next";
			var next=jQuery(".promo.active");
			var peleng = jQuery("#peleng_items .wr>div.active");
			var t;
			jQuery("#rightarr_peleng a").fadeOut().next().fadeIn();
			load_img(ref,"next");
		}
		
		
	}
	else{
		var obj = jQuery("#peleng_items .wr>div.active").prev().prev().prev().prev().prev();
		var ref = obj.attr('ref');
		if(jQuery(".promo[ref='"+ref+"']").hasClass("ready")) fade_teleport("prev",ref);
		else
		{
			i_wait = "slide prev";
			var prev=jQuery(".promo.active");
			var peleng = jQuery("#peleng_items .wr>div.active");
			var t;
			jQuery("#leftarr_peleng a").fadeOut().next().fadeIn();
			load_img(ref,"prev");
		}
	}
}


/*Zagrujaet dve kartinki po bokam v samom nachale*/
function load_2_images()
{

	var obj = jQuery(".wrapp .active");
	obj.next().addClass("load");
	jQuery(".promo:last").addClass("load");
	var next_id = obj.next().attr("ref");
	var prev_id = jQuery(".promo:last").attr("ref");

	jQuery.get("/system/get_promo_element.html",{id:next_id},function(data){
		
		var amount_images = jQuery(data).find("img").length;
		jQuery(data).find("img").each(function(){
			var img = new Image();
			jQuery(img).load(function(){
				amount_images--;
				if(amount_images==0) {
					jQuery(".promo.active").next().replaceWith(data);
					jQuery(".promo.active").next().addClass("ready").removeClass("load").css({"left":"100%"});	
					waiting();
				}
			}).attr("src",jQuery(this).attr("src"));
		});
	});

	jQuery.get("/system/get_promo_element.html",{id:prev_id},function(data){
		var amount_images = jQuery(data).find("img").length;
		jQuery(data).find("img").each(function(){
			var img = new Image();
			jQuery(img).load(function(){
				amount_images--;
				if(amount_images==0) {
					jQuery(".promo:last").replaceWith(data);
					jQuery(".promo:last").addClass("ready").removeClass("load").css({"left":"-100%"});
					waiting();
				}
			}).attr("src",jQuery(this).attr("src"));
		});
	});
}



/*************************************************************/
/*Zagrujaet sleduyushuyu kartinku*/

function load_img(id,direction){
    
	  
	if(id==false){
	var temp_obj = jQuery("#peleng_items .active");
	obj=(direction=="next")?temp_obj.next():temp_obj.prev();
	id = obj.attr("ref");}
	
	
	var tobj = jQuery(".promo[ref='"+id+"']");
	if(load!=id){
	load=id;
	if(!tobj.hasClass("ready") && !tobj.hasClass("load")){

			tobj.addClass("load");
			jQuery.get("/system/get_promo_element.html",{id:id},function(data){
				tobj.replaceWith(data);
				tobj = jQuery(".promo[ref='"+id+"']");
				tobj.css({"left":"100%"});
				var amount_images = jQuery(data).find("img").length;
				jQuery(data).find("img").each(function(){
				var img = new Image();
				jQuery(img).load(function(){
					amount_images--;
					if(amount_images==0) {
						tobj.addClass("ready").removeClass("noready").removeClass("load");
						waiting(id);
						load=false;
					}
				}).attr("src",jQuery(this).attr("src"));
			});
		});
	}
	}
}


/********************MOVE PELENGATOR*****************/
/*Dvigaem pelengator*/

function move_pelengator(toleft,nums,loadnext)
{
 
 obj = jQuery("#peleng_items .wr .active"); 
 if(obj.nextAll().length<5 && toleft==false) {teleport_pelengator("next");}
 else if(obj.prevAll().length<5 && toleft==true) {teleport_pelengator("prev");}
 obj = jQuery("#peleng_items .wr .active");

 var duration = time/nums;
 (toleft)?jQuery("#peleng_items .wr").animate({"left":"+="+size*nums+"px"},time):
 jQuery("#peleng_items .wr").animate({"left":"-="+size*nums+"px"},time);

 var temp_t = Math.floor(duration/3);
  obj.animate({"bottom":"0px"},duration);
  obj.find("p").fadeOut(temp_t,function(){
			   setTimeout(function(){
				obj.removeClass("active");
				obj.find("p").fadeIn(temp_t);},
			  temp_t
			  );});
			  
 
  
  if(toleft){
	obj.prev().animate({"bottom":"22px"},duration,function(){
		if(nums==2)
		{
			obj.prev().animate({"bottom":"0px"},duration);
				obj.prev().prev().animate({"bottom":"22px"},duration,function(){
				jQuery(this).addClass("active"); 
				if(loadnext) load_img(jQuery(this).prev().attr("ref"),false); else cm=true;
				bind_click();
			});
			
			var to2 = obj.prev().prev();
			to2.find("p").fadeOut(temp_t,function(){
			  setTimeout(function(){
			  to2.addClass("active");
			  to2.find("p").fadeIn(temp_t);
			  },temp_t);
			});
		}
		else {if(loadnext) load_img(jQuery(this).prev().attr("ref"),false); else cm=true;
		bind_click();
		
		
		}
		
	});
	if(nums!=2){
	var to2 = obj.prev();
	to2.find("p").fadeOut(temp_t,function(){
		setTimeout(function(){
			  to2.addClass("active");
			 to2.find("p").fadeIn(temp_t);
			  },temp_t);
	});}
  }
  
  else{
   obj.next().animate({"bottom":"22px"},duration,function(){
	   if(nums==2)
		{
			obj.next().animate({"bottom":"0px"},duration);
			obj.next().next().animate({"bottom":"22px"},duration,function(){
				jQuery(this).addClass("active"); if(loadnext) load_img(jQuery(this).next().attr("ref"),false); else cm=true;
				bind_click();
			});
			
			var to2 = obj.next().next();
			to2.find("p").fadeOut(temp_t,function(){
			  setTimeout(function(){
			  to2.addClass("active");
			  to2.find("p").fadeIn(temp_t);
			  },temp_t);
			});
		}
		else {if(loadnext) load_img(jQuery(this).next().attr("ref"),false); else cm=true;
		bind_click();
		}
   });
    if(nums!=2){
	var to2 = obj.next();
	to2.find("p").fadeOut(temp_t,function(){
		setTimeout(function(){
			  to2.addClass("active");
			 to2.find("p").fadeIn(temp_t);
			  },temp_t);
	});}
	}

}


function winloc(obj){
	var ref = obj.attr("ref");
	/*
	var arr = loc.split('?');
	if(arr[1].toLowerCase().indexOf("site")==0){*/
		window.location = loc + "#site=" +ref;
	//}
}

/*Esli ogidaetsa kartinka, ona zagruzitsya*/
function waiting(id){

 if(i_wait=="left"){
	 i_wait=false;
 flag=true;
	jQuery("#main_portfolio .left").click().find("div").fadeOut();
 }
 else if(i_wait=="right"){
 i_wait=false;
 flag=true;
	jQuery("#main_portfolio .right").click().find("div").fadeOut();

 }
 
 else if(i_wait=="slide next"){
  i_wait=false;
 fade_teleport("next",id);
 }
 
 else if(i_wait=="slide prev"){
  i_wait=false;
 fade_teleport("prev",id);
 }
 
 else if(i_wait=="nring"){
  i_wait=false;
  flag=true;
  var obj = jQuery("#peleng_items .active").next(); 

  obj.find("img").fadeOut();
  obj.find("a").animate({"opacity":"1"},200); 
  obj.find("a").click();

 }
 
 else if(i_wait=="pring"){
  i_wait=false;
  flag=true;	
 var obj =  jQuery("#peleng_items .active").prev();

  obj.find("img").fadeOut();
  obj.find("a").animate({"opacity":"1"},200); 
  obj.find("a").click();


 }
 
 else if(i_wait=="nnring"){

  i_wait=false;
  flag=true;
  var obj =  jQuery("#peleng_items .active").next().next();
  	
  obj.find("img").fadeOut();
  obj.find("a").animate({"opacity":"1"},200); 
  obj.find("a").click();
 }
 
 else if(i_wait=="ppring"){
  i_wait=false;
  flag=true;
  var obj =  jQuery("#peleng_items .active").prev().prev();
  	
  obj.find("img").fadeOut();
  obj.find("a").animate({"opacity":"1"},200); 
  obj.find("a").click();;

  
 }
 
}



function teleport_pelengator(dir){
         
		 
		var tlen = parseInt(jQuery("#peleng_items .wr").css("left"));
	    ref = jQuery("#peleng_items .wr .active").attr("ref");
		jQuery("#peleng_items .wr .active").removeClass("active").css({"bottom":"0px"});
		
		if(dir=="next") {
			tlen+=total_len*size;
			jQuery("#peleng_items .wr").css("left",tlen.toString()+"px");
			jQuery("#peleng_items .wr>div[ref='"+ref+"']:first").addClass("active").css({"bottom":"22px"});
		}

		else {
			tlen-=total_len*size;
			jQuery("#peleng_items .wr").css("left",tlen.toString()+"px");
			jQuery("#peleng_items .wr>div[ref='"+ref+"']:last").addClass("active").css({"bottom":"22px"});
		}
	
}

function clone_siblings()
{
	var temp = jQuery("#peleng_items .wr>div").clone();
	jQuery("#peleng_items .wr>div:last").after(temp);
	jQuery("#peleng_items .wr>div.active:last").removeClass("active");
}

function bind_click(){
flag=true;
	
	//if (loc.split("#").length==2) 
	
	if(hashflag == true)
	hash("site="+jQuery("#peleng_items .wr .active").attr('ref'));
	else hashflag = true;
    
	jQuery("#peleng_items .wr a").unbind("click"); 
	jQuery("#peleng_items .wr a").click(function(){return false;});
	
	jQuery("#more a").attr("href","/portfolio/"+jQuery("#peleng_items .wr .active").attr("ref")+".html");
	jQuery("#peleng_items .wr .active").next().find("a").click(function(){
		if(flag==true){
		flag = false;
		obj = jQuery(this).parent();
		if(jQuery(".promo[ref='"+obj.attr('ref')+"']").hasClass("ready"))
			{
				var next = jQuery(".promo.active").next();
				if(!next.hasClass("promo")) next = jQuery(".promo:first");
				
					next.css({"left":"100%"});
					next.animate({"left":"0%"},time,function(){
					jQuery(this).addClass("active");
					flag=true;
				});
				
				jQuery(".promo.active").animate({"left":"-100%"},time,function(){
					jQuery(this).removeClass("active");
					jQuery(".promo.active").next().css({"left":"100%"});
					//var nnext = next.next();
					//if(!nnext.hasClass("promo")) nnext = jQuery(".promo:first");
					//load_img(nnext.attr("ref"),"next");
				});
				
				move_pelengator(false,1,false);
				
				
			}
		else{
		jQuery(this).animate({"opacity":"0.3"},200);
		jQuery(this).parent().find("img").css({"display":"block"});
		i_wait = 'nring';
		load_img(obj.attr('ref'),"next");
		}
		}
		return false;
	});
	
	jQuery("#peleng_items .wr .active").prev().find("a").click(function(){	
	if(flag==true){
		flag = false;
	obj = jQuery(this).parent();
	
		if(jQuery(".promo[ref='"+obj.attr('ref')+"']").hasClass("ready"))
			{
				var prev = jQuery(".promo.active").prev();
				if(!prev.hasClass("promo")) prev = jQuery(".promo:last");
				prev.css({"left":"-100%"});
				prev.animate({"left":"0%"},time,function(){
						jQuery(this).addClass("active");
						flag=true;
				});
				
				jQuery(".promo.active").animate({"left":"100%"},time,function(){
					jQuery(this).removeClass("active");
					jQuery(".promo.active").prev().css({"left":"-100%"});
					//var nnext = prev.prev();
					//if(!nnext.hasClass("promo")) nnext = jQuery(".promo:last");
					//load_img(nnext.attr("ref"),"prev");
				});
				
				move_pelengator(true,1,false);
				
				
			}
		else{
		jQuery(this).animate({"opacity":"0.3"},200);
		jQuery(this).parent().find("img").css({"display":"block"});
		i_wait = 'pring';
		load_img(obj.attr('ref'),"prev");
		}
	}
	return false;});
		
	jQuery("#peleng_items .wr .active").next().next().find("a").click(function(){
	if(flag==true){
		flag = false;
	obj = jQuery(this).parent();
		if(jQuery(".promo[ref='"+obj.attr('ref')+"']").hasClass("ready"))
			{
				var next = jQuery(".promo.active").next();
				if(!next.hasClass("promo")) next = jQuery(".promo:first");
				next = next.next();
				if(!next.hasClass("promo")) next = jQuery(".promo:first");
				
				next.css({"left":"100%"});
				next.animate({"left":"0%"},time,function(){
						jQuery(this).addClass("active");
						flag=true;
				});
				
				jQuery(".promo.active").animate({"left":"-100%"},time,function(){
					jQuery(this).removeClass("active");
					jQuery(".promo.active").next().css({"left":"100%"});
					//var nnext = next.next();
					//if(!nnext.hasClass("promo")) nnext = jQuery(".promo:first");
					//load_img(nnext.attr("ref"),"next");
				});
				
				move_pelengator(false,2,false);
				
				
			}
		else{
		jQuery(this).animate({"opacity":"0.3"},200);
		jQuery(this).parent().find("img").css({"display":"block"});
		i_wait = 'nnring';
		load_img(obj.attr('ref'),"next");
		}
		return false;
	}
	});
	
	jQuery("#peleng_items .wr .active").prev().prev().find("a").click(function(){
	if(flag==true){
		flag = false;
			obj = jQuery(this).parent();
			if(jQuery(".promo[ref='"+obj.attr('ref')+"']").hasClass("ready"))
			{
				var prev = jQuery(".promo.active").prev();
				if(!prev.hasClass("promo")) prev = jQuery(".promo:last");
				prev = prev.prev();
				if(!prev.hasClass("promo")) prev = jQuery(".promo:last");
				
				prev.css({"left":"-100%"});
				prev.animate({"left":"0%"},time,function(){
				jQuery(this).addClass("active");
				flag=true;
				});
				
				jQuery(".promo.active").animate({"left":"100%"},time,function(){
					jQuery(this).removeClass("active");
					jQuery(".promo.active").prev().css({"left":"-100%"});
					//var nnext = prev.prev();
					//if(!nnext.hasClass("promo")) nnext = jQuery(".promo:last");
					//load_img(nnext.attr("ref"),"prev");
				});
				
				move_pelengator(true,2,false);
				
				
			}
		else{
		jQuery(this).animate({"opacity":"0.3"},200);
		jQuery(this).parent().find("img").css({"display":"block"});
		i_wait = 'ppring';
		load_img(obj.attr('ref'),"prev");
		}
		}
		return false;
	});
	
	
}

/*******************HASH FUNCTIONS*******************/
hash = function(/* String? */ hash, /* Boolean? */ replace){
		
		// getter
		if(!arguments.length){
			return _getHash();
		}
		// setter
		if(hash.charAt(0) == "#"){
			hash = hash.substring(1);
		}
		if(replace){
			_replace(hash);
		}else{
			location.href = "#" + hash;
		}
		return hash; // String
	}
	
	function _getHash(){
		var h = location.href, i = h.indexOf("#");
		return (i >= 0) ? decodeURIComponent(h.substring(i + 1)) : "";
	}
	
	function _replace(hash){
		location.replace("#"+hash);
	}
