var site_root = '/';

function OnError(i1, i2, i3){
	alert("Javascript error: "+i1+"\n\n Url: "+i2+"\n Line: "+i3+"\n");
	//return false;
}
//window.onerror = OnError;

function ge(i) { return document.getElementById(i); }

function setClass(obj, cl, mode){
	var c = obj.className || "";
	var mask = new RegExp("(^| )" + cl + "($| )", "gi");
	if (mode == "?") mode = !c.match(mask);
	c = mode ? (c.match(mask) ? c : (c+" "+cl)) : c.replace(mask, " ");
	obj.className = c.replace(/ +/g, " ").replace(/(^ *| *$)/g, "");
}

var currentAlbum;
function showAlbum(a){
	if (currentAlbum) {
		setClass(currentAlbum, 'gallery_visible', false);
		//currentAlbum == null;
	}
	if (currentAlbum == a.parentNode.parentNode){
		currentAlbum = null;
	} else {
		setClass(a.parentNode.parentNode, 'gallery_visible', '?');
		currentAlbum = a.parentNode.parentNode;
	}
	return false;
}


/* функция проверяет поля формы на заполненность, добавляет запись для защиты от спама, добавляет названия полей в POST
пример:
<form action="test.php" onsubmit="return checkFormEx(this)" method="post" validateMode="full" makeLabels="true">
<input name="n" title="Имя"  />
</form>
*/
function formChecker(form) {
	this._form = form;
	this._validateMode = form.getAttribute('validator')
	// добавляем проверку от спама
	this.appendInput(form, 'hidden', 'hookEx', 'true');
}

/* функция добавляет к концу форму элемент INPUT с заданными парпаметрами */
formChecker.prototype.appendInput = function(parent, type, name, value) {
	var element = document.createElement('INPUT');
	element.type = type;
	element.name = name;
	element.value = value;
	parent.appendChild(element);
}

formChecker.prototype.inputValidator = function(form, input){
	if (input.tagName == 'SELECT') return true;
	var mode = input.getAttribute('validator');
	if (mode == null) mode = this._validateMode;
	if (mode == 'none') return true;

	var label = input.title;
	if (!label) label = input.name;
	
	if (mode == 'full' && input.title != '' && input.value == '') {
		alert("Вы должны заполнить поле '" + label + "'.");
		//alert("Your must fill '" + label + "'.");
		input.focus();
		return false;
	}
	return true;
}

formChecker.prototype.isLabelExists = function (label_name){
	for (var ii = 0; ii < this._form.childNodes.length; ii++){
		var cc = this._form.childNodes[ii];
		if (!cc.tagName || cc.tagName != 'INPUT' && cc.tagName != 'TEXTAREA') continue;
		if (cc.name == label_name) return true;
	}
	return false;
}

formChecker.prototype.check = function(formItem) {
	for (var i = 0; i < formItem.childNodes.length; i++){
		var c = formItem.childNodes[i];
		if (c.tagName && (c.tagName == 'INPUT' || c.tagName == 'TEXTAREA' || c.tagName == 'SELECT')){
			if (!IsVisible(c)) continue;
			// валидатор полей в действии :)
			if (this.inputValidator(this._form, c) == false) return false;
			if (c.title > ''){
				var label_name = 'labels[' + c.name + ']';
				// ищем, есть ли label для этого поля? если label'а нет - добавляем его
				if (!this.isLabelExists(label_name)) this.appendInput(this._form, 'hidden', label_name, c.title);
			}
		} else {
			// обязательно делаем рекурсию для вложенных элементов
			if (this.check(c) == false) return false;
		}
	}
	return true;
}


function checkFormEx(form){
	var c = new formChecker(form);
	return c.check(form);
}


function showBlock(block_id){
	var block = document.getElementById(block_id);
	if (block.style.display == 'block'){
		block.style.display = 'none';
	} else {
		block.style.display = 'block';
	}
}

var currentcity = 0;
function showDistrictsFrom(city){
	if (city == 0){
		var i = document.getElementById('city').options.selectedIndex;
		city = document.getElementById('city').options[i].value;
	}
	var el = document.getElementById('district'+city);
	el.style.display = 'inline';
	if (currentcity > 0){
		document.getElementById('district'+currentcity).style.display = 'none';
	}
	currentcity = city;
}

function setHtml(block_id, html){
	var block = document.getElementById(block_id);
	block.innerHTML = html;
}


function checkField(name, label, fullText){
	if (name=='' || label=='') return true;
	var current = '';
	for(var i=0; i<document.getElementsByName(name).length; i++) {
		current = document.getElementsByName(name).item(i);
		if (current.tagName == 'input') break;
	}

	if (current == ''){
		alert("Error: can't find input - " + name);
		return false;
	}
	if (current.value == ''){
		current.focus();
		if (fullText) alert(label);
		else alert('Пожалуйста заполните поле "' + label + '"');
		return false;
	}
	return true;
}

function getE(elementId){
	return document.getElementById(elementId);
}

function checkForm(formName){
	if (formName == 'basket'){
		if (checkField('n', 'Имя')==false) return false;
		if (checkField('e', 'E-mail')==false) return false;
		if (checkField('c', 'Город')==false) return false;
		if (checkField('a', 'Адрес')==false) return false;
		if (checkField('p', 'Телефон')==false) return false;
		return true;
	} else alert('Error: function checkForm - wrong form name "' + formName + '"');

	return false;
}

