/**
 *
 * The API performs tasks such as moving and hiding page elements 
 * (DIVs, layers or images) as well as getting and setting 
 * their attributes (such as size/position).
 *
 */
 
/**
 * Browser Sniffer
 *
 */
var ns4 = document.layers;
var op5 = (navigator.userAgent.indexOf("Opera 5")!=-1) ||(navigator.userAgent.indexOf("Opera/5")!=-1);
var op6 = (navigator.userAgent.indexOf("Opera 6")!=-1) ||(navigator.userAgent.indexOf("Opera/6")!=-1);
var agt = navigator.userAgent.toLowerCase();
var mac = (agt.indexOf("mac")!=-1);
var ie = (agt.indexOf("msie") != -1); 
var mac_ie = mac && ie;

var bFixIEPopup = navigator.appName.indexOf('Microsoft') != -1 && (navigator.appVersion.indexOf('MSIE 5') != -1 || navigator.appVersion.indexOf('MSIE 6') != -1);

iframeObj = null;   

function resizeFixMSIE(divId)
{
	if(bFixIEPopup && getObject(divId))
	{
		if(getObject(divId + 'FixMSIE'))
		{
			var pPopup = getObject(divId);
			var iframeObj = getObject(divId + 'FixMSIE');
		}
		else
		{
			var pPopup = getObject(divId);
			var iframeObj = document.createElement('IFRAME');
			
			iframeObj.id = divId + 'FixMSIE';
			iframeObj.style.position = 'absolute';
			iframeObj.style.display = 'none';
			iframeObj.style.zIndex = 1;
			iframeObj.border = '0px';
			iframeObj.src = 'about:blank';
			iframeObj.style.border = '0px';
			document.body.appendChild(iframeObj); 
		}
		
		iframeObj.style.left = pPopup.style.left;
		iframeObj.style.top =  pPopup.style.top;
		
		iframeObj.style.width = pPopup.offsetWidth + 'px';
		iframeObj.style.height = pPopup.offsetHeight + 'px' ;	
		
		iframeObj.style.display = 'block';
		
		iframeObj.style.zIndex = 1;
		pPopup.style.zIndex = 2;
	}
}

function hideFixMSIE(divId)
{
	var pFixIEPopup = getObject(divId + 'FixMSIE');
	if(bFixIEPopup && pFixIEPopup)
    {	
		document.body.removeChild(pFixIEPopup);
	}	
}

/**
 * Get Object By ID
 *
 */
function getObject(objectId) 
{
  if(document.getElementById && document.getElementById(objectId)) 
  {
    return document.getElementById(objectId);
  } 
  else if (document.all && document.all(objectId)) 
  {
    return document.all(objectId);
  } 
  else if (document.layers && document.layers[objectId]) 
  {
    return getObjNN4(document,objectId);
  } 
  else 
  {
    return false;
  }
} 

 
/**
 * Get Style Object 
 *
 */
  
function getStyleObject(objectId) 
{
  if(document.getElementById && document.getElementById(objectId)) 
  {
    return document.getElementById(objectId).style;
  } 
  else if (document.all && document.all(objectId)) 
  {
    return document.all(objectId).style;
  } 
  else if (document.layers && document.layers[objectId]) 
  {
    return getObjNN4(document,objectId);
  } 
  else 
  {
    return false;
  }
}
 

/**
 * Change Object Visibility 
 *
 */
 
function changeObjectVisibility(objectId, newVisibility) 
{
  var styleObject = getStyleObject(objectId, document);
  if(styleObject) 
  {
    styleObject.display = newVisibility;
    return true;
  } 
  else 
  {
    return false;
  }
} 


/**
 * Find Image (NS4 only) 
 *
 */

function findImage(name, doc) 
{
  var i, img;
  for (i = 0; i < doc.images.length; i++) 
  {
    if (doc.images[i].name == name) 
    {
      return doc.images[i];
    }
  }
  for (i = 0; i < doc.layers.length; i++) 
  {
    if ((img = findImage(name, doc.layers[i].document)) != null) 
    {
      img.container = doc.layers[i];
      return img;
    }
  }
  return null;
}


function getImage(name) 
{
  if (document.layers) 
  {
    return findImage(name, document);
  }
  return null;
}


