//калькулятор
////////////////////////////////
// КАЛЬКУЛЯТОР
////////////////////////////////

var snum = 1;
var order_code = '';
var next_id = 1;
var temp_drivers = '';

deleteCookie('stop', "/");
addCookie('step', 1, 1, "/");

var step_data = {
	text: {
		1: 'Марка, модель:',
		2: 'Параметры автомобиля:',
		3: 'Параметры страхования:',
		4: 'Дополнительные параметры:',
		5: 'Расчет стоимости КАСКО:'
    },
    img: { 1: 1, 2: 2, 3: 3, 4: 3, 5: 3 },
    values: { 1: 'f_mark', 2: 'f_model', 3: 'f_year', 4: 'f_cost', 5: 'f_security', 6: 'f_payed', '6_1': 'f_bank', 7: 'f_owner', 8: 'f_drivers', 9: 'f_phone', 10: 'f_discount', 11: 'f_damage', 12: 'f_stole', 13: 'f_osago', 14: 'f_dsago', 15:'f_pcomplex', 16:'f_sput_security', 16:'f_sput_model',17:'f_type' },
	probeg: {
		1: 'с пробегом',
		2: 'без пробега'
    },
	valute: {
		'rur': 'руб.',
		'usd': 'USD',
		'eur': 'Евро'
    },
	stat_security: {
		1: '',
		2: 'электронная ПС со звуковым оповещением'
    },
	immobilaizer: {
		1: '',
		2: 'иммобилайзер'
    },
	pcomplex: {
		1: '',
		2: 'противоугонный комплекс'
    },
	mech_security: {
		1: '',
		2: 'механическая ПС'
    },
	sput_security: {
		1: '',
		2: 'спутниковая ПС'
    },
	bank: {
		1: '',
		2: 'в кредит'
    },
	garant: {
		1: '',
		2: 'на гарантии'
    },
	strah_sum: {
		1: '',
		2: 'агрегатная страховая сумма'
    },
	franchise: {
		1: '',
		2: 'франшиза'
    },
	owner: {
		1: 'Физическое лицо',
		2: 'Юридическое лицо'
    },
	damage: {
		1: '',
		2: 'ущерб'
    },
	stole: {
		1: '',
		2: 'угон'
    },
	osago: {
		1: '',
		2: 'ОСАГО'
    },
	dsago: {
		1: '',
		2: 'ДСАГО'
    },
	
	phone_codes: { 495: 1,496: 1,499:1,985:1,919:1,916:1,910:1,985:1,915:1,901:1,962:1,963:1,964:1,965:1,909:1,903:1,905:1,906:1,925:1,926:1,929:1 }
}

function clear_steps(id){
   var inputs = doc('form_data').getElementsByTagName('input');
   if (inputs.length) for (var i=0; i<inputs.length; i++) if (id == undefined || (id != undefined && inputs[i].id != id)) {
      inputs[i].value = '';
      deleteCookie(inputs[i].id, "/");
      if (doc(inputs[i].id+'_v')) doc(inputs[i].id+'_v').innerHTML = '';
   }
   if (id == undefined) {
   	    deleteCookie('step', "/");
   	    deleteCookie('stop', "/");
   	    if (doc('acts')) doc('acts').style.display = 'none';
   	}
   	return;
}


function format_cost(e){
   var val = e.value;
   if (val.length>0) {
    val = val.replace(/[^0-9]/g, "");
   	var j = 0;  var new_value = '';
   	if (val.length>=3){
   		for (var i=val.length-1; i>=0; i--) {
   		j++;
   		new_value = val.charAt(i)+new_value;
   		if (j%3==0) new_value = ' '+new_value;
   		}
   	} else new_value = val;
    e.value = trim(new_value);
   }
   return;
}


function allow_act(e){
 e.blur();
 if (/2/i.test(e.getElementsByTagName('img')[0].src)) return true;
 else return false;
}

