function DATA_encodeParam(paramName,paramValue)
{
 var result = null;

//Replacing all Globals.CLIENT_LIST_SEPARATOR to Globals.SERVER_LIST_SEPARATOR ...
 result = paramName + '=' + paramValue;
 return result;
}

function DATA_encodeParams(paramArr)
{
 var res = '';

 if (paramArr.length == 0)
  return res;
 res = DATA_encodeParam(paramArr[0].name,paramArr[0].value);
 for (var i=0;i<paramArr.length;i++)
  res += '&' + DATA_encodeParam(paramArr[i].name,paramArr[i].value);
 return res;
}

function DATA_encodeIntParams(paramArr)
{
 var
  res = "";
  
 res = DATA_encodeParam("n",paramArr.length);
 for (var i=0;i<paramArr.length;i++)
  res += "&" + DATA_encodeParam(i,paramArr[i]);
 return res;
}

function DATA_addParam(paramsstr,newparam)
{
 if (paramsstr == "")
  paramsstr = newparam;
 else
  paramsstr += "&" + newparam;
 return paramsstr;
}

function DATA_getParamValueFrom(paramArr,name,startId)
{
 for (var i=startId;i<paramArr.length;i++)
 if (paramArr[i].name == name)
  return {value:paramArr[i].value,id:i};
 return null;
}

function DATA_getParamValue(paramArr,name)
{
 return DATA_getParamValueFrom(paramArr,name,0);
}

function DATA_postToPage(ifrm,itargetPage,iparams)
{
 var
  frm = null,
  d = null,
  f = null,
  e = null;

 d = ifrm.contentWindow.document;
 d.write("");
 d.close();
 f = d.createElement("<form>");
 f.method = "post";
 f.action = itargetPage;
 for (var i=0;i<iparams.length;i++)
 {
  e = d.createElement("<input type=hidden>");
  e.name = iparams[i].name;
  e.value = iparams[i].value;
  f.appendChild(e);
 }
 d.appendChild(f);
 f.submit();
}

function DATA_postToPage2(ifrm,itargetPage,iparams)
{
 var
  frm = null,
  d = null,
  f = null,
  e = null;

 d = ifrm.document;
 d.write("");
 d.close();
 f = d.createElement("<form>");
 f.method = "post";
 f.action = itargetPage;

 e = d.createElement("<input name='pNIK' type=hidden>");
 e.value = iparams;
 f.appendChild(e);

  var groups = iparams.split('&');
  var result = new Array();
  var i=0;
  var nameAndValue;
  for(i=0;i<groups.length;i++)
  {
   nameAndValue = groups[i].split('=');
   result.push({name:nameAndValue[0],value:nameAndValue[1]});
  }

 for (var i=0;i<result.length;i++)
 {
  e = d.createElement("<input type=hidden>");
  e.name = result[i].name;
  e.value = result[i].value;
  f.appendChild(e);
 }

 d.appendChild(f);
 f.submit();
/*
 var objHTTP;
 if (window.XMLHttpRequest)
 {
    objHTTP = new XMLHttpRequest();
 }
 else
 {
    objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
 }
 var strResult;
 objHTTP.open('POST',itargetPage,false);
 objHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 objHTTP.send("pNIK="+iparams);
 strResult=objHTTP.responseText;
 d = ifrm.document;
 d.write("");
 d.write(strResult);
 d.close();*/
}

function DATA_invokePageSync(sender,targetpage,strparams)
{
    if (strparams.length > 0)
     sender.sendData2(targetpage+'?'+strparams);
    else
     sender.sendData2(targetpage);
}

function DATA_invokePage(sender,targetpage,strparams)
{
// var groups = strparams.split('&');
// var result;
// var i=0;
// var nameAndValue;
// for(i=0;i<groups.length;i++)
// {
//  nameAndValue = groups[i].split('=');
//  result[i].name = nameAndValue[0];
//  result[i].value = nameAndValue[1];
// }
//
// DATA_postToPage(sender,targetpage,result);
//Loading the page ...
 if (strparams.length > 0)
  sender.sendData(targetpage+'?'+strparams);
 else
  sender.sendData(targetpage);
}

