/*
Table sorting script  by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/.
Based on a script from http://www.kryogenix.org/code/browser/sorttable/.
Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html .

Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk.

Version 1.5.7
*/

/* You can change these values */
//var image_path = "http://www.joostdevalk.nl/code/sortable-table/";
var image_path = "/sites/bet/js/";
var image_up = "arrow-up.gif";
var image_down = "arrow-down.gif";
var image_none = "arrow-none.gif";
var europeandate = true;
var alternate_row_colors = true;
var ponte_spec_date = true;

var tesztcella;

Array.prototype.contains = function (element) 
  {
          for (var i = 0; i < this.length; i++) 
       {
              if (this[i] == element) 
          {
                      return true;
              }
          }
          return false;
  };

/* Don't change anything below this unless you know what you're doing */
addLoadEvent(sortables_init_run);
var progBar=null;
function sortables_init_run()
{	
	setTimeout(sortables_init(),1);
}

var SORT_COLUMN_INDEX;
var thead = false;
var multiHCells=new Array;

function sortables_init() {
	/*
	Megnezi hogy multiHeader-es e a tablazat
	*/
  // Find all tables with class sortable and make them sortable
	if (!document.getElementsByTagName) return;
	tbls = document.getElementsByTagName("table");
	for (ti=0;ti<tbls.length;ti++) 
	{
		thisTbl = tbls[ti];
		
		if ((((' '+thisTbl.className+' ').indexOf("InsAdat_Trafic_table") != -1) && ((' '+thisTbl.className+' ').indexOf("nonsortable") == -1)) /*&& (thisTbl.id)*/) 
		{			
			try{
			ts_makeSortable(thisTbl);			
			}catch(e){alert(e);}
		}
	}
}

/**
V�gigmegy az osszes 1 sorba l�vo cellan, ami nem link, �s lek�ri a colspanjat, ennyi elemnek kell alatta lenni
ezeket lek�rdezi a 3. sorbol �s igy k�szit egy cella list�t, aminek megfelelteti a t�bl�zat 0. sor�t
*/
function find_links(t)
{
	//	a tomb i-dik eleme tartalmazza a t�bl�zat i-dik oszlop�ra mutato rendezo linket
	var linkTbl=new Array();

	//	v�gigmegy az elso soron, �s lek�ri a rowspanj�t minden nem link tr-nek
	var lnkid=0;
	for(i=0; i<t.tBodies[0].rows[0].cells.length; i++)
	{
		var cell=t.tBodies[0].rows[0].cells[i];
		var col=cell.colSpan
		if(col==1)
		{
			linkTbl.push(cell);
		}
		else if(lnkid+col<=t.tBodies[0].rows[2].cells.length)
		{
			//	a harmadik sorbol szedi ki a kov aktu�lis linkeket
			for(k=lnkid; k<lnkid+col; k++)
			{
				linkTbl.push(t.tBodies[0].rows[2].cells[k]);
			}
			lnkid+=col;
		}
	}	
	return 	linkTbl;
}
function ts_makeSortable(t) 
{
    t.className="InsAdat_table";
	if (t.rows && t.rows.length > 0) 
	{		
		//	megfelelo cell id- ket �s cell�kat tartalmazo tombot ad vissza
		var lnks=find_links(t);
		for(l=0; l<lnks.length; l++)
			ts_makeSortableCell(lnks[l],t,l);
		var firstRow = t.rows[0];
	}
	if(progBar==null)
	{
		progBar=document.createElement("DIV");
		progBar.className="TrafficSortMessage";
		progBar.style.left=500+"px";
		var msg=t.tBodies[0].rows[0].cells[0].getElementsByTagName("DIV")[1].innerHTML+"";
		var p=document.createElement("P");
		p.innerHTML=msg;
		progBar.appendChild(p);
		document.getElementById("portalmain").appendChild(progBar);
	}
}
/**
 A megkapott cellara huzza ra a linket
*/
function ts_makeSortableCell(cell,t,cell_id)
{
	try{
	var txt = ts_getInnerText(cell);
	}catch(e){alert(e);}
	if (cell.className != "FirstTh" && cell.className.indexOf("FirstTh") == -1 &&
       cell.className != "UnsortableTh" && cell.className.indexOf("UnsortableTh") == -1) 
	{
		if(cell.className.indexOf("ordered")>-1)
		{
			cell.innerHTML = '<div class="TableHead"><a href="#" class="sortheader" onclick="ts_findLink(this, '+cell_id+');return false;"><div class="underline sortth'+cell_id+'"">'+txt+'</div></a></div>';
			t.tBodies[0].rows[3].cells[cell_id].innerHTML='<span class="sortarrow" sortdir="up"><div class="Left"></div><img sortdir="up" src="'+ image_path + image_up + '" alt="&darr;"/><div class="Right""></div></span>';
		}
		else
		{
			cell.innerHTML = '<div class="TableHead"><a href="#" class="sortheader" onclick="ts_findLink(this, '+cell_id+');return false;"><div class="underline sortth'+cell_id+'">'+txt+'</div></a></div>';
			t.tBodies[0].rows[3].cells[cell_id].innerHTML='<span class="sortarrow"><div class="Left" style="display:none;"></div><img src="'+ image_path + image_none + '" alt="&darr;"/><div class="Right" style="display:none;"></div></span>';
		}
	}
}

