// ----------------------------------------------------------------------------------------------
// ---------------------------------- HOMEPAGE FUNCTIONS ----------------------------------------
// ----------------------------------------------------------------------------------------------

// FLASH DETECTION VARIABLES

requiredMajorVersion = 8,
requiredMinorVersion = 0,
requiredRevision = 0;

// RANDOMIZE BG IMAGE - NOT NEEDED WITH HOME PAGE LAYOUT CHANGE
/*
YUE.onDOMReady(function() {
    if (getCurrSite() == 'Pulte') {
        var imagenumber = 6;
        var randomize = Math.round((imagenumber - 1) * Math.random()) + 1;
        images = new Array
        images[1] = 'url(/images/Pulte/bg-contentHome1.jpg)'
        images[2] = 'url(/images/Pulte/bg-contentHome2.jpg)'
        images[3] = 'url(/images/Pulte/bg-contentHome3.jpg)'
        images[4] = 'url(/images/Pulte/bg-contentHome4.jpg)'
        images[5] = 'url(/images/Pulte/bg-contentHome5.jpg)'
        images[6] = 'url(/images/Pulte/bg-contentHome6.jpg)'
        YUD.getElementsByClassName('content')[0].style.backgroundImage = images[randomize];
    }
});
*/

var geocoder;

// ----------------------------------------------------------------------------------------------

// MAP OVERLAYS

YUE.onContentReady('interactiveMap', function(e) {
    var swfName = 'pulteHomeSWF';
    switch (getCurrSite()) {
        case 'Pulte':
            break;
        case 'DelWebb':
            swfName = 'delWebbHome';
            break;
        case 'DiVosta':
            swfName = 'divostaHome';
    }
    // functions for stopping and starting flash animations (addresses performance problem with DHTML map interaction)
    var onMapInteraction = function(rollState) { return thisMovie(swfName).onMapInteraction(rollState) }
    var thisMovie = function(movieName) {
        if (navigator.appName.indexOf('Microsoft') != -1) return window[movieName];
        else return document[movieName];
    }

    YUD.batch(this.getElementsByTagName('area'), function(el) {
        var panel = document.getElementById(el.id + 'Panel');
        var anchorLinks = panel.getElementsByTagName('a');
        if (!panel) return;
        var hideTimeout = 0;
        YUE.addListener([el, panel], 'mouseover', function(e) {
            // exclude delWebb
            if (getCurrSite() != 'DelWebb') {
                //onMapInteraction('rollOver'); // stop flash animation
            }
            if (hideTimeout) clearTimeout(hideTimeout);
            panel.style.display = 'block';
            animatePopup(panel, 'easeIn');
        });
        YUE.addListener([el, panel], 'mouseout', function(e) {
            hideTimeout = setTimeout(function() { panel.style.display = 'none' }, 100);
            // exclude Delwebb
            if (getCurrSite() != 'DelWebb') {
                //onMapInteraction('rollOut'); // continue flash animation
            }
        });
        for (var i = 0; i < anchorLinks.length; i++) { YUE.on(anchorLinks[i], 'click', function() { window.location = urlSiteBase + '/find-a-home/Search.aspx?state=' + this.title + '&brand=' + productSearchBrandIds[getCurrSite()] + '&fc=' + this.title }) }
    });

}, this, false);

// map animation
var animatePopup = function(obj, easeType) {
    var anim;
    if (easeType == 'easeIn') anim = new YUA(obj, { opacity: { to: 100} }, 1, YAHOO.util.Easing.easeIn);
    else anim = new YUA(obj, { opacity: { to: 0} }, 1, YAHOO.util.Easing.easeOut);
    anim.animate();
}

