
var DateAvailable;
var unitAvailDate;

function LoadDefaults()
{
    var arr = GetLeaseTermsArray();
    for(var i=0;i<arr.length;i++)
    {
        $vW("#desiredLeaseTerm").addOption(arr[i]+ " months", arr[i] );
    }
    
   $vW("#desiredLeaseTerm").val("12 months");
    document.getElementById('spRent').innerHTML = GetDefaultedLease();
    document.getElementById('sLeaseTerm').innerHTML = "12 months";
}

function smr(source, pid, uid, mid, availdate) 
{
    var link = "span[id*='miLink']";
    var ctrlId = $vW(link).attr("id");
    showResponse("Overlay/MonthlyRent.aspx?pid="+pid+"&uid="+uid+"&mid="+mid+"&availdate="+availdate, "ov1", ctrlId, false, "msgbubble1", false, 435, 600, 50);
}

function smr2(source, pid, uid, mid, availdate) 
{
    var link = "span[id*='" + source + "']";
    var ctrlId = $vW(link).attr("id");
    showResponse("Overlay/MonthlyRent.aspx?pid="+pid+"&uid="+uid+"&mid="+mid+"&availdate="+availdate, "ov1", ctrlId, false, "msgbubble1", false, 435, 600, 50);
}

function loadCalendar(d) {
    unitAvailDate = new Date(d);
    YAHOO.namespace("example.calendar");

    YAHOO.example.calendar.init = function() {


        function mySelectHandler(type,args,obj) {
            var selected = args[0];
            var selDate = this.toDate(selected[0]);

            updateDate(selDate, this);
            };

            YAHOO.example.calendar.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container");
            YAHOO.example.calendar.cal1.selectEvent.subscribe(mySelectHandler, YAHOO.example.calendar.cal1, true);
            
            YAHOO.example.calendar.cal1.renderCellDefault = 
            function(workingDate, cell) {
            if (unitAvailDate > workingDate)
               {
                   YAHOO.util.Dom.addClass(cell, "BeforeAvailDate");
                   cell.innerHTML=workingDate.getDate();
                   return YAHOO.widget.Calendar.STOP_RENDER;
               }
               else
               {
                    cell.innerHTML = '<a href="#" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";  
               }
            }
            
            YAHOO.example.calendar.cal1.render();
        }

    YAHOO.util.Event.onDOMReady(YAHOO.example.calendar.init);
     YAHOO.util.Event.onDOMReady(LoadDefaults);
     YAHOO.util.Event.onDOMReady(
        function () {
            DateAvailable = getDateControlDate();
            setCalDate(DateAvailable);
            var terms = $vW('#ctl00_contentMain_currentTerms').val();
            if (terms == undefined) {
                terms = $vW("#desiredLeaseTerm").val();
            }
            $vW("#desiredLeaseTerm").val(terms);
            updateRentCompare(DateAvailable, terms)
        });
}




function getDataAvailableString() {

    return (DateAvailable.getMonth() + 1) + "/" + DateAvailable.getDate() + "/" + DateAvailable.getFullYear();
}


function getUnitAvailDateString() {

    return (unitAvailDate.getMonth() + 1) + "/" + unitAvailDate.getDate() + "/" + unitAvailDate.getFullYear();
}
function getDateControlDate()
{
   var d = document.getElementById('sDay');
   var m = document.getElementById('sMonth');
   var y = document.getElementById('iYear');
   
   var dd,mm,yy;
   mm= m.selectedIndex + 1;
   
   dd = d.selectedIndex+1; 
   
   yy = y.value;
   if(yy.length < 4)
   {
       var now = new Date();
       switch(yy.length)
       {
           case 1:
            yy = now.getFullYear();
            break;
           case 2:
            yy = "20" + yy;
            break;
           case 3:
            yy = now.getFullYear();
            break;
           default:
       }
   }
   
    var sel = new Date(mm + '/' + dd + '/' + yy);
    
   return sel;
}
function setDateControl(sel)
{
   var d = document.getElementById('sDay');
   var m = document.getElementById('sMonth');
   var y = document.getElementById('iYear');
   
   m.selectedIndex = sel.getMonth();
   
   d.selectedIndex = sel.getDate()-1;
   
   y.value = sel.getFullYear();
   
}


