//=====================================================================||
//               CBC RealEstate General Include                        ||
//                                                                     ||
// This JS should be included on all CBC.com pages, and contains only  ||
// shared functions that may be called from most any page.             ||
//                                                                     ||
// Portions of this script are used with permission from the NOP Design||
// Free-Shopping Cart, located at http://www.nopdesign.com/freecart    ||
//                                                                     ||
//=====================================================================||

//---------------------------------------------------------------------||
// GLOBAL VARIABLES                                                    ||
//---------------------------------------------------------------------||
g_CbcPath = 'http://www.webtechpro.com.au/cbcom/';
//g_CbcPath = 'http://www.cbca.com.au/';
//g_CbcTabImages[<tab name>][<off|on>]
g_CbcTabImages = new Array();
g_CbcTabImages['off'] = new Array();
g_CbcTabImages['on']  = new Array();

g_CbcTabImages['off']['tabhome']        = g_CbcPath+'images/tabhome.gif';
g_CbcTabImages['off']['tabfindadvisor'] = g_CbcPath+'images/tabfindadvisor.gif';
g_CbcTabImages['off']['tabsearchprop']  = g_CbcPath+'images/tabsearchprop.gif';
g_CbcTabImages['off']['tabservices']    = g_CbcPath+'images/tabservices.gif';
g_CbcTabImages['off']['tabmarketintel'] = g_CbcPath+'images/tabmarketintel.gif';
g_CbcTabImages['off']['tabjoincbc']     = g_CbcPath+'images/tabjoincbc.gif';
g_CbcTabImages['off']['tababoutus']     = g_CbcPath+'images/tababoutus.gif';

g_CbcTabImages['on']['tabhome']         = g_CbcPath+'images/tabhome_on.gif';
g_CbcTabImages['on']['tabfindadvisor']  = g_CbcPath+'images/tabfindadvisor_on.gif';
g_CbcTabImages['on']['tabsearchprop']   = g_CbcPath+'images/tabsearchprop_on.gif';
g_CbcTabImages['on']['tabservices']     = g_CbcPath+'images/tabservices_on.gif';
g_CbcTabImages['on']['tabmarketintel']  = g_CbcPath+'images/tabmarketintel_on.gif';
g_CbcTabImages['on']['tabjoincbc']      = g_CbcPath+'images/tabjoincbc_on.gif';
g_CbcTabImages['on']['tababoutus']      = g_CbcPath+'images/tababoutus_on.gif';

/*
g_CbcTabImages['off']['tabhome']        = '../images/tabhome.gif';
g_CbcTabImages['off']['tabfindadvisor'] = '../images/tabfindadvisor.gif';
g_CbcTabImages['off']['tabsearchprop']  = '../images/tabsearchprop.gif';
g_CbcTabImages['off']['tabservices']    = '../images/tabservices.gif';
g_CbcTabImages['off']['tabmarketintel'] = '../images/tabmarketintel.gif';
g_CbcTabImages['off']['tabjoincbc']     = '../images/tabjoincbc.gif';
g_CbcTabImages['off']['tababoutus']     = '../images/tababoutus.gif';

g_CbcTabImages['on']['tabhome']         = '../images/tabhome_on.gif';
g_CbcTabImages['on']['tabfindadvisor']  = '../images/tabfindadvisor_on.gif';
g_CbcTabImages['on']['tabsearchprop']   = '../images/tabsearchprop_on.gif';
g_CbcTabImages['on']['tabservices']     = '../images/tabservices_on.gif';
g_CbcTabImages['on']['tabmarketintel']  = '../images/tabmarketintel_on.gif';
g_CbcTabImages['on']['tabjoincbc']      = '../images/tabjoincbc_on.gif';
g_CbcTabImages['on']['tababoutus']      = '../images/tababoutus_on.gif';

*/


