﻿/**
*  
*   " "     (ASCII 32 (0x20)),  a space. 
*   "\t"    (ASCII 9 (0x09)),   a tab. 
*   "\n"    (ASCII 10 (0x0A)),  a new line (line feed). 
*   "\r"    (ASCII 13 (0x0D)),  a carriage return. 
*   "\0"    (ASCII 0 (0x00)),   a NUL-byte. 
*   "\x0B"  (ASCII 11 (0x0B)),  a vertical tab.
*
**/

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"), "");
}

/**
*
*  isDate(year, month, date) function
*
*  By Daniel Minnaar
*
**/

function isDate(year, month, date)
{        
    var dateToCheck = new Date(year, month, date);                                                               
                                                                                                                                                                                                                                                                                                               
    if (dateToCheck.getDate() != date || dateToCheck.getMonth() != month || dateToCheck.getFullYear() != year)
        return false;
    else
        return true;                                                                
}

/**
*
*  ajax() class
*
*  By Daniel Minnaar
*
**/

var ajax = function()
    {
    }

/**
*
*  serialize(frm) function
*
*  By Daniel Minnaar
*
**/

function serialize(frm) 
{
    var queryString = "";
    
    var els = frm.elements;

    this.addField = function(name, value) 
        { 
            if (queryString.length > 0)  
                queryString += "&";	                

            queryString += encodeURIComponent(name) + "=" + encodeURIComponent(value);
        };
        
    for (var i = 0; i < els.length; i++) 
    {
        var el = els[i];

        if (!el.disabled) 
        {
            switch (el.type) 
            {
                case 'text': 
                case 'password': 
                case 'hidden': 
                case 'textarea': 
                    this.addField(el.id, el.value);
                    
                    break;
                case 'select-one':
                    if (el.selectedIndex >= 0) 					                    
	                    this.addField(el.id, el.options[el.selectedIndex].value);

                    break;
                case 'select-multiple':
                    for (var j = 0; j < el.options.length; j++) 
                    {
	                    if (el.options[j].selected) 
	                        this.addField(el.id, el.options[j].value);
	                }

                    break;
                case 'checkbox': 
                case 'radio':
                    if (el.checked) 
	                    this.addField(el.id,el.value);
    
                    break;
            }
        }
    }

    return queryString;
}
