    function ApplicationPath()
    {
        return window.location.pathname;
    }

    function QueryString(key)
    {
        var value = null;
        for (var i=0;i<QueryString.keys.length;i++)
        {
            if (QueryString.keys[i]==key)
            {
                value = QueryString.values[i];
                break;
            }
        }
        return value;
    }
    QueryString.keys = new Array();
    QueryString.values = new Array();

    function QueryString_Parse()
    {
        var query = window.location.search.substring(1);
        var pairs = query.split("&");
    	
        for (var i=0;i<pairs.length;i++)
        {
            var pos = pairs[i].indexOf('=');
            if (pos >= 0)
            {
                var argname = pairs[i].substring(0,pos);
                var value = pairs[i].substring(pos+1);
                QueryString.keys[QueryString.keys.length] = argname;
                QueryString.values[QueryString.values.length] = value;		
            }
        }

    }
    QueryString_Parse();
    
    function ChangeQueryStringValue(action,qsname,qsvalue)
    {
    	if (action.indexOf('?') == -1 )	 //If no querystring present
    		return (action+"?"+qsname+"="+UrlEncode(qsvalue)); //x.asp?Name=Peter+Paul
    	else
    	{		
    		if ( (action.indexOf("?"+qsname+"=") == -1 ) && (action.indexOf("&"+qsname+"=") == -1 ) ) //Passed querystring not already present		
    		{
    			return (action+"&"+qsname+"="+UrlEncode(qsvalue)); //x.asp?Age=25&Name=Peter+Paul;
    		}
    		else //Passed Querystring already present, replace it no matter if it is ?Name= or &Name=
    		{
    			var replaceQSPrefix=(action.indexOf("?"+qsname+"=")==-1)?"&"+qsname+"=":"?"+qsname+"=";
    			var replaceQSSuffix=""; //This will be John in case of ?Name=John or &Name=John 
    			startpos=action.indexOf(replaceQSPrefix);
    			
    			for (a=(startpos+replaceQSPrefix.length);a<action.length;a++)
    			{
    				if ( action.charAt(a)=='&' ) //Next querystring beginning
    					break;
    				else
    					replaceQSSuffix += action.charAt(a);
    			}
        			
    			newaction=action.replace(replaceQSPrefix+replaceQSSuffix,replaceQSPrefix+UrlEncode(qsvalue));
    			return newaction;
    		}	
        }		
    }

    function UrlEncode(text) 
    {		
        	text=ReplaceAll(text, "?", "%3F");
        	text=ReplaceAll(text, "=", "%3D");
        	text=ReplaceAll(text, "&", "%26");
        	text=ReplaceAll(text, " ", "+");
        	text=ReplaceAll(text, ",", "%2c");	
        	
        	return text;
    }

    //Replace all given string from a string
    //     
    function ReplaceAll(varb, replaceThis, replaceBy)
    {	
        	newvarbarray=varb.split(replaceThis);
        	newvarb=newvarbarray.join(replaceBy);	
        	return newvarb;
     }

    // Get the debugAccountDomin string from the url
     function DebugAccountDomain() {
         var debugAccount = QueryString("debugaccountdomain");
         if (debugAccount != null) {
             debugAccount = "&debugaccountdomain=" + debugAccount;
         }
         else {
             debugAccount = '';
         }
         
         return debugAccount;
     }

    // Add ellipsis (...) for the inputString
     function ellipsis(inputString, maxlen) {
         if (inputString.length <= maxlen)
             return inputString;
         else if (maxlen < 4)
             return inputString.substring(0, maxlen);
         else
             return inputString.substring(0, maxlen - 3) + "...";
     }

     function getParameterByName(name) {
         name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
         var regexS = "[\\?&]" + name + "=([^&#]*)";
         var regex = new RegExp(regexS);
         var results = regex.exec(window.location.href);
         if (results == null)
             return "";
         else
             return results[1];
     }

     var Browser = {
         Version: function () {
             var version = 999; // we assume a sane browser
             if (navigator.appVersion.indexOf("MSIE") != -1)
             // bah, IE again, lets downgrade version number
                 version = parseFloat(navigator.appVersion.split("MSIE")[1]);
             return version;
         }
     }
     
     function validDate(dateStr) {
        var result = true;
        var regExp = /(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20[0-9]{2})/
        var regex = new RegExp(regExp);

        var match = regex.exec(dateStr);
        if (match != null) {
            if (match[1] == "02") {
                if (match[2] == 29) {
                    if (match[3] % 4 != 0 || match[3] % 100 == 0 && match[3] % 400 != 0) {
                        result = false;
                    }
                }
                else if (match[2] > 28) {
                    return;
                }
            }
            else if (match[1] == 4 || match[1] == 6 || match[1] == 9 || match[1] == 11) {
                if (match[2] > 30) {
                    result = false;
                }
            }
            else {
                if (match[2] > 31) {
                    $('#spanErrDate').show();
                    result = false;
                }
            }
        }
        else {
            result = false;
        }
        return result;
    }



