﻿/* © Just Be Nice studio | http://www.justbenice.ru */

var http_request = false;

function makeGETRequest(url, parameters, afteraction){
	http_request = false;
	if (window.XMLHttpRequest){
		http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType){
				http_request.overrideMimeType('text/html');
			}
	} 
	else if (window.ActiveXObject){
		try{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
        	catch (e){
			try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}	
	if (!http_request) {
		return false;
	} 
	http_request.onreadystatechange=afteraction 
	http_request.open("GET",url+'?'+parameters,true)	
	http_request.send(null)
}
function ParamPrepare(id){
	var value = 'not_found';
	var input = this.document.getElementById(id);
	if(input){
		if((input.type=='radio')||(input.type=='checkbox')){
			value = id+'='+encodeURI(input.checked);
		}
		else{
			value = id+'='+encodeURI(input.value);
		}
	}
	return value;
}
function getFormValues(id,submiy_cnt){
	var form;
	var poststr;
	var andsrt;
	
	form = this.document.getElementById(id);
	poststr = '';
	
	for(var i=0;i<form.length;i++){
		andsrt = (i<form.length-1-submiy_cnt)? '&':'';
		if(form.elements[i].type!='button')
			poststr += ParamPrepare(form.elements[i].id)+andsrt;
	}
	return poststr;
}
function scrollTop(){
	var top = 0;
	if( typeof(window.pageYOffset) == 'number'){
		top = window.pageYOffset;
	}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){
		top = document.body.scrollTop;
	}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){
		top = document.documentElement.scrollTop;
	}
	return top;
}
function verticalAlignCenter(form){
	var clientH = this.document.body.clientHeight;
	var formH = form.offsetHeight;
	var offset = (formH>clientH)? 0 : Math.floor((clientH-formH)/2);
	var top = scrollTop()+offset;
	form.style.top = top+'px';
}
function show(){
	var bg = this.document.getElementById('bg');
	bg.style.height = this.document.getElementById('bottom').offsetTop+this.document.getElementById('bottom').offsetHeight+'px'	
	bg.className = '';
	
	var form = this.document.getElementById('order');
	
	form.className = 'order';
	
	var shades_height = form.offsetHeight-2*132;
	this.document.getElementById('fl').style.height = shades_height+'px';
	this.document.getElementById('fr').style.height = shades_height+'px';
	
	reset();
	
	verticalAlignCenter(form);	
}
function hide(id){
	this.document.getElementById(id).className = 'hidden';
	this.document.getElementById('bg').className = 'hidden';
}
function toggle(option){
	this.document.getElementById('date').className = (option.value=='date')? '' : 'hidden';
}
function reset(){
	this.document.getElementById('form').reset();

	//toggle form state
	if(this.document.getElementById('when').value=='date'){
		toggle(this.document.getElementById('when'));
	}
	
	//current month, year
	var today = new Date();
	var mnth = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	var next_month = (today.getMonth()<11)? today.getMonth()+1 : 0;
	this.document.getElementById('month').selectedIndex = (today.getDate()>(mnth[today.getMonth()]-2)) ? next_month : today.getMonth();
	this.document.getElementById('year').value= ((today.getDate()>(mnth[today.getMonth()]-2))&&(today.getMonth()==11)) ? today.getFullYear()+1 : today.getFullYear();
	
	//disable submit
	this.document.getElementById('submit').disabled = true;
}
function fill(){
	var filled = true;
	if(this.document.getElementById('name').value==''){
		filled=false;
	}
	if(this.document.getElementById('phone').value==''){
		filled=false;
	}
	if(this.document.getElementById('when').value=='date'){
		if(this.document.getElementById('day').value==''){
			filled=false;
		}
	}
	if(this.document.getElementById('from').value==''){
		filled=false;
	}
	if(this.document.getElementById('to').value==''){
		filled=false;
	}
	this.document.getElementById('submit').disabled = !filled;	
}
function valide(){
	var validated = true;
	var regDay = /(\d{1,2})/;
	var regYear = /(\d{4})/;
	var today = new Date();
	var mnth = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	
	//date
	if(this.document.getElementById('when').value=='date'){		
		var day = this.document.getElementById('day').value;
		var month = this.document.getElementById('month').selectedIndex;
		var year = this.document.getElementById('year').value;		
		
		if((!regDay.test(day)||(day<1)||(day>mnth[this.document.getElementById('month').selectedIndex]))||((year==today.getFullYear())&&(month==today.getMonth())&&(day<today.getDate()))){
			validated = false;
			this.document.getElementById('day').className = 'err';
		}
		else{
			this.document.getElementById('day').className = '';
		}


		if((year==today.getFullYear())&&(month<today.getMonth())){
			validated = false;
			this.document.getElementById('month').className = 'err';
		}
		else{
			this.document.getElementById('month').className = '';
		}
						
		
		if(!regYear.test(year)||(year<today.getFullYear())||(year>today.getFullYear()+1)){
			validated = false;
			this.document.getElementById('year').className = 'err';
		}
		else{
			this.document.getElementById('year').className = '';
		}
	}
	//time
	validated = (valide_time())? validated : false;
	
	//other fields are in a free form for fill
		
	return validated;
}
function valide_time(){
	var validated = true;
	var regTime = /(\d{1,2})/;
	var today = new Date();
	
	var hour = this.document.getElementById('hour').value;
	var mimutes = this.document.getElementById('min').value;

	if(hour!=''){
		if((!regTime.test(hour)||(hour>24))||((hour<today.getHours())&&(this.document.getElementById('when').value=='today'))){
			validated = false;
			this.document.getElementById('hour').className = 'err';
		}
		else{
			this.document.getElementById('hour').className = '';
		}
	}
	if(mimutes!=''){
		if((!regTime.test(mimutes)||(mimutes>59))||((this.document.getElementById('when').value=='today')&&(hour==today.getHours())&&(mimutes<today.getMinutes()))){
			validated = false;
			this.document.getElementById('min').className = 'err';
		}
		else{
			this.document.getElementById('min').className = '';
		}
	}
	return validated;
}
function order(){
	var poststr;	
	if(valide()){
		poststr = getFormValues('form',1);
		makeGETRequest('/order/', poststr, onChangeOrder);
		document.getElementById('thanks').innerHTML = '<div style="height:50px;text-align:center;"><img src="/img/ajax-loader.gif" alt="Пожалуйста, подождите. Данные отправляются на сервер." title="Пожалуйста, подождите. Данные отправляются на сервер." style="margin-top:18px;" /></div>';
		document.getElementById('order').className = 'hidden';
		document.getElementById('thanks').className = 'thanks';
		verticalAlignCenter(document.getElementById('thanks'));
	}
}
function onChangeOrder(){
	if (http_request.readyState == 4){
		if (http_request.status == 200){
			result = http_request.responseText;
			document.getElementById('thanks').innerHTML = '<div>'+result+'</div>';
		} 
	}	
}