var TablePage = -1;
var MaxRows = 5;
var ArrayPageNo = new Array();
var CurrentGroup = 0;

function isSet(v){return v in this}

function GetPageCount()
{
  if ( isSet('AddressArray') )  
    return Math.ceil( AddressArray.length / 5);
  else
    return 1;
}

function GetRecordCount()
{
  if ( isSet('AddressArray') )  
    return AddressArray.length;
  else
    return 0;
}

function ShowRecords()
{
  HideRecords();
  
  var ItemsTR = document.getElementsByName("rec");
  if ( ItemsTR == null )
    return;       
    	  
  for ( i = 0; i < ItemsTR.length; i ++ )
  {
    var Index = TablePage * ItemsTR.length + i;
    
    if ( (Index < GetRecordCount()) && (TablePage >= 0) )			
    {					
			var ItemsTD = ItemsTR[i].getElementsByTagName("TD");
			if ( ItemsTD == null )
			  break;
			  			
			if (ItemsTD.length > 0)
			  ItemsTD[0].childNodes[0].nodeValue = Index+1;    
			for ( j = 1; j < ItemsTD.length; j++ )
			{
			  ItemsTD[j].childNodes[0].nodeValue = AddressArray[Index][j-1];
			}
			
			ItemsTR[i].style.display = ""; // inline, table-cell, itp. przegladarki roznie interpretuja, dlatego najlepiej uzywac "none" oraz ""
		}		
  }  
}

function HideRecords()
{
  var ItemsTR = document.getElementsByName("rec");
  if ( ItemsTR == null )
    return;       
    	  
  for ( i = 0; i < ItemsTR.length; i ++ )
  {  
	  var ItemsTD = ItemsTR[i].getElementsByTagName("TD");
		if ( ItemsTD == null )
		  break;
			  			
		for ( j = 0; j < ItemsTD.length; j++ )
		{
		  ItemsTD[j].childNodes[0].nodeValue = " ";
		}  	    
		
		ItemsTR[i].style.display = "none";
	}
}

function PrevPage()
{	      
	if ( TablePage <= 0 )	
	  return;		
		
	TablePage = TablePage - 1;				
	PageInfo();
				
	ShowRecords();
}

function NextPage()
{	
  if (TablePage >= GetPageCount()-1)
    return;
    
  TablePage = TablePage + 1;  
  PageInfo();
  	    
  ShowRecords();
}
 
function CurrentPage(tdItem)
{		
	var Value = parseInt(tdItem.childNodes[0].nodeValue)-1;
	
	if ( (Value < 0) || (Value > GetPageCount()) )	
	  return;	
						
	TablePage = Value;				
	PageInfo();		
		 
  ShowRecords();  	
	UpdateHiddenFields();
}

function PageInfo()
{	
	var tdPageInfo = document.getElementById("PageInfo");
	if ( tdPageInfo != null )
	{
		tdPageInfo.childNodes[0].nodeValue = "Strona " + (TablePage + 1) + " z " + GetPageCount();
	}
	
	tdPageInfo = document.getElementById("ItemsCount");
	if ( tdPageInfo != null )
	{
		tdPageInfo.childNodes[0].nodeValue = "Znaleziono: " + GetRecordCount();
	}
}

function PrevGroup()
{	
  if (ArrayPageNo.length <= 0)
    return;
    
	var DecVal = Math.min(parseInt(ArrayPageNo[0].childNodes[0].nodeValue)-1, 10);
	for ( i = 0; i < ArrayPageNo.length; i ++ )
	{
		ArrayPageNo[i].childNodes[0].nodeValue = parseInt(ArrayPageNo[i].childNodes[0].nodeValue) - DecVal;
	}				
	
	if (DecVal > 0)
	{
	  CurrentGroup = CurrentGroup - 1;
	  UpdateHiddenFields();
	}
}

function NextGroup()
{				   
  if (ArrayPageNo.length <= 0)
    return;
     	
	var IncVal = Math.min(GetPageCount()-parseInt( ArrayPageNo[ArrayPageNo.length-1].childNodes[0].nodeValue), 10);	  
	for ( i = 0; i < ArrayPageNo.length; i ++ )
	{
		ArrayPageNo[i].childNodes[0].nodeValue = parseInt(ArrayPageNo[i].childNodes[0].nodeValue) + IncVal;
	}					
	
	if (IncVal > 0)
	{
	  CurrentGroup = CurrentGroup + 1;
	  UpdateHiddenFields();
	}	
}

function DmsToPoint(Deg, Min, Sec, Dir)
{	
  //alert("Deg:"+Deg +"Min:"+ Min +"Sek:"+ Sec +"Dir:"+ Dir);
	var Value = 0;
	Value = Value + parseInt(Deg) + parseInt(Min) / 60 + parseFloat(Sec) / 3600;
	
	if ( (Dir == 'W') || (Dir == 'S') )
		Value = -Value;
		
	return Value;
}