/**
 * Find object (NS4 only) 
 *
 */
 
function getObjNN4(obj,name)
{
  var x = obj.layers;
  var foundLayer;
  for (var i=0;i<x.length;i++)
  {
    if (x[i].id == name)
		{
      foundLayer = x[i];
		}
    else if (x[i].layers.length)
		{
      var tmp = getObjNN4(x[i],name);
		}
    if (tmp) 
		{
  		foundLayer = tmp;
		}
  }
  return foundLayer;
}


/**
 * Get Element Height 
 *
 */
 
function getElementHeight(Elem) 
{
  if (ns4) 
  {
    var elem = getObjNN4(document, Elem);
    return elem.clip.height;
  } 
  else 
  {
    if(document.getElementById) 
    {
      var elem = document.getElementById(Elem);
    } 
  	else if (document.all)
    {
      var elem = document.all[Elem];
    }
    if (op5) 
    { 
      xPos = elem.style.pixelHeight;
    } 
    else 
    {
      xPos = elem.offsetHeight;
    }
    return xPos;
  } 
}


/**
 * Get Element Width
 *
 */
 
function getElementWidth(Elem) 
{
  if (ns4) 
  {
    var elem = getObjNN4(document, Elem);
    return elem.clip.width;
  } 
  else 
  {
    if(document.getElementById) 
    {
      var elem = document.getElementById(Elem);
    } 
    else if (document.all)
    {
      var elem = document.all[Elem];
    }
    if (op5) 
    {
      xPos = elem.style.pixelWidth;
    } 
    else 
    {
      xPos = elem.offsetWidth;
    }
    return xPos;
  }
}




/**
 * Get Element Left
 *
 */

function getElementLeft(Elem) 
{
  if (ns4) 
  {
    var elem = getObjNN4(document, Elem);
    return elem.pageX;
  } 
  else 
  {
    var elem;
    if(document.getElementById) 
    {
      var elem = document.getElementById(Elem);
    } 
    else if (document.all)
    {
      var elem = document.all[Elem];
    }
    xPos = elem.offsetLeft;
    tempEl = elem.offsetParent;
    while (tempEl != null) 
    {
      xPos += tempEl.offsetLeft;
      tempEl = tempEl.offsetParent;
      if(tempEl != null && tempEl.className == 'popupform')
      {
          return xPos;
      }
    }
    return xPos;
  }
}


/**
 * Get Element Top 
 *
 */
 
function getElementTop(Elem) 
{
  if (ns4) 
  {
    var elem = getObjNN4(document, Elem);
    return elem.pageY;
  } 
  else 
  {
    if(document.getElementById) 
    {	
      var elem = document.getElementById(Elem);
    } 
		else if (document.all) 
    {
      var elem = document.all[Elem];
    }
    yPos = elem.offsetTop;
    tempEl = elem.offsetParent;
    while (tempEl != null) 
    {
      yPos += tempEl.offsetTop;
      tempEl = tempEl.offsetParent;
      if(tempEl != null && tempEl.className == 'popupform')
      {
          return yPos;
      }
    }
    return yPos;
  }
}


/**
 * Get Image Width
 *
 */

function getImageWidth(myImage) 
{
  var x, obj;
  if (document.layers) 
  {
    var img = getImage(myImage);
    return img.width;
  } 
  else 
  {
    return getElementWidth(myImage);
  }
  return -1;
}


/**
 * Get Image Height 
 *
 */

function getImageHeight(myImage) 
{
  var y, obj;
  if (document.layers) 
  {
    var img = getImage(myImage);
    return img.height;
  } 
  else 
  {
    return getElementHeight(myImage);
  }
  return -1;
}


/**
 * Get Image Top  
 *
 */

function getImageTop(myImage) 
{
  var y, obj;
  if (document.layers) 
  {
    var img = getImage(myImage);
    if (img.container != null)
  	{
      return img.container.pageY + img.y;
  	}
    else
  	{
      return img.y;
  	}
  } 
  else 
  {
    return getElementTop(myImage);
  }
  return -1;
}


/**
 * Get Image Left
 *
 */