/**
Eg�sz sorra rahuzza a linkeket.
*/
function ts_makeSortableRow(firstRow,t)
{
	// We have a first row: assume it's the header, and make its contents clickable links
	for (var i=0;i<firstRow.cells.length;i++) {
		var cell = firstRow.cells[i];
		ts_makeSortableCell(cell,t,i);
	}
}
function ts_getInnerText(el) {

	if (typeof el == "string") return el;
	if (typeof el == "undefined") { return el };
	if (el.innerText) return el.innerText;	//Not needed but it is faster
	var str = "";
	
//	if(!el.innerHTML)el=el.parentNode;
//	alert(el.innerHTML);
	try{
	var cs = el.childNodes;
	var l = cs.length;

	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: {//ELEMENT_NODE
				str += ts_getInnerText(cs[i]);
				break;}
			case 3:	{//TEXT_NODE
				str += cs[i].nodeValue;
				break;}
		}
	}
//	alert("veg");
	return str;
	}catch(e){return null;}
}

/**
Megkeresi ehhez a linkhez tartozo cell�t
*/
var time;
var params=null;
function ts_findLink(ulnk, clid)
{
	var p=getParent(ulnk,"TH");
	var lnk=p.getElementsByTagName("A")[0];
	var t=getParent(lnk,'TABLE');
	var span=t.tBodies[0].rows[3].cells[clid].getElementsByTagName("SPAN")[0];
	
	
	var d=new Date();
	time=d.getTime();
	progBar.style.top=getAbsoluteTop(ulnk)+"px";
	
//	progBar.style.display="block";
	showD();
	params=new Array();
	
	params.push(lnk);
	params.push(clid);
	params.push(span);
	params.push(clid);
	params.push(getParent(lnk,'TABLE'));
	
	setTimeout(ts_resortTable,10);//(lnk,clid,span,clid,getParent(lnk,'TABLE'));
}

function showD()
{
    progBar.style.display="block";
}