function PrepareLink(Index)
{
  var Index = TablePage * 5 + Index;
    
  if ( (Index >= GetRecordCount()) || (Index < 0) )			
		return;
			
	var Link = "?Link=show&OnClick=1";
	for (i = 0; i < FieldArray.length; i ++)
  {    
		Link = Link + "&" + FieldArray[i] + '=' + AddressArray[Index][i];
	}
	
	var Adres  = AddressArray[Index][3];
	
	var MapX = DmsToPoint(MapPointArray[Index][0], 
												MapPointArray[Index][1], 
												MapPointArray[Index][2], 
												MapPointArray[Index][3]);
	MapX = MapX.toString().substr(0, 9);
	
	var MapY = DmsToPoint(MapPointArray[Index][4], 
												MapPointArray[Index][5], 
												MapPointArray[Index][6], 
												MapPointArray[Index][7]);
	MapY = MapY.toString().substr(0, 9);
	
//	Link = Link + "&" + 'MapX=' + MapX + "&" + 'MapY=' + MapY;
//	Link = Link + "&" + "Page=" + TablePage;
//	Link = Link + "&" + "Group=" + CurrentGroup;
 Link = "?Page=2" + '&Street2=1' + '&Szukaj=1' + '&Adres=' + Adres + '&SeekByCount=1' +  '&Grupy=1' + '&grupa0=on' +  '&MapX=' + MapX + "&" + 'MapY=' + MapY +'&Icons2=Milk&SeekbyCount=SeekbyCount&Command=1&ShowResults=1&Kas=1';

	window.location.href = Link;
}

function PrepareLink2(Value)
{
//	var Link = "?" + Value + "&Page=" + TablePage + "&Group=" + CurrentGroup;
var Link = "?PrepareLink2";
	window.location.href = Link;
}

function InitTable(nCurrentPage, nCurrentGroup)
{	        
	nCurrentPage = parseInt(nCurrentPage);
	
	TablePage = nCurrentPage;				
	PageInfo();	
	
	var trItem = document.getElementById("btn");
	if ( trItem != null )
	{		  
	  var tdItem = trItem.insertCell(-1);	  	  
	  tdItem.appendChild( document.createTextNode("<") );	  
	  tdItem.onclick = function (evt) { PrevPage(); };	  
	  tdItem.style.cursor = "pointer";
	  
	  if (GetPageCount() > 9)
	  {
			tdItem = trItem.insertCell(-1);	  	  
			tdItem.appendChild( document.createTextNode("...") );	  
			tdItem.onclick = function (evt) { PrevGroup(); };	  
			tdItem.style.cursor = "pointer";
	  }	  
		
		ArrayPageNo.length = 0;
		for ( i = 0; i < GetPageCount(); i ++ )
		{
		  if (i >= 9)
		    break;
		    
		  tdItem = trItem.insertCell(-1);	  	  
		  tdItem.appendChild( document.createTextNode( i+1 ) );	  
		  tdItem.onclick = function (evt) { CurrentPage(this); };	  
		  tdItem.style.cursor = "pointer";
		  tdItem.id = "PageNo";
		  tdItem.name = "PageNo";	
		  
		  // Musze zapisywac te obiekty do tablicy, bo nie mogê ich potem znalezc za pomoca
		  // getElementsByName (tzn. w IE moge, ale w Firefoxie juz nie)
		  ArrayPageNo.length = ArrayPageNo.length + 1;
		  ArrayPageNo[ArrayPageNo.length-1] = tdItem;
		} 	 
	  
	  if (GetPageCount() > 9)
	  {
			tdItem = trItem.insertCell(-1);	  	  
			tdItem.appendChild( document.createTextNode("...") );	  
			tdItem.onclick = function (evt) { NextGroup(); };	  
			tdItem.style.cursor = "pointer";	  	  	  	  
	  }
	  
	  tdItem = trItem.insertCell(-1);	  	  
	  tdItem.appendChild( document.createTextNode(">") );	  
	  tdItem.onclick = function (evt) { NextPage(); };	  
	  tdItem.style.cursor = "pointer";	  
	}
			
	ShowRecords();
	
	for ( i = 0; i < nCurrentGroup; i ++ )
	  NextGroup();
	  
	UpdateHiddenFields();	
}

function UpdateHiddenFields()
{
  var frmItem = document.forms("frmMain");
	if ( frmItem != null )
	{
		var Item = frmItem.item("Page");
		if ( Item != null )
			Item.value = TablePage;
			
		Item = frmItem.item("Group");
		if ( Item != null )
			Item.value = CurrentGroup;
	}				
}
