/* 
     File:        icStrings.js
     Created:     2003-04-16
     Modified:    2006-11-18
     Copyright:   Copyright (c) InfoCaption AB 2003-2004
     Author:      Peter Jäderlund
     Description: InfoCaption Strings Utilities
*/

var nl = unescape("%0D") + unescape("%0A");
var nlSimple = unescape("%0A");



// ------------------------------------------------------------------
function trimLead(sText) {
    while (sText.length > 0) {
        if (sText.substring(0, 1) == " ") {
            sText = sText.substring(1);
        } else {
            return sText;
        }
    }
    return "";

}

// ------------------------------------------------------------------
function trimTrail(sText) {
    while (sText.length > 0) {        
        if (sText.substring(sText.length - 1) != " ") {
            return sText;
        } else {
            sText = sText.substring(0, sText.length - 1); 
        }
    }
    return "";

}

// ------------------------------------------------------------------
function trimAll(sText) {
    sText = trimLead(sText);
    return trimTrail(sText);
}

// ------------------------------------------------------------------------------------------------
function slGetFirstItem(sSeparator, s) {
    var iPos = s.indexOf(sSeparator);
    if (iPos == -1) {
        return s; }

    return s.substring(0, iPos);
}


// ------------------------------------------------------------------------------------------------
function slDelFirstItem(sSeparator, s) {
    var iPos = s.indexOf(sSeparator);
    if (iPos == -1) {
        return ''; }

    return s.substring(iPos + sSeparator.length);
}


// ------------------------------------------------------------------------------------------------
function replaceAll(sFrom, sToo, sOriginal){
   var iPos = sToo.indexOf(sFrom);
   if (iPos != -1) {
   }
   var sHead = "";

   iPos = sOriginal.indexOf(sFrom);
   while (iPos != -1) {
       sOriginal = sOriginal.substring(0, iPos) + 
                  sToo + 
                  sOriginal.substring(iPos + sFrom.length);
       iPos = sOriginal.indexOf(sFrom);
   }
       
   return sOriginal    
}


// --------------------------------------------------------------------------------------------------------------
function get2DigitsString(iValue) {
    var sRet = "";
    if (iValue < 10) {
        sRet = '0' + iValue;
    } else sRet = iValue + "";
    return sRet;
}


// --------------------------------------------------------------------------------------------------------------
function strToInt(sVal) {
    var iVal = sVal - 0;
    return iVal;
}


// --------------------------------------------------------------------------------------------------------------
function strToBooleanDefault(sTxt, bDefault) {
    var bVal = bDefault;
    sTxt = sTxt.toLowerCase();
    if ((sTxt == "0") || (sTxt == "false") || (sTxt == "off")) bVal = false;
    if ((sTxt == "1") || (sTxt == "true") || (sTxt == "on")) bVal = true;
    return bVal;
}
    

// --------------------------------------------------------------------------------------------------------------
function strToIntDefault(sTxt, iDefault) {
    if (sTxt == "") return iDefault;
    if (isNaN(sTxt)) return iDefault;
    
    return strToInt(sTxt);
}


// --------------------------------------------------------------------------------------------------------------
function strDefault(sTxt, sDefault) {
    if (sTxt == "") 
        return sDefault;
    else
        return sTxt;
}


// --------------------------------------------------------------------------------------------------------------
function getTimeString(iTime) {
    // Transform time to seconds
//test for (03:35:48):    iTime = (3 * 3600 * 1000) + (35 * 60 * 1000) + (48 * 1000);
    iTime = Math.round(iTime / 1000); 
    var iHours = Math.floor(iTime / 3600);
    iTime = iTime - iHours * 3600;
    var iMin = Math.floor(iTime / 60);
    iTime = iTime - iMin * 60;
    var sRet = Get2DigitsString(iHours) + ':' + Get2DigitsString(iMin) + ':' + Get2DigitsString(iTime);
    return sRet;
}


// ------------------------------------------------------------------------------------------------
function slGetItemString(sSeparator, s, itemNo) {
    for (var i = 1; i < itemNo; i++) {
        s = slDelFirstItem(sSeparator, s);
    }
    return slGetFirstItem(sSeparator, s);
}


// ------------------------------------------------------------------------------------------------
function slGetItemInteger(sSeparator, s, itemNo, iDefault) {
    for (var i = 1; i < itemNo; i++) {
        s = slDelFirstItem(sSeparator, s);
    }
    try {
        return StrToInt(slGetFirstItem(sSeparator, s));
    } catch(e) {
        return iDefault;
    }
}


// --------------------------------------------------------------------------------------------------------------
// Get unique identifier to add for window.open
function getUniqueWindowName() {
    var dTime = new Date();
    var sRes = replaceAll(" ", "", "" + dTime);
    sRes = replaceAll(":", "", sRes);
    sRes = replaceAll("+", "", sRes);
    return  sRes;
}



// --------------------------------------------------------------------------------------------------------------
// Functions for backward compatibility
function Get2DigitsString(iValue) { return get2DigitsString(iValue); }
function StrToInt(sVal) { return strToInt(sVal); }
function GetTimeString(iTime) { return getTimeString(iTime); }

