//------------------------------------------------------
// Utilidades de propósito general
//------------------------------------------------------
var UTIL = new function(){
    this.isIE = window.ActiveXObject;
}
//------------------------------------------------------
// Envío de peticiones
//------------------------------------------------------
function XMLData(name){
    var name = name;
    var inner = "";
    
    function encode(text){
        var str = "";
        if(text==null||text.length==0)
            return str;       
        for(var i=0; i<text.length; i++){
            var c = text.charAt(i);
            switch(c){
                case '&':
                    str += "&amp;";
                    break;
                case '>':
                    str += "&gt;";
                    break;
                case '<':
                    str += "&lt;";
                    break;
                case '"':
                    str += "&quot;";
                    break;
                case '\'':
                    str += "&#39;";
                    break;
                default:
                    str += c;
            }
        }
        return str;
    }

    this.setValue = function(value){
        if(typeof value != "undefined" && value != null && value != ""){
            inner = encode(""+value);
        }
    }

    this.addData = function(name, value){
        var d = new XMLData(name);
        d.setValue(value);
        inner += d.toString();
        return value;
    }

    this.addXML = function(value){
        inner += value;
    }

    this.addField = function(id){
        var field = document.getElementById(id);       
        if(field == null) return null;
        if(field.tagName=="INPUT"){
            if(field.type=="hidden" || field.type=="text" || field.type=="password")
                return this.addData(id, field.value);
            if(field.type=="checkbox")
                return this.addData(id, field.checked?"true":"false");           
            return null;
        }
        if(field.tagName=="SELECT"){
            if(field.multiple){
                for(var i=0; i<options.length; i++){
                    var option = field.options[i];
                    if(option.selected)
                        this.addData(id, option.value!=""?option.value:option.text);
                }
                return "";
            }
            var option = field.options[field.options.selectedIndex];
            return this.addData(id, option.value!=""?option.value:option.text);
        }
        if(field.tagName=="TEXTAREA")
            return this.addData(id, field.value);
        return this.addData(field.innerHTML);
    }

    this.toString = function(){
        return inner==""?"<"+name+"/>":"<"+name+">"+inner+"</"+name+">";
    }

    this.clear = function(){
        inner = "";
    }
}
var DEBUG=false;
var ACTION = new function(){
    var data = new XMLData("data");
    var target = "";
    var formId = "defaultForm";

    this.addData = function(name,value){
        data.addData(name, value);
    }

    this.addField = function(id){
        return data.addField(id);
    }

    this.addXML = function(value){
        data.addXML(value);
    }

    this.setTarget = function(value){
        target = value;
    }

    this.setForm = function(value){
        formId = value;
    }
    this.clear = function(){     
        data.clear();
    }    
    this.send = function(action){
        var d= new Date();
        data.addData("val",""+d.getTime());
        if(DEBUG)
            alert("Data: " +data.toString() + "\nTarget: "+target + "\nAction: "+action);        
        var form = document.getElementById(formId);
        formId = "defaultForm";
        form.xmldata.value = data.toString();
        form.action = action;
        form.method = "POST";
        form.target = target;
        target = "";
        form.submit();
        data.clear();
    }
}

