if (!window.Atalan)
    var Atalan = new Object();

Atalan.DOB = Class.create();
Atalan.DOB.prototype = {
    initialize: function(selector, required, format) {
        var el        = $$(selector)[0];
        this.day      = Element.select($(el), '.dob-day')[0];
        this.month    = Element.select($(el), '.dob-month')[0];
        this.year     = Element.select($(el), '.dob-year')[0];
        this.dob      = Element.select($(el), '.dob-full')[0];
        this.advice   = Element.select($(el), '.validation-advice')[0];
        this.required = required;
        this.format   = format;

        this.year.validate = this.validate.bind(this);
        //this.day.validate = this.validate.bind(this);
        //this.year.validate = this.validate.bind(this);

        this.advice.hide();
    },

    validate: function() {
        var error = false;

        if (this.day.value=='' && this.month.value=='' && this.year.value=='') {
            if (this.required) {
                error = 'Это поле обязательно для заполнения.';
            } else {
                this.dob.value = '';
            }
        } else if (this.day.value=='' || this.month.value=='' || this.year.value=='') {
            error = 'Пожалуйста, введите полную дату рождения.';
        } else {
            var date = new Date();
            if (this.day.value<1 || this.day.value>31) {
                error = 'Пожалуйтса, введите правильный день (1-31).';
            } else if (this.month.value<1 || this.month.value>12) {
                error = 'Пожалуйтса, введите правильный месяц (1-12).';
            } else if (this.year.value<1900 || this.year.value>date.getFullYear()) {
                error = 'Пожалуйтса, введите правильный год ('+(date.getFullYear()-110)+'-'+(date.getFullYear()-18)+').';
            } else {
                this.dob.value = this.format.replace(/(%m|%b)/i, this.month.value).replace(/(%d|%e)/i, this.day.value).replace(/%y/i, this.year.value);
                var testDOB = this.month.value + '/' + this.day.value + '/'+ this.year.value;
                var test = new Date(testDOB);
                if (isNaN(test)) {
                    error = 'Пожалуйста, введите правильную дату рождения.';
                }
            }
        }
        if (error !== false) {
            try {
                this.advice.innerHTML = Translator.translate(error);
            }
            catch (e) {
                this.advice.innerHTML = error;
            }
            this.advice.show();
			this.day.addClassName('validation-failed');
			this.month.addClassName('validation-failed');
            return false;
        }

		this.day.removeClassName('validation-failed');
		this.month.removeClassName('validation-failed');
        this.advice.hide();
        return true;
    }
}

Atalan.Phone = Class.create();
Atalan.Phone.prototype = {
    initialize: function(selector, required) {
        var el        = $$(selector)[0];
        this.field1   = Element.select($(el), '.field1')[0];
        this.field2   = Element.select($(el), '.field2')[0];
        this.field3   = Element.select($(el), '.field3')[0];
        this.field4   = Element.select($(el), '.field4')[0];
        this.phone    = Element.select($(el), '.phonefull')[0];
        this.advice   = Element.select($(el), '.validation-advice')[0];

		this.required = (selector == '.customer-workphone');
        this.field4.validate = this.validate.bind(this);
        //this.field2.validate = this.validate.bind(this);
        //this.field3.validate = this.validate.bind(this);
        //this.field4.validate = this.validate.bind(this);

        this.advice.hide();
    },

    validate: function() {
        var error = false;
        if (this.field1.value=='' && this.field2.value=='' && this.field3.value=='' && this.field4.value=='') {
        	this.phone.value = '';
        } else if (this.field1.value.length == 3 && this.field2.value.length == 3 && this.field3.value.length == 2 && this.field4.value.length == 2) {
        	this.phone.value = this.field1.value + this.field2.value + this.field3.value + this.field4.value;
        } else {
            error = 'Пожалуйста, введите правильный номер телефона.';
        }
		if (this.required){
			adviceValidation = $$('.customer-mobilephone .validation-advice')[0];
			if (this.phone.value == "" &&  $$('.customer-homephone .phonefull')[0].value == "" && $$('.customer-mobilephone .phonefull')[0].value == "")
			{
				errorValidation = 'Пожалуйста, введите номер телефона.';
	            try {
	                adviceValidation.innerHTML = Translator.translate(errorValidation);
	            }
	            catch (e) {
	                adviceValidation.innerHTML = errorValidation;
	            }
	            adviceValidation.show();
            	return false;
			}
			else{
				adviceValidation.hide();
			}
		}
        if (error !== false) {
            try {
                this.advice.innerHTML = Translator.translate(error);
            }
            catch (e) {
                this.advice.innerHTML = error;
            }
            this.advice.show();
			this.field1.addClassName('validation-failed');
			this.field2.addClassName('validation-failed');
			this.field3.addClassName('validation-failed');
            return false;
        }
		this.field1.removeClassName('validation-failed');
		this.field2.removeClassName('validation-failed');
		this.field3.removeClassName('validation-failed');
 
        this.advice.hide();
        return true;
    }
}

Validation.addAllThese([
    ['validate-custom', ' ', function(v,elm) {
        return elm.validate();
    }]
]);

function truncateOptions() {
    $$('.truncated').each(function(element){
        Event.observe(element, 'mouseover', function(){
            if (element.down('div.truncated_full_value')) {
                element.down('div.truncated_full_value').addClassName('show')
            }
        });
        Event.observe(element, 'mouseout', function(){
            if (element.down('div.truncated_full_value')) {
                element.down('div.truncated_full_value').removeClassName('show')
            }
        });
    });
}
Event.observe(window, 'load', function(){
   truncateOptions();
});

