﻿$(document).ready(function(){
	menu();
	footerLogo();
	buttonPress();
	internetGallery();
	internet3Init();
	loginUnit();
	internetForm();
})
	function internetForm(){
		var form = $(".internet3-form"),
			validate = ["email","name","phone"],
			loader = $("#internet3-form-loader");
		if(!form.length) return;
		
		form.submit(function(){
			loader.addClass("load");
			$.post("/internet/marketing/request/",form.serialize(),function(data){
				if(!data) {
					form.html("<br/><br/><br/>Спасибо, Ваша заявка принята. Менеджер свяжется с Вами в течении одного рабочего дня."); 
					return;
				}
				loader.removeClass("load");
				form.find(".error").removeClass("error");
				for(var i=validate.length-1; i>=0; i--)	check.call(data,validate[i])
				
			},"json")
			
			return false;
		})
		
		function check(name){
			if(!this[name].length) return 1;
			var input  = form.find("input[name="+name+"]");
			input.addClass("error")
			input.prev("b").addClass("error")
			return 0;
		}
		
	}

	function loginUnit(){
		var ins = $(".login ins.checkbox");
		if(!ins.length) return;
		checkbox(ins);
	}

	function internetGallery(){
			var place = $(".internet-portfolio");
			if(!place.length) return;
			
			var ImgesCache = [],
				Head = place.find(".header"),
				_Controls = place.find(".gallery-nav").children(),
				Controls = {
					"next": _Controls.eq(1),
					"prev": _Controls.eq(0)
				},
				Loader = _Controls.eq(2),
				Imges = place.find(".gallery img"),
				current = 0;
				
			
			/*Прелоад изображении, раскидываем по исходным*/
			Imges.each(function(){
				var num = arguments[0];
				ImgesCache[num] = this;
				if(this.complete){
					$(this).addClass("internet-portfolio-preloaded");
					parseImage.call(this, num)
				} else 
					$(this).addClass("internet-portfolio-preload").load(function(){
						$(this).removeClass("internet-portfolio-preload").addClass("internet-portfolio-preloaded");
						parseImage.call(this, num);
					})
			})
			/* /Прелоад изображении*/
						
			function parseImage(num){
				var href = $(this).attr("alt");
				var title = $(this).attr("title");
				var head = $("<span>"+title+" </span>").append($("<a target=\"_blank\" href=\""+href+"\">"+href+"</a>"));
								
				var i = getShape(this);
				
				ImgesCache[num] = {
					"head" : head,
					"img" : i
				}
				
				if(num == 0) {
					current=0;
					i.addClass("internet-portfolio-current");
					//Head.empty().append(head);
					
					Controls['next'].mousedown(next);
					Controls['prev'].mousedown(prev);
					Loader.hide();
					
				} else {
					i.addClass("internet-portfolio-preloaded").fadeTo(0,0);
				}
			}
			
			function next(e){e.preventDefault(); change(1)}
			function prev(e){e.preventDefault(); change(0)}
			
			function change(course){
				if(!ImgesCache) return false;
				
				Loader.hide();
				if(ImgesCache[current]['img'])
					ImgesCache[current]['img'].animate({"left": 700, "opacity": 0},"slow");
				
				if(course) if(ImgesCache[current+1]) current++; 
						else current = 0;
				else if(ImgesCache[current-1]) current--; 
						else current = ImgesCache.length-1;
					
				var showNew = function(){
					this['img'].animate({"left": 0, "opacity": 1},"slow");
					Head.empty().append(this['head']);
				}
								
				if(ImgesCache[current].tagName){
					Loader.show();
					$(ImgesCache[current]).load(function() {
						showNew.apply(ImgesCache[current]);
						Loader.hide();
					})
				} else if(typeof (ImgesCache[current] == "object")) 
					showNew.apply(ImgesCache[current])
				else return;
			}
			
			function getShape(img){
				var shape = new ictinus.Shape('M0,0 L683,0 683,161 C653,181 653,219 683,239 L683,400 0,400 0,239 C30,219 30,181 0,161z');
				shape.strokeWidth = 1;
				shape.strokeColor = '#ccc';
				shape.fillColor = '#fff';
				shape.decorate(img);
				return $(img).prev();
			}
		}
	

	function internet3Init(){
			var ElPlace = $(".internet3-form fieldset");
			if(!ElPlace.length) return;
			var ElList = ElPlace.find("ins.checkbox"),
				ElFirst = ElList.filter(":first")
				ElNotFirst = ElList.not(":first");
			
			checkbox(ElList, 
				function(check){
					if(ElFirst.get(0).id == this.id)
						ElNotFirst.each(function(){check.call(this, $(this))})
				},
				function(uncheck){
					if(ElFirst.get(0).id != this.id) uncheck.call(this, ElFirst)
				})
		}

		function checkbox(ElList, onCheck, onUnCheck){
			ElList.each(function(){
					var ins = $(this);
					ins
						.mousedown(checkboxHandler)
						.next("span")
						.mousedown(function(e){e.preventDefault(); ins.trigger("mousedown");})
				})
			
			function checkboxHandler(e){
				e.preventDefault();
				var t = $(this);
				
				if(t.hasClass("checked")) {
					_uncheck(t);
					if(typeof(onUnCheck) == "function") onUnCheck.call(this,_uncheck);
	
				} else {
					_check(t);
					if(typeof(onCheck) == "function") onCheck.call(this,_check)
				}
			}
			
			function _uncheck(El){
				if(!El.hasClass("checked")) return;
				El.removeClass("checked");
				var temp = El.prev();
				if(temp.get(0) && temp.get(0).tagName == "INPUT") 
					temp.remove();
			}
			
			function _check(El){
				if(El.hasClass("checked")) return;
				
				El.addClass("checked");
				$("<input type=\"hidden\" value=\"1\" name=\""+El.get(0).id+"\"/>").insertBefore(El);
			}
		}


