var images = {
	path: "http://teplovspb.ru/image.php?file=upload/",
	//path: "http://energy-market.ru/image.php?file=",
	height: 90,
	width: 90
}

var orderGoods = "http://teplovspb.ru/addb2.php?";
//var orderGoods = "http://energy-market.ru/cart/add/?r_line=";
var discountGoods = "&s_line=";
	
var isWet = 0;											// Влажное или сухое помещение
var isMain = false;										// Основное или комфортное отопление
var floorId = 0;										// ID пола для остаточной площади
var floorCount = 0;										// Количество полов (макс.площадь_пола) в расчете
var floorDiscount = {money:0,watts:[],floors:0,fsmall:false,size:0,termos:0};
var floorType = 'mat';									// Тип пола по умолчанию
var termoCount = 1;										// Число терморегуляторов
var showDiscount = 0;

//	Функция подсчета количества и площади необходимых полов
function getFloor(){
	ftype = floorType;
	area = $("#s").val();
	floor = floors[ftype];
	floorCount = 0;										// Обнуляем количество полов (макс.площадь_пола) в расчете
	floorcount = floor.length;
	wpm = (ftype=='cable')? 120 + isWet*30 + ((isMain)?30:0):1;	// Расчет коэффициента "Вт/м". Для матов и лайт = 1
	maxarea = floor[floorcount-1].area / wpm;
	minarea = floor[1].area / wpm;
	if (area<minarea) {
		floorId = 1;
		return false;
	}
	while (area > maxarea+minarea){						// До тех пор, пока площадь > макс.площадь_пола + мин.площадь_пола
		area -= maxarea;								// Вычитаем из нашей площади макс.площадь_пола
		floorCount++;
	}
	if (minarea > area) floorCount++;
	else {
		for (i=1;i<floorcount;i++){						// Ищем ближайший меньший пол для остаточной площади
			if (floor[i].area/wpm > area){
				floorId = --i;							// Берем элемент, предшествующий тому, который больше нашей площади х_Х
				return true;
			}
		}
		floorCount++;									// Если ничего не подошло, то берем максимальный пол
	}
	return false;
}

//	Функция подсчета скидок
function disCount(){
	termostat = $("#termostat").val();
	floorDiscount = {money:0,watts:[],floors:0,fsmall:false,size:0};
	switch (termostat){									// Скидка на комплект с терморегулятором
		//case "0": floorDiscount.size = 0.05; break;
		//case "1": floorDiscount.size = 0.05; break;		// TK02 
		//case "2": floorDiscount.size = 0.05; break;		// TK03 
		default: return false;
	}
	fc = 0;												// Временная переменная, считающая количество полов, на которые уже посчитана скидка
	fullFloorCount = floorCount+((floorId>0)?1:0);		// Количество необходимых полов, как больших, так и малого
	maxf = (termoCount*2<fullFloorCount)? termoCount*2 : fullFloorCount;	// Максимальное количество полов, на которые распространится скидка
	floorDiscount.termos = Math.min(termoCount,fullFloorCount);		// Количество терморегуляторов, на которые распространится скидка (не может быть больше числа полов)
	floorDiscount.money = (termostat>=0)? round5(termo[termostat].retail_price-Math.round((1-floorDiscount.size)*floorDiscount.termos*termo[termostat].retail_price)):0;
	for (i=0;i<floorDiscount.termos;i++){
		floorDiscount.watts[i] = 0;
		while(maxf>fc && (floorDiscount.watts[i]<=2500 || floorDiscount.watts[i]==0)){
			//	Здесь у нас большие полы
			if (floorCount>0 && fc<maxf-((floorId>0)?1:0) && (parseInt(floors[floorType][floors[floorType].length-1].watts+floorDiscount.watts[i])<=2500 || floorDiscount.watts[i]==0)){
				fc++;
				floorDiscount.watts[i] += floors[floorType][floors[floorType].length-1].watts;
				floorDiscount.money += floors[floorType][floors[floorType].length-1].retail_price-Math.round(floors[floorType][floors[floorType].length-1].retail_price*(1-floorDiscount.size));
				floorDiscount.floors++;
			//	А здесь - малый
			} else if(floorId>0 && (parseInt(floors[floorType][floorId].watts+floorDiscount.watts[i])<=2500 || floorDiscount.watts[i]==0)){
				fc++;
				floorDiscount.watts[i] += floors[floorType][floorId].watts;
				floorDiscount.money += floors[floorType][floorId].retail_price-Math.round(floors[floorType][floorId].retail_price*(1-floorDiscount.size));
				floorDiscount.fsmall = true;			// Отмечаем, что в скидки добавлен малый пол
				break;									// Раз уж мы добавили малый пол, то выходим
			} else break;
		}
	}
	return false;
}

