var main = {
	init:function(){
		try{
			Shadowbox.init({
				animate:false,
				modal:false,
				displayNav:true,
				animateFade:false,
				viewportPadding:0,
				player:"html"
				});
			}catch(error){}
			$("#webChat").click(main.usePopapWindow);
		$("#ex a").click(function(){$("ex").submit(); return false;});
		},
	nosubmit:function(event){
		if(event.which==13){
			return false;
			}
		},
	defaulter:{
		make:function(obj){
			$(obj).focus(main.defaulter.cleaner).blur(main.defaulter.checker).keyup(main.defaulter.watcher).keydown(main.defaulter.watcher).each(main.defaulter.checker);
			},
		cleaner:function(){
			var $obj=$(this);
			if($obj.val()==$obj.data("default")){
				$obj.val('');
				}
			},
		watcher:function(){
			var $obj=$(this);
			var val=$.trim($obj.val());
			if(val!='' && val!=$obj.data("default")){
				$obj.removeClass("default");
				}else{
				$obj.addClass("default");
				}
			},
		checker:function(){
			var $obj=$(this);
			var val=$.trim($obj.val());
			if(val!='' && val!=$obj.data("default")){
				$obj.removeClass("default");
				}else{
				$obj.val($obj.data("default"));
				$obj.addClass("default");
				}
			},
		formChecker:function(){
			var $obj=$(this);
			if($obj.find(".default").length == $obj.find("input[type=text],text,select").length){
				return false;
				}else{
				$obj.find(".default").each(main.defaulter.cleaner);
				}
			},
		version:'2011-09-28'
		},
	order:{
		init:function(){
			main.order.$trackerDescription=$("#orderDescription");
			main.order.$trackerWarning=$("#orderWarning");
			},
		check:function(){
			var $this=$(this);
			var val=$this.val();
			if($this.val()!=$this.data("default")){
				if(val.search(/^[а-яё|-]{0,3}[0-9]{11}$/i) == -1 && val.length > 0){
					main.order.$trackerDescription.hide();
					main.order.$trackerWarning.show();
					}else{
					main.order.$trackerDescription.show();
					main.order.$trackerWarning.hide();
					}
				}
			},
		keywatcher:function(){
			var $this=$(this);
			var val=$this.val();
			if($this.val()!=$this.data("default")){
				if(val.search(/^[а-яё|-]{0,3}[0-9]{0,11}$/i) == -1 && val.length > 0){
					main.order.$trackerDescription.hide();
					main.order.$trackerWarning.show();
					}else{
					main.order.$trackerDescription.show();
					main.order.$trackerWarning.hide();
					}
				}
			},
		$trackerDescription:'',
		$trackerWarning:'',
		version:'2011-10-24'
		},
	absoluteComment:{
		init:function(){
			$("input.absoluteComment,select.absoluteComment").focus(main.absoluteComment.show);
			},
		show:function(){
			var $obj=$(this);
			$obj.after('<div class="hidden absoluteCommentInstance">'+$obj.data("commentText")+'</div>');
			var pos = $obj.position();
			var $absoluteCommentInstance=$("div.absoluteCommentInstance");
			$absoluteCommentInstance.css({"top":pos.top + 'px',"left":eval(pos.left + $obj.width()) + 'px'});
			$absoluteCommentInstance.show();
			$obj.bind('blur',main.absoluteComment.hide);
			},
		hide:function(){
			$(this).unbind('blur',main.absoluteComment.hide);
			$("div.absoluteCommentInstance").hide().remove();
			},
		version:'2011-10-14'
		},
	showSection:function(){
		main.toggleSection(this,'show');
		return false;
		},
	hideSection:function(){
		main.toggleSection(this,'hide');
		return false;
		},
	toggleSection:function(obj,algorithm){
		var $obj=(typeof obj === 'undefined')?$(this):$(obj);
		var algorithm=(typeof algorithm === 'undefined')?'toggle':algorithm;
		
		var classNameForChange="."+$(obj).data(algorithm+"Class");
		var algorithmForHide=$(obj).data('hide');
		
		if(algorithmForHide!==''){
			switch(algorithmForHide){
				case 'parent': $obj.parent().hide(); break;
				case 'self': $obj.hide(); break;
				case 'class': $('.'+$obj.data('hideClass')).hide(); break;
				case 'id': $('#'+$obj.data('hideId')).hide(); break;
				}
			}
		eval(('$(classNameForChange).'+algorithm+'()'));
		return false;
		},
	usePopapWindow:function(){
		var $this=$(this);
		var uri=$this.attr("href");
		webChatWindow=window.open(uri,'webChatWindow','width=580,height=630,scrollbars=no,menubars=no');
		return false;
		},
	parsePrice:function(income){
		var val=parseFloat(income,10);
		var fraction=val.formatMoney(2,'.',' ');
		var fraction=fraction.split('.');
		if(!parseInt(fraction[1],10) || typeof fraction[1] =='undefined'){
			return val.formatMoney(0,'.',' ');
			}else{
			return val.formatMoney(2,'.',' ');
			}
		},
	resizeCityChoiceShadowbox:function(options){
		var $shadowBox=$("#sb-body");
		$shadowBox.parent().parent().css(options);
		$shadowBox.parent().css(options);
		$shadowBox.css(options);
		},
	maskPatches : {
		time:function(event){
			var $this=$(this);
			var val=$this.val();
			if(parseInt(val[0],10)==2 && parseInt(val[1],10)>3){
				$this.val(val[0]);
				}
			}
		},
	choicer:function(){
		var $this=$(this);
		$this.hide().next("p.comment").hide();
		$this.after('<span class="choicerBlock"><label><input type="radio" class="checkbox" checked="checked"/>нет</label> <label><input type="radio" class="checkbox yes">да</label></span>');
		$this.parent().find("input.yes").one('click',function(){
			var $this=$(this);
			var $parent=$this.closest("span.choicerBlock");
			var $input=$parent.prev("input");
			$parent.empty().remove();
			$input.show();
			$input.next("p.comment").show();
			$input.focus();
			});
		},
	moveSelect:function(obj,l){
		if(typeof obj.setSelectionRange !='undefined'){
			obj.setSelectionRange(l,l);
			}else{
			var tRange = obj.createTextRange();
			tRange.collapse(true);
			tRange.move(l,l);
			tRange.select();
			}
		},
	webChatWindow:'',
	version:'2011-11-16'
	}