function ins_space(a){
	if(typeof(a) != "number") return;
	
	a+="";
	var i=a.length ,arr=[];

	while(i>3){
		i-=3;
		arr.unshift(a.substr(i,3));
	}
	arr.unshift(a.substr(0,i));

	return arr.join(" ");
}

function del_space(a){ return parseInt(a.split(" ").join(''));}


function tabs(){
	$("dl.tabs dt").mousedown(
		function(){
			$(this)	.siblings().removeClass('selected').end()
					.next('dd').andSelf().addClass('selected');
		})
	$("dl.tabs dd .in li").children().mousedown(
		function(){
			$(this).is("ins") ? $(this).toggleClass("checked"): $(this).siblings("ins").toggleClass("checked");
		})
}

function checkFilters(){
	var obj=new Object();
	$("dl.tabs dd").each(function(){
		var flag=0;
		var a=$(this).find("ins.checked");
		if(!a.size()) {flag=1; a=$(this).find("input");}
			if(!a.size()) return;
			var str=new Array();
			for(var i=0; i<a.size(); i++){
				str.push(flag ? a.eq(i).val() : a.eq(i).attr("rel"));
			}
			str=str.join(",");
		obj[$(this).attr("rel")]=str;
	});
	return obj;
}

function clearFilters(){
	$(".filters dd")
		.find("li ins.checked").each(
			function(){
				$(this).removeClass("checked")
			})
			.end()
		.find("input").each(
			function(){
				$(this).attr("value","")
			})
}

function fastbooking(){
	var current=1;
	var root=$(".fastbooking");
	reload=function(page){
		var o=checkFilters();
		o['page']= page ? page : current;	
		
		root.fadeTo(0,0.3);
		
		$.post("/fastbooking/filterfast/",o,
			function(e){
				root.html(e).fadeTo(0,1);
				current=page;
				bookingUnit();
				$(".location-group .number a").lightBox();
			})		
	}
	reload();
}
function buttonPress(){
	target=$.browser.msie||$.browser.opera? ".button span, .button a" : ".button span, .button a, .button input"
	$(target).each(
		function(){
			var padding=[];
			
			function _press(event){
				blockEvent(event);
				padding[0]=parseInt($(this).css('padding-top'));
				padding[1]=parseInt($(this).css('padding-bottom'));
				padding[2]=parseInt($(this).css('padding-left'));
				padding[3]=parseInt($(this).css('padding-right'));
				$(this).css({
					'padding' :  (padding[0]+1)+'px '+(padding[3]-1)+'px '+(padding[1]-1)+'px '+(padding[2]+1)+'px'
				})
			}
			
			function _up(event){
				if(!padding.length) return;
				blockEvent(event);
				$(this).css({
					'padding': padding[0]+'px '+padding[2]+'px '+padding[1]+'px '+padding[3]+'px'
				})
			}
			
			$(this).mousedown(_press).mouseup(_up).mouseout(_up);
		}
	)
}


