// ---------------------------------------------- AJAX PART
selectCountry = 'Сначала выберите страну';
selectCity    = 'Сначала выберите город';
selectUniver     =  'Сначала выберите ВУЗ';
selectWorkRod = 'Сначала выберите род занятий';
selectWorkSub = 'Сначала выберите тип занятий';
selectApps = '- Выберите из списка -';

var vuzHTML = '';
var langHTML = '';
var jobHTML = '';
var appsHTML = '';

var http_request = false;
var http_mail_request = false;

var mailReturn = false;

function chkMailRequest(mail)
{
	http_mail_request = false;

     	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_mail_request = new XMLHttpRequest();
                if (http_mail_request.overrideMimeType) {
        		http_mail_request.overrideMimeType('text/plain');
	        }
	} else if (window.ActiveXObject) { // IE
		try {
			http_mail_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		        try {
        	               	http_mail_request = new ActiveXObject("Microsoft.XMLHTTP");
        	        } catch (e) {}
                }
	}

        if (!http_mail_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
                return false;
        }

	http_mail_request.onreadystatechange = function() { chkMail(http_mail_request); };
	http_mail_request.open('GET', 'selectFiller.php?act=validateEmail&mail=' + mail, true);
	http_mail_request.send(null);
}

function chkMail(http_mail_request)
{
	if (http_mail_request.readyState == 4)
		if (http_mail_request.status == 200)
		{
			mailReturn = (http_mail_request.responseText == "Ok");
		}
}

function requestSelect(fillId, fillSelectId, fillNullValue) 
{
	document.getElementById(fillSelectId).length = 0; 

	if(fillId == '0')
	{
		if(!isIE())
			document.getElementById(fillSelectId).innerHTML = '<option value="0">' + fillNullValue + '</option>';
		else
			{
				document.getElementById(fillSelectId).outerHTML = document.getElementById(fillSelectId).outerHTML.replace("</SELECT>", '<option value="0">' + fillNullValue + '</option></select>');
			}

		document.getElementById(fillSelectId).disabled = 'disabled';
		return false;
	}

	http_request = false;

     	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
        		http_request.overrideMimeType('text/plain');
	        }
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		        try {
        	               	http_request = new ActiveXObject("Microsoft.XMLHTTP");
        	        } catch (e) {}
                }
	}

        if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
                return false;
        }
	
	http_request.onreadystatechange = function() { getResponse(http_request, fillSelectId); };
	http_request.open('GET', 'selectFiller.php?fillId=' + fillId + '&fillSelectId=' + fillSelectId, true);
	http_request.send(null);
}

function getResponse(http_request, fillSelectId)
{
	if (http_request.readyState != 4) 
	{
		if(!isIE())
			document.getElementById(fillSelectId).innerHTML = '<option value="0">Идёт загрузка</option>';
		else
			document.getElementById(fillSelectId).outerHTML = document.getElementById(fillSelectId).outerHTML.replace("</SELECT>", '<option value="0">Идёт загрузка</option></select>');

		document.getElementById(fillSelectId).disabled = 'disabled';
	}
		else
	if (http_request.status == 200)
	{
		if(!isIE())
			document.getElementById(fillSelectId).innerHTML = http_request.responseText;
		else
		{
			document.getElementById(fillSelectId).options.length = 0;
			document.getElementById(fillSelectId).outerHTML = document.getElementById(fillSelectId).outerHTML.replace("</SELECT>", http_request.responseText + "</select>");
		}

		document.getElementById(fillSelectId).disabled = '';
	
		if(fillSelectId.indexOf('st_work_subtype') != -1)
		{
			sel = document.getElementById(fillSelectId);

			if(sel.length == 2)
			{
				document.getElementById('workType').style.display = 'none';

				sel.selectedIndex = 1;

				sel.onchange();

//				setTimeout(function () {  }, 500);
			}
				else
			{
				document.getElementById('workType').style.display = 'block';	
			}
		}
	} 
		else 
	{
		alert('Произошла ошибка запроса.');
	}
}

// ---------------------------------------------- UTILS
function isIE(){
 return (navigator.userAgent.toLowerCase().indexOf("msie") != -1);
}

function copySelect(from, to)
{
	var fromSel = document.getElementById(from);
	var toSel = document.getElementById(to);

	if(!isIE())
		toSel.innerHTML = fromSel.innerHTML;
	else
		toSel.outerHTML =  toSel.outerHTML.replace("</SELECT>", fromSel.innerHTML + "</SELECT>"); 	


	toSel.selectedIndex = 0;
	fromSel.selectedIndex = 0;

	return true;
}

function hilite(id)
{
	id.className = 'plsFillError';
}

function validateInput(name, errid, errmsg, regexp)
{
	if(!document.forms['regForm'].elements[name].value.match(regexp))
	{
		document.getElementById(errid).innerHTML = errmsg;
		document.forms['regForm'].elements[name].className = 'plsFillError';

		return false;
	}	
		else
	{
		document.getElementById(errid).innerHTML = '';

		return true;
	}
}