function get_form(form_id){
	var fdata = doc(form_id);
	//var fields_value = new Array(fdata.length);
	var fields_value = new Object;
	for (var i=0; i<fdata.length; i++) fields_value[fdata.elements[i].name] = encodeURI(fdata.elements[i].value);

	return fields_value;
}

function send_order(){
		if (checkErrors()) {
			return false;
		}
	//windows-1251
		uname = doc('f_user_fio').value;
	 	var req = new JsHttpRequest();
		req.open(null, '/js/_ajax/calc/send_order.php', true);
		
		var fdata = get_form('form_data'); 
		//alert(fdata.length);
		var data = { 'fdata': fdata};
        req.send(data);
		
    	req.onreadystatechange = function() {
		  if (req.readyState == 4) {

			var result = req.responseJS.res;
	        var ordernumber = req.responseJS.ordernumber;

            if (result) {
				doc('f_order_number_v').innerHTML = ordernumber;
				hide('calc_data');
				hide('send_data');
				show('success_data');
				success_html = "<div style='text-align:center;'><img src='/img/support_worker.jpg' style='margin-bottom:10px;'><br />Уважаемый(ая) "+uname+"!<br />Спасибо, что заполнили анкету, в самое ближайшее время наш специалист свяжется c Вами и предоставит полный расчет полиса КАСКО по ведущим страховым компаниям.</div>";
				close_message('success',success_html,'','',"Заявка принята");
            }
         }
     }
}


function step_clear(num){
   if (step_data['values'][num]==undefined) return false;
   doc(step_data['values'][num]).value = '';
}

function check_step(){
 var current_step = getCookie('step');
 var stop = getCookie('stop');
 if (stop=='yes' && current_step<=11) { close_message('info','Вернуться к предыдущим пунктам невозможно!<br>Возможно только <a href="#" onclick="begin(); return false;">начать сначала</a>'); return false; }
return true;
}

function begin(){
//if ($('acts')) $('acts').style.display = 'none';
close_message();
clear_steps();
step(1);
}

function cutString(string,len,postfix) {
	if (string) {
		if (string.length <= len) {return string;}
		else {return string.substring(0,len-1)+postfix;}
	} else {
		return string;
	}	
}

function deleteChilds(node) {
	if (node.hasChildNodes()) {
		i = 0;
        while ((node.childNodes.length > 0)||(node.childNodes.length > i)) {
        	if (node.childNodes[i]) {
	        	if (node.childNodes[i].tagName) {
	        	tagName = node.childNodes[i].tagName;
	        	} else tagName = '';
	        	if (tagName.toLowerCase() == 'a'){ 
					node.removeChild(node.childNodes[i]);
				} else i++;
			} else break;
		}
	}
}

function load_models(e,model_id){
	
	function createNode(parent,model_id,name,id) {
		var a = document.createElement('a');
        a.innerHTML = "<em>"+cutString(name,12,"...")+"</em>";
        a.name = "model_"+id;
        a.href = "#";
        a.id = "model_"+id;
        a.title = name;
        a.className = 'span_value';
        a.onclick = function () {
			svertka('model',id);
        	show('auto_probeg');
        	show('auto_year');
        	setPercent(15);
        	return false;
        	};
        if (model_id>0 && model_id == id) a.className = 'span_value_selected';
        //return a;
		parent.appendChild(a);
	}
	
	var req = new JsHttpRequest();
	var id = e.value;
    if (id == 0){
	var model = doc('c_model');
	model.length = 1;
    return false;
    }

  	req.open(null, '/js/_ajax/calc/load_models.php', true);
  	///// <<<<< меняется только ////////
    var data = { 'id': id };
    req.send(data);
	show_message();

    req.onreadystatechange = function() {
		if (req.readyState == 4) {

			var options = req.responseJS.options;
			var ids = req.responseJS.ids;
			var model = doc('c_model');
			//удаляем в divmodel все a
			deleteChilds(model);
			if (options && options.length > 0) {
                for (var i=0; i<options.length; i++){
	                id = ids[i];
	                name = options[i];
	                createNode(model,model_id,name,id);
				}
				close_message();
			} else {
				show('auto_probeg');
				show('auto_year');
				close_message();
			}
		}
    }
}