function updateRentCompare(miDate, leaseTerm) {

    var moveinDatePast = $vW('#moveinDatePast')
    var buttons = $vW('.messageContent .messageButtons');
    var basedOnExpected = $vW('#basedOnExpected');
    if (miDate < unitAvailDate) {
        moveinDatePast.text("The date you selected is invalid. Please select a date on or after " + getUnitAvailDateString() + ".");
        moveinDatePast.show();
        buttons.hide();
        basedOnExpected.hide();
    }
    else {
        moveinDatePast.hide();
        buttons.show();
        basedOnExpected.show();
        /** set the hidden from field to grid - "Request to Hold" uses this value to set the move-in date */
        $vW("#from").val("grid");
        var dtMonth = miDate.getMonth() + 1;
        if (dtMonth < 10) {
            dtMonth = '0' + dtMonth;
        }
        var dtDay = miDate.getDate();
        if (dtDay < 10) {
            dtDay = '0' + dtDay;
        }
        var dt = dtMonth + "/" + dtDay;
        var foundLeaseTerm = false;
        /** lookup rent compare table to get rent which is based 
        on move-in date and lease term */
        var rows = document.getElementById('tblRentCompare').getElementsByTagName('TR');
        var leaseTermCellIndex = GetLeaseTermCellIndex(rows, leaseTerm);

        for (var i = 0; i < rows.length; i++) {
            if (i <= 1) // these are header rows
            {
                continue;
            }
            var cells = rows[i].getElementsByTagName('TD');
            clearRentTable(cells);
        }
        /* lookup the unit rent based on lease term and move-in date*/
        for (var i = 0; i < rows.length; i++) {
            if (i <= 1) // these are header rows
            {
                continue;
            }
            var cells = rows[i].getElementsByTagName('TD');
            clearRentTable(cells);
            //        for(var j = 0; j < cells.length; j++)
            //        {
            var expression = new RegExp("\\b" + dt + "\\b");
            //var isMatch = expression.test(cells[j].innerHTML);
            var j = 0;
            var dateRangeText;
            if (cells[j].innerText) {
                dateRangeText = cells[j].innerText;
            }
            else {
                dateRangeText = cells[j].innerHTML.replace("<div>", "").replace("</div>", "");
            }

            var start = Date.parse($vW(cells[j]).attr("startdate"));
            var end = Date.parse($vW(cells[j]).attr("stopdate"));

            var isMatch = start <= miDate && miDate <= end;
            if (cells[j].className == "moveDate" && isMatch) {
                foundLeaseTerm = true;
                document.getElementById('sLeaseTerm').innerHTML = leaseTerm;
                var unitrent = cells[leaseTermCellIndex + 1].innerHTML;
                cells[leaseTermCellIndex + 1].className = "selected";
                unitrent = unitrent.replace("<a>", "");
                unitrent = unitrent.replace("</a>", "");
                document.getElementById('spRent').innerHTML = unitrent;
                break;

            }
            //        }
        }


        var midNotFoundCtrl = document.getElementById('moveinDateNotFound');
        midNotFoundCtrl.innerHTML = '';

        if (!foundLeaseTerm) {
            document.getElementById('spRent').innerHTML = GetDefaultedLease();
            document.getElementById('sLeaseTerm').innerHTML = "12";
            midNotFoundCtrl.innerHTML = 'Pricing for the selected move-in date is not available online.  The rent for a ' + GetLeaseTerm() + ' month lease with a move-in date of ' + getDataAvailableString() + ' is ' + GetDefaultedLease() + '.  Please contact our leasing professionals to discuss pricing for your desired move-in timeframe.';
            $vW('#basedOnExpected').hide();
        }
        else {
            $vW('#basedOnExpected').show();
        }
    }
  
}


    


        function IsInRange(range, theDate) {
            
            var dates = range.split(" - ");

            if (dates.length > 0) {

                var startDate = MonthDayToDate(dates[0]);
                var endDate
                if (dates.length > 1) {
                    endDate = MonthDayToDate(dates[1]);
                }
                else {
                    endDate = startDate
                }

                if (startDate <= theDate && theDate <= endDate) {
                    return true;
                }
                else {
                    return false;
                }
            }
            else {

                return false;
            }

        }

        function MonthDayToDate(monthDay) {

            var parts = monthDay.split("/");

            var month = parts[0];
            var day = parts[1];
            var theDate = Date.parse(month + "/" + day + "/" + new Date().getFullYear());

            if (theDate < unitAvailDate) {
            
                theDate.setFullYear(theDate.getFullYear() + 1)
            }

            return theDate;
        }

