// this file will contain functions to create boxs and forms by system standarts

var openFormList=[];
var allscreenb;


function bodyKeyPress(evt,src)
{
    
    if(evt.keyCode == 27)
    {  
        if(openFormList.length != 0)
        {
            
            if(openFormList[openFormList.length-1] != null)
            {
                
                if(openFormList[openFormList.length-1].hide)
                {
                    var tlen =openFormList.length;
                    openFormList[openFormList.length-1].hide();
                    if(tlen == openFormList.length)
                    {   
                        openFormList.splice(openFormList.length-1,1);
                    }
                    
                }
            }
        }
    }
    if(evt.keyCode == 13)
    {   
        if(openFormList.length != 0)
        {
            if(openFormList[openFormList.length-1] != null)
            {
                if(openFormList[openFormList.length-1].submit)
                {
                    openFormList[openFormList.length-1].submit();
                }
            }
        }
    }
    
}

function grabForm(fields,types)
{
    var ret = new createForm({width:1, height:1 , target:Ext.getBody() , blockScreen:false , title:'',closebtn:false,noFrame:true});
    for(var i=0; i<fields.length;i++)
    {
        ret.grabField({ type:types[i] , name : fields[i]});
    }
    return ret;
}

createForm = function(info)
{
    if(!info)
    {
        this.info = {};
    }
    this.info = info;
    this.divArray       =       new Array();
    this.fieldArray     =       new Array();
    this.fieldNameArray =       new Array();
    this.templates      =       new Array();
    this.form = null;
    this.title = null;
    this.content = null;
    this.analyticsName = info.analyticsname ? info.analyticsname : null;
    
    if(!info.width) return null;
    if(!info.height) return null;
    
    if(!info.blockScreen &&  info.blockScreen != false) this.info.blockScreen = true;
    
    if(!info.closebtn && info.closebtn != false )
    {
        this.info.closebtn = true;
    }
    if(!info.target)
    {
        this.target = Ext.getBody();
    }
    else
    {
        this.target = Ext.get(info.target);
    }
    this.init();
    if(this.info.blockScreen == true)
    {
        this.createScreenBloker();
    }
    
    
};