//	Функция подсчета стоимости
function getPrice(){
	termostat = $("#termostat").val();
	totalPrice = 0;
	fc = floorCount;
	if (floorDiscount.money>0){
		for (i=0;i<floorDiscount.floors;i++){			// Считаем все большие полы, на которые распространяется скидка, по розничной цене
			fc--;
			totalPrice += floors[floorType][floors[floorType].length-1].retail_price;
		}
	}
	totalPrice += (fc>0)? fc*floors[floorType][floors[floorType].length-1].price : 0;	// Если еще остались большие полы, то их считаем по цене сайта
	totalPrice += (floorDiscount.fsmall)? floors[floorType][floorId].retail_price : floors[floorType][floorId].price;	// Считаем малый пол в зависимости от скидки
	if (termostat>=0) totalPrice += (floorDiscount.money>0)? termoCount*termo[termostat].retail_price : termoCount*termo[termostat].price;	// Считаем терморегуляторы
	
	return totalPrice;
}

function trimStr(sInString){
	sInString = sInString.replace(/ /g,' ');
	return sInString.replace(/(^\s+)|(\s+$)/g, '');
}
function wrongArea(param){
	if (param=="none") return false;
	alert(param);
	$("#s")
	.addClass("err")
	.focus();
	return false;
}
//	Функция отображения расчета цен и количества
function countIt(){
	area = $("#s").val();
	wa = "none";
	if (isNaN(area) || area<=0 || area>2000) wa = "Не указана площадь обогрева.";
	else if (floorType == "cable" && area<1) wa = "Минимальная площадь для данного типа теплого пола (нагревательный кабель) составляет 1 метр.";
	else if (floorType == "mat" && area<0.5) wa = "Минимальная площадь для данного типа теплого пола (нагревательный мат) составляет 0.5 метра.";
	else if (floorType == "light" && area<0.5) wa = "Минимальная площадь для данного типа теплого пола (нагревательный мат Light) составляет 0.5 метра.";
	if (wa!="none"){
		wrongArea(wa);
		return false;
	}
	getFloor();
	disCount();
	termostat = $("#termostat").val();
	res = '<table cellspacing="0">';
	res += "<tr style=\"font-weight: bold\"><td class=\"fcol\">Наименование</td><td>Количество</td><td>Розничная цена</td><td>Цена со скидкой</td><td colspan=\"2\" align=\"center\">Предоставляемая скидка</td></tr>";
	//res += (floorCount>0 && floorDiscount.floors<floorCount)? "<tr><td class=\"fcol\">"+floors[floorType][floors[floorType].length-1].name+"</td><td>"+(floorCount-floorDiscount.floors)+" шт.</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].retail_price)+"</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].price)+"</td><td>"+((floorType=='light')?"5":"5")+"%</td><td class=\"fcol\">"+((floorType=='light')?"специальная цена":"скидка интернет магазина")+"</td></tr>" : "";
	//res += (floorCount>0 && floorDiscount.floors>0)? "<tr><td class=\"fcol\">"+floors[floorType][floors[floorType].length-1].name+"</td><td>"+((floorCount==1)?1:floorDiscount.floors)+" шт.</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].retail_price)+"</td><td>"+formatNumber((floors[floorType][floors[floorType].length-1].retail_price*(1-floorDiscount.size)))+"</td><td>"+(floorDiscount.size*100)+"%</td><td class=\"fcol\">акция</td></tr>" : "";
	//res += (floorId>0)? "<tr><td class=\"fcol\">"+floors[floorType][floorId].name+"</td><td>1 шт.</td><td>"+formatNumber(floors[floorType][floorId].retail_price)+"</td><td>"+formatNumber(((floorDiscount.fsmall)?floors[floorType][floorId].retail_price*(1-floorDiscount.size):floors[floorType][floorId].price))+"</td><td>"+((floorDiscount.fsmall)?(floorDiscount.size*100):((floorType=='light')?"5":"5"))+"%</td><td class=\"fcol\">"+(((floorDiscount.fsmall)?"акция":((floorType=='light')?"специальная цена":"скидка интернет магазина")))+"</td></tr>" : "";
	//res += (termostat>=0)? "<tr><td class=\"fcol\">"+termo[termostat].name+"</td><td>"+termoCount+" шт.</td><td>"+formatNumber(termo[termostat].retail_price)+"</td><td>"+((floorDiscount.money>0)? formatNumber(termo[termostat].retail_price*(1-floorDiscount.size)):formatNumber(termo[termostat].price) )+"</td><td>"+((floorDiscount.size>0)?floorDiscount.size*100:5)+"%</td><td class=\"fcol\">"+((floorDiscount.size>0)?"акция":"скидка интернет магазина")+"</td></tr>" : "";

	res += (floorCount>0 && floorDiscount.floors<floorCount)? "<tr><td class=\"fcol\">"+floors[floorType][floors[floorType].length-1].name+"</td><td>"+(floorCount-floorDiscount.floors)+" шт.</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].retail_price)+"</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].price)+"</td><td>"+Math.round(((floors[floorType][floors[floorType].length-1].retail_price) - (floors[floorType][floors[floorType].length-1].price)) / ((floors[floorType][floors[floorType].length-1].retail_price))*100)+" %</td><td class=\"fcol\">скидка</td></tr>" : "";
	res += (floorCount>0 && floorDiscount.floors>0)? "<tr><td class=\"fcol\">"+floors[floorType][floors[floorType].length-1].name+"</td><td>"+((floorCount==1)?1:floorDiscount.floors)+" шт.</td><td>"+formatNumber(floors[floorType][floors[floorType].length-1].retail_price)+"</td><td>"+formatNumber((floors[floorType][floors[floorType].length-1].retail_price*(1-floorDiscount.size)))+"</td><td>"+Math.round(((floors[floorType][floors[floorType].length-1].retail_price) - (floors[floorType][floors[floorType].length-1].price)) / ((floors[floorType][floors[floorType].length-1].retail_price))*100)+" %</td><td class=\"fcol\">скидка</td></tr>" : "";
	res += (floorId>0)? "<tr><td class=\"fcol\">"+floors[floorType][floorId].name+"</td><td>1 шт.</td><td>"+formatNumber(floors[floorType][floorId].retail_price)+"</td><td>"+formatNumber(((floorDiscount.fsmall)?floors[floorType][floorId].retail_price*(1-floorDiscount.size):floors[floorType][floorId].price))+"</td><td>"+Math.round(((floors[floorType][floorId].retail_price) - (floors[floorType][floorId].price)) / ((floors[floorType][floorId].retail_price))*100)+" %</td><td class=\"fcol\">скидка</td></tr>" : "";
