function countOccurances(aNiddle, aStack){
  count = 0;
  pos = aStack.indexOf(aNiddle);
  while ( pos != -1 ) { 
  	count++; 
    pos = aStack.indexOf(aNiddle, pos+1);
  }
  return count;
}
function isIE(){
  var aResult=false;
  if (parseInt(navigator.appVersion)>3) {
   if (navigator.appName.indexOf("Microsoft")!=-1)
    aResult = true;
  }
  return aResult;
}

function goto(aAction, aActionId)
{
  aQueryString=aAction+'.html';
  if ((aActionId) && (aActionId != "-1")) aQueryString+="?id="+aActionId;
  var t=window.top.frames["data_frame"];
  if (t===undefined) t=window;
  t.location=aQueryString;
}

function doGetParameter(aQueryString, aParamName, aDefaultValue){
  var ar1, ar2, i, qs = aQueryString;
  if (qs != '')
  {
    qs = qs.slice(1);
    ar1 = qs.split('&');
    for (i = 0; i < ar1.length; i++)
    {
      ar2 = ar1[i].split('=');
      if (ar2[0] == aParamName) return (ar2[1]);
    }
  }
  return (aDefaultValue);
}

function getParameter (aParamName, aDefaultValue)
{
  var qs = window.location.search;
  return doGetParameter(qs, aParamName, aDefaultValue);
}

function setElement(el,txt)
{
 el=document.getElementById(el);
 if (el) el.innerHTML=txt;
 return el;
}

function cell(txt,attr)
{
 var r="<td";
 if (attr) r=r+" "+attr;
 r=r+">"+txt+"</td>";
 return r;
}

function loadJs(path,noCache,id)
{
var oScript = document.createElement("script");
if (noCache)
 {
  path+=(path.indexOf('?')<0) ? '?' : '&';
  path+='dt='+(new Date().getTime());
 }
oScript.type='text/javascript';
oScript.src=path;
if (id) oScript.id=id;
document.getElementsByTagName('head')[0].appendChild(oScript);
return oScript;
}

function addCommas(nStr)
{
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}

function toPercent(num,digits)
{
 if (typeof(digits)=='undefined') digits=2;
 return Math.abs(num) <0.01 ? "" : num.toFixed(digits)+"&nbsp;%";
}

function noZero(num)
{return num==0 ? "" : num;}

function toQuoted(a)
{
  return "'"+a+"'";
}

function zeroPad(num,places)
{
 num='000000000'+num;
 return num.slice(num.length-places);
}

function trim(s) {return s.replace(/^\s*(.*?)\s*$/,"$1")}

function toLink(a,aAction, aActionId)
{
 var r='<a href="javascript:goto(';
 r+=toQuoted(aAction)+','+toQuoted(aActionId)+')">'+a+'</a>';
 return r;
}

function dateToString(d)
{
  return d.getDate()+'/'+(d.getMonth()+1)+' '+d.getHours()+':'+zeroPad(d.getMinutes(),2);
}

function partyLogo(id)
{return '<img class="logo" src="../images/y'+id+'.png" align=absmiddle>';}


function checkUpdated(obj)
{
 return (obj.updated && (obj.updated>1));
}

function setNoResult()
{
document.body.innerHTML=msgNoResult;
}

//sorting support
var sortKey,sortDir,sortMode;

function sortImg(key)
{return '<img class="sortimg" sortkey='+key+' title="click to sort" src="../images/sort.png">';}

function sortFunc(p1,p2)
{
var r;
p1=p1[sortKey];
p2=p2[sortKey];
if (sortMode==1) r=p2-p1;
else if (p2>p1) r=1;
else if (p2<p1) r=-1;
else r=0;
if (sortDir==-1) r=-r;
return r;
}

function sortTable(evt,arr,render)
{
 var src,srt,dir,m;
 src=evt.srcElement;
 if (!src) src=evt.target;
 srt=src.getAttribute('sortkey');
 if (!srt) return;
 m=srt.charAt(0);
 srt=srt.slice(1);
 dir=-1;     // -1=asc, 1=desc
 sortMode=1; // 1=number,2=alpha
 switch (m)
 {
  case '-': {break;}
  case '@': {sortMode=2; break;}
  default:  {dir=1; srt=m+srt; break;}
 }
 sortDir=(srt==sortKey) ? -sortDir : dir;
 sortKey=srt;
 arr.sort(sortFunc);
 render();
}

//search an object for a particular element, return previous/next

function findPrevNext(obj,cur)
{
 var i,pi,iprev,inext;
 for (i in obj)
  {
   if (i==cur)  iprev=pi;
   if (pi==cur) {inext=i; break;}
   pi=i;
  }
 return {prev:iprev,next:inext}
}

//find the path to a tmima

function getTmimaPath(cmd,tmId)
{
 //return '../bin/vapi.dll?cmd='+cmd+'&id='+tmId;
 var epId=parseInt(tmId/10000);
 return '../dynzip/'+epId+'/'+cmd+'_'+tmId+'.js';
 //return '../lib/noresult.js';
 //return 'http://ekloges-origin.singularlogic.eu/bin/vapi.dll?cmd='+cmd+'&id='+tmId;
}

function sleep(millis)
{
        var date = new Date();
        var curDate = null;

        do { curDate = new Date(); }
        while(curDate-date < millis)
}

//loader support

function loader_start()
{
 var elem = document.createElement('DIV');
 elem.id='loader_container';
 elem.innerHTML='<DIV id="loader"><DIV id="loader_msg">'+msgPleaseWait+'</DIV><DIV id="loader_bg"><DIV id="loader_progress"></DIV></DIV></DIV>';
 var t = setInterval(loader_animate,20);
 elem.setAttribute('loader_timer',t);
 t = setInterval(loader_fail,30000);
 elem.setAttribute('loader_fail',t);
 document.body.appendChild(elem);
}

function loader_fail()
{
 loader_clear();
 setNoResult();
}

function loader_clear()
{
	var elem = document.getElementById('loader_container');
	if (!elem) return;
	var t=elem.getAttribute('loader_fail');
	clearInterval(t);
	t=elem.getAttribute('loader_timer');
	clearInterval(t);
	document.body.removeChild(elem);
}

function loader_animate()
{
	var elem = document.getElementById('loader_progress');
	if (!elem) return;
        var wMax=elem.offsetParent.offsetWidth,lenMax=wMax/4,posMax=(wMax-lenMax),step=2;
        var pos=elem.offsetLeft,len=elem.offsetWidth;
	if (pos==0) len += step;
	if (len>=lenMax || pos>=posMax) pos += step;
	if (pos>=posMax) len -= step;
	if (len<0) len=0;
	if (pos>=posMax && len==0) pos=0;
	elem.style.left = pos;
	elem.style.width = len;
}

var msgNoResult='<div class=noresult><br><br><center>Δεν υπάρχει ακόμη Αποτέλεσμα.<br>'+
               'Παρακαλώ δοκιμάστε αργότερα...</center></div>';
var msgPleaseWait='Παρακαλώ περιμένετε, Ανάκτηση Δεδομένων...';