createForm.prototype = {
    createScreenBloker : function()
    {
        this.blockdiv = Ext.get(document.createElement('div'));
        this.blockdiv.dom.style.width = Ext.getBody().getWidth() + "px";
        this.blockdiv.dom.style.height =   "2000px";
        this.blockdiv.dom.style.position = "absolute";
        this.blockdiv.dom.style.top=0;
        this.blockdiv.dom.style.left=0;
        this.blockdiv.dom.style.backgroundColor = "gray";
        var val=4;
        this.blockdiv.dom.style.MozOpacity = val;
        this.blockdiv.dom.style.opacity = val/10;
        this.blockdiv.dom.style.filter = 'alpha(opacity=' + val*10 + ')';
        this.blockdiv.appendTo(Ext.getBody());
        this.blockdiv.dom.style.display="none";
        this.blockdiv.dom.style.zIndex =10000;
    },
    init : function()
    {
        if(this.info.noFrame || this.info.noframe)
        {
            var form = this.addDiv({width:this.info.width,height:this.info.height});
            this.content = this.addDiv({target:form,width:this.info.width,height:this.info.height});
        }
        else
        {//style,target,width,height,text
            var form = this.addDiv({style:'x-form',width:this.info.width,height:this.info.height});
            if(this.target)
            {
                form.dom.style.position=""; //position:inherit
                form.dom.style.left="";
                form.dom.style.top="";
                form.dom.style.display="none";
                this.isVisible = false;
                
            }
            this.addDiv({style:'x-login-title-right',target:form});
            var div = this.addDiv({style:'x-login-title-middel',target:form});
            div.dom.style.width = (this.info.width *1) -6 + "px";
            
            if(this.info.closebtn)
            {
                var div2 = this.addDiv({style:'close',target:div});
                    div2.dom.innerHTML = "X";
                    div2.on('click',this.hide,this);
                    
                    this.closeBtn = div2;
            }
            this.title = this.addDiv({style:'title',target:div});
            this.title.dom.innerHTML = this.info.title;
            this.addDiv({style:'x-login-title-left',target:form});
            div =this.addDiv({style:'x-content',target:form});
            div.dom.style.width =(this.info.width *1) -6 + "px";
            div.dom.style.height =(this.info.height *1) -31 + "px";
            this.content = div;
            
            if(iever != 6)
            {
                this.addDiv({style:'x-bottom-right',target:form});
                this.addDiv({style:'x-bottom-middel',target:form,width:this.info.width-6});
                this.addDiv({style:'x-bottom-left',target:form});
            }
            else
            {
                this.addDiv({style:'x-bottom-middel',target:form,width:this.info.width-4});
            }
        }
        
        
        this.form = form;
        if(this.target)
        {
            this.form.appendTo(this.target);
        }
        //this.show();
    },
    show : function(evt)
    {
        if(this.analyticsName)
        {
            pageTracker._trackPageview("/"+ this.analyticsName ); 
            try
            {
                urchinTracker("/"+ this.analyticsName);
            }
            catch(e)
            {
            }
        }
        this.isVisible = true;
        if(!this.info.target)
        {
            if(this.info.amouse== true)
            {
                if(evt  && evt.xy)
                {
                    this.form.dom.style.position="absolute";
                    this.form.dom.style.top  = evt.xy[1] - this.info.height-15 + "px";
                    this.form.dom.style.left = evt.xy[0] + "px";
                }
                else
                {
                    this.form.dom.style.top  = Ext.getBody().getScroll().top *1 + 100 +"px";
                    this.form.dom.style.left = (Ext.getBody().getBox().width /2 ) *1 - (this.info.width /2) + "px";
                }
                
            }
            else if(this.info.bmouse == true )
            {
                if(evt  && evt.xy)
                {
                    this.form.dom.style.top  = evt.xy[1] + "px";
                    this.form.dom.style.left = evt.xy[0] + "px";
                }
                else
                {
                    this.form.dom.style.top  = Ext.getBody().getScroll().top *1 + 100 +"px";
                    this.form.dom.style.left = (Ext.getBody().getBox().width /2 ) *1 - (this.info.width /2) + "px";
                }
                
            }
            else if(this.info.top || this.info.left)
            {
                if(this.info.top)
                    this.form.dom.style.top  = Ext.getBody().getScroll().top *1 + this.info.top + "px";
                if(this.info.left)
                    this.form.dom.style.left = this.info.left + "px";
                
            }
            else
            {
                this.form.dom.style.top  = Ext.getBody().getScroll().top *1 + 100 +"px";
                this.form.dom.style.left = (Ext.getBody().getBox().width /2 ) *1 - (this.info.width /2) + "px";
            }
            
        }
        
        
        this.form.fadeIn();
        
        if(this.info.blockScreen == true)
        {
            this.blockdiv.dom.style.width = Ext.getBody().getWidth() + "px";
            this.blockdiv.dom.style.zIndex = 10002;
            this.blockdiv.dom.style.display = "block";
            this.form.dom.style.zIndex = 10003; 
            if(Ext.isIE6)
            {
                
                if(!this.backiframe)
                {
                    
                    
                    this.backiframe = Ext.get(document.createElement('iframe'));
                    this.backiframe.dom.style.position = "absolute";
                    this.backiframe.dom.style.display= "none";
                    this.backiframe.appendTo(Ext.getBody());
                }
                
                
                    this.form.dom.style.zIndex = 10003; 
                    this.backiframe.dom.style.top = this.form.dom.style.top;
                    this.backiframe.dom.style.left = (this.form.dom.style.left.replace(/px/,""))*1 + 3 + "px" ;
                    this.backiframe.dom.style.width = this.form.dom.style.width;
                    this.backiframe.dom.style.height = this.form.dom.style.height;
                    this.backiframe.dom.style.display = "block";
                    this.backiframe.dom.style.zIndex =10000;  
                
                
            }
            
        }
        
        
        if(this.info.closebtn)
            openFormList[openFormList.length] = this;
        
        try
        {
            
            this.fieldArray[this.fieldNameArray[0]].dom.focus();
        }
        catch(e)
        {
        }
        
    },
    showBlocker : function()
    {
        this.blockdiv.dom.style.zIndex = 10002;
        this.blockdiv.dom.style.display = "block";
    },
    hideBlocker : function()
    {
        this.blockdiv.dom.style.display = "none";
    },
    
    hide : function()
    {
        this.isVisible = false;
        this.form.fadeOut({endOpacity: 0,easing: 'easeOut',duration: .1,remove: false,useDisplay: true});
        if(this.info.blockScreen == true)
        {
            this.blockdiv.dom.style.display = "none";
        }
        
         if(Ext.isIE6)
        {
            if(this.backiframe)
                this.backiframe.dom.style.display = "none";
        }
        
        //openFormList[openFormList.length] = this;
        if(openFormList.length != 0)
        {
            for(var i=0; i<openFormList.length ; i++)
            {
                if(openFormList[i] == this)
                {
                    openFormList.splice(i,1);
                }
            }
        }
        
    },
    //addDiv : function(style,target,width,height,text)
    addDiv : function(obj)
    {   
        var div = Ext.get(document.createElement('div'));
        if (obj.id) div.dom.id = obj.id;
        if(!obj) obj = {};
        if(!obj.target) obj.target = this.content;
        
        if(obj.style)
            div.dom.className = obj.style ;
        else if(this.info.divClass)
            div.dom.className = this.info.divClass ;
        if(obj.target)
            div.appendTo(obj.target);
        if(obj.text)
            div.dom.innerHTML = obj.text;
        if(obj.width)
            div.dom.style.width = obj.width + "px";
        if(obj.height)
            div.dom.style.height = obj.height + "px";
        
            
        this.divArray[this.divArray.length] = div;
        div.arIndex = this.divArray.length - 1;
        return div;
    },
    removeDiv: function (obj)
    {
        this.divArray.splice(obj.arIndex,1);
        obj.remove();
    
    },
    removeAll : function()
    {
        for(var i=0; i<this.divArray.length;i++)
        {
            this.removeDiv(this.divArray[i]);
        }
    },
//    createField : function(name,type,target,width,value,text)
    addField : function(obj)
    {   
        var field;
        var dvalue;
        var ispassword=false;
        if(!obj) obj={};
        if(!obj.target) obj.target = this.content;
        if(!obj.width)obj.width = 120;
        
        var div;
        if(obj.style)
            div = this.addDiv({style:obj.style,target:obj.target,width:obj.width , height:obj.height});
        else 
            div = this.addDiv({style:this.info.fieldClass,target:obj.target,width:obj.width , height:obj.height});
        
        
        
        if(obj.type == "pass" || obj.type == "password")
        {
            ispassword = true;
            obj.type = "text";
        }
        
        if(obj.type == 'textarea')
        {
            obj.type = 'text';
            field = Ext.get(document.createElement('textarea'));
            if(obj.height)
            {
                field.dom.style.height = obj.height + "px";
            }
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                field.dom.value = obj.value;
                dvalue = obj.value;
            }
            field.dom.style.fontSize = "12px";
            field.appendTo(div);
        }
        else if(obj.type == 'text')
        {
            field = Ext.get(document.createElement('input'));
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                field.dom.value = obj.value;
                dvalue = obj.value;
            }
            field.dom.style.fontSize = "11px";
            if(ispassword)
            {
                field.dom.type="password";
            }
            field.appendTo(div);
        }
        else if(obj.type == 'select')
        {
            field = Ext.get(document.createElement('select'));
            
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                var valarr = obj.value.split("|");
                for(var i=0; i<valarr.length;i++)
                {
                    var opt = document.createElement('option');
                    if(valarr[i].indexOf(':') != -1)
                    {
                        opt.value = valarr[i].split(':')[0];
                        opt.text = valarr[i].split(':')[1];
                    }
                    else
                    {
                        opt.value = valarr[i];
                        opt.text = valarr[i];
                    }
                    if(i==0) {opt.selected = true; dvalue = opt.value; }
                    if(opt.value == obj.dvalue)
                    {
                        opt.selected = true; dvalue = opt.value;
                    }
                    field.dom.options[i] = opt;
                }
            }
            field.appendTo(div);
            
        }
        else if(obj.type == 'chk')
        {
            field = Ext.get(document.createElement('input'));
            field.dom.type="checkbox";
            field.dom.style.border = "none";
            field.dom.className = div.dom.className;
            field.appendTo(div);
            if(obj.value == true)
            {
                dvalue = true;
                field.dom.checked = true;
            }
            else
            {
                dvalue == false;
            }
            var chktxt =this.addDiv({target:div,text:obj.text});
            chktxt.dom.className = div.dom.className;
            chktxt.dom.style.cursor = "pointer";
            
            chktxt.chkid = field.dom.id;
            chktxt.on('click',function(){Ext.get(this.chkid).dom.checked = !Ext.get(this.chkid).dom.checked; });
        }
        else if(obj.type == 'obj')
        {
            field = {name:obj.name,value:obj.value};
        }
        
        if(obj.type != 'obj')
        {
            field.markInvalid = function(){this.dom.parentElement.style.border="solid 2px red";};
            field.clearInvalid = function(){this.dom.parentElement.style.border="none 0px";};
        }
        if(!this.dvalList) this.dvalList = new Array();
        
        if(obj.dvalue || obj.dvalue == '' )
        {
            this.dvalList[this.dvalList.length] = {name:obj.name,value:obj.dvalue};
        }
        
        if(!this.fieldNameArray)
        {
            this.fieldNameArray = new Array();
        }
        
        if(obj.type == 'select')
        {
            // add items function
            field.addOption = function(value,text,selected){
                var opt = document.createElement('option');
                opt.value = value;
                opt.text = text;
                if(selected) opt.selected = true;
                field.dom.options[field.dom.options.length] = opt;
            };
            // add a reLoad of options
            field.reLoadList = function(list,dval)
            {
                this.dom.options.length = 0;
                var valarr = list.split("|");
                for(var i=0;i<valarr.length;i++)
                {
                    var opt = document.createElement('option');
                    if(valarr[i].indexOf(':') != -1)
                    {
                        opt.value = valarr[i].split(':')[0];
                        opt.text = valarr[i].split(':')[1];
                    }
                    else
                    {
                        opt.value = valarr[i];
                        opt.text = valarr[i];
                    }
                    if(opt.value == dval )
                    {
                        opt.selected = true;
                    }
                    field.dom.options[i] = opt;
                }
                
            }
        }
        
        this.fieldArray[obj.name] = field;
        this.fieldNameArray[this.fieldNameArray.length] = obj.name;
        this.fieldArray[obj.name].getType = obj.type;
        this.fieldArray[obj.name].mydiv = div;
        
        
        
        return this.fieldArray[obj.name];
    },
    grabField : function(obj)
    {
        var field;
        var dvalue;
        if(!obj) obj={};
        if(!obj.target) obj.target = this.content;
        //if(!obj.width)obj.width = 120;
        //var div = this.addDiv({style:obj.style,target:obj.target,width:obj.width , height:obj.height});
        
        
        
        if(obj.type == 'textarea')
        {
            obj.type = 'text';
            field = Ext.get(obj.name);
            if(obj.height)
            {
                field.dom.style.height = obj.height + "px";
            }
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                field.dom.value = obj.value;
                dvalue = obj.value;
            }
            field.dom.style.fontSize = "12px";
            
        }
        else if(obj.type == 'text')
        {
            field = Ext.get(obj.name);
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                field.dom.value = obj.value;
                dvalue = obj.value;
            }
            field.dom.style.fontSize = "11px";