var asterisk = {
	init:function(){
		$("input"+asterisk.mainClass+",select"+asterisk.mainClass+",textarea"+asterisk.mainClass).each(asterisk.construct);
		},
	construct:function(){
		var $obj=$(this);
		var $form=$(this.form);
		var val=($obj.val())?$obj.val():'';
		val = $.trim(val);
		var minLength=($obj.data("asteriskLength"))?parseInt($obj.data("asteriskLength"),10):1;
		if(val!=null && val!='' && val!='undefined' && val !='-1' && val.length >= minLength){
			$obj.removeClass("asteriskRequired");
			if(!$obj.nextAll("span.asteriskOff").get(0)){
				if($obj.hasClass("hidden")){
					$obj.after('<span class="asterisk asteriskOff hidden">*</span>');
					}else{
					$obj.after('<span class="asterisk asteriskOff">*</span>');
					}
				}
			}else{
			$obj.addClass("asteriskRequired");
			if(!$obj.nextAll("span.asteriskOff").get(0)){
				if($obj.hasClass("hidden")){
					$obj.after('<span class="asterisk asteriskOn hidden">*</span>');
					}else{
					$obj.after('<span class="asterisk asteriskOn">*</span>');
					}
				}else{
				$($obj.nextAll("span.asteriskOff").get(0)).removeClass("asteriskOff").addClass("asteriskOn");
				}

			}
		$obj.keyup(asterisk.check).blur(asterisk.check).change(asterisk.check);
		$obj.keypress(asterisk.counter);
		if(!parseInt($form.attr("asteriskIsSet"),10)){
			$form.attr("asteriskIsSet","1");
			$form.submit(asterisk.submit);
			if($form.attr("noEnterSubmit")){
				$("input[type=submit]").hover(function(){asterisk.send=1;},function(){asterisk.send=0;});
				$("input").keydown(asterisk.noSubmit)
				asterisk.checking=1;
				}
			}
		},
	check:function(){
		var $obj=$(this);
		if($obj.hasClass("asterisk")){
			var val=($obj.val())?$obj.val():'';
			val = $.trim(val);
			var asteriskNext=$obj.nextAll("span.asterisk").get(0);
			var asteriskOnNext=$obj.nextAll("span.asteriskOn").get(0);
			var minLength=($obj.data("asteriskLength"))?parseInt($obj.data("asteriskLength"),10):1;
			if(asteriskOnNext==asteriskNext){
				if($obj.attr("counter") && val.length > 0){
					$(asteriskOnNext).html('<sup class="min">заполнено '+val.length+' из '+minLength+'</sup>');
					}else{
					$(asteriskOnNext).html('*');
					}
				}
			if(val!='' && val!='undefined'&& val !='-1' && val.length >= minLength){
				$obj.removeClass("asteriskRequired");
				$obj.removeClass("asteriskHighlight");
				if(asteriskOnNext==asteriskNext){
					$(asteriskOnNext).removeClass("asteriskOn").addClass("asteriskOff").html('*');
					}
				}else{
				$obj.addClass("asteriskRequired");
				var asteriskOffNext=$obj.nextAll("span.asteriskOff").get(0);
				if(asteriskOffNext==asteriskNext){
					$(asteriskOffNext).removeClass("asteriskOff").addClass("asteriskOn");
					if($obj.attr("counter") && val.length > 0){
						$($obj.nextAll("span.asteriskOn").get(0)).html('<sup class="min">заполнено '+val.length+' из '+minLength+'</sup>');
						}else{
						$($obj.nextAll("span.asteriskOn").get(0)).html('*');
						}
					}
				}
			}
		},
	counter:function(){
		var $obj=$(this);
		var val=($obj.val())?$obj.val():'';
		val = $.trim(val);
		var minLength=($obj.data("asteriskLength"))?parseInt($obj.data("asteriskLength"),10):1;
		if($obj.nextAll("span.asteriskOn").get(0)==$obj.nextAll("span.asterisk").get(0)){
			if($obj.attr("counter") && val.length > 0){
				$($obj.nextAll("span.asteriskOn").get(0)).html('<sup class="min">заполнено '+val.length+' из '+minLength+'</sup>');
				}else{
				$($obj.nextAll("span.asteriskOn").get(0)).html('*');
				}
			}
		},
	submit:function(event){
		var $obj=$(this);
		if(asterisk.send || !asterisk.checking){
			$("#asteriskMessageError").empty();
			$obj.find(asterisk.mainClass).removeClass("asteriskHighlight");
			if($obj.find(asterisk.mainClass+".asteriskRequired").length){
				$obj.find(asterisk.mainClass+".asteriskRequired").addClass("asteriskHighlight");
				if($("#asteriskMessageError").attr("id")!=undefined){
					$("#asteriskMessageError").html('<p>Пожалуйста, заполните все поля, отмеченные звездочкой.</p>');
					} else {
					$obj.find("input[type=submit]").before('<p id="asteriskMessageError">Пожалуйста, заполните все поля, отмеченные звездочкой.</p>');
					}
				asterisk.focusTimeOut=setTimeout(function(){
					clearTimeout(asterisk.focusTimeOut);
					$obj.find(asterisk.mainClass+".asteriskRequired:visible:first").focus();
					},1500);
				return false;
				}
			}else{
				return false;
			}
		},
	checkForm:function(){
		var $obj=$(this);
		$("#asteriskMessageError").empty();
		$obj.find(asterisk.mainClass).removeClass("asteriskHighlight");
		if($obj.find(asterisk.mainClass+".asteriskRequired").length){
			$obj.find(asterisk.mainClass+".asteriskRequired").addClass("asteriskHighlight");
			if($("#asteriskMessageError").attr("id")!=undefined){
				$("#asteriskMessageError").html('<p>Пожалуйста, заполните все поля, отмеченные звездочкой.</p>');
				} else {
				$obj.find("input[type=submit]").before('<p id="asteriskMessageError">Пожалуйста, заполните все поля, отмеченные звездочкой.</p>');
				}
			}
		},		
	mainClass:".asterisk",
	noSubmit:function(event){
		var $this=$(this);
		if($this.attr("type")=='submit'){
			asterisk.send=1;
			}else{
			asterisk.send=0;
			}
		if(event.which==13 && $this.attr("type")!='submit'){
			return false;
			} 
		},
	send : 0,
	checking : 0,
	focusTimeOut:0,
	version:'2011-07-26'
	}

