/***********************************************
* PropertyADD Website Javacsript
* © Addactive Limited 2007, All Rights Reserved
* Visit www.propertyadd.com for further information
***********************************************/

var rootUrl='/pa';
var maps=true;
var podCasts=false;
var floorPlans=true;
var featured=false;
var wanted=false;
var showRef=false;

      var tReq;
      var fpReq;
      var wpReq;
      var psrReq;
      var carReq;
      var locReq;
      var regReq;
      var imgs;
      var imageindex=0;
      var locations;

      function removeChildNodes(entity) {
          while (entity.childNodes[0]) { entity.removeChild(entity.childNodes[0]);}
      }

      function FireAJAX() {
          if (featured) {
            FeaturedProperty();
            setInterval('FeaturedProperty()',15000);
          }
          if (wanted) {
            WantedProperty();
            setInterval('WantedProperty()',10000);
          }
      }

      function FeaturedProperty() {
          fpReq=GetAJAXRequest(rootUrl + "/property-ajaxfeatured.aspx?class=smallboldpurpletext&h=90&w=120", ReceiveFeaturedProperty)
      }

      function ReceiveFeaturedProperty() {
      
          if (fpReq) {
              if (fpReq.readyState == 4) {
                  if (fpReq.status == 200) {
                      document.getElementById('FeaturedProperty').innerHTML=fpReq.responseText;
                  } else {
                      document.getElementById('FeaturedProperty').innerHTML='No featured properties are available';
                  }
              }
          }
      }


      function WantedProperty() {
          wpReq=GetAJAXRequest(rootUrl + "/contact-ajaxwanted.aspx", ReceiveWantedProperty)
      }

      function ReceiveWantedProperty() {

          if (wpReq) {
              if (wpReq.readyState == 4 && wpReq.status == 200) {
                  document.getElementById('WantedProperty').innerHTML=wpReq.responseText + '<br><br>Can you help?';
              } else {
                  document.getElementById('WantedProperty').innerHTML='No wanted properties are available';
              }
          }
      }

      function Testimonial() {
          tReq=GetAJAXRequest(rootUrl + "/contact-ajaxtestimonials.aspx", ReceiveTestimonial)
      }

      function ReceiveTestimonial() {

          if (tReq) {
              if (tReq.readyState == 4 && tReq.status == 200) {
                  document.getElementById('Testimonial').innerHTML=tReq.responseText;
              } else {
                  document.getElementById('Testimonial').innerHTML='failed';
              }
          }
      }
     
      function DoRegisterApplicant() {

          var url;
          url=rootUrl + '/contact-ajaxregisterapplicant.aspx?';
          url=url + 'firstName=' + document.getElementById('first name').value;
          url=url + '&surname=' + document.getElementById('surname').value;
          url=url + '&email=' + document.getElementById('email address').value;
          url=url + '&telephone=' + document.getElementById('telephone').value;
          url=url + '&house=' + document.getElementById('house name').value;
          url=url + '&street=' + document.getElementById('street').value;
          url=url + '&area=' + document.getElementById('area').value;
          url=url + '&town=' + document.getElementById('town').value;
          url=url + '&county=' + document.getElementById('county').value;
          url=url + '&postcode=' + document.getElementById('post code').value;
          url=url + '&locations=' + document.getElementById('locations').value;
          url=url + '&from=' + document.getElementById('priced from').value;
          url=url + '&to=' + document.getElementById('priced to').value;
          url=url + '&bedrooms=' + document.getElementById('minimum bedrooms').value;
          url=url + '&comments=' + document.getElementById('comments').value;

          regReq=GetAJAXRequest(url, ReceiveRegistration)
      }

      function ReceiveRegistration() {

          if (regReq) {
              if (regReq.readyState == 4 && regReq.status == 200) {
                  document.getElementById('Registration').innerHTML=document.getElementById('Registration').innerHTML + '<br><br>' + regReq.responseText;
              }
          }
      }

      function SetCookie(name, value) {

          var exDate=new Date();
          exDate.setDate(exDate.getDate()+365);
          document.cookie=name + "=" + escape(value) + ";path=;expires=" + exDate.toGMTString();
      }

      function GetCookie(name) {
          if (document.cookie.length>0) {
              start=document.cookie.indexOf(name + "=");
              if (start!=-1) { 
                  start=start + name.length+1; 
                  end=document.cookie.indexOf(";",start);
                  if (end==-1) end=document.cookie.length;
                  return unescape(document.cookie.substring(start,end));
              } 
          }
          return "";
      }

      function PopulatePropertySearchData() {

          document.getElementById('searchfrom').value=GetCookie('pricefrom');
          document.getElementById('searchto').value=GetCookie('priceto');

          if (GetCookie('locations') != '') {
              Locations();
              ShowHideLocations();
          }
      }

      function PopulateLocations() {

          if (GetCookie('locations') != '') {
              var checks=GetCookie('locations').split(",")
              for (var i=0;i<checks.length;i++) {
                  if (document.getElementById('searchlocation' + checks[i])) {
                      document.getElementById('searchlocation' + checks[i]).checked=true;
                  }
              }
              document.getElementById('alllocations').checked=false;
              ShowHideLocations();
          }

      }

      function PersistSearchData() {

          SetCookie('pricefrom', document.getElementById('searchfrom').value);
          SetCookie('priceto', document.getElementById('searchto').value);
          SetCookie('locations', GetCheckedLocations());
          return true;
      }

      function PropertySearch() {

          document.getElementById('PropertySearchResults').style.visibility='hidden';
          document.getElementById('PropertySearchResults').style.display='none';

          if (document.getElementById('PropertySearching') != null) {
            document.getElementById('PropertySearching').style.visibility='';
            document.getElementById('PropertySearching').style.display='block';
          }

          var url;
          url=rootUrl + "/property-ajaxsearch.aspx?from=" + GetCookie('pricefrom');
          url=url + "&to=" + GetCookie('priceto');
          if (document.getElementById('propertyid') != null) {
              url=url + "&propertyid=" + document.getElementById('propertyid').value;
          }
          url=url + "&locations=" + GetCookie('locations');

          psrReq=GetAJAXRequest(url, ReceivePropertySearchResults);

      }

      function PropertyMapSearch() {

          document.getElementById('PropertyMapSearchResults').innerHTML='Searching...';

          if (maps) {

            var url;
            url=rootUrl + "/property-ajaxmapsearch.aspx?width=540&from=";
            if (document.getElementById('from') != null) {
                url=url + document.getElementById('from').value;
            } else if (document.getElementById('searchfrom') != null) {
                url=url + document.getElementById('searchfrom').value;
            }
            url=url + "&to=";
            if (document.getElementById('to') != null) {
                url=url + document.getElementById('to').value;
            } else if (document.getElementById('searchto') != null) {
                url=url + document.getElementById('searchto').value;
            }
            url=url + "&locations=" + GetCheckedLocations();
            psrReq=GetAJAXRequest(url, ReceivePropertyMapSearchResults);
          }
      }


      function PropertyDetails() {

          var url;
          url=rootUrl + "/property-ajaxsearch.aspx"
          if (document.getElementById('propertyid') != null) {
              url=url + "?propertyid=" + document.getElementById('propertyid').value;
          }
          psrReq=GetAJAXRequest(url, ReceivePropertyDetailsResults);
      }


      function CarouselPropertyDetails() {

          var url;
          url=rootUrl + "/property-ajaxsearch.aspx?mode=fulldetails&propertyid=random";
          carReq=GetAJAXRequest(url, ReceiveCarouselPropertyDetailsResults);
      }


      function ReceivePropertySearchResults() {

          if (psrReq) {
              if (psrReq.readyState == 4) {
                  if (psrReq.status == 200) {

                      var properties = XMLParse.xml2ObjArray(psrReq.responseXML, 'Property'); 

                        var ni = document.getElementById('PropertySearchResults');
                        removeChildNodes(ni)

                        var newdiv;
                        var titlediv;
                        var keydiv;
                        var shorttextdiv;
                        var t;
                        var tbody;
                        var tr;
                        var tdimg;
                        var tdtext;
                        var cdiv;

                      if (properties.length==0) {
                          document.getElementById('PropertySearchResults').innerHTML='No properties were found';
                      }

                      for (var i=0; i<properties.length; i++) {

                        newdiv = document.createElement('div');
                        newdiv.className='propertypanel';
                        newdiv.setAttribute('id','Property' + properties[i].Property_ID);
                        ni.appendChild(newdiv);

                        titlediv = document.createElement('div');
                        titlediv.className='propertyheader';
                        newdiv.appendChild(titlediv);

                        t = document.createElement('table');
                        t.style.tableLayout='fixed';
                        newdiv.appendChild(t);
                        tbody = document.createElement('tbody');
                        t.appendChild(tbody);
                        tr= document.createElement('tr');
                        tbody.appendChild(tr);
                        tdimg = document.createElement('td');
                        tdimg.setAttribute('width', '120');
                        tdimg.style.padding=0;
                        tdtext = document.createElement('td');
                        tdtext.setAttribute('width', '100%');
                        tdtext.style.paddingLeft=10;
                        tr.appendChild(tdimg);
                        tr.appendChild(tdtext);

                        if (properties[i].Property_KeyNote != undefined) { 
                          keydiv = document.createElement('div');
                          keydiv.className='propertykeynote';
                          keydiv.innerHTML=properties[i].Property_KeyNote;
                          tdtext.appendChild(keydiv);
                        }

                        shorttextdiv = document.createElement('div');
                        shorttextdiv.className='propertytext';
                        shorttextdiv.innerHTML=TidyText(properties[i].Property_ShortMarketingText);
                        shorttextdiv.innerHTML=shorttextdiv.innerHTML + "<br><br><a class=propertylink href='?key=propertydetails&propertyid=" + properties[i].Property_ID + "'>Click here for further details"
                        if (showRef) {
                            shorttextdiv.innerHTML=shorttextdiv.innerHTML + ", REF: " + properties[i].Property_ID
                        }
                        shorttextdiv.innerHTML=shorttextdiv.innerHTML + "</a>"

                        tdtext.appendChild(shorttextdiv);

                        titlediv.innerHTML="<a href='?key=propertydetails&propertyid=" + properties[i].Property_ID + "' class=propertyheader>" + properties[i].Property_Desc + "</a>";

                        cdiv = document.createElement('div');
                        cdiv.innerHTML=properties[i].PropertyStatus_Desc 
                        if (properties[i].PropertyStatus_Desc == 'For Sale') {
                          cdiv.className='smallgreenheader';
                        } else {
                          cdiv.className='smallredheader';
                        }
                        tdimg.appendChild(cdiv);

                        if (properties[i].Property_Thumbnail == undefined) { 
                         tdimg.innerHTML=tdimg.innerHTML + "<img src='resource/spacer.gif' width=120 height=1>";
                        } else {
                           tdimg.innerHTML=tdimg.innerHTML + "<img src='" + properties[i].Property_Thumbnail + "'>";
                        } 

                        if (properties[i].Property_HasMap=='True') { 
                          cdiv = document.createElement('div');
                          cdiv.innerHTML="Map Available"
                          cdiv.className='smallblackheader';
                          tdimg.appendChild(cdiv);
                        }
                      }


                    if (document.getElementById('PropertySearching') != null) {
                      document.getElementById('PropertySearching').style.visibility='hidden';
                      document.getElementById('PropertySearching').style.display='none';
                    }
                    document.getElementById('PropertySearchResults').style.visibility='';
                    document.getElementById('PropertySearchResults').style.display='block';

                  } else {
                      document.getElementById('PropertySearchResults').innerHTML='No properties were found';
                  }

              }
          }
      }


      function ReceivePropertyMapSearchResults() {

          if (psrReq) {
              if (psrReq.readyState == 4) {
                  if (psrReq.status == 200) {

                      var ms = XMLParse.xml2ObjArray(psrReq.responseXML, 'MapSearch'); 

                      var hot = XMLParse.xml2ObjArray(psrReq.responseXML, 'HotArea'); 
                      var ar;

                        var ni = document.getElementById('PropertyMapSearchResults');
                        removeChildNodes(ni)

                        newdiv = document.createElement('div');
                        ni.appendChild(newdiv);
                        m = document.createElement('map');
                        m.setAttribute('name','hotareas');
                        m.setAttribute('id','hotareas');
                        newdiv.appendChild(m);

                        for (var i=0; i<hot.length; i++) {

                          ar = document.createElement('area');
                          ar.setAttribute('href','?key=propertydetails&propertyid=' + hot[i].Property_ID);
                          ar.setAttribute('shape','rect');
                          ar.setAttribute('coords',hot[i].Left + ',' + hot[i].Top + ',' + hot[i].Right + ',' + hot[i].Bottom);
                          m.appendChild(ar);
                        }

                        newdiv.innerHTML=newdiv.innerHTML + '<img src=' + ms[0].Map_Url + ' usemap=#hotareas width=540 height=400 border=0 style="border-style:solid;border-width:1;border-color:#666666;">';

                  } else {
                      document.getElementById('PropertyMapSearchResults').innerHTML='No properties were found';
                  }
              }
          }
      }


      function ReceivePropertyDetailsResults() {

          if (psrReq) {
              if (psrReq.readyState == 4) {
                  if (psrReq.status == 200) {

                      var properties = XMLParse.xml2ObjArray(psrReq.responseXML, 'Property'); 

                      var details = document.getElementById('propertydetails');
                      var map = document.getElementById('map');
                      var podcast = document.getElementById('podcast');
                      var floorplans = document.getElementById('floorplans');
                      var resources = document.getElementById('resources');

                      var img;
                      var x;
                      var im;
                      var floors;
                      var docs;

                      var obj;
                      var par;
                      var emb;

                      var temp;

                      if (properties.length==0) {
                          document.getElementById('propertydetails').innerHTML='The property details were not found';
                          return false;
                      }

                      document.getElementById('pagetitle').innerHTML=properties[0].Property_Desc + ' - ' + properties[0].PropertyStatus_Desc;

                      details.innerHTML='<b>' + TidyText(properties[0].Property_ShortMarketingText) + '</b><br><br>';

                      if (showRef) {
                          details.innerHTML=details.innerHTML + '<i>Reference: ' + properties[0].Property_ID + '</i><br><br>';
                      }

                      x=document.createElement('div');
                      x.setAttribute('align', 'center');
                      details.appendChild(x);
                      x.innerHTML=x.innerHTML + '<img src="' + properties[0].Property_Image.replace('|x|', '360').replace('|y|', '270') + '" id=mainimage>';

                      imgs=XMLParse.xml2ObjArray(psrReq.responseXML, 'Image'); 

                      if (imgs.length>0) {
                        x.innerHTML=x.innerHTML + '<br><br>';
                        x.innerHTML=x.innerHTML + '<span id=imagedescription style="font-weight:bold;">' + imgs[0].Image_Description + '</span>';
                        x.innerHTML=x.innerHTML + '<br><br><a href="javascript:PreviousImage();"><< Previous</a> <span id=imageposition>1 of ' + imgs.length + '</span> <a href="javascript:NextImage();">Next >></a><br><br>';
                      }

                      for (var i=0; i<imgs.length; i++) {
                        im=document.createElement('img');
                        im.setAttribute('src', imgs[i].Image_Url.replace('|x|', '100').replace('|y|', '75'));
                        im.setAttribute('class', 'thumb');
                        im.setAttribute("onClick", "SwapImage(" + i + ");");
                        im.setAttribute("title", imgs[i].Image_Description);
                        x.appendChild(im);
                        x.innerHTML=x.innerHTML + '&nbsp; ';
                      }

                      var longText=TidyText(properties[0].Property_LongMarketingText)
                      if (longText== '') {
                          longText=TidyText(psrReq.responseXML.getElementsByTagName("Property_LongMarketingText")[0].childNodes[0].nodeValue);
                      }

                      details.innerHTML=details.innerHTML + '<br>' + longText;
                      details.innerHTML=details.innerHTML + '<br><br>' + TidyText(properties[0].Property_AdditionalNotes);

                      if (properties[0].Property_EER != undefined && properties[0].Property_EIR != undefined) {
                          details.innerHTML=details.innerHTML + '<br><br><img src="' + properties[0].Property_EER + '&height=175&width=196">';
                          details.innerHTML=details.innerHTML + '&nbsp;&nbsp;&nbsp;<img src="' + properties[0].Property_EIR + '&height=175&width=196">';
                      }

                      if (maps) {
                        if (properties[0].Property_HasMap != 'False') {
                          map.innerHTML="<img src='" + properties[0].Property_Map + "' width=540 height=400>";
                        } else {
                          map.innerHTML="No map was available for this property";
                          document.getElementById('maptab').disabled=true;
                          document.getElementById('maptab').className='disabledtab';
                        }
                      }

                      if (podCasts) {
                        if (properties[0].Property_Podcast != undefined) {

                          podcast.innerHTML=QT_GenerateOBJECTText(properties[0].Property_Podcast , '320', '240', '', 'AUTOPLAY', 'False', 'SCALE', 'Aspect');

                        } else {
                          podcast.innerHTML = 'No podcast was available for this property';
                          document.getElementById('podcasttab').disabled=true;
                          document.getElementById('podcasttab').className='disabledtab';
                        } 
                      }

                      if (floorPlans) {
                        floors=XMLParse.xml2ObjArray(psrReq.responseXML, 'FloorPlan'); 
                        if (floors.length==0) {
                          floorplans.innerHTML = 'No floor plans were available for this property';
                          document.getElementById('floorplanstab').disabled=true;
                          document.getElementById('floorplanstab').className='disabledtab';
                        }
                        for (var i=0; i<floors.length; i++) {
                          im=document.createElement('img');
                          im.setAttribute('src', floors[i].FloorPlan_Url);
                          im.setAttribute("title", floors[i].FloorPlan_Description);
                          floorplans.appendChild(im);
                        }
                      }

                      docs=XMLParse.xml2ObjArray(psrReq.responseXML, 'Document'); 
                      if (docs.length==0) {
                        resources.innerHTML = 'No other resources were available for this property';
                        document.getElementById('resourcestab').disabled=true;
                        document.getElementById('resourcestab').className='disabledtab';
                      } else {
                        resources.innerHTML="Listed below are other files and resources relevant to this property<br>";
                      }
                      for (var i=0; i<docs.length; i++) {
                        resources.innerHTML=resources.innerHTML + "<br>&bull; <a href='" + docs[i].Document_Url + "' target=_blank>" + docs[i].Document_Description + "</a> <span style='color:#666666;font-style:italic;'>(" + docs[i].Document_Type + ")</span>";
                      }

                  } else {
                      document.getElementById('propertydetails').innerHTML='The property details were not found';
                  }
              }
          }
          return true;
      }


      function ReceiveCarouselPropertyDetailsResults() {

          if (carReq) {
              if (carReq.readyState == 4) {
                  if (carReq.status == 200) {

                      var properties = XMLParse.xml2ObjArray(carReq.responseXML, 'Property'); 
                      var img;

                      if (properties.length==0) {
                          document.getElementById('propertydetails').innerHTML='The property details were not found';
                          return false;
                      }

                      document.getElementById('propertyimage').src=properties[0].Property_Image.replace('|x|', '540').replace('|y|', '405');
                      document.getElementById('propertydesc').innerHTML=properties[0].Property_ShortDesc;
                      if (properties[0].Property_KeyNote != undefined) {
                          document.getElementById('propertykeynote').innerHTML=properties[0].Property_KeyNote;
                      }
                      document.getElementById('propertytext').innerHTML=TidyText(properties[0].Property_ShortMarketingText);
                      if (showRef) {
                          document.getElementById('propertyref').innerHTML='Reference: ' + properties[0].Property_ID;
                      }
                      document.getElementById('propertyprice').innerHTML=properties[0].Property_Price;
                      if (document.getElementById('propertyneg')) {
                        if (properties[0].Property_Negotiator != undefined) {
                            document.getElementById('propertyneg').innerHTML='&nbsp;' + properties[0].Property_Negotiator + '&nbsp;';
                        } else {
                            document.getElementById('propertyneg').innerHTML="&nbsp;us&nbsp;";
                        }
                      }

                 } else {
                      document.getElementById('propertydetails').innerHTML='The property details were not found';
                  }
              }
          }
      }


      function ShowHideLocations() {

          if (document.getElementById('alllocations').checked) {
            document.getElementById('locations').style.display='none';
            document.getElementById('locations').style.visibility='hidden';
            UncheckLocations();
          } else {

            if (document.getElementById('locationlist').value=='') {
              Locations()
            }

            document.getElementById('locations').style.display='block';
            document.getElementById('locations').style.visibility='';

          }
      }

      function UncheckLocations() {
          if (locations != null) {
            for (var i=0; i<locations.length; i++) {
              document.getElementById('searchlocation' + locations[i].Location_ID).checked=false;
            }
          }
      }

      function GetCheckedLocations() {
          var checked='';
          if (locations != null) {
            for (var i=0; i<locations.length; i++) {
              if (document.getElementById('searchlocation' + locations[i].Location_ID).checked) {
                if (checked != '') { checked=checked + ',' }
                checked=checked + locations[i].Location_ID
              }
            }
          }
          return checked;
      }

      function Locations() {
          locReq=GetAJAXRequest(rootUrl + "/location-ajax.aspx", ReceiveLocations)
      }

      function ReceiveLocations() {

          if (locReq) {
            if (locReq.readyState == 4 && locReq.status == 200) {

              locations = XMLParse.xml2ObjArray(locReq.responseXML, 'Location'); 
              var div = document.getElementById('locations');
              var x;
              var y;
              var lastParent='';
              var locids='';

              if (locations.length==0) {
                document.getElementById('locations').innerHTML='No location filtering is available';
                return false;
              }

              for (var i=0; i<locations.length; i++) {

                if (locations[i].Location_Parent != lastParent) {
                  x=document.createElement('div');
                  x.className="lighthead";
                  x.innerHTML="<b>" + locations[i].Location_Parent + "</b>"
                  div.appendChild(x);
                  lastParent=locations[i].Location_Parent;
                }

                x=document.createElement('div');
                y=document.createElement('input');
                y.type="checkbox";
                y.id="searchlocation" + locations[i].Location_ID;
                y.value=locations[i].Location_ID;
                x.appendChild(y);
                x.innerHTML=x.innerHTML + locations[i].Location_Desc
                div.appendChild(x);

                if (i>0) { locids=locids + ',' }
                locids=locids + locations[i].Location_ID

              }

              document.getElementById('locationlist').value=locids;
              PopulateLocations();

            }
          }
      }


      function PreviousImage() {
        imageindex--;
        if (imageindex <0) imageindex=imgs.length-1;
        SwapImage(imageindex);
      }

      function NextImage() {
        imageindex++;
        if (imageindex == imgs.length) imageindex=0;
        SwapImage(imageindex);
      }

      function SwapImage(i) {
        imageindex=i;
        document.getElementById('mainimage').src=imgs[i].Image_Url.replace('|x|', '360').replace('|y|', '270');
        document.getElementById('imageposition').innerHTML=i+1 + ' of ' + imgs.length
        document.getElementById('imagedescription').innerHTML=imgs[i].Image_Description;
      }

      function TidyText(textIn) {
        var temp;
        if (textIn==undefined) {
            temp='';
        } else {
            temp='' + textIn;
        }
        temp=temp.replace(/&lt;/g, "<");
        temp=temp.replace(/&gt;/g, ">");
        return temp;
      }



      function GetAJAXRequest(url, handler) {

          req = false;

          // branch for native XMLHttpRequest object
          if(window.XMLHttpRequest && !(window.ActiveXObject)) {
              try {
                  req = new XMLHttpRequest();
              } catch(e) {
                  req = false;
              }
          // branch for IE/Windows ActiveX version
          } else if(window.ActiveXObject) {
             	try {
                    req = new ActiveXObject("Msxml2.XMLHTTP");
            	} catch(e) {
                try {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
              	} catch(e) {
                    req = false;
              	}
      		}
          }
      	if(req) {
                    req.onreadystatechange = handler;
                    req.open("GET", url, true);
                    req.send("");
      	}

      return req;

      }

function GetQS(variable) { 

    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
        var pair = vars[i].split("="); 
        if (pair[0] == variable) { 
            return pair[1]; 
        } 
    } 
}
    