// FieldValidator
// Author:    WWW-Design STUDIO
// Updated:   2006-02-14

// Поддерживается работа с элементами: INPUT/TEXT | INPUT/PASSWORD | INPUT/CHECKBOX | INPUT/FILE | SELECT | TEXTAREA

/*
 * Constructor
 */

function FieldValidator(
        sName,                                // name поля
        sMode,                                // режим проверки поля
        pAfterValidation,        // указатель на функцию, вызываемую после проверки
        pBeforeValidation,        // указатель на функцию, вызываемую до проверки
        sRegExp                                // регулярное выражение для режима RegExp
)
{
        var oSelf = this

        // Если ни одного элемента с заданным именем не найдено, throw exception
        var aNodes = document.getElementsByName(sName)
        if( aNodes.length == 0 ) throw 1
        this.oFieldNode = aNodes.item(0)

        // Если у элемента нет формы, throw exception
        if( !this.oFieldNode.form ) throw 2

        // Режим проверки
        this.sMode = sMode ? sMode : 'RequiredField'

        // Регулярное выражение для режима проверки RegExp
        if( sRegExp ) this.oRegExp = new RegExp( sRegExp )

        // Обработчик формы
        this.SetupEvent( this.oFieldNode.form, 'submit', function(e){ return oSelf.Validator(e) } )

        // Статус "правильности поля"
        this.bValidated = false

        // Функция, вызываемая перед проверкой
        this.BeforeValidation = pBeforeValidation ? pBeforeValidation : function() {}

        // Функция, вызываемая после проверки
        this.AfterValidation = pAfterValidation ? pAfterValidation : this.AfterValidationDefault

        return this
}

// Проверка поля в режиме RequiredField. e -- событие submit.
FieldValidator.prototype.Validator = function(e)
{
        this.BeforeValidation()

        // Проверим правильным валидатором в зависимости от режима проверки
        switch( this.sMode )
        {
                case 'RequiredField' : this.bValidated = this.RequiredFieldValidator(); break;
                case 'RegExp'        : this.bValidated = this.RegExpValidator();        break;
                case 'Email'         : this.bValidated = this.EmailValidator();         break;
                case 'Int'           : this.bValidated = this.IntValidator();           break;
                case 'Float'         : this.bValidated = this.FloatValidator();         break;
                default              : this.bValidated = false
        }

        // Придушить событие submit у формы если поля не заполнены...
        if( !this.bValidated ) this.KillEvent(e)

        this.AfterValidation()
}

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Валидаторы
 */

// RequiredField
FieldValidator.prototype.RequiredFieldValidator = function()
{
        return (
                ( this.oFieldNode.type != 'checkbox' && this.oFieldNode.value != '' ) ||
                ( this.oFieldNode.type == 'checkbox' && this.oFieldNode.checked )
        )
}

// RegExp
FieldValidator.prototype.RegExpValidator = function()
{
        return ( this.oFieldNode.type != 'checkbox' && this.oRegExp.test( this.oFieldNode.value ) )
}

