var startRange;
var rangeCount;
var state =  0;
var junk = ( navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Mac') != -1 );
var gecko = ( navigator.userAgent.indexOf('Gecko') != -1 );
var isIE =  ( navigator.userAgent.indexOf('MSIE') != -1 );
var Safari = ( navigator.userAgent.indexOf('KHTML') != -1);
var eventHolder = new Object;
eventHolder['run'] = null;

function hide_target( t ) { t.style.visibility = 'hidden' }
function focus_target( t ) { t.focus() }
function show_target( t ) { t.style.visibility = 'visible' }
function show_target_nospace( t ) { t.style.display = 'block' }
function hide_target_nospace( t ) { t.style.display = 'none' }

function clean( target )
{
   if ( junk )
   {
      target.innerHTML = '';
   }
   else
   {
      while ( target.childNodes.length > 0 )
      {
         target.removeChild(target.firstChild)
      }
   }

}

function addLoader( func )
{
    
    if ( eventHolder['run'] && eventHolder['run'] != null )
	{
	    var oldRun = eventHolder['run'];
	    eventHolder['run'] = function(e) { oldRun(e); func(e) }
	}
    else
	{
	    eventHolder['run'] = function(e) { func(e) }
	}

}


function delCookie (NameOfCookie) 
{
 // The function simply checks to see if the cookie is set.
 // If so, the expiration date is set to Jan. 1st 1970.
  if (Get_Cookie(NameOfCookie)) 
  {  
   var cookie_date = new Date ( );  // current date & time
   cookie_date.setTime ( cookie_date.getTime() - 1 );
   document.cookie = NameOfCookie += "=; expires=" + cookie_date.toGMTString();
  }
}


 function Get_Cookie( name )
 {	
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

 
 function createCookie() 
 {
  var ExpireDate = new Date ();
  var tmp = new Date();
  ExpireDate.setTime(ExpireDate.getTime() + 10000);
  var curCookie = "advanced=true" + "; expires=" + ExpireDate.toGMTString() + "; path=/";
  document.cookie = curCookie;
}


function getCookieData () 
{
   
    if ( window.ActiveXObject ) // if it's ie
    {
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // xmlhttp is global
       xmlhttp.onreadystatechange = function ()
       {	
          if(xmlhttp.readyState == 4) writecookiecontent(xmlhttp.responseText);
       };
    }
    else 
    {
       if (window.XMLHttpRequest) // if it's firefox etc.
       {
         xmlhttp        = new XMLHttpRequest() // xmlhttp is global
         xmlhttp.onload = function () { writecookiecontent(xmlhttp.responseText) };
       }
       else return; // 
    }

	if(read_cookie( 'lets1_eid' ))
	{
	      var id = read_cookie( 'lets1_eid' )
		  if(id != 'undefined')
		  {
	        var url = "http://" + document.location.hostname + "/get_cookie_data.php?membersid=" + id;
            xmlhttp.open("GET", url , true); 
            xmlhttp.send(null);
		  }
		 
	   
	}
	
}

function writecookiecontent (content)
{    
     var targ = document.getElementById('signInBox'); 
	 if(targ && !content.match(/.error./))
	 { 
      document.getElementById('signInBox').innerHTML = content;
     }
}

function setCookie(sName, sValue)
{
  document.cookie = sName + "=" + escape(sValue) + "; path=/;";
}

function getCookie(sName)
{
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) return unescape(aCrumb[1]);
  }
  return 0;
}





function selectAll(searchClass)
{
 var checkboxes = getElementsByClass(searchClass);
 for (i=0; i < checkboxes.length; i++)
 {
  checkboxes[i].checked = true;
 }
}

function unselectAll(searchClass)
{
 var checkboxes = getElementsByClass(searchClass);
 for (i=0; i < checkboxes.length; i++)
 {
  checkboxes[i].checked = false;
 }
}