//            field.appendTo(div);
        }
        else if(obj.type == 'select')
        {
            field = Ext.get(obj.name);
            
            field.addOption = function(value,text,selected){
                var opt = document.createElement('option');
                opt.value = value;
                opt.text = text;
                if(selected) opt.selected = true;
                field.dom.options[field.dom.options.length] = opt;
            };
            
            if(obj.width)
                field.dom.style.width = (obj.width -12) +"px";
            if(obj.value)
            {
                field.dom.options.length = 0;
                var valarr = obj.value.split("|");
                for(var i=0; i<valarr.length;i++)
                {
                    var opt = document.createElement('option');
                    if(valarr[i].indexOf(':') != -1)
                    {
                        opt.value = valarr[i].split(':')[0];
                        opt.text = valarr[i].split(':')[1];
                    }
                    else
                    {
                        opt.value = valarr[i];
                        opt.text = valarr[i];
                    }
                    if(i==0) {opt.selected = true; dvalue = opt.value; }
                    if(opt.value == obj.dvalue)
                    {
                        opt.selected = true; dvalue = opt.value;
                    }
                    field.dom.options[i] = opt;
                }
            }
            //field.appendTo(div);
            
        }
        else if(obj.type == 'chk')
        {
            field = Ext.get(obj.name);
            field.dom.style.border = "none";
            //field.dom.type="checkbox";
            //field.dom.className = div.dom.className;
            //field.appendTo(div);
            if(obj.value == true)
            {
                dvalue = true;
                field.dom.checked = true;
            }
            else
            {
                dvalue == false;
            }
            
            
            
                Ext.get(field.dom.parentNode).on('click',function(evt,src){if(src.tagName=="INPUT") return; Ext.get(obj.name).dom.checked = !Ext.get(obj.name).dom.checked;},this);
            
            //,function(){Ext.get(this.chkid).dom.checked = !Ext.get(this.chkid).dom.checked; });
            /*
            var chktxt =this.addDiv({target:div,text:obj.text})
            chktxt.dom.className = div.dom.className;
            chktxt.dom.style.cursor = "pointer";
            
            chktxt.chkid = field.dom.id;
            chktxt.on('click',function(){Ext.get(this.chkid).dom.checked = !Ext.get(this.chkid).dom.checked; });
            */
        }
        else if(obj.type == 'obj')
        {
            field = {name:obj.name,value:obj.value};
        }
        
        if(obj.type != 'obj')
        {
            field.markInvalid = function(){this.dom.parentElement.style.border="solid 2px red";};
            field.clearInvalid = function(){this.dom.parentElement.style.border="none 0px";};
        }
        this.fieldArray[obj.name] = field;
        
        if(!this.dvalList) this.dvalList = new Array();
        
        if(obj.dvalue || obj.dvalue == '' )
        {
            this.dvalList[this.dvalList.length] = {name:obj.name,value:obj.dvalue};
        }
        
        if(!this.fieldNameArray)
        {
            this.fieldNameArray = new Array();
        }
        
        this.fieldNameArray[this.fieldNameArray.length] = obj.name;
        this.fieldArray[obj.name].getType = obj.type;
        return this.fieldArray[obj.name];
    
    },
    markInvalid : function(name)
    {
        this.fieldArray[name].markInvalid();
    },
    clearInvalid : function(name)
    {
        if(name =="*")
        {
            for(var i=0; i<this.fieldNameArray.length;i++)
            {
                if(this.fieldArray[this.fieldNameArray[i]].getType != 'obj')
                {
                    this.fieldArray[this.fieldNameArray[i]].clearInvalid();
                }
            }
        }
        else
        {
            this.fieldArray[name].clearInvalid();
        }
        
    },
    
    setDvalue : function(name,value)
    {
        
        if(!this.dvalList) return;
        for(var i=0;i<this.dvalList.length;i++)
        {
            if(this.dvalList[i].name == name )
            {
                this.dvalList[i].value = value;
                return;
            }
        }
    },
    getRegexValFromString :function(val,string)
    {
        if(string ==null) return "";
         var pat ="/" +  val +"\\((.*?)\\)/g";
         pat = eval(pat);
         
         if( string.match(pat) == null) return "";
         var ret = string.match(pat)[0].replace(val+'(','');
         ret = ret.substr(0,ret.length-1);
          
         return ret;
    },
    setFormValsFromString : function(string,setvals)
    {
        
        var obj=[];
        var strArray = string.split("|");
        for(var i=0; i<strArray.length;i++)
        {
            var tstr = "{name:'" +strArray[i].substr(0,strArray[i].indexOf("(")) + "',value:'"+this.getRegexValFromString(strArray[i].substr(0,strArray[i].indexOf("(")),string).replace(/'/g,"\\'")+"'}";
            obj[obj.length]=eval("("+tstr+")");
        }
        if(setvals)
        {
            this.setFormVals(obj);
        }
        else
        {
            return obj;
        }
    },
    setFormVals : function(data)
    {
        if(!data)
        {
            data = this.dvalList;
        }
        for(var i=0; i<data.length;i++)
        {
            if(this.fieldArray[data[i].name])
            {
                if(this.fieldArray[data[i].name].getType == "text")
                {
                    this.fieldArray[data[i].name].dom.value =  Js.stringFromjson(data[i].value);
                }
                else if(this.fieldArray[data[i].name].getType == "obj")
                {
                    this.fieldArray[data[i].name].value = data[i].value;
                }
                else if(this.fieldArray[data[i].name].getType == "select")
                {
                    this.fieldArray[data[i].name].dom.value = data[i].value;
                }
                else if(this.fieldArray[data[i].name].getType == "chk")
                {
                    if(data[i].value == true || data[i].value == 1 || data[i].value == "true" || data[i].value == "True"  )
                        this.fieldArray[data[i].name].dom.checked = true;
                    else
                    {
                        this.fieldArray[data[i].name].dom.checked = false;
                        
                    }
                     
                }
                else if(this.fieldArray[data[i].name].getType == "mul")
                {
                    this.fieldArray[data[i].name].setData(data[i].value,'e-a-');
                    
                }
            }
        }
    },
    getFormValsObj : function()
    {
       var ret={};
       var val="";
       for(var i=0; i<this.fieldNameArray.length;i++)
        {
            val = "";
            if(this.fieldArray[this.fieldNameArray[i]].getType == "text")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "select")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "chk")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.checked;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "mul")
            {
                val = this.fieldArray[this.fieldNameArray[i]].getStringValue().replace(/e-a-/g,'');
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "obj")
            {
                val = this.fieldArray[this.fieldNameArray[i]].value;
            }
            ret[this.fieldNameArray[i]] = val;
            
        }
        
        return ret;
    },
    getVal : function(name)
    {   
        if(!this.fieldArray[name]) return null;
        var val;
        if(this.fieldArray[name].getType == "text")
            {
                val = this.fieldArray[name].dom.value;
            }
            else if(this.fieldArray[name].getType == "select")
            {
                val = this.fieldArray[name].dom.value;
            }
            else if(this.fieldArray[name].getType == "chk")
            {
                val = this.fieldArray[name].dom.checked;
            }
            else if(this.fieldArray[name].getType == "mul")
            {
                val = this.fieldArray[name].getStringValue().replace(/e-a-/g,'');
            }
            else if(this.fieldArray[name].getType == "obj")
            {
                val = this.fieldArray[name].value;
            }
            return val;
    },
    getFormVals : function()
    {
        var ret ="";
        
        var val="";
        
        for(var i=0; i<this.fieldNameArray.length;i++)
        {
            val = "";
            if(this.fieldArray[this.fieldNameArray[i]].getType == "text")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "select")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "chk")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.checked;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "mul")
            {
                val = this.fieldArray[this.fieldNameArray[i]].getStringValue().replace(/e-a-/g,'');
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "obj")
            {
                val = this.fieldArray[this.fieldNameArray[i]].value;
            }
            if(ret != "") ret+="|";
            ret+=this.fieldNameArray[i] + "(" + val + ")";
        }
        
        return ret.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n');
    },
    getFormValsToPost : function()
    {
        var ret ="";
        
        var val="";
        
        for(var i=0; i<this.fieldNameArray.length;i++)
        {
            val = "";
            if(this.fieldArray[this.fieldNameArray[i]].getType == "text")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "select")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.value;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "chk")
            {
                val = this.fieldArray[this.fieldNameArray[i]].dom.checked;
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "mul")
            {
                val = this.fieldArray[this.fieldNameArray[i]].getStringValue().replace(/e-a-/g,'');
            }
            else if(this.fieldArray[this.fieldNameArray[i]].getType == "obj")
            {
                val = this.fieldArray[this.fieldNameArray[i]].value;
            }
            if(ret != "") ret+="|";
            ret+=this.fieldNameArray[i] + "(" + Js.stringTojson( val) + ")";
        }
        
        return ret;
    },
    
    //addBtn : function(width,text,style)
    addBtn : function(obj)
    {
        
        var ret = this.addDiv({style:obj.style,width:obj.width,target:obj.target});
        ret.dom.className = obj.style;
        
        var btn = Ext.get(document.createElement('div'));
        btn.dom.className = "x-form-btn";
        btn.dom.style.width = obj.width + "px";
        
        var div = Ext.get(document.createElement('div'));
        div.dom.className = "right";
        div.appendTo(btn);
        
        var div = Ext.get(document.createElement('div'));
        div.dom.className = "middel";
        div.dom.style.width = obj.width - 6 + "px";
        div.dom.style.textAlign="center";
        if(obj.text)
            div.dom.innerHTML = obj.text;
        div.appendTo(btn);
        ret.content = div;
        
        var div = Ext.get(document.createElement('div'));
        div.dom.className = "left";
        div.appendTo(btn);
        //btn.appendTo(div);
        //return btn;
        btn.appendTo(ret);
        
        if(!this.btnArray) this.btnArray = new Array();
        if(obj.name)
        {
            this.btnArray[obj.name] = ret;
        }
        
        
        return ret;
    },
    
    /* start function to hold templates and use form as a container */
    /* add a template to the template list */
    addTemplate : function(name)
    {
        if(!this.templates)
            this.templates = [];
        var templateString = "";
        for(var i=1; i< arguments.length;i++)
        {
          if(arguments[i] != null)
          {
             templateString+=arguments[i];
          }
        }
        this.templates[name] = new Ext.Template(templateString);
        this.templates[name] = this.templates[name].compile();
    },
    /* remove all items that are created by a template from container */
    claerByTemplate : function(tname)
    {
        var workItem = this.templates[tname];
        if(workItem == null) return;
        if(!workItem.items) return;
        for(var i=0;i<workItem.items.length;i++)
        {
            workItem.items[i].removeAllListeners();
            workItem.items[i].remove();
            workItem.items[i].dom.outerHTML="";
            workItem.items[i] = null;
        }
        workItem.items = [];
        this.templates[tname] = workItem;
    },
    /* use a template with a given data if no target is enterd the template will apply to the container 
     data can be a single data row or an array of data objects */
    useTemplate : function(tname,data,target)
    {
        /* get the template*/
        var workItem = this.templates[tname];
        if (workItem == null) return;
        /* set the target  */
        var worktarget = this.content;
        if(target) worktarget = target;
        /* if data is not array make data an array */
        var workdata=data;
        if(!workdata.length)
        {
            workdata = [];
            workdata[0] = data;
        }
        for(var i=0; i<workdata.length;i++)
        {
            var objdata = workdata[i];
            /* if template has a data prep function call it and send data & loop number */
            if(workItem.prepdata)
                objdata = workItem.prepdata(objdata,i);
                /* run the template with the data  and append it to target */
            var newobj = Ext.get(workItem.append(worktarget,objdata));
            /* add the data to the object can be used for listeners */
            newobj.data = objdata;
            newobj.parentObj = workItem;
            newobj.parentForm = this;
            /* add the new objet to an array under the template object */
            if(!workItem.items)
                workItem.items=[];
            workItem.items[workItem.items.length] = newobj;
            
            /* is template has a post data function (adding listeners and stuff) 
               sending the new obj, data  and loop poz */
            if(workItem.postdata)
            {
                if(data.length)
                    workItem.postdata(newobj,objdata,i);
                else
                    workItem.postdata(newobj,objdata,workItem.items.length-1);
            }
        }
        this.templates[tname] = workItem;
    }
};