//	res += (termostat>=0)? "<tr><td class=\"fcol\">"+termo[termostat].name+"</td><td>"+termoCount+" шт.</td><td>"+formatNumber(termo[termostat].retail_price)+"</td><td>"+((floorDiscount.money>0)? formatNumber(termo[termostat].retail_price*(1-floorDiscount.size)):formatNumber(termo[termostat].price) )+"</td><td>10%</td><td class=\"fcol\">акция</td></tr>" : "";
	res += (termostat>=0)? "<tr><td class=\"fcol\">"+termo[termostat].name+"</td><td>"+termoCount+" шт.</td><td>"+formatNumber(termo[termostat].retail_price)+"</td><td>"+((floorDiscount.money>0)? formatNumber(termo[termostat].retail_price*(1-floorDiscount.size)):formatNumber(termo[termostat].price) )+"</td><td>"+Math.round(((termo[termostat].retail_price) - (termo[termostat].price)) / ((termo[termostat].retail_price))*100)+" %</td><td class=\"fcol\">скидка</td></tr>" : "";

	res += "<tr><td class=\"fcol\">Общая стоимость"+((floorDiscount.money>0)? " (без учета скидки по акции)":"")+"</td><td colspan=\"5\" align=\"right\">"+formatNumber(getPrice())+"</td></tr>";
	//res += (floorDiscount.money>0)? "<tr><td class=\"fcol\">Скидка по акции составляет</td><td colspan=\"5\" align=\"right\">"+formatNumber(floorDiscount.money)+"</td></tr>" : "";
	res += (floorDiscount.money>0)? "<tr class=\"brow\"><td class=\"fcol\">Cтоимость со скидкой ("+(floorDiscount.size*100)+"%)</td><td colspan=\"5\" align=\"right\">"+formatNumber((getPrice()-floorDiscount.money))+"</td></tr>":"";
	