var menu = function(){
	
	menu.openAt = function(num){
		_open(root.children(":eq("+num+")").children());
	}

	var _open = function(sibl){
			//if(!sibl.eq(1).hasClass("hide")) return;
			submenus.filter(":visible").slideUp("400", function(){
				$(this).addClass("hide")
					.prev()
					//.removeClass("selected");
			});
			if(sibl.eq(1).hasClass("hide")) 
			sibl.eq(1).hide().removeClass("hide").slideDown("400",function(){
					//sibl.eq(0).addClass("selected")
					});
	}
	
	var submenus=$("#sidebar ul> li > ul > li > ul");
	var root=$("#sidebar .selected:first").next();
	root.children().each(function(){
		var sibl=$(this).children();
		if(!sibl.filter("ul").length) return;
		sibl.eq(0).click(function(){return false;})
		sibl.eq(0).mousedown(function(){_open(sibl)})
	})	
}
	

	


var outdoor={
		handler: function(obj,e,num){
			this.num=num;
			this.obj=obj;
			if(!this.z_index) this.z_index=100;
			this.drag(e);
			
		},

		drag: function(e){
			if(!e) e=window.event;
			blockEvent(e);
			
			this.loc_offset=this.obj.offset();
			this.correctX=e.clientX-this.loc_offset.left;
			this.correctY=e.clientY-this.loc_offset.top;
			
			this.offset=this.obj.parent().offset();
			
			$(document)
				.bind("mousemove",this.move)
				.bind("mouseup",this.drop);
			
			this.obj.css("z-index",this.z_index++);
		},

		move: function(e){
			if(!e) e=window.event;
			blockEvent(e);
			
			outdoor.obj.css({
				top: e.clientY-outdoor.offset.top-outdoor.correctY+"px",
				left: e.clientX-outdoor.offset.left-outdoor.correctX+"px"
			})			
		},

		drop: function(e){
			blockEvent(e);
			
			$(this)
				.unbind("mousemove",this.move)
				.unbind("mouseup",this.drop);
			
			
			var o=outdoor.obj.offset();
			outdoor.obj.removeClass("up")
			
			if(outdoor.loc_offset.top==o.top&&outdoor.loc_offset.left==o.left) menu.openAt(outdoor.num);
		}
}

function footerLogo(){
	var f=$("#footer");
	backlight(f.find(".right img"), f.find(".left .logoarea a"));
}

function backlight(a,b){
	if(a) a	.fadeTo(0,"0.3").hover(
			function(){	$(this).animate({opacity:"1"},{duration: 600, queue: false})	},
			function(){	$(this).animate({opacity:"0.3"},{duration: 600, queue: false})	}
		);
		
	if(b) b	.children()
		.fadeTo(0,0)
		.end()
		.hover(
			function(){
				$(this)	.children()
						.show()
						.stop()
						.animate({opacity:"1"},{duration: 500, queue: false})
				},
			function(){
				$(this)	.children()
						.stop()
						.animate({opacity:"0"},{duration: 500, queue: false, complete: function(){$(this).hide()}})
				}
			);
}

function promtUnit(obj){
	obj.find("input").each(function(){
		var o=$(this);
		if(o.next().hasClass("help"))
			var promt=o.next();
		else return;
		o.focus(function(){
			if(promt) promt.fadeIn("slow");
			o.blur(function(){
				promt.hide();
			}) 
		})
	});	
}

