﻿var FES_DAD_QUICKSEARCH_PROJECT = new FES_DAD_QUICKSEARCH_PROJECT()





function FES_DAD_QUICKSEARCH_PROJECT()
{
    var _placesOriginalArray
    var _global;
    var _placesArrayPrevious = new Array()
    var _places = new Array()
    var _placesArray = new Array()
    var _height = 0
    var _hover = -1
    var _isHover = false
    var _previousInput = ''
    var _checking = false	
    var _cancelEnterSubmit = false
    var _enabled = true
    var _focused = true
    var _xmlHTTP
    var _typedValue = ''
    var _browserOk = window.ActiveXObject || window.XMLHttpRequest
    var _search = '/modules/fes_dad_quicksearch_project/callback.ashx?action=autoComplete&plaats=';
    var _show = false;
    var _input;
    var _lasturl = '';	
    var IE = ( navigator.appVersion.indexOf("MSIE") != -1 )
    var IE50 = ( navigator.appVersion.indexOf("MSIE 5.0") != -1 )
	
    this.ShowHideControls = function(projectType)
    {
        if(projectType == 'project')
        {
            FES_DAD_QUICKSEARCH_PROJECT.show('labelPrice');
            FES_DAD_QUICKSEARCH_PROJECT.show('sys_fes_dad_quicksearch_project_min_prices');
            FES_DAD_QUICKSEARCH_PROJECT.show('sys_fes_dad_quicksearch_project_max_prices');
            
            FES_DAD_QUICKSEARCH_PROJECT.hide('labelRentPrice');
            FES_DAD_QUICKSEARCH_PROJECT.hide('sys_fes_dad_quicksearch_project_min_rent_prices');
            FES_DAD_QUICKSEARCH_PROJECT.hide('sys_fes_dad_quicksearch_project_max_rent_prices');

            FES_DAD_QUICKSEARCH_PROJECT.show('linkSearchByProjectName');
            FES_DAD_QUICKSEARCH_PROJECT.hide('linkSearchByProjectRentName');
        }
        else
        {
            FES_DAD_QUICKSEARCH_PROJECT.hide('labelPrice');
            FES_DAD_QUICKSEARCH_PROJECT.hide('sys_fes_dad_quicksearch_project_min_prices');
            FES_DAD_QUICKSEARCH_PROJECT.hide('sys_fes_dad_quicksearch_project_max_prices');
            
            FES_DAD_QUICKSEARCH_PROJECT.show('labelRentPrice');
            FES_DAD_QUICKSEARCH_PROJECT.show('sys_fes_dad_quicksearch_project_min_rent_prices');
            FES_DAD_QUICKSEARCH_PROJECT.show('sys_fes_dad_quicksearch_project_max_rent_prices');

            FES_DAD_QUICKSEARCH_PROJECT.hide('linkSearchByProjectName');
            FES_DAD_QUICKSEARCH_PROJECT.show('linkSearchByProjectRentName');
        }    
    }
    
    this.show = function(id)
    {
        FES_DAD_QUICKSEARCH_PROJECT.showOrHide(id, 'block', 'visible');
    }
    this.hide = function(id)
    {
        FES_DAD_QUICKSEARCH_PROJECT.showOrHide(id, 'none', 'hidden');
    }
      
    this.showOrHide = function(id, displayValue, visibilityValue)
    {
        //safe function to hide an element with a specified id
	    if (document.getElementById) 
	    {
	         // DOM3 = IE5, NS6
		    document.getElementById(id).style.display = displayValue;
		    document.getElementById(id).style.visibility = visibilityValue;
	    }
	    else
	    {
		    if (document.layers) 
		    {
		        // Netscape 4
			    document.id.display = displayValue;
			    document.id.visibility = visibilityValue;
		    }
		    else 
		    { 
		        // IE 4
			    document.all.id.style.display = displayValue;
			    document.all.id.style.visibility = visibilityValue;
		    }
	    }
    }
    
    this.OnFocus = function(elementId, defaultText)
    { 
       if (document.getElementById(elementId).value == defaultText)
       {
          document.getElementById(elementId).className = "normal";
          document.getElementById(elementId).value = "";
       }
    }

    this.OnBlur = function(elementId, defaultText)
    {
       var textValue = document.getElementById(elementId).value;

       if (textValue == defaultText || textValue.length == 0)
       {
          document.getElementById(elementId).className = "watermark";
          document.getElementById(elementId).value = defaultText;
       }
       else
          document.getElementById(elementId).className = "normal";
    }
    
    this.GetSearchUrl = function (salePageKey, rentPageKey, backPageKey, watermarkText)
    {
        var sfRange, iRangeValue;
        var oRangeControl = document.getElementById('sys_fes_dad_quicksearch_project_ranges');
        iRangeValue = parseInt(oRangeControl.value, 0);
        
        var sfInput, sInputValue;
        var oInputControl = document.getElementById('sys_fes_dad_quicksearch_project_city'); 
        
        //if value of input field has contains watermarktext; set the value to empty string.
        if (oInputControl.value == this.UrlDecode(watermarkText))
        {
            oInputControl.value = '';
        }
          
        sInputValue = FES_DAD_QUICKSEARCH_PROJECT.UrlEncode(oInputControl.value);
               
        var oMinControl, oMaxControl, destinationPageKey, searchType;        
        if(FES_DAD_QUICKSEARCH_PROJECT.GetCheckedValue(document.forms[0].elements['project_type']) == 'project')
        {
            oMinControl = document.getElementById('sys_fes_dad_quicksearch_project_min_prices');
            oMaxControl = document.getElementById('sys_fes_dad_quicksearch_project_max_prices');
            destinationPageKey = salePageKey;
            searchType = 'project';
            _previousInput = '';
        }
        else
        {
            oMinControl = document.getElementById('sys_fes_dad_quicksearch_project_min_rent_prices');
            oMaxControl = document.getElementById('sys_fes_dad_quicksearch_project_max_rent_prices');
            destinationPageKey = rentPageKey;
            searchType = 'project_rent';
            _previousInput = '';            
        }             
        var iMinValue = parseInt(oMinControl.value, 0);
        var iMaxValue = parseInt(oMaxControl.value, 0);
        
        if(iMaxValue == 0) iMaxValue = 1000000000;
              
        if(IsNumeric(sInputValue) == true )
        {
            document.location.href = "/default.aspx?pageKey=" + destinationPageKey + "&minPrice=" + iMinValue + "&maxPrice=" + iMaxValue + "&placeOrZip=" + sInputValue.toUpperCase() +"&range=" + iRangeValue + "&type=" + searchType + "&SearchInputPage=" + backPageKey;
        }
        else
        {
           document.location.href = "/default.aspx?pageKey=" + destinationPageKey + "&minPrice=" + iMinValue + "&maxPrice=" + iMaxValue + "&city=" + sInputValue.toUpperCase() +"&range=" + iRangeValue + "&type=" + searchType + "&SearchInputPage=" + backPageKey;
        }
    }
    // return the value of the radio button that is checked
    // return an empty string if none are checked, or
    // there are no radio buttons
    this.GetCheckedValue = function(radioObj) {
	    if(!radioObj)
		    return "";
	    var radioLength = radioObj.length;
	    if(radioLength == undefined)
		    if(radioObj.checked)
			    return radioObj.value;
		    else
			    return "";
	    for(var i = 0; i < radioLength; i++) {
		    if(radioObj[i].checked) {
			    return radioObj[i].value;
		    }
	    }
	    return "";
    }    
    
    this.Check = function(eventSelect,event,searchControlId)
    {
        var sControl = "sys_fes_dad_quicksearch_project_city";
        if ( !_browserOk ) return
        var oControl = (eventSelect.name == sControl) ? eventSelect.form.elements[sControl] : null;	
        if ( !_browserOk ) return		
        if (oControl == null) return
        if ( _enabled == false || _checking != false || oControl.value == _previousInput ) return
        if ( event ) if ( event.keyCode == 13 ) 
        {
            eval(document.getElementById(searchControlId).href);  
            return false;
        }
        _input = oControl;		

        if ( oControl.value.length == 0 ) 
        {
            FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide();
            return true;    		
        }

        _typedValue = oControl.value
        Letter = oControl.value.substring(0,1)
        _previousInput = oControl.value

        var nLeft = FES_DAD_QUICKSEARCH_PROJECT.GetElementLeft(oControl);
        var nTop = FES_DAD_QUICKSEARCH_PROJECT.GetElementTop(oControl) + FES_DAD_QUICKSEARCH_PROJECT.GetElementHeight(oControl);
        var nWidth = FES_DAD_QUICKSEARCH_PROJECT.GetElementWidth(oControl) - 2;

        document.getElementById('Lijst').style.left = nLeft + 'px';
        document.getElementById('Lijst').style.top = nTop + 'px';	
        document.getElementById('Lijst').style.width = nWidth + 'px';

        document.getElementById('iFrame').style.left = nLeft + 'px';
        document.getElementById('iFrame').style.top = nTop + 'px';
        document.getElementById('iFrame').style.width = nWidth + 'px';

        document.getElementById('FrameContainer').style.left = nLeft + 'px';
        document.getElementById('FrameContainer').style.top = nTop + 'px';
        document.getElementById('FrameContainer').style.width = nWidth + 'px';
        _checking = true
        _xmlHTTP = false
        if ( window.ActiveXObject ) _xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP")
        if ( window.XMLHttpRequest ) _xmlHTTP = new XMLHttpRequest()

        if ( !_xmlHTTP )
        {
            _placesArray = ''
        }
        else
        {
            _xmlHTTP.onreadystatechange = function()
            {
                if (_xmlHTTP.readyState == 4)
                {
                    _placesArray = _xmlHTTP.responseText
                    sHeader = '<?xml?><plaatsen>'
                    sFooter = '</plaatsen>'
                    _placesArray = _placesArray.substring(sHeader.length, _placesArray.length - sFooter.length)
                    _placesArray = _placesArray.split(',')
                    if ( _placesArray != _placesArrayPrevious )
                    {
                        _placesArrayPrevious = _placesArray
                        _placesOriginalArray = FES_DAD_QUICKSEARCH_PROJECT.CopyArray(_placesArray)
                        FES_DAD_QUICKSEARCH_PROJECT.SetList()
                        FES_DAD_QUICKSEARCH_PROJECT.FilterPlaatsen(oControl.value)
                        document.body.onkeydown = FES_DAD_QUICKSEARCH_PROJECT.KeyDown;
                        document.body.onkeyup = FES_DAD_QUICKSEARCH_PROJECT.KeyUp;	
                        document.body.onkeypress = FES_DAD_QUICKSEARCH_PROJECT.CheckKeypress;
                        document.body.onclick = FES_DAD_QUICKSEARCH_PROJECT.DocumentClick;
                    }
                }
            }

            var oRadioControl = document.getElementById('sys_fes_dad_quicksearch_project_sale'); 
            var searchType = "project_rent";
            if(oRadioControl.checked)
            {
                searchType = 'project';
            }
            var nvmNumbers = "";
            var brokerObject = document.getElementById("sys_fes_dad_quicksearch_project_broker");
            if (brokerObject != null)
                nvmNumbers = brokerObject.value;

            //var searchAndNvm = "&type=" + searchType + "&nvmNumbers=" + nvmNumbers + "&filter=" + filter;
            var searchAndNvm = "&type=" + searchType + "&nvmNumbers=" + nvmNumbers + "&filter=" + "";
            if (_lasturl != _search + Letter + searchAndNvm )
            {
                _lasturl = _search + Letter + searchAndNvm;
                _xmlHTTP.open("GET", _search + Letter + searchAndNvm , true)
                _xmlHTTP.send(null)
            }
            else
            {
                FES_DAD_QUICKSEARCH_PROJECT.FilterPlaatsen(oControl.value)
            }
        }
    }

    this.CopyArray = function(aArray)
    {
        var newArray = new Array()
        for(i=0;i<aArray.length;i++)
        {
            newArray[i] = aArray[i]
        }
        return newArray
    }

    this.SetList = function()
    {
        document.getElementById('Lijst').innerHTML = ''
        itemCount = _placesArray.length > 5 ? 5 : _placesArray.length
        n = 2 + 16 * itemCount
        if ( n > 120 ) n = 120
        _height = 73 - n
        if ( navigator.userAgent.indexOf("Firefox")>0 ) _height += 16

        _height = _height < 0 ? 0 : _height
        if ( _placesArray[0] != '' )
        {
            _hover = -1
            s = '<table cellpadding=0 cellspacing=0 style="width:' + '100%' + ';">'
            for(i=0;i<itemCount;i++)
            {
                placesList = _placesArray[i]
                sAantal = placesList.substring(placesList.indexOf('|')+1, placesList.length)
                placesList = placesList.substring(0, placesList.indexOf('|'))
                placeSlash = placesList.replace('\'', '\\\'')
                _places[i] = placesList
                s += '<tr class="gewoon" id="Link' + i + '" onmouseover="FES_DAD_QUICKSEARCH_PROJECT.MouseOverLink(' + i + ')" onclick="FES_DAD_QUICKSEARCH_PROJECT.Click(\'' + placeSlash + '\')">' 
                s += '<td class="plaats" title="' + placesList + ', ' + sAantal + ' project(en)"><span class="aantal" style="float:right;">' + sAantal + '</span>' + placesList + '</td>'
                s += '</tr>'
            }
            s += '</table>'
            document.getElementById('Lijst').innerHTML += s

            _show = true
            document.getElementById('Lijst').style.display = 'block'
            document.getElementById('Lijst').style.position = 'absolute'			
            if ( IE && !IE50 ) document.getElementById('FrameContainer').style.display = 'block'
        }
        else
        {
            FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide()
        }
        if ( IE && !IE50 ) document.getElementById('iFrame').style.height = (document.getElementById('Lijst').clientHeight+2) + 'px'
        if ( itemCount == 0 ) FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide()
        _checking = false
        FES_DAD_QUICKSEARCH_PROJECT.MouseOverLink(0)
    }		

    this.MouseOverLink = function(i)
    {   
        if ( _hover > -1 )
        {
            if ( document.getElementById('Link' + _hover) ) document.getElementById('Link' + _hover).className = 'gewoon'			
        }
        _hover = i
        if ( i != -1 )
        {
            if ( document.getElementById('Link' + i) ) document.getElementById('Link' + i).className = 'LinkHover'				
        }							
    }

    this.AutoCompleteHide = function()
    {
        document.body.onkeydown = null;
        document.body.onkeyup = null;	
        document.body.onkeypress = null;
        document.body.onclick = null;	
        _previousInput	= '';
        _show = false
        document.getElementById('Lijst').style.display = 'none'
        if ( IE && !IE50 ) document.getElementById('FrameContainer').style.display = 'none'
    }

    this.FilterPlaatsen = function(sString)
    {
        sString = sString.toLowerCase()
        if ( _placesOriginalArray ) _placesArray = FES_DAD_QUICKSEARCH_PROJECT.CopyArray(_placesOriginalArray)
        for ( i=_placesArray.length-1; i>-1; i-- )
        {
            if ( _placesArray[i].substring(0, sString.length).toLowerCase() != sString ) FES_DAD_QUICKSEARCH_PROJECT.Sloop(_placesArray, i)
        }
        FES_DAD_QUICKSEARCH_PROJECT.SetList()
    }

    this.Sloop = function(_placesArray, i)
    {
        for(n=i; n<_placesArray.length-1; n++)
        {
            _placesArray[n] = _placesArray[n+1]
        }
        _placesArray.length --
    }	

    this.GetElementLeft = function(m_elem)
    {
        var x = 0;
        var elem;		
        if(typeof(m_elem) == "object")
            elem = m_elem;
        else
            elem = document.getElementById(m_elem);

        while (elem != null)
        {
            x += elem.offsetLeft;
            elem = elem.offsetParent;
        }
        return parseInt(x);
    }

    this.GetElementTop = function(m_elem)
    {
        var y = 0;
        var elem;
        if(typeof(m_elem) == "object")
        {
            elem = m_elem;
        }
        else
        {
            elem = document.getElementById(m_elem);
        }
        while (elem != null)
        {
            y+= elem.offsetTop;
            elem = elem.offsetParent;
        }
        return parseInt(y);
    }

    this.GetElementWidth = function(m_elem)
    {
        var elem;
        if(typeof(m_elem) == "object")
        {
            elem = m_elem;
        }
        else
        {
            elem = document.getElementById(m_elem);
        }
        return parseInt(elem.offsetWidth);
    }

    this.GetElementHeight = function(m_elem)
    {
        var elem;
        if(typeof(m_elem) == "object")
        {
            elem = m_elem;
        }
        else
        {
            elem = document.getElementById(m_elem);
        }
        return parseInt(elem.offsetHeight);
    }	

    this.KeyDownLink = function(i)
    {
        if ( parseInt(document.getElementById('Lijst').scrollTop) < -36 + i*16 ) document.getElementById('Lijst').scrollTop = -36 + i*16
        if ( parseInt(document.getElementById('Lijst').scrollTop) > i*16 ) document.getElementById('Lijst').scrollTop = i*16
        FES_DAD_QUICKSEARCH_PROJECT.MouseOverLink(i)
        _global=i;
        return false;
    }

    this.DocumentClick = function()
    {
        if ( !_browserOk ) return
        if ( _isHover == false )
        {
            FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide()
        }
    }

    this.CheckKeypress = function(e)
    {
        var key = window.event ? window.event.keyCode : e.which;

        if ( !_browserOk ) return
        if ( _show == true )
        {
            if ( key == 40 ) return false
            if ( key == 38 ) return false
        }
        return true
    }

    this.KeyDown = function(e)
    {
        var key = window.event ? window.event.keyCode : e.which;

        if ( !_enabled ) return
        if ( key == 13 )
        {
            _cancelEnterSubmit = _show
        }
        else
        {
            _cancelEnterSubmit = false
        }
        if ( key == 34 ) FES_DAD_QUICKSEARCH_PROJECT.GoDown(4)
        if ( key == 33 ) FES_DAD_QUICKSEARCH_PROJECT.GoUp(4)
        if ( key == 40 ) FES_DAD_QUICKSEARCH_PROJECT.GoDown(1)
        if ( key == 38 ) FES_DAD_QUICKSEARCH_PROJECT.GoUp(1)
    }

    this.KeyUp = function(e)
    {
        var key = window.event ? window.event.keyCode : e.which;

        if ( !_enabled ) return
        if ( key == 13 ) FES_DAD_QUICKSEARCH_PROJECT.Enter()
        if ( key == 27 ) FES_DAD_QUICKSEARCH_PROJECT.Enter()
        if ( key == 9 ) FES_DAD_QUICKSEARCH_PROJECT.Enter()
    }

    this.Enter = function(bEnter)
    {
        if ( !_browserOk ) return
        if ( _show == true )
        {
            FES_DAD_QUICKSEARCH_PROJECT.CheckAutocompleteSubmit();
            FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide()
            _input.focus()
        }
    }

    this.GoDown = function(n)
    {
        if ( !_browserOk ) return
        if ( _focused == false ) return
        if ( _show == false ) FES_DAD_QUICKSEARCH_PROJECT.Check()
        n = _hover + n
        if ( !window.itemCount ) return
        if ( n > itemCount-1 )
        {
            n = 0
        }
        FES_DAD_QUICKSEARCH_PROJECT.KeyDownLink(n)
    }

    this.GoUp = function(n)
    {
        if ( !_browserOk ) return
        if ( _focused == false ) return
        if ( _show == false ) FES_DAD_QUICKSEARCH_PROJECT.Check()
        n = _hover - n
        if ( n < 0 )
        {
            n = itemCount-1
        }
        FES_DAD_QUICKSEARCH_PROJECT.KeyDownLink(n)
    }

    this.CheckAutocompleteSubmit = function()
    {
        if (( _focused == true && _show == true ) || _cancelEnterSubmit == true )
        {
            FES_DAD_QUICKSEARCH_PROJECT.AutoCompleteHide()
            _input.value = _places[_hover]
            _cancelEnterSubmit = false
            return false
        }

    return FES_DAD_QUICKSEARCH_PROJECT.CheckInput()
    }

    this.Click = function(s)
    {
        _input.value = s
        _show = false
        document.getElementById('Lijst').style.display = 'none'
        if ( IE && !IE50 ) document.getElementById('FrameContainer').style.display = 'none'
            _input.focus()
    }

    this.IsNumeric = function(sText)
    {
        var ValidChars = "0123456789";
        var IsNumber = true;
        var Char;
        for (i = 0; i < sText.length && IsNumber == true; i++) 
        { 
            Char = sText.charAt(i); 
            if (ValidChars.indexOf(Char) == -1) 
            {
                IsNumber = false;
            }
        }
        return IsNumber;
    }    

    this.UrlEncode = function(text) 
    {		
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "?", "%3F");
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "=", "%3D");
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "&", "%26");
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, " ", "+");
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, ",", "%2c");	
        text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "'", "%27");	                						
        return text;
    }
    
    this.UrlDecode = function(text) 
    {		
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "%3F", "?" );
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "%3D", "=" );
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "%26", "&" );
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "+"  , " " );
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "%2c", "," );	
	    text=FES_DAD_QUICKSEARCH_PROJECT.ReplaceAll(text, "%27", "'" );	                						
	    return text;
    }
    

    this.ReplaceAll = function(varb, replaceThis, replaceBy)
    {	
        newvarbarray=varb.split(replaceThis);
        newvarb=newvarbarray.join(replaceBy);	
        return newvarb;
    }     
	this.CheckPrices=function(eventSelect,minPrice,maxPrice)
	{
		var otherSelect = (eventSelect.name == minPrice) ? eventSelect.form.elements[maxPrice] : eventSelect.form.elements[minPrice];
		var thisValue = parseInt(eventSelect.options[eventSelect.selectedIndex].value, 10);
		var otherValue = parseInt(otherSelect.options[otherSelect.selectedIndex].value, 10);
		if (eventSelect.name == minPrice)
		{
			if (thisValue >= otherValue)
			{
				for (var i = 0; i < otherSelect.options.length; i++)
				{
					if (otherSelect.options[i].value > thisValue)
					{
						otherSelect.selectedIndex = i;
						break;
					}
				}
			}
		} 
		else
		{
			if (thisValue <= otherValue)
			{
				for (var i = (otherSelect.options.length - 1); i >= 0 ; i--)
				{
					if (parseInt(otherSelect.options[i].value, 10) < thisValue)
					{
						otherSelect.selectedIndex = i;
						break;
					}
				}
			}
		}
	}
}


