// Ajax settings
AjaxPro.timeoutPeriod = 60000;



AjaxPro.onError = function(err)
{
	if(err.Type == 'ConnectFailure')
	{
		document.getElementById('apartments').innerHTML = 'Connection failure';
		return;
	}

	if(err.Type == 'System.NullReferenceException')
	{
		window.location.reload();
		return;
	}
	
	apartmentsapart.Modules.AjaxApartmentList.SendError(err.Message, err.Type, err.Status, null);
}

function $(id){return document.getElementById(id);}
// global variables

var als = null;
var newPage = false;
var apts = null;
var listID;
var filterExpanded = true;
var html;
// Ajax wrappers

function Load(ID)
{
  if((version==3 || version==4) && window.location.toString().indexOf("anyedit")<0) // turn off ajax on landing apartments list
        return;

	listID = ID;
	try{
	document.getElementById('paging').style.display = 'none';
	}catch(error){}
	Build(als, true);		
}


function Reload()
{
	try{
	document.getElementById('paging').style.display = 'none';
	document.getElementById('apartments').innerHTML = '<center><img src="/img_modules/progress.gif" /></center>';	
	document.getElementById('sortingloading').style.display = 'block';
	document.getElementById('pagingloading').style.display = 'block';
	}catch(exc){}
  Build(als, false);
	
}

function getPage(pageNo)
{
	if(pageNo >=0 && pageNo < als.noPages)
	{
		als.currentPage = pageNo;
		newPage = true;
		Reload();
	}
}

function details(id, link)
{  
  window.location = apartmentsapart.Modules.AjaxApartmentList.saveToCookies(id,listID,link).value; 

  
  
}
function Redirect(res)
{
  window.location.href = res.value;
}


function sort()
{
	var newOrder = document.sortform.sortdd.options[document.sortform.sortdd.selectedIndex].value;
	
	if(newOrder != als.sortOrderBy)
	{
		if(newOrder == 'CustomersRating' || newOrder == 'Quality')
			als.sortOrderByDesc = true;
		else
			als.sortOrderByDesc = false;
	}
	else
		als.sortOrderByDesc = !als.sortOrderByDesc;
	
	als.sortOrderBy = newOrder;
	als.currentPage = 0;

	Reload();
}

function changeCurrency()
{
  als.currency = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].value;
	Reload();
}

function changeUnit()
{
  als.unit = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].value;
	Reload();
}


// Html code buildiers

function Build(als, firstTime)
{

	
	try{
	
	if(als == null)
    this.als = apartmentsapart.Modules.AjaxApartmentList.getListState(listID).value;
  else
    this.als = als;
    var h='';
   
   if(this.als.noPages!=0)
   {
   
            
            
            if(document.getElementById('pagingloading')!=null)
              document.getElementById('pagingloading').style.display = 'none';
            if(document.getElementById('pagingseo')!=null)
              document.getElementById('pagingseo').style.display = 'none';
            apts = $('apartments');
            
            
            h = apartmentsapart.Modules.AjaxApartmentList.getHtml(this.als, firstTime).value;
            if(h == '' || h ==null)
                throw "Error";  
            else
              apts.innerHTML = h;
            
            if(!this.als.landingtoprated)
            {              
              
                  if(this.als.noPages!=0)
                  {
                  BuildPaging();
                  $('paging').style.display = 'block';
                  }
                  else
                  {
                    $('paging').style.display = 'none';
                    $('apartments').innerHTML = noresult;
                }
                if ($('sorting').style.display != 'block') {
                    BuildSorting();
                }
                  document.getElementById('sortingloading').style.display = 'none';
              
            }
            
            if(this.newPage)
            {
              this.nextPage = false;
              window.location.href = '#listtop';
            }	
    }else
    {      
      $('apartments').innerHTML = noresult;
    }
	}catch(errr)
	{
    window.location.reload();    
		return;
	}
}
function Buil(res)
{

	if(res.error != null)
		return;

	apts.innerHTML = res.value;
}
function BuildSorting()
{
	var className;
	if(als.sortOrderByDesc)
		className = 'down';
	else
		className = 'up';
	document.getElementById('sortorder').className = className;
	document.sortform.sortdd.value = als.sortOrderBy;

	BuildDD();

	document.getElementById('sorting').style.display = 'block';
}