function updateDate(sel, cntl)
{
   if(panelCurrent != "move")
        return;
    if(unitAvailDate <= sel)
    {
        setDateControl(sel); 
        updateRentCompare(sel,document.getElementById('desiredLeaseTerm').value);  
    }
    else {
        //Kind of hacky.  But much faster that trying to redo this overlay.
        setTimeout(200, setDateInvalid());
    }
}

function setDateInvalid() {

    var midNotFoundCtrl = document.getElementById('moveinDateNotFound');
    midNotFoundCtrl.innerHTML = 'You move in date must be on or later than the date the <span class="vwApartmentLabel">apartment</span><span class="vwStorageUnitLabel">unit</span> is available.';
    setDateControl(DateAvailable);
    setCalDate(DateAvailable);
    updateRentCompare(DateAvailable, document.getElementById('desiredLeaseTerm').value);  
}

function clearRentTable(cells)
{
      for(var j = 0; j < cells.length; j++)
      {
         if(cells[j].className == "selected")
         {
            cells[j].className = "leaseTerm";
         }
      
      }

}
    
function parseDisplayResponse56(oResponse, oType)
{
    var control;
    if(oType == "lowestrent")
        control = document.getElementById('spRent');
    else
        control = document.getElementById('dRentComparison');
    
    
    var iBegin = oResponse.indexOf("<!-- Begin Overlay Content -->") + 31;
    var iEnd = oResponse.indexOf("<!-- End Overlay Content -->");
    if(iBegin > 0 && iEnd > 0 && iBegin < iEnd)
    {
	    control.innerHTML = oResponse.substring(iBegin, iEnd);	
	 }													
    else
    {
	    control.innerHTML = "Invalid response monthly Rent";
	}    
	    
}
function createXMLHttp56()
{
	if(typeof XMLHttpRequest != "undefined")
	{
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		var aVersions = ["MSXML2.XMLHttp.5.0", 
		"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0", 
		"MSXML2.XMLHttp", "Microsoft.XXMLHttp"];
		
		for (var i = 0; i < aVersions.length; i ++)
		{
			try
			{
				var oXmlHttp = new ActiveXObject(aVersions[i]);
				return oXmlHttp;
			}
			catch(oError)
			{
			
			}
		}
	}
	throw new Error("XmlHttp object could not be created.");
}
function requestInfo(oQuery, oType)
{
    var oXmlHttp = createXMLHttp56();
	var strPage = "/overlay/rentcomparison.aspx?";
	
	oXmlHttp.open("GET", strPage + oQuery, true);
	oXmlHttp.onreadystatechange = function () { 
		try
		{
		    if(oXmlHttp.readyState == 4)
			{
				if(oXmlHttp.status == 200)
				{
					parseDisplayResponse56(oXmlHttp.responseText, oType);
				}
			}
		}
		catch(oError)
		{
			//alert(oError);
		}
	}
	oXmlHttp.setRequestHeader("Cache-Control", "no-cache");
	oXmlHttp.send(null);	
}
var panelCurrent = "move";
function toggleMonthlyRent(makecurrent)
{
    //liMoveIn liRent 
    var liMove = document.getElementById('liMoveIn');
    var liRent = document.getElementById('liRent');
    var liLease = document.getElementById('liLease');
    
    if(liMove && liRent && liLease)
    {
        if(makecurrent == "move")
        {
            liMove.className = "current";
            liRent.className = "";
            liLease.className = "";
        }
        else if(makecurrent == "rent")
        {
            liMove.className = "";
            liRent.className = "current";
            liLease.className = "";
        }
        else if(makecurrent == "lease")
        {
            liMove.className = "";
            liRent.className = "";
            liLease.className = "current";
        }
    }
    
    //rentCompareContainer moveInDateContainer
    var dMove = document.getElementById('moveDateContainer');
    var dRent = document.getElementById('rentCompareContainer');
    var dLeaseTerm = document.getElementById('leaseTermSpecialsContainer');
    var displayMode = GetDisplayMode();
    
    if(dMove && dRent && dLeaseTerm)
    {
        if(makecurrent == "move")
        {
            dMove.style.display = displayMode;
            dRent.style.display = "none";
            dLeaseTerm.style.display = "none";
        }
        else if(makecurrent == "rent")
        {
            dMove.style.display = "none";
            dRent.style.display = displayMode;
            dLeaseTerm.style.display = "none";
        }
        else if(makecurrent == "lease")
        {
            dMove.style.display = "none";
            dRent.style.display = "none";
            dLeaseTerm.style.display = displayMode;
        }
        
    }
    panelCurrent = makecurrent;
}
function stripHTML56(strIn)
{
    return strIn.replace(/(<([^>]+)>)/ig,""); 
}