function imgWin(img, s){
	var scr = '';
	if (s == '' || typeof(s) == 'undefined') {
		scr = '/misc/preview.htm';
	} else {
		scr = s + 'misc/preview.htm';;
	}

	var x = screen.width/2 - 400/2;
	var y = screen.height/2 - 300/2;
	var wn=window.open(scr+'?'+escape(img),'win','resizable,scrollbars,width=400,height=300,top='+y+',left='+x+',screenX='+x+',screenY='+y+',status=0');
	wn.focus();
	return false;
}

function imgWinFull(img, s){
	var scr = '';
	if (s == '' || typeof(s) == 'undefined') {
		scr = '/misc/preview_full.php?idnews=';
	} else {
		scr = s + 'misc/preview_full.php?idnews=';
	}

	var x = screen.width/2 - 400/2;
	var y = screen.height/2 - 300/2;
	var wn=window.open(scr+escape(img),'win','resizable,scrollbars,width=400,height=300,top='+y+',left='+x+',screenX='+x+',screenY='+y+',status=0');
	wn.focus();
	return false;
}

function imgWinPhp(img, s){
	var scr = '';
	if (s == '' || typeof(s) == 'undefined') {
		scr = '/misc/preview.php?idnews=';
	} else {
		scr = s + 'misc/preview.php?idnews=';
	}

	var x = screen.width/2 - 400/2;
	var y = screen.height/2 - 300/2;
	var wn=window.open(scr+escape(img),'win','resizable,scrollbars,width=400,height=300,top='+y+',left='+x+',screenX='+x+',screenY='+y+',status=0');
	wn.focus();
	return false;
}

function isInteger(val){
	if (!val) return false;
	var string="1234567890";

	for(var i=0; i<val.length; i++){
		if (string.indexOf( val.charAt(i) ) == -1) return false;
	}
	return true;
}





function clickImg(el){
	var element = document.getElementById('bigPicture');
	return imgWin(fullPictures[currentIndex]);
}




var currentIndex = 1;
function loadPicture(index){
	var element = document.getElementById('bigPicture');
	var previewElement = document.getElementById('preview_'+currentIndex);
	var previewNewElement = document.getElementById('preview_'+index);
	var url = bigPictures[index];
	var href = element.parentNode;

	if ( !url ) {
		url = '/images/skin/no_foto.png';
	}
	
	href.href = url;
	element.src = url;
	currentIndex = index;

	if ( !previewElement ) return;
	if ( !previewNewElement ) return;
	previewElement.className = 'i';
	previewNewElement.className = 'i selected';
}

function setColor(){
	var c = document.getElementsByName('color')[0];
	var f = document.getElementsByName('smena1')[0];
	var s = document.getElementById('style');
	s.style.color = c.value;
	s.style.fontFamily = f.value;
	//alert(f.value);
}


function toSend(s){
	if (s.options.selectedIndex == 0) {
		document.getElementById('s2').style.display = 'block';
		document.getElementById('s3').style.display = 'block';
	} else {
		document.getElementById('s2').style.display='none';
		if (s.options.selectedIndex == 3) document.getElementById('s3').style.display='none';
		else document.getElementById('s3').style.display='block';
	}
}


function IsVisible(i){
	if (i.style){
		if (i.style.display == 'none') return false;
	}
	if (!i.parentNode) return true;
	return IsVisible(i.parentNode);
}


function isEmail(string) {
	return (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1);
}

var step = 1;
function nextStep(){
	if (step > 2) return;
	var e = document.getElementsByName('header')[0];
	
	if (step == 1 && !isEmail(e.value)){
		alert( 'Не верный формат e-mail, попробуйте ещё раз' );
		e.focus(0);
		return false;
	}

	if ((step == 1) && (!document.getElementsByName('isChild')[0].checked && !document.getElementsByName('teacher')[0].checked) ){
		alert( 'Вы должны указать, кем вы были в «Океане»: ребенком или вожатым.' );
		return false;
	}
	
	if (!checkFormEx(ge('regForm'))) return;

	var s = ge('step'+step);
	if (s) s.style.display = 'none';

	s = ge('step'+(step+1));
	if (s) s.style.display = 'block';
	step = step + 1;

	s = ge('steps');
	var p = s;
	
	if (step == 2) s.innerHTML = 'Шаг 1 <span>&rarr;</span> <span class="s">Шаг 2</span> <span>&rarr;</span> Шаг 3';
	if (step == 3) {
		s.innerHTML = 'Шаг 1 <span>&rarr;</span> Шаг 2 <span>&rarr;</span> <span class="s">Шаг 3</span>';

		s = ge('postNext');
		if (s) s.style.display = 'none';

		s = ge('postReg');
		if (s) s.style.display = 'block';
	}
}

var stepsOneSmen = false;
var stepsSmenCount = 1;
function stepsOneMoreSmen(){
	if (stepsSmenCount >= 11) alert('Вы не можете добавить добльше десяти смен');
	var c = ge('childOptions');
	if (!stepsOneSmen) stepsOneSmen = c.innerHTML;
	c.innerHTML += stepsOneSmen;
	stepsSmenCount += 1;
}

function toggle(mc){
	if (mc.style.display == 'none') mc.style.display = 'block';
	else mc.style.display = 'none';
}

function openMenu(id){
	var mc = ge('mc'+id);
	if (mc) toggle(mc);
	else return true;
	return false;
}
