﻿// JScript File

/// Selects or deselects all checkboxes in a given form based on their id.
   /// frm - The form that contains the checkboxes
   /// checkBoxId - A substring that the ids of all the checkboxes should share 
   function selectAll(frm, checkBoxId, check)
    {
        for(var i = 0 ; i < frm.elements.length ; i++)
        {
            if (frm.elements[i].type == 'checkbox' && (frm.elements[i].id.match(checkBoxId) != null))
            {
               frm.elements[i].checked = check;
            }
        }
    }
    
    function showMessageOverlay(message, validationGroup, showComfirmationMessage, confirmationMessageText)
    {
        if (showComfirmationMessage)
        {
            confirmationMessageText = confirmationMessageText || "Are you sure?";
            if (!confirm(confirmationMessageText)) 
                return false;  
        }
    
        //Make sure the page is valid
        var pageIsValid = performValidation(validationGroup);
        if (!pageIsValid)
            return false;

        message = message || "Loading ...";
        var outerPane = document.getElementById('FreezePane');
        var innerPane = document.getElementById('InnerFreezePane');
        if (outerPane) 
        {
            outerPane.className = 'FreezePaneOn';
        }
        if (innerPane) innerPane.innerHTML = message;
        return true;
    }
    
    function resizeParentFrame()
    {
        var frame = parent.document.getElementById("iFrameContent");
        if (frame)
        {
            if (typeof parent.resizeIframe == "function") {parent.resizeIframe(frame);} 
        }  
    }


    function highlightInvalidFields(validationGroup, highlightColor, defaultColor)
    {
   
        if (typeof(Page_Validators) != "undefined")  
        {
            var previousValidatorControl = "";
            for(var i = 0 ; i < Page_Validators.length ; i++)
            {
                if (Page_Validators[i].validationGroup == validationGroup)
                {
                    var controlToValidate = Page_Validators[i].controltovalidate;
                    if (typeof(controlToValidate) == "string" && controlToValidate != previousValidatorControl)
                    {
                        var field = document.getElementById(controlToValidate);
                        if (field)
                        {
                        
                            ValidatorValidate(Page_Validators[i]);
                            if (!Page_Validators[i].isvalid)
                                field.style.backgroundColor = highlightColor;
                            else
                                field.style.backgroundColor = defaultColor;
                        }
                        previousValidatorControl = controlToValidate;
                    }  
                }                      
            }
        }    
    }
   
    function performValidation(validationGroup)
    {
        if (validationGroup)
        {
            if (validationGroup != '')
            {
                if (typeof(Page_Validators) != "undefined")  
                {
                    for(var i = 0 ; i < Page_Validators.length ; i++)
                    {
                        if (Page_Validators[i].validationGroup == validationGroup)
                        {
                            ValidatorValidate(Page_Validators[i]);
                            if (!Page_Validators[i].isvalid)
                                return false;
                        }
                    }
                }   
            }
        } 
        return true;
    }
    
    function hideMessageOverlay()
    {
      var outerPane = document.getElementById('FreezePane');
      if (outerPane) outerPane.className = 'FreezePaneOff';
    }

    function getScrollTop()
    {
        var scrollTop = document.body.scrollTop;

        if (scrollTop == 0)
        {
            if (window.pageYOffset)
                scrollTop = window.pageYOffset;
            else
                scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
        }
        return scrollTop;
    }
    
    function getDocHeight() {
        var D = document;
        return Math.max(
            Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
            Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
            Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
    }
    
    function Querystring()
    {
	    // get the query string, ignore the ? at the front.
	    var querystring=location.search.substring(1,location.search.length);

	    // parse out name/value pairs separated via &
	    var args = querystring.split('&');

	    // split out each name = value pair
	    for (var i=0;i<args.length;i++)
	    {
		    var pair = args[i].split('=');

		    // Fix broken unescaping
		    temp = unescape(pair[0]).split('+');
		    name = temp.join(' ');

		    temp = unescape(pair[1]).split('+');
		    value = temp.join(' ');
		    this[name]=value;
	    }

	    this.get=Querystring_get;
    }



    function Querystring_get(strKey,strDefault)
    {
	    var value=this[strKey];

	    if (value==null)
	    {
		    value=strDefault;
	    }
	    return value;
    }
    
    
    function checkTextBoxMaxLength(e, el, maxLength) 
    {
        switch(e.keyCode) 
        {
            case 37: // left
                return true;
            case 38: // up
                return true;
            case 39: // right
                return true;
            case 40: // down
                return true;
            case 8: // backspace
                return true;
            case 46: // delete
                return true;
            case 27: // escape
                el.value='';
                return true;
        }
        return (el.value.length < maxLength);
    }
    
    function isArray(obj) 
    {
        //returns true is it is an array
        return obj.constructor.toString().indexOf('Array') != -1;
    }

    var safeConsole = {
        
        // console wrapper
        debug: true, // global debug on|off
        alertInstead: false, // may want to just drop, or alert instead
        log: function() {
            
            if (!safeConsole.debug) return false;
            if (typeof console == 'object' && typeof console.log != "undefined")
                try {
                    console.log.apply(this, arguments); // safari's console.log can't accept scope...
                } catch(e) {
                    // so we loop instead.
                    for (var i = 0, l = arguments.length; i < l; i++)
                        console.log(arguments[i]);
                }
            else {
                if (safeConsole.alertInstead) {
                    var result = "";
                    for (var i = 0, l = arguments.length; i < l; i++)
                        result += arguments[i] + " ("+typeof arguments[i]+") ";

                    alert(result);
                }
            }
        }
    } // end console wrapper.
    
    function UrlEncode(str) 
    {
    	 var encodedHtml = escape(str);
    	 encodedHtml = encodedHtml.replace(/\//g,"%2F");
    	 encodedHtml = encodedHtml.replace(/\?/g,"%3F");
    	 encodedHtml = encodedHtml.replace(/=/g,"%3D");
    	 encodedHtml = encodedHtml.replace(/&/g,"%26");
    	 encodedHtml = encodedHtml.replace(/@/g,"%40");
    	 return encodedHtml;
    }
    
    function UrlDecode(str) {
        return unescape(str); 
    }
    
    function getRandomString(length) 
    {
	    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	    var string_length = length;
	    var randomstring = '';
	    for (var i=0; i < string_length; i++)
	    {
		    var rnum = Math.floor(Math.random() * chars.length);
		    randomstring += chars.substring(rnum,rnum+1);
		}
		return randomstring;
    }

