﻿var Site = {
    start: function(){
        ReMooz.assign('.remooz-img a', { origin:'img'});
        if($('editparameters')) EditParam.start();
        if($('Image_repeater')) ImageRepeater.start();
        if($$('form[class^=Validator]')) UniversalValidator.start();
        if($('DeliveryMethod')) DeliveryMethod.start();
        if($('modeselectform')) ModeSelector.start();
        if($('oldorders')) FotoCopy.start();
    } 
};
var ModeSelector = {
    start: function(){
        ModeSelector.Sel = $('mode');
        ModeSelector.MForm = $('modeselectform');
        ModeSelector.parse();
    },
    parse: function(){
        ModeSelector.Sel.addEvent('change', function(){
            ModeSelector.MForm.submit();
        });
    }
}
var FotoCopy = {
    start: function(){
        FotoCopy.Sel = $$('a[class=copier]');
        FotoCopy.OrderSel = $$('select[class=newonlineorders]');
        FotoCopy.Url = '/FotoCopy.ashx';
        FotoCopy.Variants;
        FotoCopy.parse();
    },
    parse: function(){
        FotoCopy.OrderSel.each(function(el){
            el.addEvent('change', function(e){
                var opt = 'select[name='+el.name+'] option';
                FotoCopy.Variants = $$(opt);
                for(var i=0;i<FotoCopy.Variants.length;i++){
                    if(FotoCopy.Variants[i].selected){
                        var id = el.name + '_order';
                        $(id).value = FotoCopy.Variants[i].value;
                    }
                }
            });
        });
        FotoCopy.Sel.each(function(y){
            y.addEvent('click', function(){
                var id = y.rev + '_order';
                var val = $(id).value;
                if(val != '0') {
                    var log = $('log').empty().addClass('ajax-loading');
                    var options = new Hash();
                    options.set('oo',val);
                    options.set('pp',y.rev);
                    new Request.HTML({
                        url:FotoCopy.Url,
                        method: 'post',
                        update: log,
                        data: options, 
                        onComplete:function(){
		                    log.setStyle('display', 'block');
		                    log.removeClass('ajax-loading');
		                }}).send();
                }    
            });
        });
    }
}
var UniversalValidator = {
    start: function(){
        UniversalValidator.edits = $$('form[class^=Validator] input[class=inpxp]')
        UniversalValidator.errorbool = true;
        UniversalValidator.errtext = "";
        UniversalValidator.forms = $$('form[class^=Validator]');
        UniversalValidator.lab = $$('form label');
        UniversalValidator.parse();
    },
    valid: function(el, err, txt){
        var color = '#fff';
        if(err == false) {
            color = '#f88';
            UniversalValidator.errorbool = false;
            UniversalValidator.errtext += txt;
        }
        new Fx.Tween(el, {duration: '1000'}).set('background-color', color);
    },
    counchecker: function(el){
        if($(el.name + '_Count')){
            var countEl = $(el.name + '_Count');
            if(countEl.value.toInt()>el.value.length){
                var otv = "";
                if(el.title != ""){otv = counttxt.replace('%%fieldname%%', el.title).replace('%%fieldcount%%',countEl.value);}
                    UniversalValidator.valid(el, false, otv);
            }else{UniversalValidator.valid(el, true);}
        }
    },
    parse: function(){
        UniversalValidator.forms.each(function(li){
            li.addEvent('submit', function(e){
			    UniversalValidator.errorbool = true;
			    UniversalValidator.errtext = "";
			    var pass, passR, passV = false, passRV = false, errorcontainer;
			    var w = li.id + 'Error';
			    if($(w)){
			        errorcontainer = $(w);
			        errorcontainer.empty().setStyles({'display':'none'});
			    }
			    new Event(e).stop();
			    var FormElements = $$('#'+ this.getProperty('id') + ' [id^=valid]');
			    FormElements.each(function(el){
		            if(el.id.test(/^validString/i)) {
		                if(el.value == ""){
		                    var otv = "";
		                    if(el.title!=""){otv = zapolnite.replace('%%field%%',el.title);}
		                    UniversalValidator.valid(el, false, otv);
		                }
		                else{
		                    UniversalValidator.valid(el, true, "");
		                    UniversalValidator.counchecker(el);
		                }
		            }
		            else if(el.id.test(/^validNum/i)){
		                if(el.value.search( /^[(\-\)\d]+$/) == -1){
		                    var otv = "";
		                    if(el.title!=""){otv = zapolnite.replace('%%field%%',el.title);}
		                    UniversalValidator.valid(el, false, otv);
		                }
		                else
		                    UniversalValidator.valid(el, true, "");
		            }
		            else if(el.id.test(/^validEmail/i)){
		                if(el.value.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) == -1){
		                    var otv = "";
		                    if(el.title!=""){otv = zapolnite.replace('%%field%%',el.title);}
		                    UniversalValidator.valid(el, false, otv);
		                }
		                else
		                    UniversalValidator.valid(el, true, "");
		            }
		            else if(el.id.test(/^validPass/i))
		            {
		                pass = el.id; 
		                //alert(el.value.search(/\W/g));
		                if(el.value != "" && el.value.search(/\W/g) == -1){
		                    UniversalValidator.valid(el, true, "");
		                    UniversalValidator.counchecker(el);
		                    passV = true;
		                }
		                else
		                {
		                    var otv = "";
		                    if(el.title!=""){otv = zapolnite.replace('%%field%%',el.title);}
		                    UniversalValidator.valid(el, false, otv);
		                }
		                 
		                
		            }
		            else if(el.id.test(/^validRPass/i)){
		                passR = el.id;
		               
		                if(el.value != "" && el.value.search(/\W/g) == -1){
		                    UniversalValidator.valid(el, true, "");
		                    UniversalValidator.counchecker(el);
		                    passRV = true;
		                }else{
		                    var otv = "";
		                    if(el.title!=""){otv = zapolnite.replace('%%field%%',el.title);}
		                    UniversalValidator.valid(el, false, otv);
		                } 
		            }
			    });
			    if($(pass) && $(passR) && passV == passRV)
			    {
			        if($(pass).value!=$(passR).value || $(pass).value == "" || $(passR).value == "" || $(pass).value.search(/\W/g) != -1 ||$(passR).value.search(/\W/g) != -1){
			            var otv = "";
			            if($(pass).title!="" && $(passR).title!=""){otv = allPassDont.replace('%%onepass%%',$(pass).title).replace('%%twopass%%',$(passR).title);}
			            UniversalValidator.valid($(pass), false, "");
			            UniversalValidator.valid($(passR), false, otv);
			        }
			        else{
			            UniversalValidator.valid($(pass), true, "");
			            UniversalValidator.valid($(passR), true, "");
			        }
			    }
			    if(UniversalValidator.errorbool == true){this.submit();}
			    else{
			        if($(w)){
			            errorcontainer.set('html', UniversalValidator.errtext);
			            errorcontainer.setStyles({'display':'block'});
			        }
			    }
			});
		});
    }
}
var DeliveryMethod = {
    start: function()
    {
        this.Variants = $$('#DeliveryMethod option');
        this.MethBlock = $$('div[class=variants]');
        this.DeliverySel = $('DeliveryMethod');
        this.Submitter = $('submitDiv');
        this.parse();
    },
    parse: function()
    {
        DeliveryMethod.DeliverySel.addEvent('change', function(e)
        {
            var idDel;
            for(var i=0;i<DeliveryMethod.Variants.length;i++){if(DeliveryMethod.Variants[i].selected){idDel = DeliveryMethod.Variants[i].value;}}
            for(var i=0;i<DeliveryMethod.MethBlock.length;i++){
                if(DeliveryMethod.MethBlock[i].hasClass('active')){DeliveryMethod.MethBlock[i].removeClass('active');}
                if(DeliveryMethod.MethBlock[i].id==idDel){DeliveryMethod.MethBlock[i].addClass('active');}
            }
            if(idDel=='0'){DeliveryMethod.Submitter.setStyle('display', 'none'); }
            else{DeliveryMethod.Submitter.setStyle('display', 'block');}
        });
    }
}