function createDelegate(instance, method) 
  {
		return function() {
			return method.apply(instance, arguments);
		}
	}


function IsNumeric(sText)

{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }


function getScrollHeight()
{
   var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
           
   return h ? h : 0;
}




  function getScrollPosition()
    {

        var x = 0;
        var y = 0;

        if( typeof( window.pageYOffset ) == 'number' )
        {
            x = window.pageXOffset;
            y = window.pageYOffset;
        }
        else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
        {
            x = document.documentElement.scrollLeft;
            y = document.documentElement.scrollTop;
        }
        else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
        {
            x = document.body.scrollLeft;
            y = document.body.scrollTop;
        }

        var position =
        {
            'x' : x,
            'y' : y
        };

        return position;

    }

bannerManager = function()
{   
    this.count = 0;
    this.list = new Array();
    this.limit = 20;
    //<IFRAME height="60" width="780"  marginHeight="0" marginwidth="0" HSPACE="0"   vspace="0" SCROLLING="NO" FRAMEBORDER="0" SRC="http://service.bizportal.co.il/web/webnew/bizbannerreklamanotsecure.shtml?pos=13306&bpos=1&refresh=150&url=/index.php" name="MECASA_520_60"></IFRAME>
};


var addDataliList = 3;
var assetsOnMapBanner = 4;