function ts_resortTable()//(ulnk, clid, span, column, t) 
{
	var ulnk=params[0];
	var clid=params[1];
	var span=params[2];
	var column=params[3];
	var t=params[4];
	//alert(ulnk+"\n"+ clid+"\n"+span+"\n"+column+"\n"+t);
	var lnk = ulnk;
	
	var spantext = ts_getInnerText(span);

	// Work out a type for the column
	if (t.rows.length <= 2) return;
	var itm = "";
	
	var i=4;
	
	if(t.tBodies[0].rows.length>4)
	{
		while (itm == "" && i < t.tBodies[0].rows.length) {
			var itm =""+ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
			itm = trim(itm);
			if (itm.substr(0,4) == "<!--" || itm.length == 0) {
				itm = "";
			}
			i++;
		}
		if (itm == "")
		{
			progBar.style.display="none";
			return; 
		}
		
		sortfn = ts_sort_caseinsensitive;
		
		if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
		if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
		if (itm.match(/^\d\d\d\d[-\.]\d\d[-\.]\d\d\s\d\d[:\.-]\d\d[:\.-]\d\d\.\d/)) sortfn = ts_sort_date;
		
		if (itm.match(/^-?[\d\s\.,]+$/)) sortfn = ts_sort_numeric;
		if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric;
		
		if (itm.match(/\d\d[-:\.]\d\d[-:\.]\d\d\d\d[.-\:]/ )) sortfn = ts_sort_date;
				//angol 01.12.2008
		if (itm.match(/\d\d\d\d[-:\.]\d\d[-:\.]\d\d[.-\:]/ )) sortfn = ts_sort_date;
				//magyar 01.12.2008
		if (itm.match(/\d\d[-:\.]\d\d/ )) sortfn = ts_sort_date;
						//idopont 15:21
		
		SORT_COLUMN_INDEX = column;
		var newRows = new Array();
		
		for (k=0;k<t.tBodies.length;k++) 
		{
			// Kigyi?1jtji?1k, hogy melyik celli?1k hatnak ti?1bb sorra is
			var start=4;
			
		    if (!thead) {
				for (j=start; j<t.tBodies[k].rows.length; j++) 
				{
					newRows.push(t.tBodies[k].rows[j]);
				}
			} 
			else 
			{
				// Do NOT skip the first row
				for (j=start;j<t.tBodies[k].rows.length;j++)
				{
					newRows.push(t.tBodies[k].rows[j]);
				}
			}
		}
		//	RENDEZES

		newRows.sort(sortfn);
		//	Nyilak kirajzolas
		var p=getParent(ulnk,"TH");
		//span=p.getElementsByTagName("SPAN")[0];
		
		if ((span.getAttribute("sortdir"))&&(span.getAttribute("sortdir").indexOf('down')>-1)) 
		{
				
				ARROW = '&nbsp;&nbsp;<div class="Left"></div><img sortdir="up" src="'+ image_path + image_up + '" alt="&darr;"/><div class="Right"></div>';
				span.setAttribute('sortdir','up');
		}
		else 
		{
		
				newRows.reverse();
				ARROW = '&nbsp;&nbsp;<div class="Left"></div><img sortdir="down" src="'+ image_path + image_down + '" alt="&uarr;"/><div class="Right"></div>';
				span.setAttribute('sortdir','down');
		}	

		var allspans = t.getElementsByTagName("span");

		for (var ci=0;ci<allspans.length;ci++) 
		{
			if(span!=allspans[ci])
			{
				if (allspans[ci].className == 'sortarrow') 
				{
					if (getParent(allspans[ci],"table") == getParent(lnk,"table")) 
					{ 
						// in the same table as us?
						allspans[ci].innerHTML = '&nbsp;&nbsp;<img src="'+ image_path + image_none + '" alt="&darr;"/>';
					}
				}
			}
		}
		span.innerHTML = ARROW;
		
		
		// remove from doc
		var tBody=t.tBodies[0];
		var clnOdd=tBody.rows[5].className;
		var clnEven=tBody.rows[4].className;
		var nextSibling = tBody.nextSibling;
		var p = tBody.parentNode;
		t.removeChild(tBody);
		// insert in the new order
		var l = newRows.length;
		
		var cln=clnOdd;
		
		for (var i = 0; i < l; i++)
		{
			newRows[i].className=cln;
			cln=(cln==clnEven)?clnOdd:clnEven;
			tBody.appendChild(newRows[i]);
			//setTimeout(addRow,10,tBody,newRows[i]);
		}
		p.insertBefore(tBody, nextSibling);
	}
	progBar.style.display="none";
}
function addRow(tbody,row)
{
	tbody.appendChild(row);
}
function getParent(el, pTagName) {
	if (el == null) {
		return null;
	} else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
		return el;
	} else {
		return getParent(el.parentNode, pTagName);
	}
}

function sort_date(date) {	
  // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
	dt = "00000000";
	if (date.length == 11) {
		mtstr = date.substr(3,3);
		mtstr = mtstr.toLowerCase();
		switch(mtstr) {
			case "jan": var mt = "01"; break;
			case "feb": var mt = "02"; break;
			case "mar": var mt = "03"; break;
			case "apr": var mt = "04"; break;
			case "may": var mt = "05"; break;
			case "jun": var mt = "06"; break;
			case "jul": var mt = "07"; break;
			case "aug": var mt = "08"; break;
			case "sep": var mt = "09"; break;
			case "oct": var mt = "10"; break;
			case "nov": var mt = "11"; break;
			case "dec": var mt = "12"; break;
			// default: var mt = "00";
		}
		dt = date.substr(7,4)+mt+date.substr(0,2);
		return dt;
	} else if (date.length == 10) {
		if (europeandate == false) {
			dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
			return dt;
		} else {
			dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
			return dt;
		}
	} else if (date.length == 8) {
		yr = date.substr(6,2);
		if (parseInt(yr) < 50) { 
			yr = '20'+yr; 
		} else { 
			yr = '19'+yr; 
		}
		if (europeandate == true) {
			dt = yr+date.substr(3,2)+date.substr(0,2);
			return dt;
		} else {
			dt = yr+date.substr(0,2)+date.substr(3,2);
			return dt;
		}
	}
	return dt;
}


function ponte_sort_date(date) {
  // a ponte.hu-nal hasznalt datumformatum felismerese
  dt=date;
  if(date.match(/\d\d[:]\d\d/))	
  {				//	12:20
    dt=dt.replace(':','');
  }
  else	if((date.match(/\d\d\d\d[.]\d\d[.]\d\d[.]/)))		//	2008.01.12.
  {
    dt=dt.replace('.','');
    dt=dt.replace('.','');
    dt=dt.replace('.','');
  }
  else if(date.match(/\d\d[.]\d\d[.]\d\d\d\d[.]/))		//	12.01.2008
  {
    var v=dt.split('.');	//	angol form�tum, �trendezi, hogy stringk�nt lehessen kezelni
    dt=v[2].match(/\d\d\d\d/)+v[1].match(/\d\d/)+v[0].match(/\d\d/);
  }
  return dt;
}

