/**
* Scherzné Köves Beatrix
*/

var asd='',WPTids=new Array();

function logToConsole(mess)
    {
    $('error_console').innerHTML+='<br>'+mess;
    }

function numVal(val)
    {
    var retval=0;
    var numval=val.match(/([\d]+[\.]*[\d]*)/);
    retval=(numval)?(numval[0]*1):0;
    return retval;
    }

var dinamicupdater=Class.create({
    initialize:function()
        {
        try{eval(customscripts);}catch(e){}

        var inadmin;
        try{inadmin=$('modulediv');}catch(e){}
        
        if(inadmin)try{
            var wpts=$('modulediv').select('input[id^=WPTDIN]','select[id^=WPTDIN]','textarea[id^=WPTDIN]');
            var wpts2=$('modulediv').select('input[id$=__]','select[id$=__]','textarea[id$=__]');

            if(wpts)
                {
                wpts.each(function(w){wpts2.each(function(w2){
                  if(w==w2)
                    {
                      asd+=' '+w.readAttribute('id');
                      var wname=w.readAttribute('id');
                      var newpt;
                      newpt=wname.match(/WPTDIN([A-Z]{0,3})__(\d+)__(.*)/);
                      WPTids.push(new Array('0_'+newpt[2],wname));
                    }
                  })})
                this.WPTids=WPTids;
                //logToConsole(asd)
                for(var i=0;i<wptdefinitions.length;i++)
                    {
                    this.analyze(wptdefinitions[i][2],wptdefinitions[i][1],wptdefinitions[i][0],'0');
                    }
                }
            }catch(e){/*logToConsole(e+' '+e.lineNumber)*/}
            

        var modforms;
        if(!inadmin)modforms=$$('form[id^=mod]');
        try{
            if(modforms)
                {
                WPTids=new Array();
                this.WPTids=new Array();
                for(var e=0;e<modforms.length;e++)
                    {
                    var formid=modforms[e].readAttribute('id');
                    var formnumberid=formid.match(/(\d+)/);

                    var cartselect=$$('#'+formid+' select[id^=modifier]','#'+formid+' input[id^=modifier]');
                    if(cartselect)cartselect.each(function(cs){
                        asd+=' '+cs.readAttribute('id');
                        var wname=cs.readAttribute('id');
                        var newpt;
                        if(wname.match(/modifier(\D+)(\d+)(\D+)(\d+)/))
                            {newpt=wname.match(/modifier(\D+)(\d+)(\D+)(\d+)/);}
                        else {newpt=wname.match(/modifiers\[(\d+)\]/);if(newpt)newpt[4]=newpt[1];}
                        WPTids.push(new Array(formnumberid[1]+'_'+newpt[4],wname));
                        });
                    this.WPTids=WPTids;
                    for(var i=0;i<wptdefinitions.length;i++)
                        {
                        try{this.analyze(wptdefinitions[i][2],wptdefinitions[i][1],wptdefinitions[i][0],formnumberid[1]);}catch(e){/*logToConsole(e+' '+e.lineNumber)*/}
                        }
                    };
                //logToConsole(this.WPTids)
                }
            }catch(e){/*logToConsole(e+' '+e.lineNumber)*/}
        },

    findInWPTs:function(dinid,formid)
        {
        var out=false;
        if(this.WPTids.length>0)for(var i=0;i<this.WPTids.length;i++)
            {
            if(this.WPTids[i][0]==formid+'_'+dinid){out=i;break;}
            //logToConsole(this.WPTids[i][0]+' '+formid+'_'+dinid)
            }
        return out;
        },

    findInDefs:function(dinid)
        {
        var out=false;
        dinid=dinid.split('_');
        dinid=(dinid.length>1)?dinid[1]:dinid[0];
        if(wptdefinitions.length>0)for(var i=0;i<wptdefinitions.length;i++)if(wptdefinitions[i][0]==dinid){out=i;break;}
        return out;
        },
        
    analyze:function(funcstring,dintype,dinid,formid)
        {
        var thefunc,inputelement,inputindefs,outputelements=new Array(),oneelement,retstring='',thefunct1,thefunct2;
        var observable,kieg;
        
        if(funcstring)thefunct1=funcstring.split(';');
        if(thefunct1)for(var i=0;i<thefunct1.length;i++)
            {
            //logToConsole(thefunct1[i]);
            outputelements=new Array();
            thefunct2=thefunct1[i].match(/\=(ADD|REPLACE|MATH)\(/i);
            if(thefunct2)thefunc=(thefunct2[1]).toUpperCase();
            var outputelementst=thefunct1[i].match(/DIN(\d+)/gi);
            if(outputelementst)for(var j=0;j<outputelementst.length;j++)
                {
                oneelement=outputelementst[j].match(/DIN(\d+)/i);
                if(oneelement)outputelements.push(this.findInWPTs(oneelement[1],formid));
                }
            //logToConsole(outputelements)
            inputelement=this.findInWPTs(dinid,formid);
            inputindefs=this.findInDefs(dinid);
            //melyik esemenyre ultessuk a figyelest
            switch(wptdefinitions[inputindefs][1])
                {
                case 'dinamicinput':observable='dinamicinput:change';kieg='input';
                    break;
                case 'dinamiclist':observable='dinamiclist:change';kieg='select';
                    break;
                case 'dateinput':
                case 'dateinputdayinterval':observable='dateinput:change';kieg='';
                    break;
                default:observable='change';kieg='';
                    break;
                }

            switch(thefunc)
                {
                case 'ADD':
                    for(var j=0;j<outputelements.length;j++)
                        {
                        var outelem2=outputelements[j];
                        var defind2=this.findInDefs(WPTids[outelem2][0]);
                        Event.observe(this.WPTids[inputelement][1],observable,function(event){
                            var tempval=$(WPTids[inputelement][1]+kieg).value;
                            if(wptdefinitions[inputindefs][1]=='dinamiclist')
                            {
                            tempval=tempval.split(';');
                            tempval=tempval[0];
                            }
                            try{eval('$(\''+WPTids[outelem2][1]+'oprice\').value=$(\''+WPTids[inputelement][1]+'oprice\').value');}
                                catch(e){}
                            //melyikhez adjuk hozzá
                            switch(wptdefinitions[defind2][1])
                                {
                                case 'dinamicinput':
                                case 'dinamiclist':
                                    eval(WPTids[outelem2][1]+'o.addItem(\"'+tempval+'\")');
                                    break;
                                case 'selectinput':
                                    eval('$('+WPTids[outelem2][1]+').value=(\"'+tempval+'\")');
                                    break;
                                case 'textinput':
                                case 'textareainput':
                                    eval('$('+WPTids[outelem2][1]+').value+=(\"'+tempval+'\")');
                                    break;
                                case 'numericinput':
                                    var numval=tempval.match(/(\d+)/);
                                    if(numval)tempval=numval[0];
                                    eval('$('+WPTids[outelem2][1]+').value=(('+tempval+'*1)+($('+WPTids[outelem2][1]+').value*1))');
                                    break;
                                default:
                                    eval('$('+WPTids[outelem2][1]+').value+=(\"'+tempval+'\")');
                                    break;
                                }
                            //logToConsole(tempval);
                            })
                        }
                    break;
                case 'REPLACE':
                    for(var j=0;j<outputelements.length;j++)
                        {
                        var outelem=outputelements[j];
                        var defind=this.findInDefs(WPTids[outelem][0]);
                        Event.observe(this.WPTids[inputelement][1],observable,function(event){
                            var tempval=$(WPTids[inputelement][1]+kieg).value;
                            if(wptdefinitions[inputindefs][1]=='dinamiclist')
                            {
                            tempval=tempval.split(';');
                            tempval=tempval[0];
                            }
                            try{eval('$(\''+WPTids[outelem][1]+'oprice\').value=$(\''+WPTids[inputelement][1]+'oprice\').value');}
                                catch(e){}
                            //melyikhez adjuk hozzá
                            //logToConsole(wptdefinitions[outelem][1])
                            switch(wptdefinitions[defind][1])
                                {
                                case 'dinamicinput':
                                case 'dinamiclist':
                                    eval('var ic='+WPTids[outelem][1]+'o.texts.length;for(var x=0;x<ic;x++)'
                                        +WPTids[outelem][1]+'o.delItem(0);');
                                    eval(WPTids[outelem][1]+'o.addItem(\"'+tempval+'\")');
                                    //alert(WPTids[outelem][1]+'o.addItem(\"'+tempval+'\")')
                                    break;
                                case 'selectinput':
                                    eval('$('+WPTids[outelem][1]+').value=(\"'+tempval+'\")');
                                    break;
                                case 'textinput':
                                case 'textareainput':
                                    eval('$('+WPTids[outelem][1]+').value=(\"'+tempval+'\")');
                                    break;
                                case 'numericinput':
                                    var numval=tempval.match(/(\d+)/);
                                    if(numval)tempval=numval[0];
                                    eval('$('+WPTids[outelem][1]+').value=(\"'+tempval+'\")');
                                    break;
                                default:
                                    eval('$('+WPTids[outelem][1]+').value=(\"'+tempval+'\")');
                                    break;
                                }
                            //logToConsole(tempval);
                            })
                        }
                    break;
                case 'MATH':
                    var idcollection=new Array();
                    var okieg='';
                    var newfunc=thefunct1[i].replace(/\=MATH/i,'');
                    for(var j=0;j<outputelements.length;j++)
                        {
                        var outelem=outputelements[j];
                        var defind=this.findInDefs(WPTids[outelem][0]);
                        switch(wptdefinitions[defind][1])
                            {
                            case 'dinamicinput':okieg='input';break;
                            case 'dinamiclist':okieg='select';break;
                            default:okieg='';break;
                            }
                        var replacable='numVal($(\''+WPTids[outelem][1]+okieg+'\').value)';
                        idcollection.push(replacable);
                        }
                    for(var j=0;j<outputelementst.length;j++)
                        newfunc=newfunc.replace(outputelementst[j],idcollection[j]);
                    //logToConsole(newfunc)
                    
                    for(var j=0;j<outputelements.length;j++)
                        {
                        var outelem=outputelements[j];
                        var defind=this.findInDefs(WPTids[outelem][0]);
                        switch(wptdefinitions[defind][1])
                            {
                            case 'dinamicinput':observable='dinamicinput:change';kieg='input';
                                break;
                            case 'dinamiclist':observable='dinamiclist:change';kieg='select';
                                break;
                            case 'dateinput':
                            case 'dateinputdayinterval':observable='dateinput:change';kieg='';
                                break;
                            default:observable='change';kieg='';
                                break;
                            }

                        Event.observe(this.WPTids[outelem][1],observable,function(event){
                            var tempval=eval(newfunc);//logToConsole(tempval) ;
                            switch(wptdefinitions[inputindefs][1])
                                {
                                case 'dinamicinput':
                                case 'dinamiclist':
                                    eval('var ic='+WPTids[inputelement][1]+'o.texts.length;for(var x=0;x<ic;x++)'
                                        +WPTids[inputelement][1]+'o.delItem(0);');
                                    eval(WPTids[inputelement][1]+'o.addItem(\"'+tempval+'\")');
                                    break;
                                case 'selectinput':
                                    eval('var cx=$(\''+WPTids[inputelement][1]+'\');for(var x=0;x<cx.options.length;x++){/*logToConsole(cx.options[x].value);*/if(numVal(cx.options[x].value)=="'+tempval+'"){cx.selectedIndex=x;cx.fire("selectinput:change");break;}}');
                                    //eval('$('+WPTids[inputelement][1]+').value=(\"'+tempval+'\")');
                                    break;
                                case 'textinput':
                                case 'textareainput':
                                    eval('$('+WPTids[inputelement][1]+').value=(\"'+tempval+'\")');
                                    break;
                                case 'numericinput':
                                    eval('$('+WPTids[inputelement][1]+').value=(\"'+tempval+'\")');
                                    break;
                                default:
                                    eval('$('+WPTids[inputelement][1]+').value=(\"'+tempval+'\")');
                                    break;
                                }

                            });
                        }
                    break;//MATH
                }
            }
        
        return retstring;
        }
});

document.observe('dom:loaded',function(){/*$('TitlerAppend').insert({'after':'<div id="error_console"></div>'});*/var dinup=new dinamicupdater()})