var flashContent=0;
function viewFullImg(img, pos){
	/*сделать распознавание типа*/
	var body=$(".second");
	var mTop=!pos ? document.documentElement.scrollTop : 0;
	var Loading=$("<div id=\"Loading\"><img style=\"top: "+(mTop+200)+"px\" src=\"/images/main/loading2.gif\" alt=\"Загрузка\"/></div>").css("height",body.height()).fadeTo(0,"0.6").prependTo(body);
	var src=img.attr("src").split("/");
	var w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
	var i=0;
	for (i=0; i<src.length; i++) if(src[i]=="image") break;
	src[i+1]=w-250; src[i+2]=1200;
	if(!flashContent) { flashContent=$("#flash-content"); if(!flashContent.size()) flashContent="unset"; }
	if(flashContent!="unset") {flashContent.hide();}
	var img=$("<img src=\""+src.join("/")+"\"/>");
	var show=function(){
		var i=img;
		var close=$("<div class=\"close\">закрыть</div>");
		i.parent().hide()
			.removeClass("hiddenImg")
			.addClass("viewFullImgArea")
			.css("margin-top", (mTop+30)+"px")
			.append(close)
			.fadeIn("fast")
			.width(i.width())
			.parent()
			.add(Loading)
			.add(close)
			.mousedown(clearing);
		Loading.empty();
	}
	var I=$("<div class=\"wrapper-vFIA\"></div>").append($("<div class=\"hiddenImg\"></div>").append(img)).prependTo(body);
	var clearing=function(){
		I.fadeOut("fast",function(){$(this).remove()})
		Loading.fadeOut("fast",function(){$(this).remove(); if(flashContent!="unset") flashContent.show();})
	}
	if(img.get()[0].complete) show()
	else img.load(show);
	Loading.mousedown(clearing)
}

function locationGallery(){
	if(!gallery_Images_Array || gallery_Images_Array.length<=0) return; 
	
	var Place=$(".flash");
	var current=0;
	var inProcess=0;
	var last=(gallery_Images_Array.length-1);
	var right=$("<div class=\"gRight\"></div>");
	var left=$("<div class=\"gLeft\"></div>");
	var number=$("<div class=\"gNumber\">Изображение 1 из "+(last+1)+"</div>");
	
	var deactivate=function(obj){
			obj.css("cursor","default").fadeTo("fast","0.3")
		}
	var activate=function(obj){
			obj.css("cursor","pointer").fadeTo("fast","1");	
		}
	
	function _get_current_href(src){
			if(src.indexOf("/image/")!=-1) {
				var m=src.split("/");
				var i=0;
				while(i<m.length) if(m[i]=="image") break; else i++;
				if(i>=m.length) return src;
				m[++i]=900;
				m[++i]=900;
				src=m.join("/");
			}
			return src;
		}
	
	
	var goLoad=function(num,cb){
		var q=gallery_Images_Array[num];
		if(typeof(q)!="string") { cb?(cb)():0; return;}
		
		var k = gallery_Images_Array[num] = $(q).addClass("hiddenImg");
		
		$("<a href=\""+_get_current_href(k.attr("src"))+"\" title=\""+k.attr("title")+"\"></a>")
			.append(k)
			.appendTo(Place)
			.lightBox();
		
		if (k.get()[0].complete) {
			k.hide()
			.removeClass("hiddenImg");
			cb?(cb)():0;
		} else k.load(
			function(){
				$(this)
					.hide()
					.removeClass("hiddenImg");
					cb?(cb)():0;
			})
	}
	
	var prew=function(){
		if(inProcess || current<=0) return;
		
		inProcess=1;
		var last_current=current--;
		gallery_Images_Array[last_current].fadeOut("slow",
			function(){
				gallery_Images_Array[current].fadeIn("slow",
					function(){
						inProcess=0; 	
					})
				
				if(current==0) deactivate(left);
				if(last_current==last) activate(right);
				
				number.text("Изображение " +(current+1)+" из "+(last+1));
			})	
	}

	var next=function(){
		if(inProcess || current>=last) return;
		
		inProcess=1;
		var last_current=current++;
		gallery_Images_Array[last_current].fadeOut("slow",
			function(){
				var q=gallery_Images_Array[current];
				
				var show=function(){
					q.fadeIn("slow",
						function(){
							inProcess=0;	
					})
					
				if(current==last) deactivate(right);
				if(last_current==0) activate(left);
				
				number.text("Изображение " +(current+1)+" из "+(last+1));
				if(current!=last) goLoad(current+1);
				}
				
			if(q.hasClass("hiddenImg")) q.load(show)
				else show();
			})
	}
	
	deactivate(left);
	number.prependTo(Place);
	
	goLoad(0,function(){
			gallery_Images_Array[0].fadeIn("slow",
				function(){
					right.prependTo(Place).mousedown(next);
					left.prependTo(Place).mousedown(prew);
					
					if(last) goLoad(1);
			});	
		});
}