var captcha = {
	init:function(){
		$("#reloadCaptcha").click(captcha.reload);
		},
	reload: function(){
		var session = $.trim($.ajax({
	  					type: 'GET',
	  					data: '&newSession=true&rnd='+Math.random(),
	  					url: '/captcha/?',
							async: false
							}).responseText);
		$("#session").val(session);
		$("#captcha").attr("src",'/captcha/?session='+session);
		return false;
		},
	version:'2011-09-29'
	}

var numeric = {
	init:function(){
	$("input"+numeric.mainClass).keypress(numeric.check);
	},
	check:function(event){
		var charCode = (event.which) ? event.which : event.keyCode;
		if(charCode > 31 && charCode!=37 && charCode != 8 && charCode!=35 && charCode!=39 && charCode != 36 && (charCode < 48 || charCode > 57)){
			return false;
			}else{
			return true;
			}
		},
	mainClass:".numeric",
	version:'2011-09-29'
	}

var real = {
	init:function(){
		$("input"+real.mainClass).keyup(real.rep).keypress(real.check);
		},
	check:function(event){
		var charCode = (event.which) ? event.which : event.keyCode;
		var $obj=$(this);
		var val=$obj.val();
		var point=(val.indexOf('.')==-1)?0:1;
		if(charCode > 31 && charCode!=37 && charCode != 8 && charCode!=35 && (charCode!=44 || point) && (charCode!=46 || point) && charCode!=39 && charCode != 36 && (charCode < 48 || charCode > 57)){
			return false;
			}else{
			return true;
			}
		},
	rep:function(){
		var $obj=$(this);
		var val=$obj.val();
		if(val){
			$obj.val(val.replace(',','.'));
			}
		},
	mainClass:".real",
	version:'2011-09-29'
	}

var tooltip = {
	init:function(){
		$(".tooltipThis").each(tooltip.set);
		},
	set:function(){
		$(this).tooltip({
			delay:0,
			showURL:false,
			track: true,
			bodyHandler:function(){
				return $("#"+$(this).attr("ttID")).html();
				}
			});
		},
	version:'2011-08-01'
	}

$(main.init);


//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/number/fmt-money [v1.1]
Number.prototype.formatMoney = function(c, d, t){
	var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