//	Список ИД и количества товаров для заказа
	goods = (termostat>=0)? termo[termostat].id+"-"+termoCount+"," : "";
	goods += (floorCount>0)? floors[floorType][floors[floorType].length-1].id+"-"+floorCount+"," : "";
	goods += (floorId>0)? floors[floorType][floorId].id+"-1" : "";
	
	if (floorDiscount.money>0){
		discountedGoods = (floorDiscount.termos>0)? termo[termostat].id+"-"+floorDiscount.termos+"-"+round5(termo[termostat].retail_price*(1-floorDiscount.size))+"," :"";
		discountedGoods += (floorDiscount.floors>0)? floors[floorType][floors[floorType].length-1].id+"-"+floorDiscount.floors+"-"+round5(floors[floorType][floors[floorType].length-1].retail_price*(1-floorDiscount.size))+"," :"";
		discountedGoods += (floorDiscount.fsmall)? floors[floorType][floorId].id+"-1-"+round5(floors[floorType][floorId].retail_price*(1-floorDiscount.size)) :"";
		discountedGoods = (discountedGoods.substr(discountedGoods.length-1)==',')? discountedGoods.substr(0,discountedGoods.length-1) : discountedGoods;
	}
	
	res += '</table><br/><a onclick="opener.location.href=\''+orderGoods+goods+((floorDiscount.money>0)?discountGoods+discountedGoods:"")+'\'; return false;" href="'+orderGoods+goods+((floorDiscount.money>0)?discountGoods+discountedGoods:"")+'">Заказать полученные товары</a>';
	$("#log").html(res);
	$("#inform").slideUp(300);
	$("#log").slideDown(300);
	$("#expand").show();
	$("form").css("cursor","pointer");
	setTimeout('$("form").click(function(){$("form").css("cursor","default");$("#log").slideUp(300);$("#inform").slideDown(300);$("#expand").hide();$("form").unbind("click")})',10);
}