bannerManager.prototype = {
    add : function(pos,width,height,target)
    {
       
        var iframe = null;
        if(this.count != 0)
        {
            for(var i=0; i<this.list.length;i++)
            {//id.dom.style.display = "none"
                if(this.list[i].dom.parentNode.id == target.dom.id && this.list[i].dom.style.display == "none" )
                {
                    iframe = this.list[i];
                    iframe.dom.style.display="block";
                    i = this.list.length;
                    
                    //return iframe;
                }
            }   
        }
        if(this.count >= this.limit) return null;
        if(this.count ==0 || iframe == null)
        {
          iframe = Ext.get(document.createElement('iframe'));  
          this.count++;
        }
        iframe.dom.marginHeight=0;
        iframe.dom.marginwidth=0;
        iframe.dom.scrolling="no";
        iframe.dom.style.width = width + "px";
        iframe.dom.style.height = height + "px";
        iframe.dom.frameBorder=0;
        if ( iframe.dom.src == "about:blank" || iframe.dom.src == "")
            iframe.dom.src ="http://service.bizportal.co.il/web/webnew/bizbannerreklamanotsecure.shtml?pos="+pos+"&bpos=1&refresh=150&url=/index.php";
        iframe.dom.name = "MECASA_"+width+"_" + height;
        
        if(this.list.length == 0)
            this.list[this.list.length] = iframe;
        else
        {
            var inserted = false;
            for(var i=0;i<this.list.length;i++)
            {
                if(this.list[i] == null)
                {
                    this.list[i] = iframe;
                    inserted = true;
                }
            }
            if(inserted == false)
            {
                this.list[this.list.length] = iframe;
            }
        }
        
        if(target)
            iframe.appendTo(target);
        return iframe;
    },
    
    removeHidden : function()
    {
        for(var i=0; i<this.list.length;i++)
        {
            if(this.list[i] != null)
            {
                if(this.list[i].dom.style.display == "none" && this.list[i].dom.src != "about:blank" )
                {   
                    this.list[i].dom.src = "about:blank";
                }
            }
        }
    },
    
    remove : function(id,nav)
    {
        
        for(var i=0; i<this.list.length;i++)
        {
            if(this.list[i] != null)
            {
                if(id.dom.id == this.list[i].dom.id)
                {
                    
                    
                    id.dom.style.display = "none";
                    if(!nav)
                        id.dom.src = "about:blank";
                    
                }
            }
        }
    }
};