function load_sput_models(e,sput_model_id){

	function createNode(parent,sput_model_id,name,id) {
		var a = document.createElement('a');
        a.innerHTML = "<em>"+cutString(name,30,"...")+"</em>";
        a.name = "sput_model_"+id;
        a.href = "#ads";
        a.id = "sput_model_"+id;
        a.title = name;
        a.style.width = "220px";
        a.className = 'span_value';
        a.onclick = function () {
        	svertka('sput_model',id);
			show('auto_straxovanie');
			show('auto_straxovanie_header');
		};
        if (sput_model_id>0 && sput_model_id == id) a.className = 'span_value_selected';
        //return a;
		parent.appendChild(a);
	}
	
	var req = new JsHttpRequest();
	var id = e.value;
    if (id == 0){
	var sput_model = doc('c_sput_model');
	sput_model.length = 1;
    return false;
    }

  	req.open(null, '/js/_ajax/calc/load_sput_models.php', true);
  	///// <<<<< меняется только ////////
    var data = { 'id': id };
    req.send(data);
	show_message();

    req.onreadystatechange = function() {
		if (req.readyState == 4) {
			var options = req.responseJS.options;
			var ids = req.responseJS.ids;
			var sput_model = doc('c_sput_model');
			//удаляем в divmodel все a
			deleteChilds(sput_model);
			if (options) {
                for (var i=0; i<options.length; i++){
	                id = ids[i];
	                name = options[i];
	                createNode(sput_model,sput_model_id,name,id);
				}
				close_message();
			}
		}
    }
}


function setValue(name,value){
	//получаем имя поля = без "f_"
	var field_name = name.replace(/^f_/i,"");
	if (value == null || value == '') { //value в функции не задано
		value = (doc(field_name)) ? doc(field_name).value : '';
    }
    doc(field_name).value = value;
	doc(name).value = value;
	if (name.length>0 && name!=undefined) {
		addCookie(name, value, 1, "/");
		var new_value = '';

 		switch(doc(field_name).type){
			case 'hidden': new_value = (step_data[field_name] && step_data[field_name][value]!=undefined) ? step_data[field_name][value] : ''; break;
 			case 'select-one': if (field_name == 'valute') new_value = doc(field_name).options[doc(field_name).selectedIndex].innerHTML;
 							   else if (doc(field_name).selectedIndex!=0) new_value = doc(field_name).options[doc(field_name).selectedIndex].innerHTML; break;
        	default: new_value = value;
        }
        if (new_value == null || new_value == '') new_value = value;

 		switch(field_name){
			case 'mark':
 			case 'model':
 			case 'pcomplex':
 			case 'sput_security':
 			case 'sput_model':
 			case 'strax_company':
 			case 'bank':
 			case 'dopusk':
 			case 'min_age':
 			case 'min_stage':
 			case 'region':
 			//osago
 			case 'tsowner':
 			case 'tstype':
 			case 'drivernum':
 			case 'driverage':
 			case 'driverexp':
 			case 'tspower':
 			case 'usetc':
 			case 'ub':
  						if (doc(field_name).value==''){
	 						 doc('f_'+field_name+'_v').innerHTML = '';
	 						 if (doc('f_'+field_name+'_v2')) doc('f_'+field_name+'_v2').innerHTML = '';
	 						 doc('f_'+field_name).value = '';
 						 } else {
							if (value == "other") {
								if (doc('f_'+field_name+'_other')) {
									val = doc('f_'+field_name+'_other').value;
									new_value = val;
									doc(name).value = val;
								}
							} else new_value = doc(''+field_name+'_'+value).title;
 						 }
 						 break;
 			case 'year': 
  						if ((doc('year').value==0)||doc('year').value==''){
	 						 doc('f_year_v').innerHTML = '';
	 						 if (doc('f_year_v2')) doc('f_year_v2').innerHTML = '';
	 						 doc('f_year').value = '';
 						 } else {
	 						 new_value = doc('year_'+value).innerHTML+" г.в.";
 						 }
 						 break;
 			case 'cost': if (new_value) {
 						 	doc('f_valute').value = doc('valute').value;
 						 } else {
 						 	if (doc('f_valute_v')) doc('f_valute_v').innerHTML = '';
 						 	if (doc('f_valute')) doc('f_valute').value = '';
 						 }
 						 break;
 			case 'valute': if (!doc('f_cost').value) new_value = ''; break;
 			case 'volume': if (new_value) new_value += ' см<sup>3</sup>'; break;
 			case 'power': if (new_value) new_value += ' лс'; break;
 		}
 		if (doc(name+'_v')) doc(name+'_v').innerHTML = new_value;
 		if (doc(name+'_v2')) doc(name+'_v2').innerHTML = new_value;
 		if (doc('c_'+field_name+'_v')) doc('c_'+field_name+'_v').innerHTML = new_value;
	}
	var val_ids = new Array('mark','model','pcomplex','sput_security','strax_company','bank','dopusk','min_age','min_stage','region','year', 'cost','valute','volume','power','damage','stole','osago','dsago');
	var prcnt = 0;
	var risk = 0;
	for (var i=0; i<val_ids.length; i++) {
		f_name = val_ids[i];
		if (doc(f_name)) {
		if (f_name=='damage'||f_name=='stole'||f_name=='osago'||f_name=='dsago') {
			if (doc(f_name).value == 2) {if (risk == 0) {risk = 1; prcnt += 6.25;};}
		} else {
			if ((doc(f_name).value != '')) prcnt += 6.25;
		}}
	}
	setPercent(prcnt);
	//var f = getCookie(name);
}