function DATA_invokePage2(sender,targetpage,strparams)
{
  var groups = strparams.split('&');
  var result;
  var i=0;
  var nameAndValue;
  for(i=0;i<groups.length;i++)
  {
   nameAndValue = groups[i].split('=');
   result[i].name = nameAndValue[0];
   result[i].value = nameAndValue[1];
  }

  DATA_postToPage(sender,targetpage,result);
}



function DATA_getServletParamsStr(sLocation)
{
 var qid = 0;
 
 qid = sLocation.indexOf("?");
 if (qid == -1)
  return sLocation;
 return sLocation.substring(qid + 1,sLocation.length); 
}

function DATA_getServletParams(sLocation)
{
 var sData = null;
 var aData = null;
 var ret = new Array();
 sData = DATA_getServletParamsStr(sLocation);
 if (sData == null)
  return ret;
 aData = sData.split("&");
 for(var i = 0;i < aData.length;i++)
 {
  var sName = aData[i].substring(0,aData[i].indexOf("="));
  var sValue = aData[i].substring(aData[i].indexOf("=")+1,aData[i].length);
  var retElem = new Object();
  
  retElem.name = sName;
  retElem.value = unescape(sValue);
  ret.push(retElem);
 }
 return ret;
}

function DATA_loadPage(pageobj,target,params)
{
 if (params.length > 0)
  pageobj.location.replace(target + '?' + params);
 else
  pageobj.location.replace(target);
}

function DATA_loadFrame(frameobj,target,params)
{
 if (params.length > 0)
  frameobj.document.location.replace(target + '?' + params);
 else
  frameobj.document.location.replace(target);
}

function DATA_loadIFrame(frameobj,target,params)
{
 if (params.length > 0)
 {
    /*var oReq;
    if (window.XMLHttpRequest)
    {
        oReq = new XMLHttpRequest();
    }
    else
    {
        oReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    oReq.open("GET", target + '?' + params, false);
    oReq.send();
    frameobj.document.open("text/html", "replace");
    frameobj.document.write(oReq.responseText);*/
  frameobj.src = target + '?' + params;
 }
 else
 {
    /*var oReq;
    if (window.XMLHttpRequest)
    {
        oReq = new XMLHttpRequest();
    }
    else
    {
        oReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    oReq.open("GET", target, false);
    oReq.send();
    //frameobj.document.open(target);
frameobj.document.clear();
    frameobj.document.write(oReq.responseText);
     frameobj.document.close();;*/
  frameobj.src = target;
 }
}

