var site_root = '/';
var langFE = 'Вы должны заполнить поле';








/// OLD --------------
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v=='hide')?'none':v; }
    obj.display=v; }
}


function myclock(){
	var hours;
	var mins;
	var time;
	var clockexam = document.getElementById('clockexam');
	ndata = new Date();
	monts = (ndata.getMonth() + 1)
	days = (ndata.getDate() )
	hours = ndata.getHours();
	mins = ndata.getMinutes();
	secs = ndata.getSeconds();
	if (monts < 10) {monts = "0" + monts }
	if (days < 10) {days = "0" + days }
	if (hours < 10) {hours = "0" + hours }
	if (mins < 10) {mins = "0" + mins }
	if (secs < 10) {secs = "0" + secs }
	datastr = hours + ":" + mins + ":"+secs
	clockexam.innerText = customDateString()+' '+datastr;
	setTimeout("myclock()",1000);
}




function MakeArray(n) {
	this.length = n
	return this
}
monthNames = new MakeArray(12)
monthNames[1] = "января"
monthNames[2] = "February"
monthNames[3] = "March"
monthNames[4] = "April"
monthNames[5] = "May"
monthNames[6] = "June"
monthNames[7] = "July"
monthNames[8] = "августа"
monthNames[9] = "сентября"
monthNames[10] = "October"
monthNames[11] = "November"
monthNames[12] = "December"
dayNames = new MakeArray(7)
dayNames[1] = "воскресенье"
dayNames[2] = "понедельник"
dayNames[3] = "вторник"
dayNames[4] = "среда"
dayNames[5] = "четверг"
dayNames[6] = "пятница"
dayNames[7] = "суббота"

function customDateString() {
	currentDate = new Date()
	var theDay = dayNames[currentDate.getDay() + 1]
	var theMonth = monthNames[currentDate.getMonth() + 1]
	msie4 = ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4 ));
	if (msie4) {
	    var theYear = currentDate.getYear()
	}
	else {
	     var theYear = currentDate.getYear() +1900
	}
	//return theDay + ", " + theMonth + " " + currentDate.getDate() + ", " + theYear
	return currentDate.getDate() +" "+theMonth+", "+theDay
}


