// JavaScript Document
var calcSk = new Array();
var sortArray = new Array();
function calcSaveResults(obj){
	obj.className = 'dr_none';
	obj.onclick2 = obj.onclick
	obj.onclick = function (){ return false; };
	loadXMLDoc(window.location.href + '&cd=' + currentDrivers + '&cf=' + calcFran, null, parseRequestCSave, obj);
	return false;
}
function parseRequestCSave($xml, obj) {
	obj.className = 'dr';
	obj.onclick = obj.onclick2;
	//alert($xml)
}
function calcSetDriver(driver){
	calcDrivers = 0;
	var drDiv = document.getElementById('driver_' + driver);
	drDiv.act = drDiv.act ? 0 : 1;
	drDiv.className = drDiv.act ? 'dr': 'dr_none';
	calcReloadDrivers(driver);
	calcReload();
	return false;
}
function calcSetFran(fran){
	var i;
	for(i = 0; i < calcFranArray.length; i++) {
		var clacFrDiv = document.getElementById('calc_fran_' + calcFranArray[i]);
		if(clacFrDiv) clacFrDiv.className = '';
	}
	var clacFrDiv = document.getElementById('calc_fran_' + fran);
	if(clacFrDiv) clacFrDiv.className = 'act';
	calcFran = fran;
	calcReload();
	return false;
}
function sortArr(a,b){
	//alert(10)
	try {
		if(a && b) {
			if(a.percent < b.percent) return -1;
			else return 1;
		} else return 1;
	} catch(e) {
		return 1;
	}
}
function calcReload(){
	if(!calcDrivers) loadDrivers();
	sortArray = new Array();
	for(rr = 1; rr < 200; rr++) {
			var percentDiv = document.getElementById('sk_per_' + rr);
			if(percentDiv) {
				calcSetPercent(rr, calcPrice);
			}
			if(paketsArray[rr]) {
				calcSetPercent(rr, calcPrice,1);
			}
			var rowObj = document.getElementById('tx_skcalc_pi1_sk_' + rr);
			if(rowObj) sortArray[rr] = rowObj;
	}
	var parentObj = document.getElementById('tx_skcalc_pi1_sk');
	if(!parentObj)  return false;
	for (z in sortArray){
		parentObj.removeChild(sortArray[z]);
		//alert(z + ' ' + sortArray[z].id + ' ' + sortArray[z].percent)
	}
	//alert('test');
	sortArray = sortArray.sort(sortArr);
	for (z = 0; z <  sortArray.length; z++){
		if(sortArray[z]) parentObj.appendChild(sortArray[z]);
				//alert(z);
		//parentObj.removeChild(sortArray[z]);
		//alert(z + ' ' + sortArray[z].id + ' ' + sortArray[z].percent)
	}
}
function calcReloadDrivers(){
	var end = 0;
	for(i = 1; i < 5; i++) {
		var drDiv = document.getElementById('driver_' + i);
		if(drDiv) {
			var bit = 1 << (i - 1);
			if(drDiv.act) end = end | bit;
		}
	}
	currentDrivers = end;
}
function loadDrivers(){
	var end = currentDrivers;
	for(i = 1; i < 5; i++) {
		var drDiv = document.getElementById('driver_' + i);
		if(drDiv) {
			var bit = 1 << (i - 1);
			if(end & bit) drDiv.act = 1;
			else drDiv.act = 0;
			drDiv.className = drDiv.act ? 'dr': 'dr_none';
		}
	}
//	currentDrivers = end;
}
function caclSetPercentPak(uid, price){
	if(!paketsArray[uid]) return false;
	var rowObj = document.getElementById('tx_skcalc_pi1_sk_' + uid);
	var i;
	for(i = 0; i < paketsArray[uid].length; i++){
		var percentDiv = document.getElementById('sk_per_' + uid + '_' + paketsArray[uid][i]);
		var cascoDiv = document.getElementById('sk_casco_' + uid + '_' + paketsArray[uid][i]);
		if(cascoDiv && percentDiv){ 
			var fran = calcGetFran(uid,paketsArray[uid][i]);
			//alert(fran);
			var percent = calcGetDrivers(uid,paketsArray[uid][i]);
			if(specArray[uid]){
				for(s = 0; s < specArray[uid].length; s++){
					if(specArray[uid][s])specArray[uid][s]();
				}
			}
			if(!ugArray[uid][paketsArray[uid][i]]) percent = fran * percent;
			else {
				var tempUs = percent - ugArray[uid][paketsArray[uid][i]];
				percent = fran * tempUs + ugArray[uid][paketsArray[uid][i]];
			}
			if(rowObj) {
				if(cascoDiv.className == 'current') {
					rowObj.percent = percent;
					//alert(rowObj.percent);
				}
			}
			calcSetFormat(percentDiv, percent, 'percent');
		//alert((price * 1 ? price * 1 : 100) / percent * 100);
			calcSetFormat(cascoDiv, (price * 1 ? price * 1 : 100) * percent / 100, 'rub');
		};
	}
}
function calcSetPercent(uid, price, pak){
	calcPrice = price;
	if(pak) {
		caclSetPercentPak(uid, price);
		if(specArray[uid]){
			for(s = 0; s < specArray[uid].length; s++){
				if(specArray[uid][s])specArray[uid][s]();
			}
		}
		return false;
	}
	var percentDiv = document.getElementById('sk_per_' + uid);
	var cascoDiv = document.getElementById('sk_casco_' + uid);
	if(percentDiv && cascoDiv) {
		var rowObj = document.getElementById('tx_skcalc_pi1_sk_' + uid);
		var fran = calcGetFran(uid);
		var percent = calcGetDrivers(uid);
		if(specArray[uid]){
			for(s = 0; s < specArray[uid].length; s++){
				if(specArray[uid][s])specArray[uid][s]();
			}
		}
		if(!ugArray[uid]) percent = fran * percent;
		else {
			var tempUs = percent - ugArray[uid];
			percent = fran * tempUs + ugArray[uid];
		}
		if(rowObj) rowObj.percent = percent;
		sortArray[uid] = percent;
		calcSetFormat(percentDiv, percent, 'percent');
		//alert((price * 1 ? price * 1 : 100) / percent * 100);
		calcSetFormat(cascoDiv, (price * 1 ? price * 1 : 100) * percent / 100, 'rub');
	}
}
function calcGetFran(uid, pak){
	if(pak) {
		//alert(pak)
		for(i = 0; i < calcFranArray.length; i++){
			if(calcFranArray[i] == calcFran ) return franArray[uid][pak][i];
		};
	}
	for(i = 0; i < calcFranArray.length; i++){
		if(calcFranArray[i] == calcFran ) return franArray[uid][i];
	};
}
function calcGetDrivers(uid, pak) {
	var drAr = drArray[uid];
	if(pak) drAr = drArray[uid][pak];
	if(calcDrivers == 5) return drAr[0];
	if(calcDrivers){
		var end = 0;
		for (i = 0; i < calcDrivers; i++) {
			var drDiv = document.getElementById('driver_' + (i + 1));
			if(drDiv) drDiv.act = 1;
			var bit = 1 << i;
			end = end | bit;
		}
		currentDrivers = end;
		return drAr[end];
	} else {
		//alert(currentDrivers);
		return drAr[currentDrivers];
	}
}
function calcSetFormat(div, num, variant){
	if(!num) {
		div.innerHTML = '#';
		return false;
	};
	if(variant == 'percent')num = number_format( num, 2, ',', ' ' );
	else num = number_format( num, 2, 'р', ' ' );
	div.innerHTML = num + ((variant == 'percent') ? '%' : 'к');
	
}
function number_format( number, decimals, dec_point, thousands_sep ) {	// Format a number with grouped thousands
	// 
	// +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +	 bugfix by: Michael White (http://crestidg.com)

	var i, j, kw, kd, km;

	// input sanitation &amp; defaults
	if( isNaN(decimals = Math.abs(decimals)) ){
		decimals = 2;
	}
	if( dec_point == undefined ){
		dec_point = ",";
	}
	if( thousands_sep == undefined ){
		thousands_sep = ".";
	}

	i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

	if( (j = i.length) > 3 ){
		j = j % 3;
	} else{
		j = 0;
	}

	km = (j ? i.substr(0, j) + thousands_sep : "");
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
	//kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");


	return km + kw + kd;
}