function THREAD_sleep(numberMillis)
{
 var dialogScript =
  'window.setTimeout('+' function () { window.close(); }, ' + numberMillis + ');';
 var result =
  window.showModalDialog('javascript:document.writeln(' + '"<script>' + dialogScript + '<' + '/script>")');
}
function THREAD_sleep2(numberMillis)
{
    var oReq;
    if (window.XMLHttpRequest)
    {
        oReq = new XMLHttpRequest();
    }
    else
    {
        oReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    oReq.open("GET", '/adiJed/utils/wait.html', false);
    oReq.send();
}
function CTRL_enable(ctrl)
{
 ctrl.disabled = false;
}

function CTRL_disable(ctrl)
{
 ctrl.disabled = true;
}

function CHAR_isDigit(ichr)
{
 if (ichr >= '0' && ichr <= '9')
  return true;
 return false;
}

function CHAR_isLetter(ichr)
{
 if (ichr >= 'a' && ichr <= 'z')
  return true;
 if (ichr >= 'A' && ichr <= 'Z')
  return true;
 return false;
}

function STR_replace(isrc,ipattern,ireplace)
{
 var
  regex = new RegExp(ipattern,"igm");

 return isrc.replace(regex,ireplace);
}

function STR_convertSeparatorsToServer(istr)
{
 return STR_replace(istr,Globals.CLIENT_LIST_SEPARATOR,Globals.SERVER_LIST_SEPARATOR);
}

function STR_convertSeparatorsToClient(istr)
{
 return STR_replace(istr,Globals.SERVER_LIST_SEPARATOR,Globals.CLIENT_LIST_SEPARATOR);
}

function STR_trim(str)
{
 var startid = 0,endid = 0;
 
 for (var startid=0;(startid<str.length) && (str.charAt(startid) == " ");startid++);
 for (var endid=str.length-1;(endid>=startid) && (str.charAt(endid) == " ");endid--);
 return str.substring(startid,endid+1);
}

function STR_cutZeros(str)
{
 for (var i=0;i<str.length;i++)
 if (str.charAt(i) != "0")
 {
  str = str.slice(i,str.length);
  break;
 }
 return str;
}

function STR_indexOf(istr,isrc,istartId)
{
 var
  strlen = istr.length,
  srclen = isrc.length;

 for (var i=istartId;i<strlen;i++)
 {
  for (var k=i;istr.charAt(k) == isrc.charAt(k-i) && k < strlen;k++);
  if (MATH_getSize(i,k-1) == srclen)
   return i;
 }
 return -1;
}

/*
function STR_encode(istr)
{
 var
  c = null,
  ret = "";

 for (var i=0;i<istr.length;i++)
 {
  c = istr.charAt(i);
  if (CHAR_isDigit(c) == false && CHAR_isLetter(c) == false)
   ret += ("$$"+(c.charCodeAt(0))+";");
  else
   ret += istr.charAt(i);
 }
 return ret;
}

function STR_decode(istr)
{
 var
  id = -1,
  code = 0,
  chr = 0;

 id = STR_indexOf(istr,"$$",0);
 while (id != -1)
 {
//Getting the ";" sign position ...
  id1 = STR_indexOf(istr,";",id+2);
  if (id1 == -1)
   return istr;
//Getting character code ...
  code = istr.slice(id+2,id1);
  if (isNaN(code))
  {
//Passing to next token ...
   id = STR_indexOf(istr,"$$",id+2);
//Continuing ...
   continue;
  }
  chr = String.fromCharCode(code);
//Reformatting the string ...
  istr = istr.slice(0,id)+chr+istr.slice(id1+1);
//Passing to next token ...
  id = STR_indexOf(istr,"$$",id+1);
 }
 return istr;
}
*/

function STR_encode(istr)
{
 var
  ret = "",
  hexStr = "",
  chr = null;

 istr = escape(istr);
 for (var i=0;i<istr.length;i++)
 {
  chr = istr.charAt(i);
  if (chr == '%')
  {
//Checking if this char is unicode...
   if (istr.charAt(i+1) == 'u')
   {
    hexStr = istr.slice(i+2,i+6);
    i+=5;
   }
   else
   {
//Getting the next two chars that make the hexa number ...
    hexStr = istr.slice(i+1,i+3);
    i+=2;
   }
   ret += "$$"+hexStr+";";
  }
  else
   ret += chr;
 }
 return ret;
}

function STR_decode(istr)
{
 var
  pos1 = -1,
  pos2 = -1,
  code = null,
  ret = "";

 pos1 = istr.indexOf("$$");
 if (pos1 == -1)
  return istr;
 while (pos1 != -1)
 {
  ret += istr.substring(pos2+1,pos1);
  pos2 = istr.indexOf(";",pos1+2);
  code = istr.substring(pos1+2,pos2);
  if (code.length == 2)
   ret += "%"+code;
  else
   ret += "%u"+code;
  pos1 = istr.indexOf("$$",pos2+1);
 }
 if (pos2+1 < istr.length)
  ret += istr.substring(pos2+1,istr.length);
 ret = unescape(ret);
 return ret;
}

function STR_removeTags(istr)
{
 return istr.replace(/<(BR|br)>/g,"\r\n");
}

function OPENDLG_execute(inputctrl)
{
 inputctrl.value = "";
 inputctrl.click();
 if(inputctrl.value =="")
  return false;
 return true; 
}

function FILE_extractfname(sfile)
{
 var id = 0;
 
 id = sfile.lastIndexOf('/');
 if (id > -1)
  return sfile.substring(id+1,sfile.length);
 else
  return sfile.substring(sfile.lastIndexOf('\\')+1,sfile.length);
}

function FILE_delete(sfile)
{
 var
  fs = null,
  f = null;

 try
 {
  fs = new ActiveXObject("Scripting.FileSystemObject");
  if (fs.FileExists(sfile) == false)
   return true;
  f = fs.getFile(sfile);
  f.Delete();
 }catch (e)
 {
  return e.description;
 }
 return true;
}

function TEXTFILE_writeLine(ifile,iline)
{
 var
  fs = null,
  f = null;

 try
 {
  fs = new ActiveXObject("Scripting.FileSystemObject");
//Open text file for appending !!!
  f = fs.OpenTextFile(ifile,8,true);
  f.writeLine(iline);
  f.close();
  fs = null;
 }catch (e)
 {
  return e.description;
 }
 return true;
}

function PATH_addFile(iparentPath,ifileName)
{
 return iparentPath+"/"+ifileName;
}

function PATH_getInternetCache()
{
 try
 {
  return (new ActiveXObject("Shell.Application")).NameSpace(0x20).Self.Path;
 }
 catch (e)
 {
  return "c:\\";
 }
}

function SYS_getClientInfo()
{
 var
  FSO = null,
  path = null,
  f = null,
  ret = null,
  userName = null,
  sid = null;

 try{
  FSO = new ActiveXObject("Scripting.FileSystemObject");
  path = PATH_getInternetCache();
  f = FSO.OpenTextFile(path+"\\ci.tmp",1);
//Reading ...
  userName = f.ReadLine();
  sid = f.ReadLine();
  f.Close();
  ret = new Object({u:userName,s:sid});
  return ret;
 }catch(e)
 {
  ret = new Object({u:'',s:''});
  return ret;
 }
}

function SYS_setClientInfo(iclientInfo)
{
 var
  FSO = null,
  path = null,
  f = null;

 try{
  FSO = new ActiveXObject("Scripting.FileSystemObject");
  path = PATH_getInternetCache();
  f = FSO.CreateTextFile(path+"\\ci.tmp",true);
  f.WriteLine(iclientInfo.u);
  f.WriteLine(iclientInfo.s);
  f.Close();
  return true;
 }catch(e)
 {
  return false;
 }
}

function MATH_IdToBlockId(idataId,iblockSz)
{
 return (Math.floor(idataId / iblockSz));
}

function MATH_BlockIdToInterval(iblockId,iblockSz)
{
 return {start:iblockId*iblockSz,end:((iblockId+1)*iblockSz)-1};
}

function MATH_moveIdBynBlocks(iid,iblockCnt,iblockSz)
{
 iid = iid + (iblockCnt*iblockSz);
 return iid;
}

function MATH_getEndId(istartId,isz)
{
 return ((istartId + isz) - 1);
}

function MATH_getSize(istartId,iendId)
{
 return ((iendId - istartId) + 1);
}

function MATH_isIdInInterval(iid,istartId,isize)
{
 if (iid < istartId)
  return false;
 else
 if (iid > MATH_getEndId(istartId,isize))
  return false;
 return true;
}

function MATH_validateId(iid,istartId,isize)
{
 var
  eid = 0;

 if (iid < istartId)
  iid = istartId;
 else
 {
  eid = MATH_getEndId(istartId,isize);
  if (iid > eid)
   iid = eid;
 }
 return iid;
}

function ARRAY_contains(iarray,iid)
{
 if (iarray[iid] == undefined)
  return false;
 return true;
}

function OBJARRAY_clear(iobjArray)
{
 for (var i=0;i<iobjArray.length;i++)
  iobjArray[i].finalize();
 iobjArray.splice(0,iobjArray.length);
}

function DATE_clientToServer(idate)
{
 return idate.slice(6,10)+idate.slice(3,5)+idate.slice(0,2);
}

function DATE_serverToClient(idate)
{
 return idate.substr(6,2)+'/'+idate.substr(4,2)+'/'+idate.substr(0,4);
}

function DATE_leadingZero(intVal)
{
 if(intVal<10)
  return '0'+intVal;
 else
  return ''+intVal;
}

function BOOLEAN_compare(iboolean1,iboolean2)
{
 var
  val1 = null,
  val2 = null;

 val1 = (iboolean1 == true)?1:0;
 val2 = (iboolean2 == true)?1:0;
 return (val1 - val2);
}

function NUMBER_compare(inumber1,inumber2)
{
 if (inumber1 < inumber2)
  return -1;
 else
 if (inumber1 > inumber2)
  return 1;
 else
  return 0;
}

function TIME_compare(itime1,itime2)
{
 return (-itime1.localeCompare(itime2));
}

function DATE_compare(idate1,idate2)
{
 idate1 = DATE_clientToServer(idate1);
 idate2 = DATE_clientToServer(idate2);
 return -idate1.localeCompare(idate2);
}

function DATETIME_compare(idate1,itime1,idate2,itime2)
{
 c = DATE_sort(idate1,idate2);
 if (c == 0)
  c = (-itime1.localeCompare(itime2));
 return c;
}

function STR_compare(istr1,istr2)
{
 return (-istr1.localeCompare(istr2));
}

function INTARRAY_compare(iintArray1,iintArray2)
{
 var
  ret = null;

 if (iintArray1.length < iintArray2.length)
  return -1;
 else
 if (iintArray1.length > iintArray2.length)
  return 1;
 else
 {
  for (var i=0;i<iintArray1.length;i++)
  {
   ret = NUMBER_compare(iintArray1[i],iintArray2[i]);
   if (ret != 0)
    return ret;
  }
 }
 return 0;
}

function STRARRAY_compare(istrArray1,istrArray2)
{
 var
  ret = null;

 if (istrArray1.length < istrArray2.length)
  return -1;
 else
 if (istrArray1.length > istrArray2.length)
  return 1;
 else
 {
  for (var i=0;i<istrArray1.length;i++)
  {
   ret = STR_compare(istrArray1[i],istrArray2[i]);
   if (ret != 0)
    return ret;
  }
 }
 return 0;
}

function VALUE_createVoid(itype)
{
 switch (itype)
 {
  case Globals.FIELDTYPE_INT:
  case Globals.FIELDTYPE_REAL:
   return 0;
  case Globals.FIELDTYPE_DATE:
  case Globals.FIELDTYPE_TIME:
  case Globals.FIELDTYPE_STR:
   return "";
  case Globals.FIELDTYPE_INTARRAY:
  case Globals.FIELDTYPE_STRARRAY:
   return new Array();
 }
}

function VALUE_clear(ivalue,itype)
{
 switch (itype)
 {
  case Globals.FIELDTYPE_INT:
  case Globals.FIELDTYPE_REAL:
   return 0;
  case Globals.FIELDTYPE_DATE:
  case Globals.FIELDTYPE_TIME:
  case Globals.FIELDTYPE_STR:
   return "";
  case Globals.FIELDTYPE_INTARRAY:
  case Globals.FIELDTYPE_STRARRAY:
   ivalue.splice(0,ivalue.length);
   return ivalue;
 }
}

function VALUE_copy(ivalue,itype)
{
 var
  ret = null;

 switch (itype)
 {
  case Globals.FIELDTYPE_INT:
  case Globals.FIELDTYPE_REAL:
  case Globals.FIELDTYPE_DATE:
  case Globals.FIELDTYPE_TIME:
  case Globals.FIELDTYPE_STR:
   return ivalue;
  case Globals.FIELDTYPE_INTARRAY:
  case Globals.FIELDTYPE_STRARRAY:
   ret = new Array();
   for (var i=0;i<ivalue.length;i++)
    ret.push(ivalue[i]);
   return ret;
 }
}

function VALUE_compare(ivalue1,ivalue2,itype)
{
 if (ivalue1 == null)
 {
  if (ivalue2 == null)
   return 0;
  return -1;
 }
 else
 if (ivalue2 == null)
  return 1;
 switch (itype)
 {
  case Globals.FIELDTYPE_INT:
  case Globals.FIELDTYPE_REAL:
   return NUMBER_compare(ivalue1,ivalue2);
   break;
  case Globals.FIELDTYPE_DATE:
   return DATE_compare(ivalue1,ivalue2);
   break;
  case Globals.FIELDTYPE_TIME:
   return TIME_compare(ivalue1,ivalue2);
   break;
  case Globals.FIELDTYPE_STR:
   return STR_compare(ivalue1,ivalue2);
   break;
  case Globals.FIELDTYPE_INTARRAY:
   return INTARRAY_compare(ivalue1,ivalue2);
  case Globals.FIELDTYPE_STRARRAY:
   return STRARRAY_compare(ivalue1,ivalue2);
   break;
 }
 return 0;
}

function VALUE_isVoid(ivalue,itype)
{
 if (typeof ivalue == "undefined")
  return true;
 if (ivalue == null)
  return true;
 switch (itype)
 {
  case Globals.FIELDTYPE_DATE:
  case Globals.FIELDTYPE_TIME:
  case Globals.FIELDTYPE_STR:
  case Globals.FIELDTYPE_INTARRAY:
  case Globals.FIELDTYPE_STRARRAY:
   return (ivalue.length == 0);
 }
 return false;
}

function INTARRAY_clientToServer(iintArray)
{
 var
  ret = "";

 if (iintArray.length == 0)
  return "";
 ret += iintArray[0];
 for (var i=1;i<iintArray.length;i++)
  ret += Globals.SERVER_LIST_SEPARATOR+iintArray[i];
 return ret;
}

function STRARRAY_clientToServer(istrArray)
{
 var
  ret = "";

 if (istrArray.length == 0)
  return "";
 ret = STR_encode(istrArray[0]);
 for (var i=1;i<istrArray.length;i++)
  ret += Globals.SERVER_LIST_SEPARATOR+STR_encode(istrArray[i]);
 return ret;
}

function VALUE_clientToServer(itype,ivalue)
{
 switch (itype)
 {
  case Globals.FIELDTYPE_DATE:
   return DATE_clientToServer(ivalue);
  case Globals.FIELDTYPE_INTARRAY:
   return INTARRAY_clientToServer(ivalue);
  case Globals.FIELDTYPE_STRARRAY:
   return STRARRAY_clientToServer(ivalue);
  default:
   return STR_encode(ivalue);
 }
}

function TYPE_clientToServer(itype)
{
 switch (itype)
 {
  case Globals.FIELDTYPE_INTARRAY:
  case Globals.FIELDTYPE_INTARRAY:
   return Globals.FIELDTYPE_STR;
  default:
   return itype;
 }
}

function TRACE_clear()
{
 var
  ret = null;

 ret = FILE_delete(Globals.TRACEFILECURRENT_PATH);
 return ret;
}

function TRACE_writeln(imsg)
{
 var
  ret = null;

 ret = TEXTFILE_writeLine(Globals.TRACEFILEALL_PATH,imsg);
 if (ret != true)
 {
  return ret;
 }
 ret = TEXTFILE_writeLine(Globals.TRACEFILECURRENT_PATH,imsg);
 if (ret != true)
 {
  return ret;
 }
 return true;
}

function TRACE_trace(imsg,itype)
{
 var
  d = null,
  timeStr = null;

 d = new Date();
 timeStr = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
 switch (itype)
 {
  case Globals.TRACETYPE_INFO:
   TRACE_writeln("================================================");
   TRACE_writeln("<JSCRIPT MSG  = "+imsg);
   TRACE_writeln("         TYPE = "+Globals.TRACETYPENAME_INFO);
   TRACE_writeln("         TIME = "+timeStr+" >");
   break;

  case Globals.TRACETYPE_WARNING:
   TRACE_writeln("------------------------------------------------");
   TRACE_writeln("<JSCRIPT MSG  = "+imsg);
   TRACE_writeln("         TYPE = "+Globals.TRACETYPENAME_WARNING);
   TRACE_writeln("         TIME = "+timeStr+" >");
   break;

  case Globals.TRACETYPE_ERROR:
   TRACE_writeln("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
   TRACE_writeln("<JSCRIPT MSG  = "+imsg);
   TRACE_writeln("         TYPE = "+Globals.TRACETYPENAME_ERROR);
   TRACE_writeln("         TIME = "+timeStr+" >");
   break;
 }
}

function TRACE_traceInfo(imsg)
{
 TRACE_trace(imsg,Globals.TRACETYPE_INFO);
}

function TRACE_chronosStart()
{
 Globals.TRACE_CHRONOS_START = new Date();
}

function TRACE_chronosEnd()
{
 var
  now = null;

 now = new Date();
 TRACE_writeln("< CHRONOS DURATION: ["+(now.getTime() - Globals.TRACE_CHRONOS_START.getTime())+" MS] >");
}

// General Events
function EVENT_onBtnOver(btn)
{
 btn.className = "flatButtonOver";
}

function EVENT_onBtnOut(btn)
{
 btn.className = "flatButton";
}

//TODO: METHODS MUST BE CLONED INTO TARGET OBJECT!!!!
function VAR_clone(isource,itarget)
{
 var
  parent = isource,
  child = null;

 for (child in parent)
 {
  itarget[child] = parent[child];
//Recursive calling in child ...
  this.VAR_clone(parent[child],itarget[child]);
 }
}

function VAR_getNewInstance(isource)
{
 var
  ret = new Object();

 this.VAR_clone(isource,ret);
 return ret;
}