function set_one(name,id){
  var other = (id == 2) ? 1 : 2;
  var setname = name.substring(2,name.length);
  	var value = doc(name+id).value;
  	if (value == 2) {
		doc(setname).value = id;
  		if (doc(name+other).value == 2) imgFormClick(name+other,'btn_check');
  	} else if (doc(name+other).value == 1) doc(setname).value = 0;

}

function show_step(cur_step,step){

  if (step==undefined) step = getCookie('step');
  if (step == '' || step == undefined || step == null || step > 5) step = 1;
  if (checkErrors(cur_step) == false) {
	   var n = parseInt(step)-1;
	   show_buts(step);
	   show_div(step);
	   addCookie('step', step, 1, "/");
  	   reloadPage();
  }
}

function selectErrorDiv(status,errtext,divname) {
	//прокручиваем к элементу
	var divscrollto = divname;
	var is_input = true;
	if ($('#с_'+divname).length > 0) {divscrollto = 'c_'+divname; is_input = false;}
	sctop = $('#'+divscrollto).offset().top;
	sctop = sctop - 50;

	$('html, body').animate({scrollTop: sctop}, 1000, function() {
		//если input, отрисовываем красную рамку, вешаем на онклик обработчик (убрать рамку)
		if (is_input) {
			borderold = '1px solid #C2C2C2';
			$('#'+divscrollto).css('border','1px #c60000 solid');
			$('#'+divscrollto).change(function() {
				$('#'+divscrollto).css('border',borderold);
			});
		}
		//сообщение об ошибке
		//close_message(status,errtext,divname);
		var header = 'Ошибка';
		if (errtext==undefined) errtext = 'Произошла ошибка';
		
		sctop = sctop + 150;
		
		$('#loading-box').css('display','block');
		$('#loading-box').css('top',''+sctop+'px');
		$('#loading-box #msgtext').html(errtext);
		$('#loading-box #msgheader').html('Ошибка');
		$('#loading-box #msgheader').css('backgroundImage','url(/img/error.gif)');
	});
}