function selectTD(td)
{    
    //turn off all selected
    //tblRentCompare
    
    var tbl = document.getElementById('tblRentCompare');
    
    for(var i = 0; i < tbl.rows.length; i++)
    {
        for(var j = 0; j < tbl.rows[i].cells.length; j++)
        {
            if(tbl.rows[i].cells[j].className == "selected")
                tbl.rows[i].cells[j].className = "leaseTerm";
        }
    }
    td.className = "selected";
    
    //get the selected date
    var now = new Date();   
    var sel;
    var dt;
    
    var tr = getParentObjByTag(td, "tr");
    if(tr)
    {
        dt = tr.cells[0].innerHTML;
        $vW("#hdAvailDatesGrid").val(dt);
        var selectedRange = dt;
        selectedRange = selectedRange.replace('<DIV>', '');
        selectedRange = selectedRange.replace('</DIV>', '');
        dt = dt.substring(5, dt.indexOf("-"));
        var dts = dt.replace(' ', '').split("/");
        sel = new Date();
        sel.setDate(dts[1]);
        sel.setMonth(dts[0]-1);
        sel.setFullYear(now.getFullYear());
        
        if(sel < now)
        {
           // Temp fix for validation issue past 2008.  C. Golob.
           // if it is in the past we must have the wrong year.
           sel.setFullYear(now.getFullYear() + 1);
       }

       var currentSelectedDate = getDateControlDate();
              
        var start = Date.parse($vW(tr.cells[0]).attr("startdate"));
        var end = Date.parse($vW(tr.cells[0]).attr("stopdate"));

        var sameWeek = start <= currentSelectedDate && currentSelectedDate <= end;

        if (!sameWeek) {
            SendRangeDates();
            //change the date on the other panel
            setDateControl(sel);
            setCalDate(sel);
        }
    }
    
       
    //change rent on other panel
    control = document.getElementById('spRent');
    control.innerHTML = stripHTML56(td.innerHTML);
    //change lease term
    var strTerm = 12;
    strTerm = stripHTML56(tbl.rows[1].cells[td.cellIndex-1].innerHTML);
     $vW("#desiredLeaseTerm").val(strTerm);
    leaseTerm = document.getElementById('sLeaseTerm');
    leaseTerm.innerHTML = strTerm + ' months ';
    
}
function UpdateRequestToHold()
{
    var rent, term, moveindt;
    var d = document.getElementById('sDay').value;
    var m = document.getElementById('sMonth').value;
    var y = $vW("#iYear").val();
    
    
    var valid = false;
   
    moveindt = m + '/' + d + '/' + y;
    var dt = Date.parse(moveindt);

    var firstName = $vW('.requestHold .FirstName').val();
    var lastName = $vW('.requestHold .LastName').val();
    var email = $vW('.requestHold .Email').val();
    var phoneNumber = $vW('.requestHold .Phone1').val() + '-' + $vW('.requestHold .Phone2').val() +'-' + $vW('.requestHold .Phone3').val();
    var visitedObject = $vW('.requestHold .VisitedTrue input');
    var visited = "";

    if (!firstName) {
        firstName = "";
    }

    if (!lastName) {
        lastName = "";
    }

    if (!email) {
        email = "";
    }
    
    if (!phoneNumber) {
        phoneNumber = "";
    }

    
    if (visitedObject.length > 0) {
        visited = visitedObject[0].status;
        if (!visited) {
            if ($vW('.requestHold .VisitedFalse input')[0].status) {
                visited = false;
            }
            else {
                visited = "";
            }
        }
    }
    
    
    if(IsValidDate(parseInt(d), parseInt(m), parseInt(y) ))
    {
         // get today's date
	     var td = new Date();
         var today = new Date((td.getMonth() + 1) + '/' + td.getDate() + '/' + td.getFullYear());
                 
         if( dt >= today)
         {
            valid = true;      
         }
         else
         {
            document.getElementById('errorMessage').innerHTML = "<br/>Expected move-in date can not be in the past";
            return false;
         }
    }
    
    
    if(valid)
    {
        rent = document.getElementById('spRent').innerHTML;        
        rent = rent.replace("<A>","");
        rent = rent.replace("</A>", "");
        term = GetLeaseTerm();
        var rthLink = document.getElementById("imgRequestHold");
        var requestToHoldBase = document.getElementById("rthBaseURL");
        var liRent = document.getElementById("liRent");
        var fromRentCompare = "";
        if(liRent.className == "current")
        {
            fromRentCompare = "&RentCompare=1";
        }
        rthLink.href = requestToHoldBase.value + '&from=grid&rent=' + rent + '&term=' + term + '&firstName=' + firstName + '&lastName=' + lastName + '&email=' + email + '&phoneNumber=' + phoneNumber + '&visited=' + visited + '&moveindt=' + moveindt + fromRentCompare;
    }
   
}