//---------------------------------------------------------------------||
// FUNCTION:    CBC_openPopup                                          ||
// PARAMETERS:  Url, name of popup, widgets, url to open               ||
// RETURNS:     N/A                                                    ||
// PURPOSE:     Create popup, give focus where appropriate             ||
//---------------------------------------------------------------------||
function CBC_openPopup( url, name, widgets, openerUrl )
{
   var host = location.hostname;
   var popupWin = window.open( url, name, widgets );
   if ( popupWin && popupWin.opener ) {
      if ( openerUrl ) {
         popupWin.opener.location = openerUrl;
         popupWin.focus();
      }
      popupWin.opener.top.name = "opener";
   }
}



//---------------------------------------------------------------------||
// FUNCTION:    FallBackPopup                                          ||
// PARAMETERS:  Url, width of popup, height of popup                   ||
// RETURNS:     False on popup successfull                             ||
// PURPOSE:     Create popup, or go to URL ere appropriate             ||
//---------------------------------------------------------------------||
function FallBackPopup( strUrl, iWidth, iHeight )
{
   wind=window.open(strUrl,'','width='+iWidth+',height='+iHeight+',resizable=yes,scrollbars=yes,status=yes');
   if ( wind ) return false;

   return true;
}

//---------------------------------------------------------------------||
// FUNCTION:    EmptyIfEnter                                           ||
// PARAMETERS:  Field to scrub                                         ||
// RETURNS:     N/A                                                    ||
// PURPOSE:     Removes Enter... text from fields                      ||
//---------------------------------------------------------------------||
function EmptyIfEnter(pField)
{
   if ( pField ) {
      if ( pField.value )
         if ( pField.value.length > 5 )
            if ( pField.value.indexOf("Enter ") >= 0 || pField.value.indexOf("Entre ") >= 0 || pField.value.indexOf("Introduzca") >= 0 )
               pField.value = '';
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    getCookieVal                                           ||
// PARAMETERS:  offset                                                 ||
// RETURNS:     URL unescaped Cookie Value                             ||
// PURPOSE:     Get a specific value from a cookie                     ||
//---------------------------------------------------------------------||
function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);

   if ( endstr == -1 )
      endstr = document.cookie.length;
   return(unescape(document.cookie.substring(offset, endstr)));
}


//---------------------------------------------------------------------||
// FUNCTION:    FixCookieDate                                          ||
// PARAMETERS:  date                                                   ||
// RETURNS:     date                                                   ||
// PURPOSE:     Fixes cookie date, stores back in date                 ||
//---------------------------------------------------------------------||
function FixCookieDate (date) {
   var base = new Date(0);
   var skew = base.getTime();

   date.setTime (date.getTime() - skew);
}


//---------------------------------------------------------------------||
// FUNCTION:    GetCookie                                              ||
// PARAMETERS:  Name                                                   ||
// RETURNS:     Value in Cookie                                        ||
// PURPOSE:     Retrieves cookie from users browser                    ||
//---------------------------------------------------------------------||
function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;

   while ( i < clen ) {
      var j = i + alen;
      if ( document.cookie.substring(i, j) == arg ) return(getCookieVal (j));
      i = document.cookie.indexOf(" ", i) + 1;
      if ( i == 0 ) break;
   }

   return(null);
}


//---------------------------------------------------------------------||
// FUNCTION:    SetCookie                                              ||
// PARAMETERS:  name, value, expiration date, path, domain, security   ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Stores a cookie in the users browser                   ||
//---------------------------------------------------------------------||
function SetCookie (name,value,expires,path,domain,secure) {
   document.cookie = name + "=" + escape (value) +
                     ((expires) ? "; expires=" + expires.toGMTString() : "") +
                     ((path) ? "; path=" + path : "") +
                     ((domain) ? "; domain=" + domain : "") +
                     ((secure) ? "; secure" : "");
}


