﻿




// -------- string functions --------------------------------------

function trim( value) {
    value = value.replace(/^\s+/,'');
    value = value.replace(/\s+$/,'');
    return( value);
}

String.prototype.trim = function() {    return( this.replace(/^\s+|\s+$/g,"")); }
String.prototype.ltrim = function() {   return( this.replace(/^\s+/g,"")); }
String.prototype.rtrim = function() {   return( this.replace(/\s+$/g,"")); }


// -------- input functions ---------------------------------------

function ClearInputSelectOptions( strId) {
    
    var selectObj = GetObjectById( strId);
    var selectParentNode = selectObj.parentNode;
    var newSelectObj = selectObj.cloneNode( false);  // make a shallow copy
    
    selectParentNode.replaceChild( newSelectObj, selectObj);
    
    return( newSelectObj);
}


// --------  ------------------------------------------------------

function ToggleObjectCssClass( strId, strFirstClassName, strSecondClassName) {
    
    var ctl = GetObjectById( strId);
    
    if( ctl != null)
        ctl.className = ( ( ctl.className == strFirstClassName) ? strSecondClassName : strFirstClassName);
}

function SetObjectCssClass( strId, strClassName) {
    
    var ctl = GetObjectById( strId);
    
    if( ctl != null)
        ctl.className = strClassName;
}

function ShowHidePanel( strShowDiv, strHideDiv) {
    
    var ctlShow = GetObjectById( strShowDiv);
    var ctlHide = GetObjectById( strHideDiv);
    
    if( ctlShow != null)
        ctlShow.style.display = "";
    
    if( ctlHide != null)
        ctlHide.style.display = "none";
}

function GetObjectById( strId) {
    
    if( typeof strId != 'string')
        return( strId);
    
    if( typeof document.getElementById != 'undefined')
        return( document.getElementById( strId));
    
    if( typeof document.all != 'undefined')
        return( document.all[ strId]);
    
    if( typeof document.layers != 'undefined')
        return( document.layers[ strId]);
    
    return( null);
}

function IsEventTargetFromElement( e, strElementId) {
    
    var evt = window.event || e;
    var srcElement = null;
    
    if( evt != null)
        srcElement = ( evt.srcElement != null) ? evt.srcElement : ( ( evt.target != null) ? evt.target : null);
    
    if( ( srcElement == null) || ( srcElement.id == null))
        return( false);
    
    return( srcElement.id == strElementId);
}

function ClickElement( strElementId) {
    
    var ctlElement = GetObjectById( strElementId)
    
    if( ctlElement == null)
        return( false);
    
    ctlElement.click();
    
    return( true);
}

/* --------------------------------------------------------------------------------
 *  ClickAnchorElement()
 * --------------------------------------------------------------------------------
 *  Clicks on a normal HTML hyperlink element. NOTE: the click() function is not 
 *  present on anchor tags, outside of Internet Explorer.
 */
function ClickAnchorElement( strElementId) {
    
    var ctlElement = GetObjectById( strElementId)
    
    if( ctlElement == null)
        return( false);
    
    var evt = document.createEvent( "MouseEvents"); 
    evt.initMouseEvent( "click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    
    ctlElement.dispatchEvent( evt);
    
    return( true);
}

function GetElementHeight( elementId) {
    
    var element = GetObjectById( elementId);
    
    if( element == null)
        return( 0);
    
    return( element.clientHeight);
}

function GetElementWidth(elementId) {

    var element = GetObjectById(elementId);

    if (element == null)
        return (0);

    return (element.clientWidth);
}


function GetScrollPosX() {
    
    var nScrollTop = document.body.scrollTop;
    
    if( nScrollTop == 0) {
        if( window.pageYOffset)
            nScrollTop = window.pageYOffset;
        else
            nScrollTop = ( document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    
    return( nScrollTop);
}

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 pageWidth() { return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
function pageHeight() { return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null; }
function posLeft() { return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
function posTop() { return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
function posRight() { return posLeft() + pageWidth();}
function posBottom() { return posTop() + pageHeight(); }

function GetInternetExplorerVersion() {
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
        return new Number(RegExp.$1) // capture x.x portion and store as a number
    }
    
    return null;
}



