// Вероятность тормоза
pausePercent = 10;

var timersIncFast = {
	// Анализ ваших данных
	time1: 8000,
	// Подбор конкретных продуктов питания
	time2: 4000,
	// Подбор подходящего режима питания
	time3: 3000,
	// Расчет интервалов приёма пищи
	time4: 2000,
	// Подбираем оптимальный срок диеты
	time5: 2000,
	// Составление рациона на основе всех данных
	time6: 3000,
	// Сохранение диеты на сервер
	time7: 2000,
	// Пауза в начале прелоадера
	firstPause: 1000,
	// Пауза в конце прелоадера
	lastPause: 1500
}
var timers = timersIncFast;

setTimerSlow = function(){
	timers = timersSlow;
}
setTimerFast = function(){
	timers = timersFast;
}
timersIncFast = function(){
	timers = timersIncFast;
}
setTimerYaaahooo = function(){
	timers = timersYaaahooo;
}

var questions = [];
var sexMale = undefined;

finalLoad = function(){
	var prWrapper = jQuery('#final');
	var megaPrWrap = jQuery( '#megaPreloader' );
	jQuery(megaPrWrap).css({'visibility': 'hidden'});
	jQuery(prWrapper).css({'left': '18px'});
	jQuery('div.preloader').css({'left': '-422px'});
}
preloader6 = function(){
	var prWrapper = jQuery('#preloader6');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 195;
	var imgHeight = 1365;
	var workTime = timers.time7;
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 75,
		stop: 100
	}
	
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				finalLoad(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
preloader5 = function(){
	var prWrapper = jQuery('#preloader5');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 155;
	var imgHeight = 1705;
	var workTime = timers.time6;
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 60,
		stop: 75
	}
	
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				preloader6(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
preloader4 = function(){
	var prWrapper = jQuery('#preloader4');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 155;
	var imgHeight = 2015;
	var workTime = timers.time5;
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 45,
		stop: 60
	}
	
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				preloader5(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
preloader3 = function(){
	var prWrapper = jQuery('#preloader3');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 155;
	var imgHeight = 2015;
	var workTime = timers.time4;
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 30,
		stop: 45
	}
	
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				preloader4(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
preloader2 = function(){
	var prWrapper = jQuery('#preloader2');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 155;
	var imgHeight = 2015;
	var workTime = timers.time3;
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 15,
		stop: 30
	}
	
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				preloader3(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
preloader1 = function(){
	var prWrapper = jQuery('#preloader1');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	var objPr = jQuery('div.plateWrapper:first', prWrapper);
	var bottomImg = jQuery('img.bottom:first', prWrapper);
	var topImg = jQuery('img.top:first', prWrapper);
	var numBlock = jQuery('div.num>strong:first', prWrapper);
	var startNum = 0;
	var stopNum = 100;
	var frameSize = 155;
	var imgHeight = 1395;
	var workTime = timers.time2;
	
	
	var megaPrWrap = jQuery( '#megaPreloader' );
	jQuery(megaPrWrap).css({'visibility': 'visible'});
	
	var megaPr = {
		wrap: megaPrWrap,
		fuller: jQuery( '.fullerLine:first', megaPrWrap ),
		num: jQuery( '.num:first', megaPrWrap ),
		start: 0,
		stop: 15
	}
	setTimeout( function(){
		preloader(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, function(){ 
			setTimeout( function(){
				preloader2(); 
			}, timers.lastPause );
		}, megaPr);
	}, timers.firstPause );
}
setRequiredParamsDiet = function(){
	var prWrapper = jQuery('#setParamsDiet');
	jQuery(prWrapper).css({'left': 0});
	if ( !( jQuery.browser.msie && jQuery.browser.version < 8 ) ){
		jQuery(prWrapper).animate({'opacity': 1}, 100);
	}
	jQuery('img.genBtn:first', prWrapper).click(function(){
		var inputsSumm = jQuery('input:not(:checked)', prWrapper).length;
		if( inputsSumm > 0 ){
			alert('Для правильной работы конструктора необходимо указать все параметры составления диеты!');
		}else{
			jQuery(prWrapper).css({'left': '-422px'});
			preloader1();
		}
	});
}
preloader = function(objPr, bottomImg, topImg, numBlock, startNum, stopNum, frameSize, imgHeight, workTime, callback, megaPr){
	/*
		Параметров дофига, но чтож поделаешь =)
		
		objPr - Объект обертка прелоадера
		bottomImg - Нижняя картинка
		topImg - Верхняя картинка
		numBlock - Объект куда вставляется циферка
		frameSize - Размер окна прелоадера
		imgHeight - Высота базовой картинки
		workTime - Общее время работы прелоадера
		callback - Функция которая будет вызвана по окончании работы прелоадера
	*/
	var prInterval = undefined;
	var numInterval = undefined;
	var numDuration = Math.round ( workTime / ( stopNum - startNum ) );
	var stepByFrame = Math.round ( ( stopNum - startNum ) / ( imgHeight / frameSize ) );
	var intervalDuration = stepByFrame + numDuration - 30;
	
	jQuery( bottomImg ).css({'top': '0px'});
	jQuery( topImg ).css({'top': '0px'});
	
	
	var pauseInit = function(){
		/* Генератор тормозов */
		numInterval = setInterval(function(){ numInt(); }, numDuration);
		/* Генератор тормозов */
	}
	
	var prInt = function(){
		var nowBotImgTop = parseInt( jQuery( bottomImg ).css('top') );
		
		if( Math.abs( nowBotImgTop ) <= ( imgHeight - frameSize * 2 ) ){
			jQuery( bottomImg ).css({'top': ( nowBotImgTop - frameSize ) + 'px'});
			jQuery( topImg ).animate({'opacity': 0}, intervalDuration, 'linear', function(){
				jQuery( topImg ).css({'top': ( nowBotImgTop - frameSize ) + 'px', 'opacity': 1});
			});
		}
	}
	
	var nowCount = startNum;
	var stepsCount = 0;
	
	if ( megaPr ){
		var megaNowCount = megaPr.start;
		var megaStepsCount = 0;
		var megaStepByFrame = Math.round ( ( stopNum - startNum ) / ( megaPr.stop - megaPr.start ) );
	}
	
	var numInt = function(){
		if ( nowCount < stopNum ){
			nowCount += 1;
			jQuery(numBlock).text(nowCount);
			stepsCount += 1;
			if ( stepsCount >= stepByFrame ){
				stepsCount = 0;
				prInt();
			}
			if ( megaPr ){
				megaStepsCount++;
				if ( megaStepsCount >= megaStepByFrame ){
					megaStepsCount = 0;
					megaNowCount++;
					jQuery( megaPr.fuller ).animate({'width': megaNowCount+'%'}, ((numDuration - 1) * megaStepByFrame));
					jQuery( megaPr.num ).text(megaNowCount);
				}
			}
			/* Генератор тормозов */
			var randPause = Math.floor( Math.random() * 100 );
			if ( randPause < pausePercent ){
				clearInterval(numInterval);
				setTimeout( function(){ pauseInit(); }, randPause * 100 );
			}
			/* Генератор тормозов */
		}else{
			prInt();
			jQuery(numBlock).text(stopNum);
			stepsCount = 0;
			clearInterval(numInterval);
			callback();
		}
	}
	
	numInterval = setInterval(function(){ numInt(); }, numDuration);
}
showAllAnsw = function(){
	var userAnswers = jQuery('#userAnswers');
	var fixBtn = jQuery(userAnswers).find('img.fixBtn:first');
	var upBtn = jQuery(userAnswers).find('img.upBtn:first');
	var answDl = jQuery(userAnswers).find('dl:first');
	jQuery(answDl).empty();
	
	for ( var i in questions ){
		jQuery(questions[i].obj).animate({'left': '-422px'}, 300, 'swing');
	}
	
	var startAnimate = function(){
		var objPr = jQuery(userAnswers).find('div.circlePr:first')[0];
		var bottomImg = jQuery(objPr).find('img.bot:first')[0];
		var topImg = jQuery(objPr).find('img.top:first')[0];
		var topImg = jQuery(objPr).find('img.top:first')[0];
		var numBlock = jQuery(objPr).find('div.num>span:first')[0];
		var frameSize = 46;
		var imgHeight = 736;
		var workTime = timers.time1;
		var showAnswInt = undefined;
		
		var answCount = -1;
		var simpleArrQue = [];
		for ( var i in questions ){
			for ( var j in questions[i].arr ){
				simpleArrQue.push( questions[i].arr[j] );
			}
		}
		var workDelay = Math.floor( workTime / simpleArrQue.length );
		var realAnswCount = 1;
		var showAnsw = function(){
			answCount++;
			if( answCount >= simpleArrQue.length ){
				clearInterval(showAnswInt);
			}else{
				if ( sexMale ){
					// М
					if( simpleArrQue[answCount].name == 'queInput9g' ){
						answCount++;
					}
					jQuery(answDl).append('<dt>' + realAnswCount + '. ' + simpleArrQue[answCount].title + '</dt>');
					realAnswCount++;
					setTimeout(function(){ 
						jQuery(answDl).append('<dd>' + simpleArrQue[answCount].textValue() + '</dd>');
						jQuery(answDl)[0].scrollTop = 150;
					}, Math.floor( workDelay / 3 ) );
				}else{
					// Ж
					if( simpleArrQue[answCount].name == 'queInput9m' ){
						answCount++;
					}
					jQuery(answDl).append('<dt>' + realAnswCount + '. ' + simpleArrQue[answCount].title + '</dt>');
					realAnswCount++;
					setTimeout(function(){ 
						jQuery(answDl).append('<dd>' + simpleArrQue[answCount].textValue() + '</dd>');
						jQuery(answDl)[0].scrollTop = 150;
					}, Math.floor( workDelay / 3 ) );
				}
				
			}
		}
		showAnswInt = setInterval(function(){ showAnsw(); }, workDelay);
		jQuery(objPr).css({'display': 'block'});
		preloader(objPr, bottomImg, topImg, numBlock, 0, 100, frameSize, imgHeight, workTime, function(){
			/* После вывода всех ответов пользователя */
			jQuery(objPr).css({'display': 'none'});
			jQuery(upBtn).css({'visibility': 'visible'});
			jQuery(fixBtn).css({'visibility': 'visible'});
		});
	}
	
	jQuery( fixBtn ).click(function(){
		jQuery(userAnswers).css({'left': '422px'});
		jQuery( fixBtn ).css({'visibility': 'hidden'});
		jQuery( upBtn ).css({'visibility': 'hidden'});
		
		var n = true;
		for ( var k in questions ){
			if ( n ){
				n = false;
				jQuery( questions[k].obj ).css({'left': '0px'});
			}else{
				jQuery( questions[k].obj ).css({'left': '422px'});
			}
		}
	});
	jQuery( upBtn ).click(function(){
		jQuery(userAnswers).css({'left': '422px'});
		jQuery( fixBtn ).css({'visibility': 'hidden'});
		jQuery( upBtn ).css({'visibility': 'hidden'});
		// setRequiredParamsDiet();
		preloader1();
	});
	
	jQuery(userAnswers).animate({'left': '0px'}, 300, 'swing', function(){ startAnimate(); });
}
initAllQues = function(){
	var prevQue = false;
	jQuery('div.questions').each(function(){
		var tmpArr = [];
		jQuery(this).find('>div.num').each(function(){
			var actInput = jQuery(this).find('select');
			var part = jQuery(this).parents('div.questions:first').attr('id');
			if ( jQuery(actInput).length ){
				tmpArr.push({
					title: jQuery(actInput).parents('div.num:first').find('div.title:first').text(),
					type: 'select',
					name: jQuery(actInput).attr('name'),
					obj: actInput,
					objNum: this,
					value: function(){
						return jQuery(this.obj).attr('value');
					},
					textValue: function(){
						return jQuery(this.obj).find('option[value='+jQuery(this.obj).attr('value')+']').text();
					}
				});
			}else{
				actInput = jQuery(this).find('input');
				tmpArr.push({
					title: jQuery(actInput).parents('div.num:first').find('div.title:first').text(),
					part: part,
					type: 'radio',
					name: jQuery(actInput).attr('name'),
					obj: actInput,
					objNum: this,
					value: function(){
						var value = "0";
						jQuery(this.obj).each(function(){
							if( jQuery(this).attr('checked') ){
								value = jQuery(this).attr('value');
							}
						});
						return value;
					},
					textValue: function(){
						var value = "";
						jQuery(this.obj).each(function(){
							if( jQuery(this).attr('checked') ){
								value = jQuery(this).parent().text();
							}
						});
						return value;
					}
				});
			}
		});
		var thisId = jQuery(this).attr('id');
		questions[ thisId ] = {
			obj: jQuery(this),
			next: false,
			arr: tmpArr
		};
		if ( prevQue ){
			questions[ prevQue ].next = jQuery(this);
		}
		prevQue = jQuery(this).attr('id');
		
		jQuery(this).find('img.nextBtn:first').click(function(){
			var flag = false;
			var thisId = jQuery(this).parent().attr('id');
			for ( var i in questions[ thisId ].arr ){
				if ( questions[ thisId ].arr[i].value() == "0" ){
					flag = true;
				}
			}
			if ( flag ){
				alert('Пожалуйста заполните все поля!');
			}else{
				/* Проверка пола и беременности */
				if ( questions[ "questions1" ].arr[1].value() == "2" ){
					jQuery( questions[ "questions2" ].arr[3].obj[1] ).attr({'checked': 'checked'});
					jQuery( 'div.questions .numGilrs' ).css({'display': 'none'});
					jQuery( 'div.questions .numMans' ).css({'display': 'block'});
					sexMale = true;
				}else{
					jQuery( questions[ "questions2" ].arr[4].obj ).attr({'value': '1'});
					jQuery( 'div.questions .numGilrs' ).css({'display': 'block'});
					jQuery( 'div.questions .numMans' ).css({'display': 'none'});
					sexMale = false;
				}
				/* Проверка пола и беременности */
				if ( questions[ thisId ].next ){
					jQuery( questions[ thisId ].obj ).animate({'left': '-422px'});
					jQuery( questions[ thisId ].next ).animate({'left': '0px'});
				}else{
					showAllAnsw();
				}
			}
		});
	});
}
questionsInit = function(){
	initAllQues();
}
mainInitFunction = function(){
	questionsInit();
	
	jQuery('#final').find('img.latestReviews:first').click(function(){
		jQuery('#latestReviews').css({'display': 'block'});
	});
	jQuery('#latestReviews img.close').click(function(){
		jQuery('#latestReviews').css({'display': 'none'});
	});
	jQuery('#final').find('img.sendReviews:first').click(function(){
		jQuery('#sendReviews').css({'display': 'block'});
	});
	jQuery('#sendReviews img.close').click(function(){
		jQuery('#sendReviews').css({'display': 'none'});
	});
	
	jQuery('#sendReviews form').submit(function(){
		jQuery('#sendReviews .inTopWnd').append('<img class="loading" src="images/ajax-loader2.gif" alt="">');
		jQuery('#sendReviews .submit input').attr({'disabled': 'disabled'});
		setTimeout(function(){
			jQuery('#sendReviews img.loading').remove();
			alert('Ваш отзыв успешно отправлен!');
		}, 3000);
		return false;
	});
}
jQuery.noConflict();
jQuery(document).ready(mainInitFunction);