function explode(delimiter, string) {

	var emptyArray = {
		0 : ''
	};

	if (arguments.length != 2 || typeof arguments[0] == 'undefined'
			|| typeof arguments[1] == 'undefined') {
		return null;
	}

	if (delimiter === '' || delimiter === false || delimiter === null) {
		return false;
	}

	if (typeof delimiter == 'function' || typeof delimiter == 'object'
			|| typeof string == 'function' || typeof string == 'object') {
		return emptyArray;
	}

	if (delimiter === true) {
		delimiter = '1';
	} 

	return string.toString().split(delimiter.toString());
}

function getCaretPos(input) {
	input.focus();
	if (input.selectionStart)
		return input.selectionStart;
	else if (document.selection) {
		var range = 0 - document.selection.createRange().duplicate().moveStart(
				'character', -100000);
		return range;
	}
	return 0;
}
function setSelectionRange(input, selectionStart, selectionEnd) {
	if (input.createTextRange) {
		var range = input.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	} else if (input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart, selectionEnd);
	}
	;
}
function setCaretPos(input, CaretPos) {
	setSelectionRange(input, CaretPos, CaretPos);
}
function AddSeparators(aval) {
	var newval = "";
	var count = 0;
	var cval = String(aval);
	for ( var i = cval.length - 1; i >= 0; i--)
		if (String("0123456789").indexOf(cval.charAt(i)) !== -1) {
			newval = cval.charAt(i) + newval;
			count++;
			if ((i > 0) && (count % 3 == 0)) {
				newval = "&nbsp;" + newval;
			}
		}
	return newval;
}
function UpdateSeparators(athis, aval) {
	var cval = athis.value;
	var newval = "";
	if (cval !== aval) {
		var cpos = getCaretPos(athis);
		var count = 0;
		for ( var i = cval.length - 1; i >= 0; i--)
			if (String("0123456789").indexOf(cval.charAt(i)) !== -1) {
				newval = cval.charAt(i) + newval;
				count++;
				if ((i > 0) && (count % 3 == 0)) {
					newval = " " + newval;
					cpos++;
				}
			} else
				cpos--;
		if (cval !== newval) {
			athis.value = newval;
			setCaretPos(athis, cpos);
			return newval;
		}
	}
	return aval;
}

function SetUpdater(athis) {
	athis.value = "";
	var cthis = athis;
	var cval = athis.value;
	/*setInterval(function() {
		cval = UpdateSeparators(cthis, cval);
	}, 500);*/
	athis.onkeypress = function() {
		cval = UpdateSeparators(cthis, cval);
	};
	athis.onkeydown = function() {
		cval = UpdateSeparators(cthis, cval);
	};
	athis.onkeyup = function() {
		cval = UpdateSeparators(cthis, cval);
	};
}

function Stages(AStageSTR) {
	var kMin = Array();
	var kMax = Array();
	var Area = Array();
	var CurrentNumber = 0;
	vstage = explode(';', AStageSTR);
	for ( var i = 0; i < vstage.length; i++) {
		nvstage = explode('|', vstage[i]);
		Area[i] = nvstage[0];
		kMin[i] = nvstage[1];
		kMax[i] = nvstage[2];

	}
	this.setArea = function(AArea) {
		CurrentNumber = 0;
		while ((CurrentNumber < kMin.length - 1)
				&& (Area[CurrentNumber] < AArea))
			CurrentNumber++;
		this.kMin = kMin[CurrentNumber];
		this.kMax = kMax[CurrentNumber];
	};
}

$(document).ready(
		function() {
			if ($('#price').length) {
				var n = new Stages($('#price').attr("stages"));
				var kmin, kmax;
				var area;
				
				SetUpdater(document.getElementById("area"));
				setInterval(function() {
					// Пересчитываем стоимость

						area = $('#area').val();

						area = Number(String(area).replace(/(\D+)/g, ""));

						n.setArea(area);

						kmin = n.kMin;
						kmax = n.kMax;

						$('input.koe:checked').each(function() {
							kmin *= $(this).attr('kmin');
							kmax *= $(this).attr('kmax');
						});

						var areamin = Math.round(area * kmin);
						var areamax = Math.round(area * kmax);
						areamin = (areamin) ? areamin : "0";
						areamaxa = (areamax) ? areamax : "0";
						var CurrentPrice = $('#totalprice').html();
						var NewPrice = "от " + AddSeparators(areamin) + " до "
								+ AddSeparators(areamax);
						if (CurrentPrice !== NewPrice)
							$('#totalprice').html(NewPrice);

					}, 500);

			}
			if ($('#price2').length) {
				var k2010 = 10;
				var summ = 0;
				var lsumm = 0;
				var lmsumm = new Array();
				$("input:text").each(function() {
					SetUpdater(this);
				});
				setInterval(function() {
					summ = 0;
					$('#price2 tr')
							.each(
									function(i) {
										var ccpr = jQuery(this).find("span");
										if (ccpr.length > 0) {
											var msumm = Math.round(100
													* ccpr.text().replace(/,/g,
															".")
													* $(this).find("input")
															.val().replace(
																	/(\D+)/g,
																	"")) / 100;

											if (lmsumm[i] !== msumm) {
												$(this).find("td:last").html(
														String(msumm).replace(
																/\./g, ","));
												lmsumm[i] = msumm;
											}
											summ += msumm;
										}
									});
					var k = 1;
					$('#price3 .k:checked').each(function() {
						k = k * $(this).val();
					});
					summ = Math.round(k2010 * summ * k);
					if (lsumm !== summ) {
						$('#result').html(AddSeparators(summ));

						lsumm = summ;
					}

				}, 500);
			}

		});