function getImageLeft(myImage) 
{
  var x, obj;
  if (document.layers) 
  {
    var img = getImage(myImage);
    if (img.container != null)
    {
      return img.container.pageX + img.x;
    }
    else
    {
      return img.x;
    }
  } 
  else 
  {
    return getElementLeft(myImage);
  }
  return -1;
}


/**
 * Move Page Element
 *
 */

function moveXY(myObject, x, y) 
{
  obj = getStyleObject(myObject);
  if (ns4) 
  {
    obj.top = y;
    obj.left = x;
  } 
  else 
  {
    if (op5) 
    {
      obj.pixelTop = y;
      obj.pixelLeft = x;
    } 
    else 
    {
      obj.top = y + 'px';
      obj.left = x + 'px';
    }	
  }
}


/**
 * Change Style Class 
 *
 */

function changeClass(pElem, strClassName) 
{
  var elem;
  if(document.getElementById) 
  {
    var elem = document.getElementById(pElem);
  } 
  else if (document.all)
  {
    var elem = document.all[pElem];
  }
  elem.className = strClassName;
}


/**
 * Change Image 
 *
 */

function changeImage(target, source) 
{
  var imageObj;
  if (ns4) 
  {
    imageObj = getImage(target);
    if (imageObj) 
    {
      imageObj.src = eval(source).src;
    } 
  } 
  else 
  {
    imageObj = eval('document.images.' + target);
    if (imageObj) 
  	{
    	imageObj.src = eval(source).src; 
  	}
  }
}


/**
 * Change Background Colour 
 *
 */
 
function changeBGColour(myObject, colour) 
{
  if (ns4) 
  {
    var obj = getObjNN4(document, myObject);
    obj.bgColor=colour;
  } 
  else 
  {
    var obj = getStyleObject(myObject);
    if (op5) 
    {
      obj.background = colour;	
    } 
    else 
    {
      obj.backgroundColor = colour;
    }	
  }
}



/**
 * Get Background Colour 
 *
 */
 
function getBGColour(myObject) 
{
  if (ns4) 
  {
    var obj = getObjNN4(document, myObject);
    return obj.bgColor;
  } 
  else 
  {
    var obj = getStyleObject(myObject);
    if (op5) 
    {
      return obj.background;	
    } 
    else 
    {
      return obj.backgroundColor;
    }	
  }
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
    {
		curleft += obj.x;
    }
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
    {
		curtop += obj.y;
    }
	return curtop;
}

function writit(text, id)
{
	if (document.getElementById)
	{
		x = document.getElementById(id);
		x.innerHTML = '';
		x.innerHTML = text;
	}
	else if (document.all)
	{
		x = document.all[id];
		x.innerHTML = text;
	}
	else if (document.layers)
	{
		x = document.layers[id];
		x.document.open();
		x.document.write(text);
		x.document.close();
	}
}


function getScrollY() 
{
    var scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) 
    {
        // Netscape compliant
        scrOfY = window.pageYOffset;
    } 
    else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
    {
        // DOM compliant
        scrOfY = document.body.scrollTop;
    } 
    else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
    {
        // IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
    }
    return scrOfY;
}

function getScrollX() 
{
    var scrOfX = 0;
    if( typeof( window.pageYOffset ) == 'number' ) 
    {
        // Netscape compliant
        scrOfX = window.pageXOffset;
    } 
    else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
    {
        // DOM compliant
        scrOfX = document.body.scrollLeft;
    } 
    else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
    {
        // IE6 standards compliant mode
        scrOfX = document.documentElement.scrollLeft;
    }
    return scrOfX;
}

function getFrameWidth()
{
    var frameWidth = 0;
    if (self.innerWidth)
    {
        frameWidth = self.innerWidth;
    }
    else if (document.documentElement && document.documentElement.clientWidth)
    {
        frameWidth = document.documentElement.clientWidth;
    }
    else if (document.body)
    {
        frameWidth = document.body.clientWidth;
    }
    return frameWidth;
}

function getFrameHeight()
{
    var frameHeight = 0;
    if (self.innerHeight)
    {
        frameHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
        frameHeight = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        frameHeight = document.body.clientHeight;
    }
    return frameHeight;
}




/*
    AJAX
*/

