function URLFriendlyEncode(str) {
    var output = '';
    var x = 0;
    str = str.toString();
    var regex = /(^[a-zA-Z0-9_.]*)/;
    while (x < str.length) {
        var match = regex.exec(str.substr(x));
        if (match != null && match.length > 1 && match[1] != '') {
            output += match[1];
            x += match[1].length;
        } else {
            if (str[x] == ' ')
                output += '-'; // ' ' are treated as -
            else {
                var charCode = str.charCodeAt(x);
                var hexVal = charCode.toString(16);
                output += '%' + (hexVal.length < 2 ? '0' : '') + hexVal.toUpperCase();
            }
            x++;
        }
    }
    return output;
}

function URLEncode(str) {
    var output = '';
    var x = 0;
    str = str.toString();
    var regex = /(^[a-zA-Z0-9_.]*)/;
    while (x < str.length) {
        var match = regex.exec(str.substr(x));
        if (match != null && match.length > 1 && match[1] != '') {
            output += match[1];
            x += match[1].length;
        } else {
            if (str[x] == ' ')
                output += '+';
            else {
                var charCode = str.charCodeAt(x);
                var hexVal = charCode.toString(16);
                output += '%' + (hexVal.length < 2 ? '0' : '') + hexVal.toUpperCase();
            }
            x++;
        }
    }
    return output;
}

function URLDecode(str) {
    var output = str;
    var binVal, thisString;
    var myregexp = /(%[^%]{2})/;
    while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
        binVal = parseInt(match[1].substr(1), 16);
        thisString = String.fromCharCode(binVal);
        output = output.replace(match[1], thisString);
    }
    return output;
}

function validateExtension(fileName) {
	return /\.(doc|docx|pdf|wpf|txt|rtf|htm|html)$/i.test(fileName);
}

function validatePassword(source, args) {
	args.IsValid = args.Value.search(/[a-zA-Z]/) >= 0 && args.Value.search(/[0-9]/g) >= 0;
}

function show(e, s) {
	if (s) {
		if (e.style.removeAttribute) {
			e.style.removeAttribute("display");
		}
		else {
			e.style.removeProperty("display");
		}
	}
	else {
		e.style.display = 'none';
	}
	e.style.visibility = s? 'visible' : 'hidden';
}