// Email
FieldValidator.prototype.EmailValidator = function()
{
        var sEmail = this.oFieldNode.value.replace( new RegExp('/\(.*?\)/'), '' )
        var oRegExp = /^[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*@[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*\.[a-zA-Z]{2,4}$/
        return oRegExp.test(sEmail)
}

// Int
FieldValidator.prototype.IntValidator = function()
{
        return ( parseInt(this.oFieldNode.value) == this.oFieldNode.value )
}

// Float
FieldValidator.prototype.FloatValidator = function()
{
        return ( parseFloat(this.oFieldNode.value) == this.oFieldNode.value )
}

/*
 * Валидаторы
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

// Функция AfterValidation по умолчанию
FieldValidator.prototype.AfterValidationDefault = function()
{
        if( !this.bValidated )
        {
                alert(
                        'ВНИМАНИЕ!\n' +
                        'Одно из полей формы заполнено неверно!\n\n' +
                        '---\n' +
                        'Field ' + this.oFieldNode.name + ' has validated as ' + this.sMode
                )
        }
}

// Приделываем обработчик события
FieldValidator.prototype.SetupEvent = function( oElement, sEventType, pHandler )
{
        if( oElement.attachEvent ) oElement.attachEvent('on' + sEventType, pHandler)
        if( oElement.addEventListener ) oElement.addEventListener(sEventType, pHandler, false)
}


// Замочить текущее событие
FieldValidator.prototype.KillEvent = function(e)
{
        var oEvent = e ? e : window.event
        if( oEvent.preventDefault )
        {
                oEvent.preventDefault()
        }
        else
        {
                oEvent.returnValue = false
        }
}



function next_an(){
    if (current_an < (total_an-1)) {
        current_div_id = 'an'+current_an;
        next_div_id = 'an'+(current_an + 1);

        div=document.getElementById(current_div_id);
        remove_class(div, 'show');
        add_class(div, 'hide');

        div=document.getElementById(next_div_id);
        remove_class(div, 'hide');
        add_class(div, 'show');

        current_an++;
    }
}

function prev_an() {
    if (current_an > 0) {
        current_div_id = 'an' + current_an;
        next_div_id = 'an' + (current_an - 1);

        div=document.getElementById(current_div_id);
        remove_class(div, 'show');
        add_class(div, 'hide');

        div=document.getElementById(next_div_id);
        remove_class(div, 'hide');
        add_class(div, 'show');

        current_an--;
    }
}

function add_class(e,c) {
  e.className=e.className+" "+c;
}

function remove_class(e,c) {
  cn=e.className;
  p=cn.indexOf(c);
  if (p>-1){e.className=cn.substr(0,p)+cn.substr(p+c.length);  }
}

function preview_image(img_src) {
    pic = new Image();
    pic.src = img_src;
    setTimeout('view_image(pic.src, pic.width, pic.height);', 500);
}

function view_image(img_src, img_width, img_height){
    win_top  = Math.abs(screen.availHeight/4);
    win_left = Math.abs(screen.availWidth/4);
    win_top  = 70;
    win_left = 70;
    if (img_width>screen.availWidth-150 || img_width==0) {
        win_width = screen.availWidth-150;
    } else {
        win_width = img_width+20;
    }
    if (img_height>screen.availHeight-150 || img_height==0) {
        win_height = screen.availHeight-150;
    } else {
        win_height = img_height+20;
    }
    photoWindow = window.open('', '', "resizable=yes,top=" + win_top + ',left=' + win_left + ",width="+win_width+',height='+win_height+",status=0,menubar=0,toolbar=0,scrollbars=yes");
    photoWindow.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>');
    photoWindow.document.write('<head><title>'+img_src+'</title><style type="text/css"><!-- body {margin:0;padding:0} --></style>');
    photoWindow.document.write('<scr'+'ipt type=text/javascript>');
    photoWindow.document.write('document.onkeypress = function CloseOnEsc(key) { if(document.all) { var keyCode = window.event.keyCode; } else { if (key.which == 0) {window.close();return;}   }  if (keyCode == 27) {window.close();return;} }');
    photoWindow.document.write('');
    photoWindow.document.write('</scr'+'ipt>');
    photoWindow.document.write('</head><body><img src="'+img_src+'" ');
    if ( (img_width>1) && (img_height>1) ) {
        photoWindow.document.write('width="'+img_width+'" height="'+img_height+'"');
    }
    photoWindow.document.write(' border=0>');
    photoWindow.document.write('</body></html>');
    photoWindow.document.bgColor="#f0f0f0";
    photoWindow.document.close()
}


var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
var DOM = (document.getElementById) ? 1 : 0;

function NSdMenu(mnum)
{
        var menuname = "Menu"+mnum;
        if (NS4) {
                document.layers[menuname].visibility = "show";
        }
}

function dMenu(mnum, m)
{
        var menuname = "Menu"+mnum;
        var bottomname = "Bottom"+mnum;

        if (m=="over") {
                if (NS4) {
                        document.layers[menuname].visibility = "show";
                } else if(DOM) {
                        document.getElementById(menuname).style.visibility = "visible";
                } else {
                        document.all[menuname].style.visibility = "visible";
                }

        } else if (m=="out") {
                if (NS4) {
                        document.layers[menuname].visibility = "hide";
                } else if(DOM) {
                        document.getElementById(menuname).style.visibility = "hidden";
                } else {
                        document.all[menuname].style.visibility = "hidden";
                }
        }
}

















// Date
// Author:    WWW-Design STUDIO
// Updated:   2009-09-04
function GetDay(nDay) {
        var Days = new Array("Воскресенье","Понедельник","Вторник","Среда",
                             "Четверг","Пятница","Суббота");
        return Days[nDay]
}

function GetMonth(nMonth) {
        var Months = new Array("Январь","Февраль","Март","Апрель","Май","Июнь",
                               "Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
        return Months[nMonth]
}

function DateString() {
        verStr = navigator.appVersion
        app = navigator.appName
        version = parseFloat(verStr);
        myPlatform = navigator.platform
        addxto = 0
        if (app.indexOf('Opera') != -1 && myPlatform != "MacPPC")
                addxto = 1900
        var Today = new Date();
        var suffix = "";//th
        switch (Today.getDate())
        {
                case 1:
                case 21:
                case 31:
                        suffix = ""; break;//st
                case 2:
                case 22:
                        suffix = ""; break;//nd
                case 3:
                case 23:
                        suffix = ""; break;//rd
        };
         var strDate =/*GetDay(Today.getDay()) + ", " + */GetMonth(Today.getMonth()) +  " "  + Today.getDate(); strDate +=suffix +"-е, " + GetDay(Today.getDay()) +  ", " + ((Today.getYear())+addxto) +  "г.";
         return strDate
}

//ex. document.write(DateString()+ "")




function my_date()
	{
	var d=document
	var NN=d.layers?true:(window.opera&&!d.createComment)?true:false
	var now = new Date();
	var hours = now.getHours();
	var minutes = now.getMinutes();
	var seconds = now.getSeconds();
	var timeValue = hours
	var browser_name = navigator.appName;
	var delimeter= (seconds % 2 ==0) ? ':' : '<span style="visibility:hidden">:</span>';
	timeValue += ((minutes < 10) ? delimeter+"0" : delimeter+"") + minutes
	
	timerRunning = true;
	
	
	mydate = new Date();
	myday = mydate.getDay();
	mymonth = mydate.getMonth();
	myweekday= mydate.getDate();
	weekday= myweekday;
	myyear= mydate.getFullYear();
	
	if (browser_name == "Microsoft Internet Explorer" )
	year = myyear;
	else if (browser_name == "Netscape" || "Opera")
	year = myyear;
	
	
	if(myday == 0)
	day = " воскресенье, "
	
	else if(myday == 1)
	day = " понедельник, "
	
	else if(myday == 2)
	day = " вторник, "
	
	else if(myday == 3)
	day = " среда, "
	
	else if(myday == 4)
	day = " четверг, "
	
	else if(myday == 5)
	day = " пятница, "
	
	else if(myday == 6)
	day = " суббота, "
	
	if(mymonth == 0)
	month = "января"
	
	else if(mymonth ==1)
	month = "февраля"
	
	else if(mymonth ==2)
	month = "марта"
	
	else if(mymonth ==3)
	month = "апреля"
	
	else if(mymonth ==4)
	month = "мая"
	
	else if(mymonth ==5)
	month = "июня"
	
	else if(mymonth ==6)
	month = "июля"
	
	else if(mymonth ==7)
	month = "августа"
	
	else if(mymonth ==8)
	month = "сентября"
	
	else if(mymonth ==9)
	month = "октября"
	
	else if(mymonth ==10)
	month = "ноября"
	
	else if(mymonth ==11)
	month = "декабря"
	
	var tmp=day+myweekday+" " + month+"," + " " + year +" г. "+ timeValue;
	
	
	d.getElementById('tm').innerHTML=tmp 
	var t=setTimeout('my_date()',500);
	
	
	}


