function Table(rows_AS_Integer, cols_AS_Integer, id_AS_String){
    //if(rows_AS_Integer<0 || cols_AS_Integer<0)return;
    
    this.el = document.createElement('TABLE');
    this.el.id = id_AS_String || misc.newId('tbl');
    
    for(var r=0; r<rows_AS_Integer; r++){
        var tr = this.el.insertRow(-1);
        for(var c=0; c<cols_AS_Integer; c++)tr.insertCell(-1);
    };
    
    with(this.el){
        cellSpacing = 0;
        cellPadding = 0;
        border = 0;
        width = '100%'
    };
    
    return this.el;
};

function Div(id_AS_String){
    this.el = document.createElement('DIV');
    this.el.id = misc.newId(id_AS_String || 'div');
    return this.el;
};

function Button(id_AS_String){
    this.el = document.createElement('BUTTON');
    this.el.id = misc.newId(id_AS_String || 'btn');
    return this.el;
};

function Iframe(name_AS_String, id_AS_String){
    var id = id_AS_String || misc.newId('ifrm');
    var nm = name_AS_String || id;
    
    if(_isIE)this.el = document.createElement('<IFRAME name="'+ nm +'"></iframe>');
    else{
        this.el = document.createElement('IFRAME');
        this.el.name = nm;
    };
    
    this.el.id = id;
    return this.el;
};

function Image(id_AS_String){
    this.el = document.createElement('IMG');
    this.el.id = misc.newId(id_AS_String || 'img');
    return this.el;
};

function Select(id_AS_String, val_AS_Array){
    this.el = document.createElement('SELECT');
    this.el.id = misc.newId(id_AS_String || 'sel');
    if(val_AS_Array){
        this.arr = val_AS_Array;
        for(var i=0, l=this.arr.length; i<l; i+=2){
            this.el.options[this.el.options.length]=new Option(this.arr[i], this.arr[i+1]);
        };
    };
    return this.el;
};

/*function Label(id_AS_String, text, for_AS_Obj){
    this.el = document.createElement('LABEL');
    this.el.id = misc.newId(id_AS_String || 'lbl');
    
    if(text)misc.setInnerText(this.el, text);
    if(for_AS_Obj)this.el.htmlFor = for_AS_Obj;
    
    return this.el;
};*/
function JScript(){
  var u, h = document.getElementsByTagName("HEAD")[0], s = document.createElement('SCRIPT');
  s.type = 'text/javascript';
  
  this.Load = function(url){
    var q = url.indexOf('?');
    
    if(q>-1)q='&';
    else q='?';
    
    u = url;
    s.src = (u+q+'s='+misc.newId('s'));
    h.appendChild(s);
  };
  
  this.Unload = function(){
    if(s.parentNode)h.removeChild(s);
    s = '';
  };
  
  this.Reload = function(){
    this.Unload();
    s = document.createElement('SCRIPT');
    s.type = 'text/javascript';
    s.src = (u+'?s='+misc.newId('s'));
    h.appendChild(s);
  };
};

function Label(text_AS_String, for_AS_Obj, id_AS_String){
    this.el = document.createElement('LABEL');
    this.el.id = misc.newId(id_AS_String || 'lbl');
    
    if(text_AS_String)misc.setInnerText(this.el, text_AS_String);
    if(for_AS_Obj){
        var el = for_AS_Obj;
        var id = el.id;
        if(!id)el.id = misc.newId('el');
        
        this.el.htmlFor = el.id;
    };
    
    return this.el;
};

function Input(id_AS_String){
    this.el = document.createElement('INPUT');
    this.el.id = misc.newId(id_AS_String || 'inp');
    return this.el;
};

function Anchor(id_AS_String){
    this.el = document.createElement('A');
    this.el.id = misc.newId(id_AS_String || 'anchor');
    return this.el;
};

function RadioGroup(name_AS_String, array_Of_Objects){
    //Syntax
    //var radios = new RadioGroup('andOr', [{label:'AND',value:'and',checked:true},
    //                                      {label:'OR',value:'or'}]);
    
    if(!array_Of_Objects || !name_AS_String)return;
    if(array_Of_Objects.length<2)return;
    
    this.arrRadioGroup = [];
    var arr = array_Of_Objects;
    
    for(var i=0, l=arr.length; i<l; i++){
        var el;
        try {
            //this is how you do for IE if you wish to apply the name attribute of any tag.
            //damnnnnn....IE
            var htmlCode = '<input name="'+ name_AS_String +'" value="'+ arr[i].value +'" type="radio" id="'+ misc.newId('radio') + (arr[i].checked?'" checked="checked"':'"') +' />';
            el = document.createElement(htmlCode);
        } catch (e) {
            el = new Input('radio');
            el.type = 'radio';
            el.name = name_AS_String;
            el.value = arr[i].value;
            if(arr[i].checked)el.checked = true;
        };
        
        el.onfocus = function(){
            this.blur();
        };
        
        var lbl = new Label(arr[i].label, el.id);
        //lbl.htmlFor = el.id;
        //lbl.innerHTML = arr[i].label;
        
        this.arrRadioGroup[i] = [el, lbl];
    };
    return this.arrRadioGroup;
};

function CheckBox(name_value_checked_AS_Object){
    //var chkBox = new CheckBox({name:'chk_filter', value:'off', checked:true});
    var el, obj = name_value_checked_AS_Object;
    try {
        var htmlCode = '<input name="'+ obj.name +'" value="'+ obj.value +'" type="checkbox" id="'+ misc.newId('chk') + (obj.checked?'" checked':'"') +' />';
        
        el = document.createElement(htmlCode);
    } catch (e) {
        el = new Input('chk');
        el.checked = obj.checked;
        el.type = 'checkbox';
        el.name = obj.name;
        el.value = obj.value;
        
        //Debug.print(obj.checked +' - '+ el.checked, 1);
    };
    /*el.onmouseup = function(){
        alert('1');
    }*/
    return el;
};