function checkErrors(){
	var result = false;
	if (doc('f_type').value == 'casco') {
		if (doc('mark').value == 0) 	{ selectErrorDiv('error','Необходимо указать марку автомобиля', 'mark'); return true; }
		if (doc('model').value == 0)	{ selectErrorDiv('error','Необходимо указать модель автомобиля', 'model'); return true; }
		if (doc('year').value == 0) 	{ selectErrorDiv('error','Необходимо указать год выпуска', 'year'); return true; }
		if (doc('cost').value == 0) 	{ selectErrorDiv('error','Необходимо указать оценочную стоимость ТС', 'cost'); return true; }
		result = false;
		if ((doc('damage').value == 0)&&(doc('stole').value == 0)&&(doc('osago').value == 0)&&(doc('dsago').value == 0)) { selectErrorDiv('error','Необходимо указать хотя бы один риск', 'damage'); return true; }
		if (doc('dopusk').value == 0)	{ selectErrorDiv('error','Необходимо указать количество допущенных к управлению', 'dopusk'); return true; }
		if (doc('min_age').value == 0) 	{ selectErrorDiv('error','Необходимо указать минимальный возраст допущенных к управлению', 'min_age'); return true; }
		if (doc('min_stage').value == 0) { selectErrorDiv('error','Необходимо указать минимальный водительский стаж допущенных к управлению', 'min_stage'); return true; }
		result = false; 
		if (doc('user_fio').value == 0)	{ selectErrorDiv('error','Необходимо указать вашу фамилию, имя и отчество', 'user_fio'); return true; }
		if (doc('phone').value == 0) 	{ selectErrorDiv('error','Необходимо указать контактный телефон', 'phone'); return true; }
	} else if(doc('f_type').value == 'osago') {
		if (doc('tsowner').value == 0)		 { selectErrorDiv('error','Необходимо указать владельца ТС', 'tsowner'); return true; }
		if (doc('tstype').value == 0)		 { selectErrorDiv('error','Необходимо указать тип ТС', 'tstype'); return true; }
		if (doc('region').value == 0)		 { selectErrorDiv('error','Необходимо указать прописку владельца ТС', 'region'); return true; }
		if (doc('drivernum').value == 0)	 { selectErrorDiv('error','Необходимо указать количество водителей ТС', 'drivernum'); return true; }
		if ((doc('driverage').value == 0))	 { selectErrorDiv('error','Необходимо указать минимальный возраст водителей ТС', 'driverage'); return true; }
		if (doc('driverexp').value == 0)	 { selectErrorDiv('error','Необходимо указать минимальный стаж водителей ТС', 'driverexp'); return true; }
		if (doc('tspower').value == 0)		 { selectErrorDiv('error','Необходимо указать мощность ТС', 'tspower'); return true; }
		if (doc('usetc').value == 0)		 { selectErrorDiv('error','Необходимо указать период использования транспортного средства', 'usetc'); return true; }
		if (doc('ub').value == 0)			 { selectErrorDiv('error','Необходимо указать количество лет безаварийной езды', 'ub'); return true; }
		if (doc('user_fio').value == 0)		 { selectErrorDiv('error','Необходимо указать вашу фамилию, имя и отчество', 'user_fio'); return true; }
		if (doc('phone').value == 0)		 { selectErrorDiv('error','Необходимо указать контактный телефон', 'phone'); return true; }
	} else {
		return true;
	}
	
	return result;
}

function show_buts(step){
	if (step<=1) {
			doc('right_but').style.display = '';
			doc('left_but').style.display = 'none';
			//doc('min_cost').style.display = 'none';
	} else if (step>=4) {
			doc('right_but').style.display = 'none';
			doc('left_but').style.display = '';
			//doc('min_cost').style.display = '';
	} else if ((step>4)||(step<1)) {
			doc('right_but').style.display = 'none';
			doc('left_but').style.display = 'none';
			//doc('min_cost').style.display = '';
	} else {
			doc('right_but').style.display = '';
			doc('left_but').style.display = '';
			//doc('min_cost').style.display = 'none';
	}

}