var bmanager = new bannerManager();



function scrollWin(x,y,time,tspace)
{
    if(!tspace) var tspace = 10;
    if(!time) 
        var time = 1000;
    else
        time = time*1000;
    
    scrollWindow(x,y,time,tspace);
}
function scrollWindow(x,y,time,tspace)
{
     
     var currentPosy = Ext.getBody().getScroll().top;
     var currentPosx = Ext.getBody().getScroll().left;
     
     var jx=0;
     var jy=0;
     
     if(currentPosx != x)
     {
        var distancex = Math.abs(currentPosx - x);
        var jumpx = distancex / (time / tspace);
        if(x < currentPosx )
            jx = currentPosx - jumpx ;
        else
            jx = currentPosx + jumpx ;
     }
     if(currentPosy != y)
     {
        var distancey = Math.abs(currentPosy - y);
        var jumpy = distancey / (time / tspace);
        if(y < currentPosy )
            jy = currentPosy - jumpy ;
        else
            jy = currentPosy + jumpy ;
     }
     
     
     if(time > 0 && time )
     {
        window.scroll(jx,jy);
        cmd = 'setTimeout("scrollWindow('+x+','+y+','+(time-tspace)+','+tspace+');",'+tspace+');';
        eval(cmd);
            
     }
     
}

