var calculator = {
	init:function(){
		$("#DL_calcTool_derivalSuggest").each(calculator.suggest).result(calculator.onItemSelect).attr("defval","город отправки").val("город отправки");
		$("#DL_calcTool_arrivalSuggest").each(calculator.suggest).result(calculator.onItemSelect).attr("defval","город прибытия").val("город прибытия");
		
		calculator.initSwitch("#DL_calcTool_insuranceNeeded","#DL_calcTool_declaredCost");
		calculator.initSwitch("#DL_calcTool_packageNeeded","#DL_calcTool_packageType");
		$("#DL_calctool_clearbtn").click(calculator.clean);
		calculator.initCalc("#DL_calctool_submitbtn","#DL_calctool_result");
		calculator.initTouch("#DL_calcTool_sWeight");
		calculator.initTouch("#DL_calcTool_sVolume");
		calculator.initTouch("#DL_calcTool_osWeight");
		calculator.initTouch("#DL_calcTool_osVolume");
		calculator.initTouch("#DL_calcTool_derivalSuggest");
		calculator.initTouch("#DL_calcTool_arrivalSuggest");
		$(".nosubmit").keydown(calculator.nosubmit);
		},
	liFormat:function(row, i, num) {
		var result = row[0];
		return result;
		},
	suggest:function(){
		var $obj=$(this);
		$obj.autocomplete(calculator.uri+"/js/index.html", {
			delay:			50,
			minChars:		1 ,
			matchSubset:	1,
			autoFill:		false,
			matchContains:	1,
			cacheLength:	0,
			selectFirst:false,
			formatItem:		calculator.liFormat,
			maxItemsToShow:	10,
			mustMatch:		true,
			extraParams:{
				mode: function(){return $obj.attr("modeName");}
				}			
			});
		},
	onItemSelect:function(event, d, formatted){
		var obj="#DL_calcTool_"+$(this).attr("gName");
		$(obj+"Point").val(d[1]);
		var $doors=$(obj+"Doors");
		if(d[2]!=0){
			$doors.removeAttr("disabled");
			} else{
			$doors.removeAttr("checked");
			$doors.attr("disabled","disabled");
			}
		},
	initTouch:function(id){
		var $obj=$(id);
		if(!$obj.attr("defval")){
			$obj.attr("defval",$obj.val());
			}
		$obj.focus(function(){
			if($obj.attr('defval')==$obj.val()){
				$obj.attr('value','');
				$obj.addClass('DL_calcToolInputTouch');
				}
			});
		$obj.blur(function(){
			if($obj.val() == 'undefined' || $obj.val()== "" || $obj.attr("realValue")=="-1"){
				$obj.attr('value',$obj.attr('defval'));
				$obj.removeClass('DL_calcToolInputTouch');
				}
			});
		},
	initSwitch:function(sw,id){
		var $obj=$(id);
		var $sw=$(sw);
		if($sw.attr("checked")){
			$obj.attr("disabled",false);
			$obj.removeClass("DL_calcTool_disabled");
			if($obj.attr("range")){
				$obj.after('<span id="'+$obj.attr("id")+'_range">&nbsp;'+$obj.attr("range")+'</span>');
				}
			}else{
			$obj.attr("disabled",true);
			$obj.addClass("DL_calcTool_disabled");
			if($obj.attr("range")){
				$(id+'_range').remove();
				}
			}
		$sw.click(function(){
			if($(this).attr("checked")){
				$obj.attr("disabled",false);
				$obj.removeClass("DL_calcTool_disabled");
				$obj.addClass('DL_calcToolInputTouch');
				if($obj.attr("range")){
					$obj.after('<span id="'+$obj.attr("id")+'_range">&nbsp;'+$obj.attr("range")+'</span>');
					}
				}else{
				$obj.attr("disabled",true);
				$obj.addClass("DL_calcTool_disabled");
				$obj.removeClass('DL_calcToolInputTouch');
				if($obj.attr("range")){
					$(id+'_range').remove();
					}
				}
			});
		},
	clean:function(){
		$("#DL_calctool_result").hide();
		$("input").each(function(){
			var $obj=$(this);
			if($obj.attr("id")!=''){
				if($obj.is(":checked")){
					$(obj).click();
					}
				var val=$("#DL_calcTool").attr("preset"+$obj.attr("id").substr(12));
				if(val){
					if($obj.attr("RealValue")){
						if(val!="false"){
							$obj.attr("RealValue",val);
							$obj.val($(this).attr("defval"));
							}else{
							$obj.attr("RealValue","-1");
							$obj.val($(this).attr("defval"));
							}
						}else{
						if(val!="false"){
							$obj.val(val);
							}else{
							$obj.val($obj.attr("defval"));
							}
						}
					}else{
					if($obj.attr("type")=="text" || $obj.attr("type")=="select"){
						$obj.val($obj.attr("defval"));
						}
					}						
				}else{
				if($obj.is(":checked")){
					$obj.click();
					}
				}
				$obj.removeClass('DL_calcToolInputTouch');
			});
		},
	getFloatValue:function(income){
		var val=$(income).val();
		val=parseFloat(val.replace(/,/,'.'));
		if(!isNaN(val)){
			return val;
			}else{
			return 0;
			}
		},
	initCalc:function(id,show){
		$("body").click(function(){
			$(show).hide();
			});
		$(id).click(function(){
			var $show=$(show);
			$show.html("расчет...");
			$show.show();
			var post={
				derivalPoint:$("#DL_calcTool_derivalPoint").val(),
				arrivalPoint:$("#DL_calcTool_arrivalPoint").val(),
				sizedWeight:calculator.getFloatValue("#DL_calcTool_sWeight"),
				sizedVolume:calculator.getFloatValue("#DL_calcTool_sVolume"),
				oversizedWeight:calculator.getFloatValue("#DL_calcTool_osWeight"),
				oversizedVolume:calculator.getFloatValue("#DL_calcTool_osVolume"),
				derivalDoor:($("#DL_calcTool_derivalDoors").is(":checked"))?1:0,
				arrivalDoor:($("#DL_calcTool_arrivalDoors").is(":checked"))?1:0,
				insuranceNeeded:0,
				statedValue:0,
				packageNeeded:0,
				packages:0
				};
			if($("#DL_calcTool_insuranceNeeded").is(":checked")){
				post.insuranceNeeded=1;
				post.statedValue=parseFloat($("#DL_calcTool_declaredCost").val());
				}
			if($("#DL_calcTool_packageNeeded").is(":checked") && $("#DL_calcTool_packageType").val()!='-1'){
				post.packageNeeded=1;
				post.packages=$("#DL_calcTool_packageType").val();
				}
			var dataLine='';
			for(var i in post){
				if(post[i]){
					dataLine+="&"+i+"="+post[i];
					}
				}
			var xml = $.ajax({
				url: calculator.uri+"/XML/",
				data: dataLine+"&request=xmlResult&random="+Math.random(),
				async: false
				}).responseXML;
			var val=$(xml).find("price").text();
			if(!val){
				val=0;
				$(show).hide();
				alert($(xml).find("error").text());
				}else{
				if(val==0){
					$(show).hide();
					alert('Произошла ошибка при расчёте стоимости, попробуйте воспользоваться калькулятором чуть позже.');
					}else{
					$(show).html(val+' руб.');
					$("input[type=text], input[type=checkbox], select").one("click",function(){
						$(show).hide();
						});
					}
				}
			return false;
			});
		},
	tooltip:function(id,leftOffset,topOffset){
		$obj=$(id);
		if($obj.attr("tooltip")){
			$obj.focus(function(event){
				var $obj=$(this);
				$obj.after('<div id="DL_calcTool_tooltip">'+$obj.attr("tooltip")+'</div>');
				var pos=0;
				if(!$.browser.msie){
					pos=$obj.offset();
					}else{
					pos=$obj.position();
					}
				$("#DL_calcTool_tooltip").show();
				var x = pos.left+leftOffset;
				var y = pos.top+$(this).height()+topOffset;
				$("#DL_calcTool_tooltip").css({"top":y,"left":x,"position":"absolute"});
				});
			$obj.blur(function(){
				$("#DL_calcTool_tooltip").remove();
				});
			}
		},
	nosubmit:function(event){
		if(event.which==13){
			return false;
			}
		},
	uri:'/calculatorTool2',
	version: '2011-10-18'
	}



$(calculator.init);

