function booking(){
	if(!buffer.length) {
		getMessage("Рекламоносителей не забронировано.",1); 
		return;
	}
	var obj=new Object();
	for(var i=0; i<buffer.length; i++) obj[buffer[i][0].slice(1)]=buffer[i][1].join("");
	$.post("/outdoor/order/",obj);
}


var buffer=new Array();

function bookingUnit(loc_cost_flag){
	var msie=$.browser.msie;
	function checkThis(bookArr, pos , obj){
		if(bookArr[pos]!=0) return 0;
		bookArr[pos]=2;
		obj.attr("class","green");
		return 1;
	}
	function unCheckThis(bookArr, pos , obj){
		if(bookArr[pos]!=2) return 0;
		bookArr[pos]=0;
		obj.attr("class","");
		return 1;
	}
	
	var cost=$(".total span:last");
	
	function setCost(price,t,loc_cost){
		cost.html(ins_space(del_space(cost.html())+t*price));
		if(loc_cost) loc_cost.html(ins_space(del_space(loc_cost.html())+t*price));
		return 1;
	}
		
	function BufferThis(id, bookArr){
		var flag=false;
		for(var i=0; i< buffer.length; i++) if(buffer[i][0] == id) {buffer[i][1]=bookArr; flag=true; break;}
		if(!flag) buffer[buffer.length]=[id,bookArr];
	}
	
	$(".location-group tr:not(:first-child,.loc_title, .first,.month)").each(function(){
		var tr=$(this);
		var month=tr.children(":gt(2)");
		
		if(month.size()!=12) return;
		
		var book=month.eq(0).children().children(":first");
		var price=del_space(book.attr("rel"));
		var id=tr.attr("id");
		var loc_cost=loc_cost_flag ? tr.siblings(":.loc_title").find("b span") : 0;
		var bookArr=book.text().split('');
		
		tr.hover(function(){$(this).addClass("detected")},function(){$(this).removeClass("detected")});
		
		for (var i=0; i<12; i++) 
			(function(){
				var j=i;
				var t=month.eq(j).children();
				if(msie) t.attr("unselectable","on");
				t.mousedown(function(e){
					blockEvent(e);
					if(!((checkThis(bookArr, j , t) && setCost(price,1,loc_cost) ) || (unCheckThis(bookArr, j , t) && setCost(-price,1,loc_cost) ))) return;
					BufferThis(id, bookArr);
					booking();
				})
			})();
		
		var bool=false;
		var c_all=tr.children(":first").children();
		
		c_all.mousedown(function(e){
			blockEvent(e);
			var j=0;
			
			if(!bool) {
				for(var i=0; i<12; i++) j+=checkThis(bookArr,i,month.eq(i).children());
				setCost(price,j,loc_cost);
				bool=true;
				tr.addClass("check-all");
			} else{
				for(var i=0; i<12; i++) j+=unCheckThis(bookArr,i,month.eq(i).children());
				setCost(-price,j,loc_cost);
				bool=false;
				tr.removeClass("check-all");
			}
			
			BufferThis(id, bookArr)
			book.text(bookArr.join(""));
			booking();
		})
	})
	
}
function news_slide(e,el){
		blockEvent(e);
		var body=el.next();
		if(body.queue("fx").length) return;
		if(el.hasClass("off")) {
			body.slideUp("400");
			el.removeClass("off");
		} else {
			body.slideDown("400");
			el.addClass("off");
		}
	}

function blockEvent(event){
    if (!event) event = window.event;
	
    if(event.stopPropagation) event.stopPropagation();
		else event.cancelBubble = true;
    
	if(event.preventDefault) event.preventDefault();
		else event.returnValue = false;
}