//---------------------------------------------------------------------||
// FUNCTION:    DeleteCookie                                           ||
// PARAMETERS:  Cookie name, path, domain                              ||
// RETURNS:     null                                                   ||
// PURPOSE:     Removes a cookie from users browser.                   ||
//---------------------------------------------------------------------||
function DeleteCookie (name,path,domain) {
   if ( GetCookie(name) ) {
      document.cookie = name + "=" +
                        ((path) ? "; path=" + path : "") +
                        ((domain) ? "; domain=" + domain : "") +
                        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    UrlDecode                                              ||
// PARAMETERS:  String to url decode                                   ||
// RETURNS:     Decoded string                                         ||
// PURPOSE:     Returns plain text string urldecoded.                  ||
//---------------------------------------------------------------------||
function UrlDecode(strEncodeString) 
{
  var lsRegExp = /\+/g;
  return unescape(String(strEncodeString).replace(lsRegExp, " ")); 
}

//---------------------------------------------------------------------||
// FUNCTION:    QueryString                                            ||
// PARAMETERS:  Key to read                                            ||
// RETURNS:     value of key                                           ||
// PURPOSE:     Read data passed in via GET mode                       ||
//---------------------------------------------------------------------||
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString(key) {
   var value = null;
   for (var i=0;i<QueryString.keys.length;i++) {
      if (QueryString.keys[i]==key) {
         value = QueryString.values[i];
         break;
      }
   }
   return value;
}


//---------------------------------------------------------------------||
// FUNCTION:    QueryString_Parse                                      ||
// PARAMETERS:  (URL string)                                           ||
// RETURNS:     null                                                   ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//---------------------------------------------------------------------||
function QueryString_Parse() {
   var query = window.location.search.substring(1);
   var pairs = query.split("&"); 
   for (var i=0;i<pairs.length;i++) {
      var pos = pairs[i].indexOf('=');
      if (pos >= 0) {
         var argname = pairs[i].substring(0,pos);
         var value = pairs[i].substring(pos+1);
         QueryString.keys[QueryString.keys.length] = argname;
         QueryString.values[QueryString.values.length] = value;
      }
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    SavedQueryString_Parse                                 ||
// PARAMETERS:  (URL string)                                           ||
// RETURNS:     null                                                   ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//              -- parses passed in string URL instead of current QS   ||
//---------------------------------------------------------------------||
function SavedQueryString_Parse( strUrl ) {
   if ( strUrl == null ) return;
   var query = '';
   var qpos = strUrl.indexOf('?');
   if( qpos > 0 ){
      query = strUrl.substring(qpos+1);
   } else {
      query = strUrl;
   }   
   var pairs = query.split("&"); for (var i=0;i<pairs.length;i++) {
      var pos = pairs[i].indexOf('=');
      if (pos >= 0) {
         var argname = pairs[i].substring(0,pos);
         var value = pairs[i].substring(pos+1);
         QueryString.keys[QueryString.keys.length] = argname;
         QueryString.values[QueryString.values.length] = value;
      }
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    MoneyFormat                                            ||
// PARAMETERS:  Number to be formatted                                 ||
// RETURNS:     Formatted Number                                       ||
// PURPOSE:     Reformats Dollar Amount to #.## format                 ||
//---------------------------------------------------------------------||
function moneyFormat(input) {
   var dollars = Math.floor(input);
   var tmp = new String(input);

   for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) {
      if ( tmp.charAt(decimalAt)=="." )
         break;
   }

   var cents  = "" + Math.round(input * 100);
   cents = cents.substring(cents.length-2, cents.length)
   dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

   if ( cents == "0" )
      cents = "00";

   return(dollars + "." + cents);
}



//---------------------------------------------------------------------||
// FUNCTION:    DisplayLocalComputerDate                               ||
// PARAMETERS:  N/A                                                    ||
// RETURNS:     Does not return                                        ||
// PURPOSE:     Write the local computer's date on the screen          ||
//              page                                                   ||
//---------------------------------------------------------------------||
function DisplayLocalComputerDate()
{
   var months=new Array(13);
   months[1]="1";
   months[2]="2";
   months[3]="3";
   months[4]="4";
   months[5]="5";
   months[6]="6";
   months[7]="7";
   months[8]="8";
   months[9]="9";
   months[10]="10";
   months[11]="11";
   months[12]="12";
   var localTime=new Date();
   var localMonth=months[localTime.getMonth() + 1];
   var localDate=localTime.getDate();
   var localYear=localTime.getYear();
   if (localYear < 2000)
      localYear = localYear + 1900;
   document.write("<font face='Verdana,Arial,Helvetica,sans-serif' size='-2' color='Black'> :: " + localMonth + "." + localDate + "." + localYear + "</font>");
}


//---------------------------------------------------------------------||
// FUNCTION:    CbcTab                                                 ||
// PARAMETERS:  Tab name to highlight (must have image defined with    ||
//              this name), boolean highlight = true                   ||
// RETURNS:     Does not return                                        ||
// PURPOSE:     Highlights or dulls a specific tab                     ||
//---------------------------------------------------------------------||
function CbcTab(strTab, bHighlight)
{
   if( document.images ) {
      var pThisImage = eval( 'document.images.' + strTab );         
      if( pThisImage ) {
         if( bHighlight ) {
            if( g_CbcTabImages['on'][strTab] ){
               pThisImage.src = g_CbcTabImages['on'][strTab];
            }
         } else {
            if( g_CbcTabImages['off'][strTab] ){
               pThisImage.src = g_CbcTabImages['off'][strTab];
            }
         }
                 //                        alert(pThisImage.src);
      }
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    PreLoadCbcImages                                       ||
// PARAMETERS:  None                                                   ||
// RETURNS:     Nothing                                                ||
// PURPOSE:     Loads CBC header images into browser cache             ||
//---------------------------------------------------------------------||
function PreLoadCbcImages()
{
   if( document.images ) {
      var pOffArray = g_CbcTabImages['off'];
      var pOnArray = g_CbcTabImages['on'];
      var pElement = null;

      for( pElement in pOffArray ) {
         g_pImageTmp = new Image();
         g_pImageTmp.src = pOffArray[pElement];
      }
      for( pElement in pOnArray ) {
         g_pImageTmp = new Image();
         g_pImageTmp.src = pOffArray[pElement];
      }
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    HighlightCurrentPageLeftNav                            ||
// PARAMETERS:  None                                                   ||
// RETURNS:     Nothing                                                ||
// PURPOSE:     Highlights left navigation entry for current URL       ||
//---------------------------------------------------------------------||
function HighlightCurrentPageLeftNav()
{
   if( document.getElementsByName ) {
      var strLongUrl = document.location.href;
      var strShortUrl = document.location.pathname;
      var pa_Elements = document.getElementsByName('leftnavhref');
      var strTemp;
      if( pa_Elements.length > 1 ) {         
         for( var i = 0; i < pa_Elements.length; i++ ) {
            if( pa_Elements[i].tagName == 'A' ) {
               strTemp = pa_Elements[i].getAttribute('href')
               if( strLongUrl == strTemp || strShortUrl == strTemp ) {
                  pa_Elements[i].className = 'currpageleftnavhref';
               }
            }
         }

      } else if( pa_Elements.length == 1 ) {
         if( pa_Elements.tagName == 'A' ) {
            strTemp = pa_Elements.getAttribute('href')
            if( strLongUrl == strTemp || strShortUrl == strTemp ) {
               pa_Elements.className = 'currpageleftnavhref';
            }
         }
      }
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    RestorePreviousFormFill                                ||
// PARAMETERS:  Pointer to form to restore values of, cookie name with ||
//              previous data (GET format URL)                         ||
// RETURNS:     Nothing                                                ||
// PURPOSE:     Restores previous form data based on a saved GET mode  ||
//              URL stored in cookie strCookieName.                    ||
//---------------------------------------------------------------------||
function RestorePreviousFormFill( pForm, strCookieName )
{
   if( !pForm || !strCookieName ){
      return;
   }
   SavedQueryString_Parse( GetCookie(strCookieName) );
   var iNumElements = pForm.elements.length;
   for( var i=0; i < iNumElements; i++ ){
      if(pForm.elements[i].type == 'select-one' ) {
         var strLast = UrlDecode(QueryString( pForm.elements[i].name ));
         if( strLast ) {
            for( var j=0; j<pForm.elements[i].length; j++ ){
               if( pForm.elements[i][j].value == strLast ){
                  pForm.elements[i][j].selected = true;
               }
            }
         }
      } else if(pForm.elements[i].type == 'text' ) {
         var strLast = UrlDecode(QueryString( pForm.elements[i].name ));
         if( strLast && strLast != 'null'  ){
            pForm.elements[i].value = strLast;
         }         
      }
   }
}
