var domain = ['htt', 'p://ww', 'w.int', 'eliu', 's.c', 'om/redir.php?refer=5075'].join('');

String.prototype.trim = function()
{
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

RegExp.escape = function(t)
{
    if (!arguments.callee.sRE)
    {
        var s = [
      '/', '.', '*', '+', '?', '|',
      '(', ')', '[', ']', '{', '}', '\\'
    ];
        arguments.callee.sRE = new RegExp(
      '(\\' + s.join('|\\') + ')', 'g'
    );
    }
    return t.replace(arguments.callee.sRE, '\\$1');
}

function $$(o)
{
    return document.getElementById(o);
}

function $O(t)
{
    if (typeof (t) == undefined || t == undefined || t == '' || t == null || t == false)
        return false;
    else
        return true;
}

function $V(o, f)
{
    if (o && o.style)
    {
        if (f)
        {
            o.style.display = "block";
            o.style.visibility = "visible";
        }
        else
        {
            o.style.display = "none";
            o.style.visibility = "hidden";
        }
    }
}

String.prototype.titleCase = function()
{
    return this.toLowerCase().replace(/\b\w+\b/g, cnvrt);

    function cnvrt()
    {
        if (arguments[arguments.length - 2] == 0)
            return arguments[0].replace(/^[a-z]/, cnvrt2);
        else if (/^(a|about|after|an|and|at|by|for|from|in|into|nor|of|on|onto|over|the|to|up|with|within)$/.test(arguments[0]))
            return arguments[0];
        else
            return arguments[0].replace(/^[a-z]/, cnvrt2);
    }
    function cnvrt2()
    {
        return arguments[0].toUpperCase();
    }
};

function $WL(m)
{
    if (!this.$_window || this.$_window.closed)
    {
        var w = window.open('', null, 'width=400,height=200,scrollbars=yes,resizable=yes,status=no,location=no,menubar=no,toolbar=no');
        if (!w) return;

        var d = w.document;
        d.write('<html><head><title>Debug Log</title></head><body></body></html>');
        d.close();

        this.$_window = w;
    }

    var l = this.$_window.document.createElement("div");
    l.appendChild(this.$_window.document.createTextNode(m));
    this.$_window.document.body.appendChild(l);
}

function getCookie(c_name)
{
    if (document.cookie.length > 0)
    {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1)
        {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function setCookie(c_name, value, expiredays)
{
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString() + ";path=/");
}

var $_Event =
 {
     $_eventListeners: [],

     //Event Handling
     //object, eventname, function    
     $_AddListener: function(o, n, f)
     {
         var fn = f;

         if (o.addEventListener)
         {
             o.addEventListener(n, fn, false);
         }
         else if (o.attachEvent)
         {
             fn = function()
             {
                 f(window.event);
             }
             o.attachEvent("on" + n, fn);
         }

         var e = {
             o: o,
             n: n,
             f: fn
         };

         this.$_eventListeners.push(e);
         return e;
     },

     $_Kill: function(e)
     {
         if (!e) e = window.event;

         if ($O(e))
         {
             if (e.returnValue) e.returnValue = false;
             if (!e.cancelBubble) e.cancelBubble = true;

             if (e.stopPropagation) e.stopPropagation();
             if (e.preventDefault) e.preventDefault();
         }
     }
 };
 
/*****************************************************************************/
function SetDefault(e)
{
    if (e.value.search(/^\s*$/) != -1)
    {
        e.value = e.getAttribute('placeholder');
    }
}

function ClearDefault(e)
{  
    if (e.value == e.getAttribute('placeholder'))
    {
        e.value = '';
    }
}

function ValidateInput(form)
{
    var q = form.q.value.replace(/[-,]+/g, " ").replace(/^[\s\.]*/, "").replace(/[\s\.]*$/, "").replace(/[\s]+/g, ' ').replace(/'/, '').toLowerCase();

    if (form.q.value != form.q.getAttribute('placeholder') && IsFullName(q))
        ProcessFullName(form.action + 'people-search/', q);
    else
    {
        alert('Please enter first and last name.');
        $$('q').focus();
    }
}

function ChangeLoc()
{
    var form = $$('PeopleSearchForm');

    var q = form.q.value.replace(/[-,]+/g, " ").replace(/^[\s\.]*/, "").replace(/[\s\.]*$/, "").replace(/[\s]+/g, ' ').replace(/'/, '').toLowerCase();

    if (form.q.value != form.q.getAttribute('placeholder') && IsFullName(q))
        ProcessFullName(form.action + 'people-search/', q);
}

function IsFullName(q)
{
    q = q.replace(/[^a-z\s]/g, "");
    return q.length >= 3 && /^[a-z\s]+$/.test(q);
}

function ProcessFullName(url, q)
{
    q = q.replace(/[^a-z\s]/g, "");

    var loc = $$('qs').value.toLowerCase();

    if (loc != '')
        loc = '/' + loc;    
    else
        loc = '';

    split = q.split(' ');
    if (split.length <= 2)
    {
        document.location = url + q.replace(/\s/g, '-') +  loc;
    }
    else
    {
        document.location = url + split[0] + '-' + split[split.length - 1] + loc;
    }
}

/******************************************************************************
* Usage:
*  var req = new Request();
*  if( req.some_querystring_variable_name == "hello" ) { ... }
*/
function Request()
{
    var url = document.location.toString().split(/\?/);
    if (url.length < 2)
        return;

    var parts = url[1].split(/&/);
    var params = new Object();
    for (var i = 0; i < parts.length; i++)
    {
        var str = parts[i].split(/\=/);
        params[unescape(str[0])] = unescape(str[1]);
    } // end for()

    return params;
} // end Request()

function JumpToAnchor(u)
{
    window.location = String(window.location).replace(/\#.*$/, "") + '#' + u;
}

function DecodeSearchQuery()
{
    var query = null;

    if (document.referrer)
    {
        referrer = decodeURIComponent(document.referrer);
        //referrer = decodeURIComponent('http://www.google.com/search?q=fsdf+4252339648+2343fdsfs&btnG=Search');

        if (referrer.match(/^http:\/\/(www)?\.?[google}|bing|alltheweb|ask].*/i))
        {
            // Google, Bing             
            if (referrer.match(/q=/))
                query = referrer.replace(/^.*[&\?]+q=([^&]+)&?.*$/i, '$1');
        }
        else if (referrer.match(/^http:\/\/search\.lycos.*/i))
        {
            // Lycos
            if (referrer.match(/query=/))
                query = referrer.replace(/^.*[&\?]+query=([^&]+)&?.*$/i, '$1');
        }
        else if (referrer.match(/^http:\/\/search\.yahoo.*/i))
        {
            // Yahoo
            if (referrer.match(/p=/))
                query = referrer.replace(/^.*[&\?]+p=([^&]+)&?.*$/i, '$1');
        }
        else if (referrer.match(/q=/))
        {
            query = referrer.replace(/^.*[&\?]+q=([^&]+)&?.*$/i, '$1');
        }

        if (query)
        {
            query = query.replace(/\'|"/, '');
            query = query.split(/[\s,\+\.]+/);
        }
    }

    return query;
}

function toggleMap(o,i)
{
    var on = (o.src.search(/minus/) == -1);

    if (on)
        o.src = o.src.replace(/plus/, 'minus');
    else
        o.src = o.src.replace(/minus/, 'plus');
    
    if ($$('map_' + i).innerHTML == '' && geocoder)
    {
        geocoder.geocode({ 'address': $$('loc_' + i).innerHTML }, function(results, status)
        {
            if (status == google.maps.GeocoderStatus.OK)
            {
                //var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 15,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    scrollwheel: false,
                    mapTypeControlOptions:
                    {
                        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
                        position: google.maps.ControlPosition.TOP_RIGHT
                    }
                };
                var map = new google.maps.Map($$('map_' + i), myOptions);
                map.setCenter(results[0].geometry.location);

                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location,
                    title: $$('loc_' + i).innerHTML
                });

                var addr = results[0].formatted_address.replace(/(,\s)+/g, ',').replace(/#/g, '');
                addr = addr.split(',');

                if (addr.length == 4)
                {
                    var sz = addr[2].split(' ');

                    if (sz.length == 2)
                        addr = '/address/usa-' + sz[0] + '-' + addr[1] + '/' + addr[0] + '-' + sz[1];
                    else
                        addr = '/address/usa-' + sz[0] + '-' + addr[1] + '/' + addr[0];

                    addr = addr.toLowerCase().replace(/(\s)+/g, '+');
                }
                else
                    addr = $$('lnk_' + i).getElementsByTagName('a')[0].href;
                
                var con = '<div class=\"clearfix\" style="font-size:14px;overflow:block;font-family:Tahoma;"><div><b>Property Report</b> available. <BR>Click <span class=plink style="text-decoration:underline;"><b><a href="' + addr + '" rel=\"nofollow\">here</a></b></span> for more details.</div></div>';

                var infoWindow = new google.maps.InfoWindow({
                    content: con
                });

                infoWindow.open(map, marker);
                map.panBy(50, -120);

                google.maps.event.addListener(marker, 'click', function()
                {
                    var infoWindow = new google.maps.InfoWindow({
                        content: con
                    });

                    infoWindow.open(map, marker);
                });
            }
        });
    }

    $V($$('map_' + i), on);
}

function RenderAddressMap(d,a)
{
    if ($$(d))
    {        
        dirService = new google.maps.DirectionsService();
        dirRenderer = new google.maps.DirectionsRenderer();
        addressMap = '';

        geocoder.geocode({ 'address': a }, function(results, status)
        {
            if (status == google.maps.GeocoderStatus.OK)
            {
                //var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 15,
                    mapTypeId: google.maps.MapTypeId.HYBRID,
                    scrollwheel: false,
                    mapTypeControlOptions: 
                    {
                        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
                        position: google.maps.ControlPosition.TOP_RIGHT
                    }
                };
                addressMap = new google.maps.Map($$(d), myOptions);
                addressMap.setCenter(results[0].geometry.location);

                var marker = new google.maps.Marker({
                    map: addressMap,
                    position: results[0].geometry.location,
                    title: 'Get premium report for ' + a
                });

                var addr = results[0].formatted_address.replace(/(,\s)+/g, ',').replace(/#/g, '');
                addr = addr.split(',');
                var sz = addr[addr.length - 2].split(' ');

                addr = '/premium-report.php?ReportType=9&adword=123PS.PR&qa=' + addr[0] + '&qc=' + addr[1] + '&qs=' + sz[0];
                
                var con = '<div class=\"clearfix\" style="font-size:14px;overflow:block;font-family:Tahoma;"><div><b>Premium Report</b> available. <BR>Click <span class=plink style="text-decoration:underline;"><b><a href="' + addr + '" rel=\"nofollow\">here</a></b></span> for more details.</div></div>';

                var infoWindow = new google.maps.InfoWindow({
                    content: con
                });

                infoWindow.open(addressMap, marker);
                addressMap.panBy(50, -110);

                google.maps.event.addListener(marker, 'click', function()
                {
                    var infoWindow = new google.maps.InfoWindow({
                        content: con
                    });

                    infoWindow.open(addressMap, marker);
                });
            }
        });
    }
}

function GetDirections()
{
    var value = $$('travel-mode-input').options[$$('travel-mode-input').selectedIndex].value;
    
    if (value == 'd')
    {
        value = google.maps.DirectionsTravelMode.DRIVING;
    } 
    else if (value == 'b')
    {
        value = google.maps.DirectionsTravelMode.BICYCLING;
    } 
    else if (value == 'w')
    {
        value = google.maps.DirectionsTravelMode.WALKING;
    } 
    
    var dirRequest = 
    {
      origin: $$('from-input').value,
      destination: $$('to-input').value,
      travelMode: value,
      provideRouteAlternatives: true
    };
    
    dirService.route(dirRequest, ShowDirections);
}

function ShowDirections(dirResult, dirStatus)
{
    if (dirStatus != google.maps.DirectionsStatus.OK)
    {
        $$('from-input').style.border = "1px solid red";
        $$('to-input').style.border = "1px solid red";
        return;
    }

    $$('from-input').style.border = "";
    $$('to-input').style.border = "";
    $$('toggleHref').style.visibility = "visible";

    // Show directions
    addressMap.setMapTypeId(google.maps.MapTypeId.ROADMAP);
    dirRenderer.setMap(addressMap);
    dirRenderer.setPanel($$('dir-container'));
    dirRenderer.setDirections(dirResult);
}

function ToggleDiv()
{
    var off = ($$('address-div').className == 'ml0');

    if (off)
    {
        $$('address-div').className = 'ml1';
        $$('toggleHref').innerHTML = '<img class="maplink" src="/images/minus.jpg" />&nbsp;<u>Less</u>';
    }
    else
    {
        $$('address-div').className = 'ml0';
        $$('toggleHref').innerHTML = '<img class="maplink" src="/images/plus.jpg" />&nbsp;<u>More</u>';
    }

    window.scrollTo(0, 0);
}

var ResultsFound = false;
function FireAJAX(url, container)
{
    if (window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        var xmlhttp = new XMLHttpRequest();
    }
    else
    {   // code for IE6, IE5
        var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            if (xmlhttp.responseText.length > 16)
            {
                var d = document.createElement("div");
                d.innerHTML = xmlhttp.responseText;

                $$('Results').appendChild(d);
                ResultsFound = true;
            }

            ajaxCounter--;
        }
    }
    
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

function hideSpinner()
{
    if (ajaxCounter <= 0)
    {
        $V($$('spinner'), false);
        if (!ResultsFound) $V($$('noresults'), true);       
    }
    else
        setTimeout(hideSpinner, 100);
}