// on sumbit, send correct params to product search
var homepageInitSearch = function() {
    var field1 = document.getElementById('customDropDown');
    var region = document.getElementById("regionsPerState");
    var submit1 = document.getElementById('homesAvailableSubmit');
    var field2 = document.getElementById('multiFamily');
    var submit2 = document.getElementById('multiFamilySubmit');
    var field3 = document.getElementById('selectActivities');
    var submit3 = document.getElementById('selectActivitiesSubmit');
    var field4 = document.getElementById('communityAutoCompleteSearch');
    var submit4 = document.getElementById('autocompleteSubmit');
    var field4Default = 'Type Neighborhood Name';
    var auto = document.getElementById('autoCompleteContainer');

    if (field4) { field4.value = field4Default; }

    // submit homes available now (pulte)
    var submitHomesAvailableNow = function() {
        //alert(document.getElementById('ddValue2').value); alert(optn2[document.getElementById('ddValue2').value]);
        var ddValue = document.getElementById('ddValue2').value;
        if (ddValue != "0") {
            if (YUD.hasClass(YUD.getPreviousSibling(field1), 'error')) YUD.getPreviousSibling(field1).style.display = 'none'; //clear error
            if (YUD.hasClass(YUD.getPreviousSibling(field2), 'error')) YUD.getPreviousSibling(field2).style.display = 'none'; //clear error
            if (field2 != null) field2.value = ''; // clear other field
            window.location = urlSiteBase + optn2[ddValue] + '&bcType=region&ha=1';
        }
        else { if (!YUD.getPreviousSibling(field1) || (YUD.getPreviousSibling(field1).style.display == 'none')) showError(field1) }
    }


    // submit townhomes and condos (pulte)
    var submitTownhomesCondos = function() {
        if (field2.value) {
            if (YUD.hasClass(YUD.getPreviousSibling(field1), 'error')) YUD.getPreviousSibling(field1).style.display = 'none'; //clear error
            if (YUD.hasClass(YUD.getPreviousSibling(field2), 'error')) YUD.getPreviousSibling(field2).style.display = 'none'; //clear error
            field1.value = ''; // clear other field
            window.location = urlSiteBase + '/find-a-home/Search.aspx?state=' + field2.value + '&brand=' + productSearchBrandIds[getCurrSite()] + '&htype=2,3&fc=multi' + field2.value;
        }
        else { if (!YUD.getPreviousSibling(field2)) showError(field2) }
    }

    var clearField1 = function() {
        if (YUD.hasClass(YUD.getPreviousSibling(field1), 'error')) YUD.getPreviousSibling(field1).style.display = 'none'; //clear error
        if (YUD.hasClass(YUD.getPreviousSibling(field4), 'error')) YUD.getPreviousSibling(field4).style.display = 'none'; //clear error
    }

    var clearField4 = function() {
        if (field4.value == field4Default) { field4.value = ''; }
        if (YUD.hasClass(YUD.getPreviousSibling(field4), 'error')) YUD.getPreviousSibling(field4).style.display = 'none'; //clear error
        if (YUD.hasClass(YUD.getPreviousSibling(field1), 'error')) YUD.getPreviousSibling(field1).style.display = 'none'; //clear error
    }

    YUE.on(field1, 'focus', clearField1);
    YUE.on(submit1, 'click', submitHomesAvailableNow);
    YUE.on(submit2, 'click', submitTownhomesCondos);
    YUE.on(field4, 'click', clearField4);
    YUE.on(field4, 'focus', clearField4);
    YUE.on(submit4, 'click', submitCommunityName);

    // figure out which select element to submit
    var submitForm = function() {
        if (field1.value) submitHomesAvailableNow();
        else if (field4.value) submitCommunityName();
    }

    // submit on 'ENTER' keypress (ie)
    var homepageKeyPress = new YAHOO.util.KeyListener(document.findAhome, { keys: 13 }, submitForm);
    homepageKeyPress.enable();

    if (auto != null) {
        if (YAHOO.env.ua.gecko > 0) { // firefox
            auto.style.top = field4.offsetTop - 33 + "px";
        } else {
            auto.style.top = field4.offsetTop + 17 + "px";
        }
    }

    // submit points of interest (divosta)
    YUE.on(submit3, 'click', function() {
        if (field3.value) {
            if (YUD.hasClass(YUD.getPreviousSibling(field3), 'error')) YUD.getPreviousSibling(field3).style.display = 'none'; //clear error
            window.location = urlSiteBase + '/find-a-home/Search.aspx';
        }
        else { if (!YUD.getPreviousSibling(field3)) showError(field3) }
    });

    var showError = function(which) {
        var el = document.createElement('div');
        el.className = 'error';
        el.innerHTML = 'Please select a value!'
        YUD.insertBefore(el, which);
    }
}