function IsValidDate(Day,Mn,Yr){
    var DateVal = Mn + "/" + Day + "/" + Yr;
    var dt = new Date(DateVal);
    
    var error = '';

    if(dt.getDate()!=Day){
        error = '<br/>Invalid move-in date';
        document.getElementById('errorMessage').innerHTML = error;
        return(false);
        }
    else if(dt.getMonth()!=Mn-1){
    //this is for the purpose JavaScript starts the month from 0
        error = '<br/>Invalid move-in date';
        document.getElementById('errorMessage').innerHTML = error;
        return(false);
        }
    else if(dt.getFullYear()!=Yr){
        error = '<br/>Invalid move-in date';
        document.getElementById('errorMessage').innerHTML = error;
        return(false);
        }
        
    return(true);
 }

 function GetLeaseTerm() {
     return $vW("#desiredLeaseTerm").val().split(' ')[0];
 }
 
 function GetDefaultedLease()
 {
    var defaultLeaseTermCell = 0;   
    var rows = document.getElementById('tblRentCompare').getElementsByTagName('TR');
    var cells = rows[1].getElementsByTagName('TD');
    var defaultRent = 0;

    var terms = GetLeaseTerm();
    
    for(var k = 0; k < cells.length; k++)
    {
        if (cells[k].innerHTML == terms)
        {
            defaultLeaseTermCell = k;
            break;
        }
    }
    
    var haveFound = false;
    for(var j = 1; j  < rows.length; j++)
    {
               
//        if(j!= cells.length-1 && cells[j].className == "selected")
//        {
//            cells[j].className = "leaseTerm";
//        }
                 
        cells = rows[j].getElementsByTagName('TD');
        var foundCell = defaultLeaseTermCell + 1;
        if (haveFound)
        {
            continue;
        }
        
        if(cells.length >= foundCell && j > 1)
        {
            defaultRent = cells[foundCell].innerHTML;
            defaultRent = defaultRent.replace(/<a>/i, "");
            defaultRent = defaultRent.replace(/<\/a>/i, "");
            cells[foundCell].className = "selected";
            haveFound = true;
        }
              
    }
  
    return defaultRent;
 
 }
 
 
 function GetLeaseTermsArray()
 {
    var defaultLeaseTermCell = 0;   
    var rows = document.getElementById('tblRentCompare').getElementsByTagName('TR');
    var cells = rows[1].getElementsByTagName('TD');
    var defaultRent = 0;
     
    var arr = new Array(cells.length);
    for(var k = 0; k < cells.length; k++)
    {
        arr[k] = cells[k].innerHTML;
    }
    return arr; 
 }