/// /OLD ----------------



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


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 == null) mode = form.validateMode;
	if (mode == 'none') return true;
	
	var label = input.title;
	if (!label) label = input.name;
	
	if (mode == 'full' && label != '' && input.value == '') {
		alert(langFE+" '" + 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) {
	//alert(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 (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';
	}
	return false;

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

function imgWin2(id, idx){
	scr = site_root + 'misc/preview.php';

	var x = screen.width/2 - 400/2;
	var y = screen.height/2 - 300/2;
	var wn=window.open(scr+'?id='+id+'&idx='+idx,'win','resizable,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';
}




/*
if (flashVersion >= 8) {
	var f = new Flash('trees');
	f.setSWF('misc/trees.swf', '660px', '305px');
	f.setParam('flashVars', 'dataXml=misc/trees.xml');
	f.setParam('wmode', 'transparent');
	f.setParam('quality', 'high');
	f.inHtml('<div id="treesContainer">|||</div>');
	f.display();
}
*/

var flashVersion = 0;
var isOpera = Boolean(window["opera"]);
var isIE = (navigator.userAgent.indexOf("MSIE") != -1) && !isOpera;

function Flash(name) {
	this._swf = '';
	this._params = new Array();
	this._attributes = new Array();
	this._spliter = '|||';
	this._htmlBefore = '';
	this._htmlAfter = '';
	if (name){
		if (isIE) this.setAttribute('id', name);
		else this.setAttribute('name', name);
	}
}

Flash.prototype.setSWF = function (_swf, _width, _height){
	this._swf = _swf;
	this.setAttribute('width', _width);
	this.setAttribute('height', _height);
}

Flash.prototype.setParam = function (paramName, paramValue){
	this._params[this._params.length] = paramName+this._spliter+paramValue;
}

Flash.prototype.setAttribute = function (attributeName, attributeValue){
	this._attributes[this._attributes.length] = attributeName+this._spliter+attributeValue;
}

Flash.prototype.getAttributeFromArray = function(arr){
	var attributes = '';
	var attribute = '';
	for (var i=0;i<arr.length;i++ ) {
		attribute = arr[i].split(this._spliter);
		attributes += attribute[0] + '="' + attribute[1] + '" ';
	}
	return attributes;
}

/* указывает html обвертку для flash */
Flash.prototype.inHtml = function(html){
	var parts = html.split(this._spliter);
	this._htmlBefore = parts[0];
	this._htmlAfter = parts[1];
}

Flash.prototype.display = function(alertTxt) {
	var attributes = this.getAttributeFromArray(this._attributes);
	var params = this.getAttributeFromArray(this._params);

	var _txt = this._htmlBefore;
	_txt += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '+attributes+'>\n';
	_txt += '<param name="movie" value="'+this._swf+'" />\n'
	_txt += '<param name="quality" value="high" />\n';
	_txt += '<param name="menu" value="false" />\n';

	var _param = '';
	var i = 0;
	for (var i=0;i<this._params.length;i++ ) {
		_param = this._params[i].split ('|||');
		_txt += '\t<param name="'+_param[0]+'" value="'+_param[1]+'" />\n';
	}

	_txt += '<embed menu="false" '+attributes+' src="'+this._swf+'" '+params+' quality="high" type="application/x-shockwave-flash"></embed>\n';
	_txt += '</object>\n';
	_txt += this._htmlAfter;
	if (alertTxt) alert(_txt);
	document.write(_txt);
}

function getSWF(name){
	if (isOpera) return document[name];
	return isIE ? window[name] : document[name][1];
}

/* GetFlashVersion - must be last function in file */
function GetFlashVersion() {
	try {
		var ie=0;
		var fz=0;
		var n=navigator;
		
		if (n.platform=='Win32' && !window.opera && n.appName!='Netscape') {
			ie=1;
			for (var i=3;i<10;i++) {
				if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) flashVersion = i;
			}
		}
		
		if (ie==0 && n.plugins) {
			for (var i=0;i<n.plugins.length;i++) {
				if (n.plugins[i].name.indexOf('Flash')> -1) {
					fz = parseInt(n.plugins[i].description.charAt(16));
					if (fz > flashVersion) flashVersion = fz;
				}
			}
		}
	} catch(e) {}
}
GetFlashVersion();





























var last_shown_block = null;

function show_hide_block(eList){
	eList.className = eList.className ? "" : "active";
	var eTR = eList;
	while(eTR.nodeName != "TR"){
		eTR = eTR.parentNode
	}
	var cell_0 = cell(eTR,0);
	var cell_1 = cell(eTR,1);
	var cell_2 = cell(eTR,2);

	cell_0.className = cell_0.className ? "" : "l";
	cell_0.style.backgroundPosition = cell_0.className ? eList.offsetWidth+5+"px 0.9em" : "";
	cell_1.className = cell_1.className ? "" : "l";

	var eUL = cell_2;
	while(eUL.nodeName != "UL"){
		if (!eUL.firstChild) return;
		eUL = eUL.firstChild.nodeName!="#text" ? eUL.firstChild : eUL.childNodes[1]
	}
	eUL.className = eUL.className ? "" : "active";

	if(last_shown_block && last_shown_block !== eList) show_hide_block(last_shown_block)
	last_shown_block = last_shown_block ? null : eList;

}


function cell(row,celnum) {
	var i = 0;
	for (var cell = row.firstChild; cell != null; cell = cell.nextSibling)
        	if (cell.nodeType == 1){
			if (celnum == i) return cell;
			i++;
		}
}