function getElementsByClass(searchClass,node,tag)
{
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function validateAddAgentForm(f)
{
	var required_fields_labels  = new Array ('Agent name', 'username', 'email', 'address');
    var required_fields_names = new Array ('name', 'username', 'email', 'address' );
    for (var t=0; t < required_fields_names.length; ++t)
    {
        if (f[required_fields_names[t]] && !f[required_fields_names[t]].value.match(/[A-Za-z0-9]/))
	    {
	     alert('Please complete the ' + required_fields_labels[t] + ' field.');
	     return false;
        }
    }
	
	//check agent type
    if(!f.type.options[f.type.selectedIndex].value.match(/[A-Za-z0-9]/))
	{
		alert("please select an agent type"); 
		return false; 
	}
	
	if(!f.allow_virtual_tours.options[f.allow_virtual_tours.selectedIndex].value.match(/[A-Za-z0-9]/))
	{
		alert("please select whether or not virtual tours are enabled."); 
		return false; 
	}
	
	if(!f.password.value.match(/[A-Za-z0-9]/) && !f.password_hidden.value.match(/[A-Za-z0-9]/))
	{
	   alert("Please enter a value for password");	
	   return false;	 
	}
	
	//validate the email address
	//if (! f.email.value.match(re)) 
   //{
     //alert('The email you provided is not a valid email address.');
	 //return false;
   //}
   
	//check edit expriation date
	if(!f.edit_expiration.value.match(/\d\d\d\d\-\d\d\-\d\d/))
	{
		alert("The edit expiration field needs to be in the format dd/mm/yyyy enter 00/00/0000 if not applicable"); 
		return false; 
	}
	
	//check either num listing or edit expiration
	if(f.no_listings.value == '' && f.edit_expiration.value == '00/00/0000')
	{
		alert("Please enter a value for number of listings. Enter -1 for inlimited listings. Enter 0 to prevent them from adding more listings."); 
		return false; 
	}
	
	return true;
	
}



function validateAddListingsForm(f)
{
	var required_fields_labels  = new Array ('title', 'address', 'price');
    var required_fields_names = new Array ('title', 'address', 'price');
    for (var t=0; t < required_fields_names.length; ++t)
    {
        if (f[required_fields_names[t]] && !f[required_fields_names[t]].value.match(/[A-Za-z0-9]/))
	    {
	     alert('Please complete the ' + required_fields_labels[t] + ' field.');
	     return false;
        }
    }
	

	
	
    if(document.mainform.prop_class.options[document.mainform.prop_class.selectedIndex].value == 'home' && !document.mainform.furnished.options[document.mainform.furnished.selectedIndex].value.match(/[A-Za-z0-9]/))
	{
		alert("please select whether property is furnished"); 
		return false; 
	}
	
	if(document.mainform.prop_class.options[document.mainform.prop_class.selectedIndex].value == 'home' && !document.mainform.bedrooms.options[document.mainform.bedrooms.selectedIndex].value.match(/[A-Za-z0-9]/))
	{
		alert("please select number of bedrooms."); 
		return false; 
	}
	
	
	
	return true;
	
}

function toggle(id)
{
    ul = "ul_" + id;
    img = "img_" + id;
    ulElement = document.getElementById(ul);
    imgElement = document.getElementById(img);
    if (ulElement){
            if (ulElement.className == 'closed'){
                    ulElement.className = "open";
                    imgElement.src = "images/opened.jpg";
                    }else{
                    ulElement.className = "closed";
                    imgElement.src = "images/closed.jpg";
                    }
            }
}

function validateArchive(f)
{
	var required_fields_labels  = new Array ('date let', 'rent achieved');
    var required_fields_names = new Array ('date_let', 'rent_achieved');
    for (var t=0; t < required_fields_names.length; ++t)
    {
        if (f[required_fields_names[t]] && !f[required_fields_names[t]].value.match(/[A-Za-z0-9]/))
	    {
	     alert('Please complete the ' + required_fields_labels[t] + ' field.');
	     return false;
        }
    }
	
	if(!document.mainform.let_type.options[document.mainform.let_type.selectedIndex].value.match(/[A-Za-z0-9]/))
	{
		alert("please select a letting type"); 
		return false; 
	}
	
	if(!document.mainform.date_let.value.match(/\d\d\/\d\d\/\d\d\d\d/))
	{
		alert("The date let field needs to be in the format dd/mm/yyyy"); 
		return false; 
	}
	
	return true;
}

function validateLogin(f)
{
	var required_fields_names  = new Array ('username', 'password');
    var required_fields_labels = new Array ('username','password');
    for (var t=0; t < required_fields_names.length; ++t)
    {
        if (f[required_fields_names[t]] && !f[required_fields_names[t]].value.match(/[A-Za-z0-9]/))
	    {
	     alert('Please complete the ' + required_fields_labels[t] + ' field.');
	     return false;
        }
    }
	return true;
}



function sortedby_redirect(sortedBy)
{
 if(document.searchform.searchparamsnosort)
 {
  var searchparams = document.searchform.searchparamsnosort.value;
  var url = '';
  if(searchparams != '')
  {
     url = "/letting/search/search_results.php?" + searchparams + "&sortedby=" + sortedBy;
  }
  else
  {
     url = "/letting/search/search_results.php?sortedby=" + sortedBy;
  }
  document.location.href=url;
 }
 
}

function agent_sortedby_redirect(script)
{	
 if(document.getElementById('searchparams'))
 {
  var searchparams = document.getElementById('searchparams').value;
  var url = '';
  if(searchparams != '')
  {
     url = "/agents/" + script + ".php?" + searchparams + "&sortedby=" + document.mainform.sortedby.options[document.mainform.sortedby.options.selectedIndex].value;
  }
  else
  {
     url = "/agents/" + script + ".php?sortedby=" + document.mainform.sortedby.options[document.mainform.sortedby.options.selectedIndex].value;
  }
  document.location.href=url;
 }
 
}



function addEvent(oTarget, sType, fpDest) {
  sType = 'on'+sType;
  var oOldEvent = oTarget[sType];
  if (typeof oOldEvent != "function") {
    oTarget[sType] = fpDest;
  } else {
    oTarget[sType] = function(e) {
      oOldEvent(e);
      fpDest(e);
    }
  }
}

function onloading()
{
 if(startRange && rangeCount)
 {
  writeRange(startRange, rangeCount);
 }

  if(read_cookie( 'lets1_eid' )) { getCookieData(); } //showSignOut(); }  
  MM_preloadImages('/web/images/navigation/nav_home_open.jpg','/web/images/navigation/nav_viewlistings_open.jpg','/web/images/navigation/nav_register_open.jpg','/web/images/navigation/nav_cityguide_open.jpg','/web/images/navigation/nav_aboutus_open.jpg','/web/images/navigation/nav_services_over.jpg','/web/images/navigation/nav_letyouhome_over.jpg','/web/images/navigation/nav_tenants_over.jpg','/web/images/navigation/nav_landlords_over.jpg','/web/images/navigation/nav_commercial_over.jpg','/web/images/navigation/nav_agentlogin_over.jpg','/web/images/navigation/nav_contact_open.jpg','/web/images/navigation/nav_faq_open.jpg','/web/images/navigation/nav_sitemap_open.jpg');
}
	
function read_cookie( name )
{

    return read_query_type( name, document.cookie, ';' );

}

function read_query_type( name, query, delim )
{

    var desp = new RegExp( delim );
    var list = query.split(desp);


    var res = '';
    var test = new RegExp('^\\s*'+name+'\\s*$');

    for ( var x = 0; x< list.length;  x++ )
	{
	    var sp = list[x].split("=");
	    if ( sp[0].match(test) )
		{

		    res = unescape(sp[1]);
		    break;
		}
	}

    return res;

}


var maxResults   = 5; // per page

function hide_target( t ) { t.style.visibility = 'hidden' }
function focus_target( t ) { t.focus() }
function show_target( t ) { t.style.visibility = 'visible' }
function show_target_nospace( t ) { t.style.display = 'block' }
function hide_target_nospace( t ) { t.style.display = 'none' }

function clean( target )
{
   if ( junk )
   {
      target.innerHTML = '';
   }
   else
   {
      while ( target.childNodes.length > 0 )
      {
         target.removeChild(target.firstChild)
      }
   }

}


function writeRange(start, maxCount )
{
  var target = document.getElementById('rangeBlock');
  if ( ! target || ! rangeCount || ! start || ( rangeCount < maxResults ) || maxCount > 40000)
  {
        var target1 = document.getElementById('pageSelect');
	target1.style.display = 'inline';
        return false;
  }

  var select = document.createElement('select');
  select.name='base';
  
  var target1 = document.getElementById('pageSelect');
  hide_target_nospace(target1);
  
  clean(target);
  addEvent(select,'change', search_range_redirect);
  target.appendChild(select);

  var counter = 1;

  for ( 1; counter <= maxCount; counter = counter + maxResults )
  {
    var exit = ( counter + maxResults ) - 1;
    if ( exit >= maxCount ) { exit = maxCount }

    var opt = new Option( counter + ' to ' + exit, counter );
    if ( counter == exit ) opt = new Option( counter , counter );


    select.options[select.options.length] = opt;
    if ( counter == start )
    {
        select.options[select.options.length -1].selected = true;
    }
  }
  
  var targ = document.getElementById('rangeDropdown'); 
  if(targ) { targ.style.display = "inline"; }
}

function search_range_redirect()
{
 var searchparams = document.mainform.searchparams.value;
 var script = "/letting/search/search_results.php?";
 var url = script + searchparams + "&base=" + this.options[this.selectedIndex].value;
 document.location.href=url;
}

function validateUserProfileForm(f)
{
	var required_fields_names  = new Array ('name', 'email', 'password', 'confirmPassword');
    var required_fields_labels = new Array ('name','email', 'password', 'password again');
    for (var t=0; t < required_fields_names.length; ++t)
    {
        if (f[required_fields_names[t]] && !f[required_fields_names[t]].value.match(/[A-Za-z0-9]/))
	    {
	     alert('Please complete the ' + required_fields_labels[t] + ' field.');
	     return false;
        }
    }
	
	
   if (! f.email.value.match(re)) 
   {
     alert('The email you provided is not a valid email address.');
	 return false;
   }
	 
	
  if(f.password.value != f.confirmPassword.value)
   {
     alert('Your passwords do not match.');
	 return false;
   }
	return true;
}


addEvent( window, 'load', onloading );


var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;