function validateInput(obj, type) {
    var tmp;
    
	switch(type)
	{
	    case "DisableSpecialChars":
	        {
	            //Disable chars !&()_+~`,?<>;'":#^*/\$|%=
	            
                tmp = obj.value.replace(/[\!\&\(\)\_\+\~\`\,\?\<\>\;\'\"\:\#\^\*\/\\\$\|\%\|\=]/g, "");
	            break;
	        }
		case "Password": //is this required?
		{
			//Disable chars <>'

		    tmp = obj.value.replace(/[\<\>\']/g, "");
			break;
		}
		case "Mobile":
		{
			//Disable all chars other than +0-9 (and space)

		    tmp = obj.value.replace(/[^+ 0-9]/g, "");
			break;
		}
		case "0-9":
		{
			//Disable all chars other than 0-9

		    tmp = obj.value.replace(/\D/g, "");
			break;
		}
		case "A-z0-9":
		{
			//Disable all chars other than A-z0-9

		    tmp = obj.value.replace(/[^a-zA-Z0-9]/g, '');
			break;
		}
		case "A-z0-9.":
		{
			//Disable all chars other than A-z0-9 and .

		    tmp = obj.value.replace(/[^a-zA-Z0-9.]/g, '');
			break;
        }
        case "ServerName":
        {
            //Invalid chars for a Server Name ! @ # $ % ^ & ( ) + , ? < > ; " * / \ | =
            tmp = obj.value.replace(/[\(\)\+\,\?\<\>\;\"\*\/\\\|\=\!\@\#\$\%\^\&\~\_\'\`]/g, "");
            break;
        }
        case "Username":
        {
            //Invalid chars for a username ( ) + , ? < > ; " : * / \ | =
            //Taken from - http://technet.microsoft.com/en-us/library/cc975532.aspx

            tmp = obj.value.replace(/[\(\)\+\,\?\<\>\;\"\:\*\/\\\|\=]/g, "");
            break;
        }
    }

    if (obj.value != tmp)
        obj.value = tmp;
}

function AskToDiscardChanges(thebutton, msg) 
{
    if (confirm(msg)) {
        document.getElementById('HiddenSaveSettings').value = "true";
        __doPostBack('Logout', 'Logout');
    }
    else {
        //Keep Button Enabled
        document.getElementById('BtnUpdate').disabled = false;
    }
}

function AskToDowloadNewVer(msg, link) 
{
    if( confirm(msg))
    {
        location.href = link;
    }
}

function NotifyMsg(msg) 
{
    alert(msg);
}
               
function confirm_delete(msg)
{
    lastclick = "BtnLogout";
    return confirm(msg);
}

function DisableField(checkbox, field)
{
    var item = document.getElementById(field);
    if(item)
        item.disabled = !checkbox.checked;
}

function setDirty(obj, validationType)
{
    document.getElementById('BtnUpdate').disabled= false;
    validateInput(obj, validationType);
}

function LinkToOnlineManual()
{
    window.open('http://www.2x.com/virtualdesktop/ap_manual/2XAccessPortal.html');
}

function DisableEnablePanels(el, state) {
    try {
        el.disabled = state ? true : false;
		
		if (el.childNodes && el.childNodes.length > 0) {
        for (var x = 0; x < el.childNodes.length; x++) {
            DisableEnablePanels(el.childNodes[x], state);
        }
    }
    }
    catch (E) { }

    
}

function DisableEnableLinks(el, state) {
    objLinks = el.getElementsByTagName("a");
    for (i = 0; i < objLinks.length; i++) {
        try {
            objLinks[i].disabled = state;

            if (state == true) {
                objLinks[i].style.color = "#ccc";
            }
            else {
                objLinks[i].style.color = "#bb0c0c";
            }

            //link with onclick
            if (objLinks[i].onclick && state) {
                objLinks[i].onclick = new Function("return false;" + objLinks[i].onclick.toString().getFuncBody());
            }
            //link without onclick
            else if (state) {
                objLinks[i].onclick = function() { return false; }
            }
            //remove return false with link without onclick
            else if (!state && objLinks[i].onclick.toString().indexOf("function(){return false;}") != -1) {
                objLinks[i].onclick = null;
            }
            //remove return false link with onclick
            else if (!state && objLinks[i].onclick.toString().indexOf("return false;") != -1) {
                strClick = objLinks[i].onclick.toString().getFuncBody().replace("return false;", "")
                objLinks[i].onclick = new Function(strClick);
            }
        }
        catch (E) { }
    }
}

String.prototype.getFuncBody = function() {
    var str = this.toString();
    str = str.replace(/[^{]+{/, "");
    str = str.substring(0, str.length - 1);
    str = str.replace(/\n/gi, "");
    if (!str.match(/\(.*\)/gi)) str += ")";
    return str;
}