// Start function to get parameter in Js from Request.params
function getParameter(name)
{   
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";  
  var regex = new RegExp( regexS );  
  var results = regex.exec( window.location.href );  
  if( results == null )    
  return "";
  else
  return results[1];
}
// End function to get parameter in Js from Request.params

/* set as home page works only for ie on ff will add to bookmarks */
function setHP()
{

    if(Ext.isIE)
    {
	    document.body.style.behavior='url(#default#homepage)';
	    document.body.setHomePage('http://www.zazim.co.il/');
	}
	else
	{
	   
        var msg = "על מנת לשמור אתר זה במועדפים\n יש ללחוץ על\n CTRL + D";
        alert(msg);
        
	}
}	


function rmatch(val,data)
{
  var pat ="/" +  val +"\\((.*?)\\)/g";
  pat = eval(pat);
  
  var ret = data.match(pat)[0].replace(val+'(','');
  ret = ret.substr(0,ret.length-1);
  
  return ret;
}
function runRegEx(pattern,data)
{
    var ret = data.match(pattern);
    if(ret[1]) return ret[1];
    else
    return "";
    
}


functions = function()
{
    var list = ["\\n", "\\r", "'", "\"","\\(","\\)" ,",","\\<","\\>",":"];
    var rep = ["_newline", "_rnewline", "_geresh", "_marchaa","_open","_close","_psik","_tagopen" ,"_tclose","_nkodot"];
    var blist = ["\n", "\r", "'", "\"","(",")" ,",","<",">",":"];
    this.stringTojson = function(src)
    {
        
        if(typeof(src) != "string") return src;
        var ret = src;
        for(var i=0; i< list.length;i++)
        {
           
            var cmd = "ret = ret.replace(/" +list[i] +"/g,rep[i]);";
            eval(cmd); 
        }
        return ret;
    };
    this.stringFromjson = function(src)
    {
        if(typeof(src) != "string") return src;
        var ret = src;
        for(var i=0; i< list.length;i++)
        {
            var str = "/" + list[i] + "/g";
            var cmd = "ret = ret.replace(/" +rep[i] +"/g,blist[i]);";
            eval(cmd);
        }
        return ret;
};


};

var Js = new functions();