function show_div(step){
	for (var i=1; i<=4; i++) {
		if (doc('span_step'+i)) doc('span_step'+i).className='';
	
	  doc('step'+i).style.display = 'none';
	  doc('step'+i).className = 'm_opacity';
	 // if (doc('s'+i)) doc('s'+i).style.display = 'none';
	  if (fadeOpacity.aProc['step'+i])
	  		if (!isIE) fadeOpacity('step'+i, 'fade');
	  		else doc('step'+i).className = '';
	}
	if (doc('s'+step)) doc('s'+step).style.display = '';
    doc('step'+step).style.display = '';
    if (!isIE) fadeOpacity('step'+step, 'block');
    doc('step'+step).className = 'm_opacity';
	doc('span_step'+step).className = 'selected';
}

function next_step(){
  var step = getCookie('step');
  if (step == '' || step == undefined || step == null || step > 4) step = 1;
  var cur_step = step;
  step++;
  show_step(cur_step,step);
  if (step==5 && $('phone')) $('phone').focus();
}

function prev_step(){
  var step = getCookie('step');
  if (step == '' || step == undefined || step == null || step > 4) step = 1;
  var cur_step = step;
  step--;
  show_step(cur_step,step);
}


function other_region(value){
   if (value == 'other') {
      doc('region_other2').style.display = '';
   } else {
   	  doc('region_other2').style.display = 'none';
   }
}

function show_generator(){
   var town = doc('region').value;
   if (town == 'other' && (doc('region_other').value == 'введите ваш город' || doc('region_other').value == '')) {
      close_message('error','Необходимо указать ваш город','region_other');
   } else show_contact_data();
}

function show_contact_data(){
   doc('contacts').style.display = '';
   doc('sms_code').focus();
}



function send_kasko_result(){
  //if (/^[\w\-\.]{1,32}\@[\w\-\.]+\.[a-zA-Z0-9]{2,5}$/i.test(doc('user_email').value)==false) { close_message('error', 'Некорректно введен email адрес', 'user_email'); return false;}
			 var req = new JsHttpRequest();
			 req.open(null, '/js/_ajax/calc/send_kasko.php', true);
			 var fdata = get_form('form_data');
			 var data = { 'fdata': fdata }
    		 req.send(data);

			    req.onreadystatechange = function() {
					//document.getElementById('debug').innerHTML = req.responseText;

					if (req.readyState == 4) {
						  clear_all();
						  close_message('info','Номер Вашего расчета <font style=color:red>'+req.responseJS.f_send+'</font>. Расчет будет выслан на Ваш E-mail. Если по каким-то причинам Вы не можете раскрыть файл или расчет не пришел, то просто позвоните по номеру (495) 988-59-92 и сообщите номер Вашего расчета.','','location.reload();');
						  //setTimeout(function(){location.reload();},10000);
					}
			    }

}



function clear_all(){
				clear_steps();
				prev_step();prev_step();prev_step();prev_step();
				doc('s2').style.display = 'none';
                doc('s3').style.display = 'none';
				doc('s4').style.display = 'none';
				doc('s5').style.display = 'none';
}


function count_min_cost(){
	var cost = parseInt(doc('cost').value.replace(/\ +/g,""));
	var valute = step_data['valute'][doc('valute').value];
	if (cost>0) {
		var min = parseFloat(cost*0.0413);
   		if (Number.prototype.toFixed) min = min.toFixed(2);
	    else min=Math.round(min*100)/100;
		doc('min_cost').innerHTML = 'Минимальная стоимость КАСКО по заданным параметрам составляет: <span class="title2">'+min+' '+valute+'</span><br><br>';
	}
}


