Utils = {};

Utils.errorHandler = function(msg,url,line)
{
    var sError = "Error: " + msg + "\n";
    sError += "URL: " + url + "\n";
    sError += "Line Number: " + line + "\n"; 
    alert( sError )
    
    return true;
}

Utils.includeJS = function(arrFilepaths)
{
    for( var i=0; i < arrFilepaths.length; i++ )
    {
        document.write('\n<script type="text/javascript" src="' + arrFilepaths[i] + '"></script>');
    }
}

Utils.includeCSS = function(arrFilepaths)
{
    for( var i=0; i < arrFilepaths.length; i++ )
    {
        document.write('\n<link href="' + arrFilepaths[i] + '" rel="stylesheet" type="text/css" />');
    }
}

Utils.getElement = function(id)
{
    return document.getElementById(id);
}

Utils.debug = function(val)
{
    if( this.getElement('debug') == null )
    {
        return;
    }
    this.getElement('debug').innerHTML += val + "</br>";
}

Utils.clearDebug = function()
{
    if( this.getElement('debug') == null )
    {
        return;
    }
    this.getElement('debug').innerHTML = "";
}

Utils.toggleVisiblity = function(id)
{
    if( this.getElement(id) == null )
    {
        return;
    }

    if( this.getElement(id).style.visibility == 'visible' )
    {
      this.hideElement(id);
    }
    else
    {
      this.showElement(id);
    }
}

Utils.hideElement = function(id)
{
    if( this.getElement(id) == null )
    {
        return;
    }
    this.getElement(id).style.visibility = 'hidden';
}

Utils.showElement = function(id)
{
    if( this.getElement(id) == null )
    {
        return;
    }
    
    this.getElement(id).style.visibility = 'visible';
}

Utils.createElement = function(e,obj)
{
    var element = document.createElement(e);
    
    for(prop in obj)
    {
        element[prop] = obj[prop];
    }
    
    return element
}

Utils.appendChild = function()
{
    if( this.appendChild.arguments.length > 1 )
    {
        var a = this.appendChild.arguments[0];
        
        for( i=1; i < this.appendChild.arguments.length; i++)
        {
            if( arguments[i] )
            {
                a.appendChild(this.appendChild.arguments[i]);
            }
        }
        return a;
    }
    else
    {
        return null;
    }
}

Utils.removeElement = function(id)
{
    document.removeElement(id);
}

Utils.removeChildren = function(node)
{
    if( node == null )
    {
        return;
    }
    
    while( node.hasChildNode )
    {
        node.removeChild(node.firstChild);
    }
}

Utils.addListener = function(obj,eventName,listener)
{
    if( obj.attachEvent )
    {
        obj.attachEvent("on" + eventName,listener);
    }
    else if(obj.addEventListener)
    {
        obj.attachEventListener(eventName,listener,false);
    }
    else
    {
        return false;
    }
    return true;
}

Utils.removeListener = function(obj,eventName,listener)
{
    if( obj.detachEvent )
    {
        obj.detachEvent("on" + eventName,listener);
    }
    else if(obj.addEventListener)
    {
        obj.removeEventListener(eventName,listener,false);
    }
    else
    {
        return false;
    }
    return true;
}

Utils.changeOpacity = function(opacity,id)
{
    var object = Utils.getElement(id).style;
    
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.Khtmlopacity = opacity / 100;
    object.filter = "alpha(opacity=" + opacity + ")";
    
}

Utils.RemoveNonAlpha = function(sValue)
{
    return( '' );
}

Utils.IsValidName = function(sValue)
{
    var pattern = /[^a-zA-Z-\s]/ // ����������������������������]/;
    var sTemp = sValue.replace(pattern,'');

    return( sTemp.length == sValue.length );
}

Utils.SaveIsValidName = function(sValue)
{
    var pattern = /[^a-zA-Z-]/;
    var sTemp = sValue.replace(pattern,"");

    return( sTemp.length == sValue.length );
}

Utils.IsAlphabetic = function(sValue)
{
    var pattern = /[^a-zA-Z]/;
    var sTemp = sValue.replace(pattern,'');

    return( sTemp.length == sValue.length );
}

Utils.IsNumeric = function(sValue)
{
    var pattern = /[^0-9]/;
    var sTemp = sValue.replace(pattern,'');

    return( sTemp.length == sValue.length );
}

Utils.IsDate = function(sValue)
{
    return( '' );
}

Utils.SetInnerHtml = function(id,sVal)
{
    this.showElement(id);
    
    this.getElement(id).innerHTML = sVal;
}

Utils.strTrim = function(sValue) 
{
    return( sValue.replace(/^\s+|\s+$/g, '') );
}

Utils.replaceAll = function(sSource, sFrom, sTo) 
{
    var sReturn = sSource;
    var i = sReturn.indexOf(sFrom);

    while (i > -1) 
    {
        sReturn = sReturn.replace(sFrom, sTo);
        i = sReturn.indexOf(sFrom);
    }

    return (sReturn);
}
