﻿

function WAF_CreateClientRequestFromObject(object){
    if (object == null) return new WAF_ClientRequest();
    if(object.Type=="WAF_ClientRequest") return object;
    var cr = new WAF_ClientRequest();
    if(object==null) return cr;
    for(var key in object){
        var value=object[key];
        cr.Add(key, value);
    }
    return cr;
}
function WAF_ClientRequest(_key){
    this.Type ="WAF_ClientRequest";
    if(_key==null) _key="CRO";
    var _params = new Array();
    this.AddCustomType = function(name, value, datatype){
        if(datatype==null) datatype="STRING"; 
        _params.push("&"); 
        _params.push(_key);
        _params.push("_");
        _params.push(datatype);
        _params.push("_");
        _params.push(WAF.UrlEncode(name));
        _params.push("=");
        _params.push(WAF.UrlEncode(value));
    }
    this.AddString = function(name, value){ this.AddCustomType(name,value,"STRING");}
    this.AddStringArray = function(name, value){ this.AddCustomType(name, WAF.GetSafeStringFromArray(value),"STRINGARRAY");}
    this.AddIntArray = function(name, value){ this.AddCustomType(name, WAF.GetSafeStringFromArray(value),"INTARRAY");}
    this.AddBool = function(name, value){ this.AddCustomType(name,value?"yes":"no","BOOL");}
    this.AddDropTargetPosition = function(name, value){ this.AddCustomType(name,value,"DROPTARGETPOSTION");}
    this.AddDialogueIcon= function(name, value){ this.AddCustomType(name,value,"DIALOGUEICON");}
    this.AddUIButtons= function(name, value){ this.AddCustomType(name,value,"UIBUTTONS");} 
    this.AddDropAction = function(name, value){ this.AddCustomType(name,value,"DROPACTION");}        
    this.AddInt = function(name, value){ this.AddCustomType(name,value,"INT");}
    this.toString = function(){ return _params.join("");}
    this.GetKey=function(){return _key;}
    this.Add = function(name, value){
        switch(type.of(value)){
            case "null": break;
            case "undefined": break;
            case "nt": break;
            case "function": break;
            case "string": this.AddString(name,value); break;
            case "array":  this.AddStringArray(name, value); break;
            case "boolean": this.AddBool(name, value); break;
            case "date": break;
            case "html": break;
            case "number": this.AddInt(name,value); break;
            case "object": break;
            case "regexp": break;
            default: this.AddString(name,value);  break;
        }
    }

}

function WW(elementId,current,min,delta){
    var element = document.getElementById(elementId);
    if(element!=null){
        element.style.width=((current-(min+delta)>delta) ? Math.floor(current-delta):(min+delta))+"px";
    }
}
function WH(elementId,current,min,delta){
    var element = document.getElementById(elementId);
    if(element!=null){
        element.style.height=((current-(min+delta)>delta) ? Math.floor(current-delta):(min+delta))+"px";
    }
}


var is={
    Null:function(a){return a===null;},
    Undefined:function(a){return a===undefined;},
    nt:function(a){return(a===null||a===undefined);},
    Function:function(a){return(typeof(a)==='function')?a.constructor.toString().match(/Function/)!==null:false;},
    String:function(a){return(typeof(a)==='string')?true:(typeof(a)==='object')?a.constructor.toString().match(/string/i)!==null:false;},
    Array:function(a){return(typeof(a)==='object')?a.constructor.toString().match(/array/i)!==null||a.length!==undefined:false;},
    Boolean:function(a){return(typeof(a)==='boolean')?true:(typeof(a)==='object')?a.constructor.toString().match(/boolean/i)!==null:false;},
    Date:function(a){return(typeof(a)==='date')?true:(typeof(a)==='object')?a.constructor.toString().match(/date/i)!==null:false;},
    HTML:function(a){return(typeof(a)==='object')?a.constructor.toString().match(/html/i)!==null:false;},
    Number:function(a){return(typeof(a)==='number')?true:(typeof(a)==='object')?a.constructor.toString().match(/Number/)!==null:false;},
    Object:function(a){return(typeof(a)==='object')?a.constructor.toString().match(/object/i)!==null:false;},
    RegExp:function(a){return(typeof(a)==='function')?a.constructor.toString().match(/regexp/i)!==null:false;}
};

var type={
	of:function(a){
		for(var i in is){
			if(is[i](a)){
				return i.toLowerCase();
			}
		}
	}
};