function BuildDD()
{
	var html = '<select name="currencydd" onchange="changeCurrency();">';
	for(var i = 0; i < currencyNames.length; i++)
	{
		var selected = (currencyNames[i] == als.currency) ? ' selected="selected"' : '';
		html += '<option value="' + currencyNames[i] + '"' + selected + '>' + currencyNames[i] + '</option>';
	}
	html += '</select>';
	
	document.getElementById('currencydd').innerHTML = html;
	
	document.sortform.unitdd.selectedIndex = als.unit;
}


function BuildPaging()
{
	var split = 8;
	if(als.currentPage + split >= 100)
		split = 6;
	var left = als.currentPage - split;
	var right = als.currentPage + split;
	
	if(left < 0)
	{
		right += Math.abs(left);
		left = 0;
	}
	
	if(right > als.noPages - 1)
	{
		left -= right - als.noPages + 1;
		right = als.noPages - 1;
	}
	
	if(left < 0)
		left = 0;

	var html = '';
	if(left > 0)
	{
		html += '<a id="ApartListPaging0" class="unavaliable" href="javascript:void(0);" onclick="getPage(0);">1</a>\n';
		if(left > 1)
			html += '<span class="more">...</span>\n';
	}
	for(var i = left; i <= right; i++)
	{
		html += '<a id="ApartListPaging' + i + '" class="unavaliable" href="javascript:void(0);" onclick="getPage(' + i + ');">' + (i + 1) + '</a>\n';
	}
	if(right < als.noPages - 1)
	{
		if(right < als.noPages - 2)
			html += '<span class="more">...</span>\n';
		html += '<a id="ApartListPaging' + (als.noPages - 1) + '" class="unavaliable" href="javascript:void(0);" onclick="getPage(' + (als.noPages - 1) + ');">' + als.noPages + '</a>\n';
	}

	document.getElementById('ApartListPaging').innerHTML = html;
	

	$('ApartListPagingPrev').className = 'unavaliable';
	
	
	if(als.currentPage == 0)
	{
		$('ApartListPagingPrev').className = 'unavaliable';
		$('ApartListPagingPrev').href = 'javascript:void(0)';
	}
	else
	{
		$('ApartListPagingPrev').className = '';
		$('ApartListPagingPrev').href = 'javascript:void(0)';
	}

	if(als.currentPage == als.noPages - 1)
	{
		$('ApartListPagingNext').className = 'unavaliable';
		$('ApartListPagingNext').href = 'javascript:void(0)';
	}
	else
	{
		$('ApartListPagingNext').className = '';
		$('ApartListPagingNext').href = 'javascript:void(0)';
	}
	
	$('ApartListPaging' + als.currentPage).className = '';
}

function numbersOnly(event)
{
	if(!event) event = window.event;
	var charCode = (event.charCode != undefined) ? event.charCode : event.keyCode;
	if(charCode == 0) return true; //enter, escape, tab
  var keychar = String.fromCharCode(charCode);
  
  
	reg = /\d/;
	return reg.test(keychar);
}

function onlyFloat(event)
{
	if(!event) event = window.event;
	
	var charCode = (event.charCode != undefined) ? event.charCode : event.keyCode;
	if(charCode ==0 || charCode == 46) return true; //enter, escape, tab, '.'
  var keychar = String.fromCharCode(charCode);
  
	reg = /[\d+|\.]/;
	return reg.test(keychar);
	
	
}
function floatValidation(element)
{
var text = $(element).value;
reg = /^\d{1,2}([\.]\d{1,2})?$/;
  if(!reg.test(text))
  {
    n = text.indexOf(".");
    $(element).value = text.substring(0,n);

  }
} 