function validatePage1()
{
	var regForm = document.forms['regForm'];
	var stop = true;
	var errStr = '';

	document.getElementById('fillErr1').innerHTML = '';

	for(var i = 0; i < regForm.length; i++)
	{
		if(regForm.elements[i].className)
		{
		 	if((regForm.elements[i].className == "plsFill") || (regForm.elements[i].className =='plsFillError'))
				regForm.elements[i].className = 'plsFill';
			
			switch(regForm.elements[i].type)
			{
				case 'text':  if(regForm.elements[i].value == "") { stop = false; hilite(regForm.elements[i]); } break;
				case 'select-one': if(regForm.elements[i].selectedIndex == "0") { stop = false; hilite(regForm.elements[i]); } break;
				default: ;
			}		
		}

		if(regForm.elements[i].name == 'st_child') break;
	}

	if(!stop)
		errStr = '• Вы не указали один или несколько обязательных пунктов<br>';

	if(!validateInput('st_surname', 'errSurname', 'Фамилия может состоять только из русских букв.', /^[а-яА-ЯёЁ-]*$/))
		stop = false;

	if(!validateInput('st_name', 'errName', 'Имя может состоять только из русских букв.', /^[а-яА-ЯёЁ-]*$/))
		stop = false;

	if(!validateInput('st_secondname', 'errSecondname', 'Отчество может состоять только из русских букв.', /^[а-яА-ЯёЁ-]*$/))
		stop = false;

	if(!stop) document.getElementById('fillErr1').innerHTML = '<p>' + errStr + '</p>';

	return stop;
}

function validatePage2()
{
	var regForm = document.forms['regForm'];
	var stop = true;
	var errStr = '';

	document.getElementById('fillErr2').innerHTML = '';

	flag = false;

	for(var i = 0; i < regForm.length; i++)
	{
		if(regForm.elements[i].name == 'st_child')
			flag = true;
	
		if(!flag) continue;

		if(regForm.elements[i].className)
		{
		 	if((regForm.elements[i].className == "plsFill") || (regForm.elements[i].className =='plsFillError'))
				regForm.elements[i].className = 'plsFill';
			
			switch(regForm.elements[i].type)
			{
				case 'text':  if(regForm.elements[i].value == "") { stop = false; hilite(regForm.elements[i]); } break;
				case 'password':  if(regForm.elements[i].value == "") { stop = false; hilite(regForm.elements[i]); } break;
				case 'select-one': if(regForm.elements[i].selectedIndex == "0") { stop = false; hilite(regForm.elements[i]); } break;
				default: ;
			}		
		}
	}

	if(!stop)
		errStr = 'Вы не указали один или несколько обязательных пунктов<br>';

	for(a = 1; a < document.getElementById('jobs').value; a++)
		if(document.getElementById('errZP'+a))
			if(!validateInput('st_work_zp'+a, 'errZP'+a, 'Зарплата может состоять только из цифр.', /^[0-9]*$/))
				stop = false;

	if(!validateInput('st_email', 'errEmail', 'Вы ввели некорректный email.', /^[^@]+@[^@.]+\.[^@]*\w\w$/))
		stop = false;	

	if(!validateInput('st_icq', 'errICQ', 'Номер ICQ может состоять только из цифр.', /^[0-9]*$/))
		stop = false;

	if(!mailReturn)
	{
		document.getElementById('errEmail').innerHTML = "Извините, введённый email уже зарегистрирован в нашей базе";
		stop = false;
	}
		else 	
	document.getElementById('errEmail').innerHTML = "";

	if(document.forms['regForm'].elements['st_pass'].value != document.forms['regForm'].elements['st_pass2'].value)
	{
		document.getElementById('errPass').innerHTML = 'Введённые пароли не совпадают.';

		document.forms['regForm'].elements['st_pass2'].className = 'plsFillError';
		stop = false;
	} else document.getElementById('errPass').innerHTML = '';

	accept = document.getElementById('accept');
	if(!accept.checked)
	{
		accept.style.borderBottom = '2px solid red';

		errStr = errStr + 'Вы не подтвердили согласие с пользовательским соглашением';
		stop = false;
	}
		else
	{
		accept.style.borderBottom = '0';
	}

	if(!stop) document.getElementById('fillErr2').innerHTML = '<p>' + errStr + '</p>';

	return stop;
}

function displayPage(page)
{
	if(page == 1)
	{
		document.getElementById("page1").style.display = 'block';
		document.getElementById("page2").style.display = 'none';
	}
		else
	{
		if(!validatePage1()) return false;
		
		document.getElementById("page1").style.display = 'none';
		document.getElementById("page2").style.display = 'block';
	}	
}