var EditParam = {
    start: function(){
        EditParam.sender = $('all_sender');
        EditParam.AllForm = $('all_properties_form');
        EditParam.AllCount = $('all_count');
        EditParam.OrderId = $('orderid').value;
        EditParam.fullparam = $$('#fullparameter select[name=quality]');
        EditParam.full = $('fullparameterinput');
        EditParam.Url = '/EditOrders.ashx';
        EditParam.deleter = $$('#editparameters div.del input[type=checkbox]');
        EditParam.Cat = $$('#editparameters div[class=category] select[name=quality]');
        EditParam.counters = $$('#editparameters input[name=count]')
        EditParam.parse();
    },
    updatecat: function(){EditParam.Cat = $$('#editparameters div[class=category] select');},
    saveparam: function(li, update, li_value){
        var r = function(el){
	        if(el != null){   
	            if(el.getParent()){
	                var par = el.getParent()
	                if(par.hasClass('sendform')) { return par; }
	                else{return r(par);}
	            }else{return null;}
	        }else {return null; }
	    }
	    var log = $('log_res');
	    if(update){log.empty().addClass('ajax-loading');}
	    var options = new Hash();
	    options.set(li.name.toString(),li_value.toString());
	    options.set('orderid',EditParam.OrderId)
	    if(update){options.set('update','true');}else{options.set('update','false');}
	    var elll = r(li);
	    if(elll != null){
	        var photoidz;
	        var elllformEl = $$('#'+elll.getProperty('id') + ' [id^=subm_]')
	        elllformEl.each(function(elem){
                if(elem.name == "photoid"){
                    options.set(elem.name.toString(), elem.value.toString());
                    photoidz = elem.getProperty('value');
                }
	        });
	        var p =  photoidz;
	        photoidz +='_category';
	        var category = $(photoidz);
	        if(li.name == 'quality'){       
	                category.empty();
                    new Request.HTML({
                        url: '/CategorySelector.ashx',
                        method: 'post',
                        update: category,
                        data: {'quality':li_value, 'photoid':p},
                        onComplete: function(){
                            EditParam.Cat = $$('#editparameters div[class=category] select[name=quality]');
                            EditParam.parse();
                        }}).send();
	        }
	        if(update){
	            new Request.HTML({
	                url:EditParam.Url,
                    method: 'post',
                    update: log,
                    data: options,
                    onComplete:function(){log.removeClass('ajax-loading');}
	            }).send();
	        }
	        else{
	            new Request.HTML({
	                url:EditParam.Url,
                    method: 'post',
                    data: options
	            }).send();
	        }
	    }
    },
    parse: function()
    {
        var all_w = '1';
        EditParam.AllCount.addEvents({
            'focus': function() {all_w = this.value;},
            'keyup': function() {
	            if(this.value.test(/^-?\d{1,3}(,?\d{3})*(\.00)?$/)){all_w = this.value;}
	            else if(this.value == ''){}
	            else {this.value = all_w;} 
            },
            'blur': function(){if(this.value == ''){this.value = all_w;}}
        });
        EditParam.sender.addEvent('click', function(){
            if(EditParam.full.value == 'nikakos'){ alert('Не верное значение'); }
            else{EditParam.AllForm.submit();}
        });
        EditParam.fullparam.each(function(r){
            r.addEvent('change', function()
            {
                var wer;
                this.getChildren().each(function(opt)
                {
                    if(opt.selected)
                    {
                        wer=opt.value;
                        if(opt.hasClass('lastselect')){
                            EditParam.sender.setStyle('display', 'block');
                            EditParam.full.value = wer;
                        }
                        else{
                            EditParam.sender.setStyle('display', 'none');
                            EditParam.full.value = 'nikakos';
                        }
                    }
                });
                var cat = $('fullparameter');
                cat.empty().addClass('ajax-loading');
                new Request.HTML({
                    url: '/CategorySelector.ashx', 
                    method: 'post',
                    update: cat,
                    data: {'quality': wer},
                    onComplete: function(response){
                        cat.removeClass('ajax-loading');
                        EditParam.fullparam = $$('#fullparameter select[name=quality]');
                        EditParam.parse();
                    }}).send();
            });
        });
        EditParam.Cat.each(function(el){
            el.addEvent('change', function(){
                var wer;
                var upd = false;
                this.getChildren().each(function(opt){
                    if(opt.selected) {
                        wer=opt.value;
                        if(opt.hasClass('lastselect'))
                        upd=true;
                    }
                });
                EditParam.saveparam(this, upd, wer);
            });
        });
        EditParam.counters.each(function(el){
            var w = '1';
            EditParam.counters.addEvents({
                'focus': function() { w = this.value; },
                'keyup': function() {
		            if(this.value.test(/^-?\d{1,3}(,?\d{3})*(\.00)?$/))	{ w = this.value; }
		            else if(this.value == ''){}
		            else {this.value = w;} 
	            },
	            'blur': function(){
	                if(this.value == '' || !this.value.test(/^-?\d{1,3}(,?\d{3})*(\.00)?$/)){this.value = w; }
	                if(this.value.test(/^-?\d{1,3}(,?\d{3})*(\.00)?$/)){EditParam.saveparam(this, true, this.value);}
	                else if(w.test(/^-?\d{1,3}(,?\d{3})*(\.00)?$/)){EditParam.saveparam(this, true, w);}
	                else{this.value = '1'; EditParam.saveparam(this, true, '1');}
	            }
            });
        });
        EditParam.deleter.each(function(li){
            li.addEvent('click', function(e){
			    if(li.checked){
			        var inp = new Element('input', { 'name': li.value, 'type': 'hidden'});
			        inp.injectBefore('deleter');
			    }
			    else{
			        var elll = $('DeleteForm');
			        var elllll = elll.getFormElements().each(function(el){
			            if(el.name == li.value)
		                    el.remove();
			        });
			    }
			});
		});
    }
}
var ImageRepeater = {
    start: function(){
        var index = Math.floor(Math.random() * imgs.length);
        var v = $('gallery');
        new Asset.image(imgs[index][0],{
            onload: function(){
                v.empty();
                v.appendChild(this);
                setTimeout('ImageRepeater.start()', 10000);
            } 
        });
    }
}
window.addEvent('domready', Site.start);