var submitCommunityName = function() {
    var field4 = document.getElementById('communityAutoCompleteSearch');
    if (submitAutoComplete(true) == false) showNameError(field4);
}

var showNameError = function(which) {
    var el = document.createElement('div');
    var submit4 = document.getElementById('autocompleteSubmit');
    if (!YUD.hasClass(YUD.getPreviousSibling(which), 'error') || YUD.getPreviousSibling(which).style.display == 'none') {
        el.className = 'error';
        el.innerHTML = 'Please enter correct neighborhood name!'
        YUD.insertBefore(el, which);
        if (submit4 != null) {
            submit4.focus();
        }
    }
}

// populate current states into dropdowns
var homepagePopulateDropdowns = function() {
    // starting from 1.0.6 drop down is build in .net
    //var homesAvailable = document.getElementById('homesAvailable');
    //var multiFamily = document.getElementById('multiFamily');
    //populateStateOptions([homesAvailable, multiFamily]);
    //if(homesAvailable.options[0].text == "Select") homesAvailable.options[0].text = "Select State";
}

var homepagePopulateRegions = function() {
    var st = document.getElementById("homesAvailable");
    var stateAbbr = st.value;
    var regionCount = 0;
    var rg = document.getElementById("regionsPerState");
    for (i = rg.options.length - 1; i >= 0; i--) { rg.remove(i); }
    for (r = 0; r < reg.length; r++) {
        if (reg[r][0] == stateAbbr) {
            regionCount++;
        }
    }
    if (regionCount == 0 || regionCount > 1) {
        var optn = document.createElement("OPTION");
        optn.text = "Select Region";
        optn.value = "";
        optn.selected = true;
        rg.options.add(optn);
    }
    for (r = 0; r < reg.length; r++) {
        if (reg[r][0] == stateAbbr) {
            var optn = document.createElement("OPTION");
            optn.text = reg[r][2];
            optn.value = reg[r][1];
            if (regionCount == 1) { optn.selected = true; }
            rg.options.add(optn);
        }
    }
}


// ----------------------------------------------------------------------------------------------


function OpenSearch() {
    var zipSearch = document.getElementById("zipSearch");
    if (zipSearch != null) {
        if ((zipSearch.value != "") && (!isNaN(zipSearch.value))) {
            var zipValue = zipSearch.value;
            var ret = findZip(zipValue);
        }
    }
    if (selectedURL != "") {
        window.location = selectedURL;
    }
}


// ----------------------------------------------------------------------------------------------
// ---------------------------------- CUSTOM DROPDOWN FUNCTIONS ---------------------------------
// ----------------------------------------------------------------------------------------------


// ///////////////////////////////////////////////////////////////////
// Code for custom drop down - see DelWebb home page for example of usage.  //
// Uses jquery library.                                                                                                 //
// ////////////////////////////////////////////////////////////////////

		$(document).ready(function() {
			var $items = $('#listBox ul li');
			var $listBox = $('#listBox');
			var minWidth = $('#ddText').outerWidth() + $('#btn').outerWidth();

			$('#btn').click(function() {//alert("0");alert($('#ddText').eq(0).offset().left);
				if($listBox.css("display")=="none") {
					var left = $('#ddText').eq(0).offset().left;
				  var brVer = jQuery.browser.version;
				  //alert(brVer); alert(left);
				  left = left - 24; // IE 7 by default
				  if(brVer.substr(0,2) != "7.") {
				    if(brVer.substr(0,2) == "6.") { left = left - 4; }
				    else {
				      if (brVer.substr(0,3) == "1.9") { left = left - 7; }
				    }
				  }  
					$listBox.css("left",left).css("min-width",minWidth);
					$listBox.show("fast", function() {
						$listBox.scrollTop(0).eq(0).focus();
					});
				}
				else {
					$listBox.hide("fast");
				}
			});

			$items.click(function(e) {
				$('#ddText').val($(this).text());
				$('#ddValue').val($(this).attr("value"));
				$listBox.hide("fast");
			});
			
			$('#ddText').click(function() {
				$('#btn').click();
			});

			$items.hover(function() {
					$(this).addClass("highLight");
				}, function() {
					$(this).removeClass("highLight");
				}
			);

			$listBox.blur(function(e) {
				$listBox.hide("fast");
			});
		});
		