function changeVis(visible, id)
{
	elem = document.getElementById(id);

	if(elem)
	{
		elem.style.display = (visible == 1) ? "block" : "none";
		document.getElementById('st_bus_exp_area').value = "";
	}
}

function setAvalible(avalible, id)
{
	elem = document.getElementById(id);

	if(elem)
	{
		if(avalible > 0)
		{
			elem.disabled = "";
		}
			else
		{
			elem.disabled = "disabled";
			elem.value = "0";
		}
	}	
}

function driveValidate()
{
	drive = document.getElementById("drive0");

	if(drive.checked)
		for(var i = 1; i < 6; i++)
		{
			document.getElementById("drive"+i).checked = "";
			document.getElementById("drive"+i).disabled = "disabled";
		}
			else
		for(var i = 1; i < 6; i++)
			document.getElementById("drive"+i).disabled = "";
}

function checkKach(id)
{
	var cou = 0;	

	for(var i = 0; i < 38; i++)
		if(document.getElementById('kach' + i).checked)
			cou++;

	if(cou > 7)
	{
		document.getElementById(id).checked = false;
		alert('Вы можете выбрать максимум 7 качеств.');
		return false;
	}
}

function removeDiv(parentDiv, id)
{
	document.getElementById(parentDiv).removeChild(document.getElementById(parentDiv+id));

	return false;
}

function addDiv(parentDiv, parentHTML)
{
	divId = 0;

	if(parentDiv == "vuz") divId = document.getElementById('vuzes').value;
	else
	if(parentDiv == "lang") divId = document.getElementById('langs').value;
	else
	if(parentDiv == "work") divId = document.getElementById('jobs').value;
	else
	if(parentDiv == "apps") divId = document.getElementById('app').value;

	plusDiv = document.createElement("div");
	plusDiv.className = "elem";
	plusDiv.id = parentDiv + divId;

	if(parentDiv == "vuz")
	{
		rep = parentHTML.replace(/st_vuz_country1/g, "st_vuz_country" + divId);
		rep = rep.replace(/st_vuz_city1/g, "st_vuz_city" + divId);
		rep = rep.replace(/st_vuz_city1/g, "st_vuz_city" + divId);
		rep = rep.replace(/st_vuz_univer1/g, "st_vuz_univer" + divId);
		rep = rep.replace(/st_vuz_fac1/g, "st_vuz_fac" + divId);
		rep = rep.replace(/st_vuz_learn_form1/g, "st_vuz_learn_form" + divId);
		rep = rep.replace(/st_vuz_avg_mark1/g, "st_vuz_avg_mark" + divId);
		rep = rep.replace(/st_vuz_end1/g, "st_vuz_end" + divId);
	}
		else
	if(parentDiv == "lang")
	{
		rep = parentHTML.replace(/st_lang_exp1/g, "st_lang_exp" + divId);
		rep = rep.replace(/st_lang_lev1/g, "st_lang_lev" + divId);
	}
		else
	if(parentDiv == "work")
	{
		rep = parentHTML.replace(/st_work_type1/g, "st_work_type" + divId);
		rep = rep.replace(/st_work_subtype1/g, "st_work_subtype" + divId);
		rep = rep.replace(/st_work_job1/g, "st_work_job" + divId);
		rep = rep.replace(/st_work_zan1/g, "st_work_zan" + divId);
		rep = rep.replace(/st_work_zp1/g, "st_work_zp" + divId);
		rep = rep.replace(/errZP1/g, "errZP" + divId);
	}
		else
	if(parentDiv == "apps")
	{
		rep = parentHTML.replace(/st_app_type1/g, "st_app_type" + divId);
		rep = rep.replace(/st_apps1/g, "st_apps" + divId);
	}

	plusDiv.innerHTML = "<hr><div style='float: right;'><a href='#' onclick='removeDiv(\"" + parentDiv + "\", " + divId + "); return false;'>удалить</a></div>" + rep;

	document.getElementById(parentDiv).appendChild(plusDiv);

	if(parentDiv == "vuz") document.getElementById('vuzes').value++;
	else
	if(parentDiv == "lang") document.getElementById('langs').value++;
	else
	if(parentDiv == "work") document.getElementById('jobs').value++;
	else
	if(parentDiv == "apps") document.getElementById('app').value++;

	return false;
}

function checkmail()
{
	if(document.forms['regForm'].elements['st_email'].value.match(/^[^@]+@[^@.]+\.[^@]*\w\w$/))
		chkMailRequest(document.forms['regForm'].elements['st_email'].value);
}

function init()
{
	copySelect("st_nationality", "st_livingcountry");
	copySelect("st_nationality", "st_vuz_country1");

	vuzHTML = document.getElementById('vuz').innerHTML;
	langHTML = document.getElementById('lang').innerHTML;
	jobHTML = document.getElementById('work').innerHTML;
	appsHTML = document.getElementById('apps').innerHTML;
}