﻿function IsNumeric(sText) {

    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;

    try {

        for (i = 0; i < sText.length && IsNumber == true; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) == -1) { IsNumber = false; }
        }

        return IsNumber;

    } catch (ex) { return false; }

}

function request(name,src) { return (Request(name,src)); }
function Request(name,src) {

	if(!src){src = window.location.href;}

    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(src);
    if (results == null)
        return "";
    else
        return results[1];
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function genRamdomNumber(max) {
    return Math.floor(Math.random() * (max+1));
}

/*encodes a string clinet-side. HttpDecode (below) can decode it, as well as HttpUtility.UrlDecode server-side.*/
function HttpEncode(input) { return encodeURIComponent(input); };

/*Decodes a string encoded in .NET with HttpUtility.UrlEncode*/
function HttpDecode(input) {
    try {
	    var re = new RegExp('\\+', 'g');
	    input = input.replace(re, ' ');
	    return decodeURIComponent(input);
    } catch (ex) {
	    //if(debug){throw ex;}
	    return '';
    }
};

function appendClass(el, cls) {
    if (el.className.indexOf(cls) == -1) {
        el.className = el.className + ' ' + cls;
    };
};

function removeClass(el, cls) {
    var c = el.className.replace(cls, '');
    c = c.replace('  ', ' ');
    el.className = c;
};

var cloneObject = function(o) {
    if (!o || 'object' !== typeof o) {
        return o;
    }
    var c = '[object Array]' === Object.prototype.toString.call(o) ? [] : {};
    var p, v;
    for (p in o) {
        if (o.hasOwnProperty(p)) {
            v = o[p];
            if (v && 'object' === typeof v) {
                c[p] = cloneObject(v);
            }
            else {
                c[p] = v;
            }
        }
    }
    return c;
};