function isDate(val)
{
    if(val.match(/\d\d\d\d/))
    {
	if(val.match(/\d\d\d\d\d\d\d\d/))return true;
	else return false;
    }
    return false;
}

function ts_sort_date(a,b) {
    var offs0 = 0;
    var offs1 = 0;

    if(a.cells.length < SORT_COLUMN_INDEX-offs0 || b.cells.length < SORT_COLUMN_INDEX-offs1) return 0;
    dt1 = ponte_sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX-offs0]));
    dt2 = ponte_sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX-offs1]));

//  teljes ora:perc datum formatumok kezeles
    if((!isDate(dt1))&&(isDate(dt2))) return (isIE)?1:-1;
    if((isDate(dt1))&&(!isDate(dt2))) return (isIE)?-1:1;
  
    if((isDate(dt1))&&(isDate(dt2)))
    {
	if(dt1<dt2)return (isIE)?-1:1;
	if(dt1>dt2)return (isIE)?1:-1;
    }
    if (dt1==dt2) {
  	return 0;
    }
    if (dt1<dt2) { 
  	return (isIE)?-1:1;
    }
    return (isIE)?1:-1;
}

function ts_sort_numeric(a,b) {
  var offs0 = 0;
  var offs1 = 0;
  //if(a.rowIndex > 0) { offs0 = 1; } else { offs0 = 0; }
  //if(b.rowIndex > 0) { offs1 = 1; } else { offs1 = 0; }
  if(a.cells.length < SORT_COLUMN_INDEX-offs0 || b.cells.length < SORT_COLUMN_INDEX-offs1) return 0;
	var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX-offs0]);
	var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX-offs1]);
	return compare_numeric(aa,bb);
}

var isEng=(document.getElementById('variant_link').href.indexOf("bse")>-1)?false:true;

function compare_numeric(a,b) 
{
    if(isEng)
    {
	if(a.split(',').length>2)
	{
	    var aa=a.split(',');
	    a=aa[0]+aa[1]+aa[2];
	}
	
	a=clean_num(a);
	
	if(b.split(',').length>2)
	{
	    var bb=b.split(',');
	    b=bb[0]+bb[1]+bb[2];
	}
	
	b=clean_num(b);
    }
    a=a.replace(",",".");
    a=clean_num(a);
    b=b.replace(",",".");
    b=clean_num(b);
	
	var a = parseFloat(a);
	a = (isNaN(a) ? 0 : a);
	var b = parseFloat(b);
	b = (isNaN(b) ? 0 : b);
	return a - b;
}
function ts_sort_caseinsensitive(a,b) {
  var offs0 = 0;
  var offs1 = 0;
  //if(a.rowIndex > 0) { offs0 = 1; } else { offs0 = 0; }
  //if(b.rowIndex > 0) { offs1 = 1; } else { offs1 = 0; }
  if(a.cells.length < SORT_COLUMN_INDEX-offs0 || b.cells.length < SORT_COLUMN_INDEX-offs1) return 0;
  aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX-offs0]).toLowerCase();
	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX-offs1]).toLowerCase();
	if (aa==bb) {
		return 0;
	}
	if (aa<bb) {
		return -1;
	}
	return 1;
}
function ts_sort_default(a,b) {
	var offs0 = 0;
  var offs1 = 0;
  //if(a.rowIndex > 0) { offs0 = 1; } else { offs0 = 0; }
  //if(b.rowIndex > 0) { offs1 = 1; } else { offs1 = 0; }
  if(a.cells.length < SORT_COLUMN_INDEX-offs0 || b.cells.length < SORT_COLUMN_INDEX-offs1) return 0;
  aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX-offs0]);
	bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX-offs1]);
	if (aa==bb) {
		return 0;
	}
	if (aa<bb) {
		return -1;
	}
	return 1;
}
function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,	NS6 and Mozilla
// By Scott Andrew
{
	if (elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent){
		var r = elm.attachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be removed");
	}
}
function clean_num(str) {
	str = str.replace(/[^-?0-9\.]/g,"");
	return str;
}
function trim(s) {
	return s.replace(/^\s+|\s+$/g, "");
}


function getCurrentTime(){
	var currentTime = new Date();
	var month = currentTime.getMonth() + 1;
	var day = currentTime.getDate();
	var year = currentTime.getFullYear();
	var hours = currentTime.getHours();
	var minutes = currentTime.getMinutes();
	var footDateSpan = document.getElementById('FootDate');
	if(hours<10) hours='0'+hours;
	if(minutes<10) minutes='0'+minutes;
	
	footDateSpan.innerHTML=year+"."+month+"."+day+" "+hours+":"+minutes;
}

