String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

var Mon3 = ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var Day3 = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
var D_Opt = new Array(); // 29..31

/*
 * This displays the item or not 
 */
function ShowUnshow(itemId,showOrNot)
{
    var item  = document.getElementById(itemId);
    if (item)
    {
        if (showOrNot==true) 
    		item.style.display='block';
        else
    		item.style.display='none';
	}
}


function Lz(x) 
{ 
    return (x<0||x>=10?"":"0") + x /* local */ 
}

function LengthOfMonth(Y, M) 
{ 
    // M=1..12 // OK in NS4? Mac?
    with (new Date(Y,M,1,12)) 
    { 
        setDate(0) ; return getDate();
    } 
}
 
function MonLen(elemPrefix,moduleId) 
{
    var Yr = document.getElementById(elemPrefix+'_yy_'+moduleId);
    var Mo = document.getElementById(elemPrefix+'_mm_'+moduleId); 
    var Dy = document.getElementById(elemPrefix+'_dd_'+moduleId); 

    if (Yr && Mo && Dy) 
    {

        var Dol, K, DiM, NsI;
        DiM = LengthOfMonth(+ Yr.options[Yr.selectedIndex].text, Mo.selectedIndex + 1);
        Dol = Dy.options.length;
        if ((NsI = Dy.selectedIndex) >= DiM) {
            NsI = DiM - 1;
        }
        for (K = Dol; K > DiM; K--) {
            D_Opt[K] = Dy.options[K - 1];
            Dy.options[K - 1] = null;
        }
        for (K = Dol + 1; K <= DiM; K++) {
            Dy.options[K - 1] = D_Opt[K];
        }
        Dy.selectedIndex = NsI;
    }
}
 

function InitYMDselector(elemPrefix, moduleId, Anni, Base, direction) 
{

    var Yr = document.getElementById(elemPrefix+'_yy_'+moduleId);
    var Mo = document.getElementById(elemPrefix+'_mm_'+moduleId); 
    var Dy = document.getElementById(elemPrefix+'_dd_'+moduleId); 
    if (Yr && Mo && Dy) 
    {
        var J;
        if (!Base) 
        {
            Base = (new Date).getFullYear();
        }
        for (J = 0; J < Anni; J++) 
        {
            Yr.options[J] = new Option(Base + (direction)* J);
        }
        for (J = 0; J < 12; J++) 
        {
            Mo.options[J] = new Option(Mon3[J]);
        }
        for (J = 0; J < 31; J++) 
        {
            Dy.options[J] = new Option(J + 1);
        }
        Yr.selectedIndex = Mo.selectedIndex = Dy.selectedIndex = 0;
        MonLen(elemPrefix, moduleId);
    }    
}

function setDateInSelector(elemPrefix, moduleId, d) 
{
    var Yr = document.getElementById(elemPrefix+'_yy_'+moduleId);
    var Mo = document.getElementById(elemPrefix+'_mm_'+moduleId); 
    var Dy = document.getElementById(elemPrefix+'_dd_'+moduleId); 
    if (d) 

    var d1;
    // set the year
    for (d1 = 0; d1 < Yr.options.length; d1++)
    {
        if (Yr.options[d1].text == d.getFullYear ())
        {
            Yr.options[d1].selected = true; 
            break;
        }
    }
    // set the month, if possible
    try {
        Mo.options[d.getMonth()].selected = true; 
    }
    catch (e) {}     
    
    // set the day, if possible 
    try {
        Dy.options[d.getDate()-1].selected = true;
    }
    catch (e) {} 
}


/*
 * checks if d1 >= d2 + days
 */
function IsDaysMoreThan(d1,d2,days)
{
    // compare d1 and d2. 
    // note: getTime returns number of milliseconds since 1970
    var TSecs =  d2.getTime() + (60*60*24* days *1000); // today + 2 days
    return ( d1.getTime() >= TSecs );
}