$(document).ready(function() {
	var dim = {
	width: 740,
	height: 600
	};
	if( typeof( window.innerWidth ) == 'number') {
		//Non-IE
		window.innerWidth = dim.width;
		window.innerHeight = dim.height;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		document.documentElement.clientWidth = dim.width;
		document.documentElement.clientHeight = dim.height;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		document.body.clientWidth = dim.width;
		document.body.clientHeight = dim.height;
	}

	$("input:disabled").attr("disabled","");
	$("input[name='mode']").change(function(){
		isMain= $('#x').attr('checked');
		if ($("#b:checked").val() && isMain){
			$("#c").attr("checked","checked");
			$("#b").attr("checked","");
		}
		$("#b,#l,#m").attr("disabled",(($("#k:checked").val() && $("#y:checked").val())?"":"disabled"));
	});
	$("#room_type>input").click(function(){
		isWet = $(this).val();
		$("#l,#m").attr("disabled",(($("#b").attr("checked") || $('#x').attr('checked') )? "disabled" : ""));
		$("#x").attr("disabled",(($("#b:checked").val() || ($("#m:checked,#l:checked").val()))? "disabled" : ""));
	});
	$("input[name='cable']").change(function(){
		floorType = $(this).val();
		if (floorType!='cable' ){
			if ($("#x:checked").val()){
				$("#y").attr("checked","checked");
				$("#x").attr("checked","");
			}
			if ($("#b:checked").val()){
				$("#c").attr("checked","checked");
				$("#b").attr("checked","");
			}
		}
		$("#b,#x").attr("disabled",((floorType=='cable')? "" : "disabled"));
		showAction();
	});
	$("#subm").click(function(){
		countIt();
	});
	$("#reset").click(function(){
		reForm();
	});
	$("#s")
	.change(function(){
		$("#s")
		.removeClass("err")
		.val(checkS());
	})
	.keypress(function(e){if (e.which==13) $("#subm").click()});
	$("#termostat").change(function(){
		showAction();
	});
	for (i=0;i<termo.length;i++) $("#termostat").append('<option value="'+i+'">'+termo[i].name+'</option>');	// Формирование списка термостатов
	reForm();
});

//	Функция автокоррекции ввода площади помещения
function checkS(){
	var area = $("#s").val();
	area = area.replace(",",'.');
	$("subm").attr("disabled","");
	if (isNaN(area)) return 1;
	if (area<0) return 0;
	if (area>2000) return 2000;
	return area;
}

//	Функция отображения акций
function showAction(){
	t = $("#termostat").val();
	if (t>=0) {
		tmp = '<img width="'+images.width+'" height="'+images.height+'" src="'+images.path+termo[t].image+'"/>';
		tmp += '<p>'+termo[t].name+', цена &#151; '+formatNumber(termo[t].price)+'</p>';
		if (t==0 || t==2) {				
		//	tmp += '<p class="hot">При заказе комплекта &laquo;терморегулятор + теплый пол или терморегулятор + два теплых пола Вы получаете 20% скидку от розничной цены на весь комплект!</p>';
		}
	} else tmp = "";
	$("#termo_info1").html(tmp);
}

//	Функция округления до "0" и "5"
//	0<--1,2  |  3,4-->5<--6,7  |  8,9-->0
function round5(param){
	number = '' + Math.round(param);													// Округляем число и преобразовываем в строку
	lastNumber = parseInt(number.substr(length-1,1));									// Извлекаем последнюю цифру
	plus = (lastNumber>7)? 10 : 0;														// Если у нас последняя цифра больше 7, то предыдущая увеличивается на 1
	lastNumber = (lastNumber>2 && lastNumber<8)? 5 : 0;									// Округляем до "5" или "0"
	return parseInt(number.substr(0,number.length-2))*100+plus+lastNumber;			// Собсна вывод =)
}

//	Функция сброса формы
function reForm(){
	$("#y").attr("checked","checked").attr("disabled","");
	$("#k").attr("checked","checked");
	$("#c").attr("checked","checked");
	$("#s").val("");
	$("#termostat").val(-1);
	$("#termo_info1").html("");
	$("#log").slideUp(300);
	$("#inform").slideDown(300);
	$("#expand").hide();
	floorType = 'cable';
	isWet = 0;
	isMain = false;
}

//	Функция форматирования цен ("10000.5" --> "10 001 руб.")
function formatNumber(number) {
	number = '' + number; //round5(number);
	if (number.length > 3) {
		mod = number.length % 3;
		output = (mod > 0 ? (number.substring(0,mod)) : '');
		for (i=0 ; i < Math.round(number.length / 3); i++) {
			if ((mod == 0) && (i == 0))
				output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
			else
				output+= '&nbsp;' + number.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (trimStr(output)+" руб.");
	}
	else return number+" руб.";
}