//////////////////////////////////////////////////////

		$(document).ready(function() {
		// this is for Delwebb home page community selection
			var $items1 = $('#listBox1 ul li');
			var $listBox1 = $('#listBox1');
			var minWidth1 = $('#ddText1').outerWidth() + $('#btn1').outerWidth();

			$('#btn1').click(function() {//alert("1"); alert($('#ddText').eq(0).offset().left);
			                              //alert(jQuery.browser.version);
				if($listBox1.css("display")=="none") {
				  var left1 = $('#ddText1').eq(0).offset().left;
				  var brVer = jQuery.browser.version;
				  //alert(brVer); alert(left1); 
				  var adj = left1 - 315;  // adjustment for window size - 315 is full size on 1024x768
				  left1 = left1 - adj - 28; // IE 7 by default
				  if(brVer.substr(0,2) != "7.") {
				    if(brVer.substr(0,2) == "6.") { left1 = left1; }
				    else {
				      if (brVer.substr(0,3) == "1.9") { left1 = left1 - 2; }
				    }
				  }  
					$listBox1.css("left",left1).css("min-width",minWidth1);
					$listBox1.show("fast", function() {
						$listBox1.scrollTop(0).eq(0).focus();
					});
				}
				else {
					$listBox1.hide("fast");
				}
			});

			$items1.click(function(e) {
				$('#ddText1').val($(this).text());
				$('#ddValue1').val($(this).attr("value"));
				$listBox1.hide("fast");
			});
			
			$('#ddText1').click(function() {
				$('#btn1').click();
			});

			$items1.hover(function() {
					$(this).addClass("highLight");
				}, function() {
					$(this).removeClass("highLight");
				}
			);

			$listBox1.blur(function(e) {
				$listBox1.hide("fast");
			});
		});

/////////////////////////////////////////////////////////////////////

		$(document).ready(function() {
		// this is for Pulte home page region selection
			var $items2 = $('#listBox2 ul li');
			var $listBox2 = $('#listBox2');
			var minWidth2 = $('#ddText2').outerWidth() + $('#btn2').outerWidth();

			$('#ddText2').click(function() {
			    //alert("2"); alert($listBox2.css("display"));
			    //alert($('#ddText2').eq(0).offset().top);
				if($listBox2.css("display")=="none") { 
					var left2 = $('#ddText2').eq(0).offset().left;
					var top2 = $('#listBox2').eq(0).offset().top;
				    var brVer = jQuery.browser.version;
			        //alert(brVer); 
			        //alert(left2);
			        var adj = left2 - 530;  // adjustment for window size - 530 is full size 
			        left2 = left2 -adj - 530; // IE 7 by default
			        top2 = top2 + 156;
			        if(brVer.substr(0,2) != "7.") {
				        if(brVer.substr(0,2) == "6.") { left2 = left2; //top2 = top2+51;
				        }
				        else {
				            if (brVer.substr(0,3) == "1.9") { left2 = left2; }
				        }
				    }  
				    //else { top2 = top2 - 186; } // IE7
				    //alert(left2); alert(minWidth2);
					$listBox2.css("left",left2).css("min-width",minWidth2);
					
					$listBox2.show("fast", function() {//alert("show");
						$listBox2.scrollTop(0).eq(0).focus();
					});
				}
				else {
					$listBox2.hide("fast");
				}
			});

			$items2.click(function(e) {
			    //alert($(this).text()); alert($(this).text().substring(0,19));
			    // Specify number of characters to display in the input box to avoid ovelapping with arrow image!
			    if($(this).text() == "Select an Area of Interest") { $('#ddText2').val($(this).text()); }
				else { $('#ddText2').val($(this).text().substring(0,24)); }
				$('#ddValue2').val($(this).attr("value"));
				$listBox2.hide("fast");
			});
			

			$items2.hover(function() {
					$(this).addClass("highLight");
				}, function() {
					$(this).removeClass("highLight");
				}
			);

			$listBox2.blur(function(e) {
				$listBox2.hide("fast");
			});
		});
		