function getParentObjByTag(obj, tag)
{
	if(obj.tagName.toLowerCase() == tag)
		return obj;
	do
	{
		obj = obj.parentElement?obj.parentElement:obj.parentNode;
		if(obj.tagName.toLowerCase() == tag)
			return obj;
	}
	while(parent.parentElement || obj.parentNode)
	return null;
}
function dtControlChange(cntrl, type)
{
    if(panelCurrent != "move")
        return;
    var sel = getDateControlDate();

    setCalDate(sel);
    setDateControl(sel);
    updateRentCompare(sel, document.getElementById('desiredLeaseTerm').value);
   
}

function UpdateUnitRent(leaseTermDropDown)
{
    try
    {
        var miDate = getDateControlDate();
        setCalDate(miDate);
        updateRentCompare(miDate, leaseTermDropDown.value )
    }
    catch(oError)
    {
    //
    }
}


function setCalDate(sel)
{
    YAHOO.example.calendar.cal1.setMonth(sel.getMonth());
    YAHOO.example.calendar.cal1.setYear(sel.getFullYear());
    YAHOO.example.calendar.cal1.select(sel);
    YAHOO.example.calendar.cal1.render();
}

function GetDisplayMode()
	 {  
	    var canSee = '';
        if(navigator.appName.indexOf("Microsoft") > -1)
        {
            canSee = 'block'
        } 
        else 
        {
            canSee = 'inline';
        }
        return canSee;
     }
     
function GetLeaseTermCellIndex(rows, leaseTerm)
{
    // the second row of the rent comparison table has the lease terms
   var leaseTermCellIndex = 0;
   if(rows.length >= 1)
   {
        var cells = rows[1].getElementsByTagName('TD');
        for(var k = 0; k < cells.length; k++)
        {
            if (cells[k].innerHTML + " months" == leaseTerm || cells[k].innerHTML == leaseTerm)
            {
                leaseTermCellIndex = k;
                break;
            }
        }
   }
   return leaseTermCellIndex;

}   

function ReceiveServerData(retValue)
{ 
    // alert(retValue);
}

function SendRangeDates()
{
    var dtRanges =  $vW("#hdAvailDatesGrid").val();
    CallServer(dtRanges, '');
    return true;
}  


 