function GetXmlHttpObject()
{
    var xmlHttp = null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("Your browser does not support AJAX!");
            }
        }
    }
    return xmlHttp;
}

function ExecCommand(strGetRequest, bReload)
{    
    var xmlHttp = GetXmlHttpObject();
    if(xmlHttp)
    {
        xmlHttp.onreadystatechange = function()
        {
            if(xmlHttp.readyState == 4)
            {
                var re = new RegExp('[a-z]+');
                if (xmlHttp.responseText.match(re))       
                {
                    alert(xmlHttp.responseText);
                }
                if(bReload)
                {
                    location.reload(true); 
                }
            }
        }
        
        var d = new Date();           
        xmlHttp.open("GET", strRootPath + "ajax.php5?" + strGetRequest + "&t=" + d.getTime(), true);
        xmlHttp.send(null);
    }
}


function GetContent(strGetRequest, strTarget)
{                 
    var xmlHttp = GetXmlHttpObject();
    if(xmlHttp)
    {
        xmlHttp.onreadystatechange = function()
        {
            if(xmlHttp.readyState == 4)
            {
                getObject(strTarget).innerHTML = xmlHttp.responseText; 
            }
        }
        
        var d = new Date();           
        xmlHttp.open("GET", strRootPath + "ajax.php5?" + strGetRequest + "&t=" + d.getTime(), true);
        xmlHttp.send(null);
    }
}





// search form
var strExtras = '';

function SwapIconImage(pImage)
{
    strImageSrc = pImage.src;
    
    strTempExtras = strImageSrc.replace(/_.+\.gif$/, '');
    strTempExtras = strTempExtras.replace(/.+\//, '');
    
    if(strImageSrc.match(/_over\.gif$/))
    {           
        strImageSrc = strImageSrc.replace(/_over\.gif$/, '_check.gif');

        if(strExtras == '')
        {
            strExtras = strTempExtras;
        }
        else
        {
            strExtras = strExtras + ',' + strTempExtras; 
        }
    }
    else
    {
        strImageSrc = strImageSrc.replace(/_check\.gif$/, '_over.gif');
        strExtras = strExtras.replace(eval('/^'+strTempExtras+'(,)?|(,)?'+strTempExtras+'/'), ''); 
    }
    pImage.src = strImageSrc;     
}

function OverIconImage(pImage)
{
    strImageSrc = pImage.src;
    if(!strImageSrc.match(/_check\.gif$/))
    {        
        if(strImageSrc.match(/_over\.gif$/))
        {        
            strImageSrc = strImageSrc.replace(/_over\.gif$/, '.gif');    
        }
        else
        {       
            strImageSrc = strImageSrc.replace(/\.gif$/, '_over.gif');
        } 
        pImage.src = strImageSrc;    
    }  
}

function SubmitSearchForm(strRootUrl)
{                 
    if(strRootUrl == '')
    {
        return;    
    }
    var pSelect = getObject('Town');  
    strRootUrl = strRootUrl + pSelect[pSelect.selectedIndex].value;    
                                                                            
    var pSelect = getObject('ApartmentType');                                           
    strRootUrl = strRootUrl + '-' + pSelect[pSelect.selectedIndex].value;                               
    
    var pSelect = getObject('Location');
    strRootUrl = strRootUrl + '-' + pSelect[pSelect.selectedIndex].value;
    
    var pSelect = getObject('MaxRatePer');
    strRootUrl = strRootUrl + '-' + pSelect[pSelect.selectedIndex].value; 
    
    var pSelect = getObject('MinPrice');
    strRootUrl = strRootUrl + '-' + pSelect[pSelect.selectedIndex].value; 

    var pSelect = getObject('Sleeps');
    strRootUrl = strRootUrl + '-' + pSelect[pSelect.selectedIndex].value; 
                                                     
    if(strExtras != '')
    {
        strRootUrl = strRootUrl + '-' + strExtras;
    } 
    strRootUrl = strRootUrl + '.html'; 
    GetLocation(strRootUrl);
}


/**
 * GetLocation 
 *
 */
function GetLocation(strUrl)
{
    if (window.location.replace)
    {
        window.location.replace(strUrl);
    }
    else
    {
        window.location = strUrl;
    }
}