// /////////////////////////////////////
// Process custom drop down selection //
// /////////////////////////////////////

function CustomDropDownSelected (value)
{
  document.location.href = ".." + value;
}



//////////////////////////////////////////////////////////////////////////////////
// Custom Drop Down using jQuery. Used for Centex Home Search menus on main page 
// 11/16/09 amishra: Initial
//////////////////////////////////////////////////////////////////////////////////

function applyDropBehavior(menuBar) {

    $(menuBar + " .menuitem").click(function() {
        var $dropdown = $(this).siblings(".dropdown")
        $dropdown.toggle();
        $dropdown.children("li").removeClass("highlight");

        // Adjust height of dropdown if not enough rows
        var dropSize = $dropdown.children("li").size();
        if (dropSize <= 12) {
            $dropdown.height(16 * dropSize + "px");
        }

    });

    $(menuBar).mouseleave(function() {
        $(".dropdown", this).hide();
    });

    $(menuBar + " ul li ul li")
            .click(function() {
                $(this).parent().hide().siblings("span").children("em").text($(this).text());
                var v = String($(this).attr("value"));
                if (v.substr(0, 6) == "999999") StateSelected(v.substr(6), $(this).text())
                else MetroAreaSelected(v);
            })
            .hover(function() {
                $(this).addClass("highlight");
                if ($(this).text().length > 30) {
                    $(this).attr("title", $(this).text());
                }
            }, function() {
                $(this).removeClass("highlight");
            });
}

$(document).ready(function() {
    if (getCurrSite().toLowerCase() == "centex") {
        applyDropBehavior("#statemenu");
        applyDropBehavior("#metromenu");
    }
});

function StateSelected(stateID, stateName) {
    //alert(stateName + "|"); //alert(stateID);
    // stateName has a space at the end and it breaks URL, so let's remove it
    if (stateName.substr(stateName.length - 1, 1) == " ") { stateName = stateName.substr(0, stateName.length - 1); }
    // two word states need to have dash between words instead of space
    stateName = stateName.replace(" ", "-");
    //alert(stateName + "|");
    // build URL to state level results
    selectedURL = "/find-new-home-for-sale/" + stateName + "/default.aspx?ha=0";
    var li = "";
    for (var i = 0; i < metroStateIDA.length; i++) {
        if (metroStateIDA[i] == stateID) {
            li = li + "<li value='" + metroIDA[i] + "'>" + metroNameA[i] + "</li>";
        }
    }
    var html = "<ul><li class='menu'><span class='menuitem'><em>Metro Area</em></span><ul style='display: none;' class='dropdown'>" + li + "</ul></li></ul>";
    var m = document.getElementById("metromenu");
    //alert(m.innerHTML);    //alert(html);
    m.innerHTML = html;
    // need to reset metro menu events after innerHTML was modified

    applyDropBehavior("#metromenu");

};



function MetroAreaSelected(metroID) {
    url = "";
    for (var i = 0; i < metroStateIDA.length; i++) {
        if (metroIDA[i] == metroID) {
            url = metroUrlA[i];
            break;
        }
    }
    selectedURL = url;
}

