/* in4meta - JSSystemEx
   ~~ CG 2004 ~~
*/


/* Variables Area */
var varCache = new Array();
var intIDcnt = 0;

/* Const Area */
// timeout for checking for docReference
var const_timeout_waitForDocComplete = 100;
// is document ready
var docReadyState = true;

/*
  CLIENT SIDE
  VARIABLES CACHE
*/

// constructor for the cacheVarType
function _cacheVarType(varName,varContent)
{
  this.varName = varName;
  this.varContent = varContent;
}

// cache technics for frames
function setCacheVar(varName,varContent,blnClone)
{
  var arrPos = -1;
  arrPos = findCacheVar(varName);
  if (arrPos == -1) { arrPos = varCache.length; }
  if (blnClone) { varContent = _clone(varContent); }
  varCache[arrPos] = new _cacheVarType(varName,varContent);
}

// find a cached var
function findCacheVar(varName)
{
  var i = 0, retPos = -1;
  for(i=0;i<varCache.length;i++)
  {
    if(varCache[i].varName == varName)
    { retPos = i;
      break;
    }
  }
  return retPos;
}

// read a cached js variable
function getCacheVar(varName)
{
  var retVar = null;
  var arrPos = -1;
  arrPos = findCacheVar(varName);
  if (arrPos != -1) { retVar = varCache[arrPos].varContent; }
  return retVar;
}

/*
  Frame Ready State Function
  conditions:
   - set the flobal docReadyState-Flag to true before </html> tag, with this mehthod its sure that the page was complete loaded
*/

// wait until document is loaded - if loading finished start callback function
function waitForDocComplete(docRef,callBackFunc)
{  setTimeout('timer_waitForDocComplete("' + docRef + '","' + callBackFunc + '");', const_timeout_waitForDocComplete);
}

function timer_waitForDocComplete(docRef,callBackFunc)
{ var blnFlagFound = false;
  var refObj = eval(docRef);

  if (refObj != null)
  { if (refObj.docReadyState)
    { blnFlagFound = true;
    } }
  if (blnFlagFound)
  { eval(callBackFunc);
  } else
  { waitForDocComplete(docRef,callBackFunc);
  }
}


/* _clone object function
*/
function _clone(myObj)
{
     if(typeof(myObj) != 'object') return myObj;
     if(myObj == null) return myObj;

     var myNewObj = new Object();

     for(var i in myObj)
          myNewObj[i] = _clone(myObj[i]);
     return myNewObj;
}

/*
  _is Item in Array
*/

function IsItemInArray(xItem,xRefArr)
{ var i = 0, blnRet = false;
  for(i=0;i<xRefArr.length;i++)
  { if (xRefArr[i] == xItem)
    { blnRet = true; break;
    }
  }
  return blnRet;
}

// do StringReplace with
function regExprStringReplace(strIn,str2Replace,ReplaceWith)
{ var regExpr = new RegExp(str2Replace,'g');
  strIn = strIn.replace(regExpr,ReplaceWith);
  refExpr = null;
  return strIn;
}

// generate / returns an ID based on Date
function generateXID()
{  var genID = "";
   var myDate = new Date();
   var xYear = myDate.getYear();
   if(xYear < 999){xYear += 1900;}
   genID = String(intIDcnt) + String(myDate.getDate()) + String(myDate.getMonth()+1) + String(xYear) + String(myDate.getHours()) + String(myDate.getMinutes()) + String(myDate.getSeconds()) + String(myDate.getMilliseconds());
   intIDcnt++;
   return genID;
}

// dieser Funktion wird ein Item uebergeben, dieser wird dann in der Optionbox markiert
// + Object fuer Optionbox wird uebergeben


function SelectItemFromOptionbox(xItem,objOptionBox)
{
  for(i = 0; i<objOptionBox.length; i++)
  {
    if (objOptionBox.options[i].value==xItem)
    {
      objOptionBox.options[i].selected = true;
      break;
    }
  }
}

// determine the length of an utf8 encoded string
function LenString(str)
{
   var nLen = 0;
   var oLen = str.length;
   var c = "", i = 0;

   for(i = 0; i < oLen; i++)
   {
     c = str.charCodeAt(i);
     if( c < 0x80 )
     {
        nLen += 1;
     }
     else if( c < 0x800 )
     {
        nLen += 2;
     }
     else
     {
		nLen += 3;
     }
    }
    return nLen;
}


function callURI(strURI)
{
  document.location.href = strURI;
}

function cmsSwapStyle(objRef,strClassName)
{
  objRef.className = strClassName;
}

