$(document).ready(function() {
	/* @group Departments Page(s)
    ==================================================*/
	$(".layout-department .dealer-list tbody tr").mouseover(function() {
		if($(this).find("td:last a").length > 0) {
			$(this).addClass("hover");
//			$(this).find("td:last a").addClass("btnHover");
		}
	});
	$(".layout-department .dealer-list tbody tr").mouseout(function() {
		if($(this).find("td:last a").length > 0) {
			$(this).removeClass("hover");
//			$(this).find("td:last a").removeClass("btnHover");
		}
	});
	
	$(".layout-department .dealer-list tbody tr").click(function(e) {
		var self = this;
		var anchor = $(this).find("td:last a");
		if(anchor.length > 0) {
			var cid = $(anchor).siblings("input[name='CustomerId']").val();
			var lid = $(anchor).siblings("input[name='LinkId']").val();			
			var href = $(anchor).attr("href");
			$.post("Forms/ReferralHandler.ashx", { customerId: cid, linkId: lid }, function(data, textStatus) {
				if(textStatus == 'success') {
					window.open(href, $(anchor).attr('target'));
				}
			});
		}
		return false;
	});

	$(".layout-department .dealer-list tbody tr a:contains('Map')").click(function (event) {
		event.stopPropagation();
	});

    $("#select-departmentgoto").change(function() {
        var departmentName = $(this).val();
        if (departmentName.length > 0)
            redirectToDepartment(departmentName);
    });
    $("div.layout-departments button").click(function() {
        var departmentName = $(this).attr("class");
        if (departmentName.length > 0)
            redirectToDepartment(departmentName);
    });

    function redirectToDepartment(departmentName) {
        switch (departmentName) {
            case "New":
                departmentName = Site.StageForSaleNew + "/";
                break;
            case "Used":
                departmentName = Site.StageForSaleUsed + "/";
                break;
            default:
                departmentName = departmentName + ".aspx"
                break;
        }
        window.location = departmentName.replace(' ', '');
    }

	$("div.layout-department form").submit(function() {
		return false;
    });
	
    $("div.layout-department button#searchdepartment").click(function() {
        var zipCode = $("div.layout-department input#ZipCodeDepartment").val();
		$(this).closeCallout();		
		if(zipCode.match(/^\d\d\d\d\d$/g)) {
			if (zipCode.length > 0) {
				var map = new VEMap('emptymap');
				map.LoadMap();

				var result = map.Find(null,    // what
							  zipCode, // where
							  null,    // VEFindType (always VEFindType.Businesses)
							  null,    // VEShapeLayer (base by default)
							  null,    // start index for results (0 by default)
							  null,    // max number of results (default is 10)
							  null,    // show results? (default is true)
							  null,    // create pushpin for what results? (ignored since what is null)
							  null,    // use default disambiguation? (default is true)
							  null,    // set best map view? (default is true)
							  GeocodeCallback);  // call back function
				$("table.dealer-list tbody td[class='distance']").text("N/A");
			}
		}
		else {
			showErrorMessage();
		}
    });

    function GeocodeCallback(shapeLayer, findResults, places, moreResults, errorMsg) {
		if(places != null) {
	        var bestPlace = places[0];

	        // Add pushpin to the *best* place
	        var location = bestPlace.LatLong;
	        $("table.dealer-list tbody tr").each(function() {
	            var lon = $(this).find("input[name='Long']").val();
	            var lat = $(this).find("input[name='Lat']").val();
	            var disthidden = $(this).find("input[name='Distance']");
	            var dist = 0;
	            if ((lon != 0) && (lat != 0)) {
	                dist = Math.round(getDistance(new VELatLong(location.Latitude, location.Longitude), new VELatLong(lat, lon), true));
	                $(disthidden).val(dist);
	                dist = dist + " mi.";
	            }
	            else {
	                dist = "N/A";
	                $(disthidden).val(dist);
	            }

	            var distfield = $(this).find("td[class='distance']");
	            $(distfield).text(dist);
	            $(distfield).show();

	        });
	        $("table.dealer-list thead th").show();
	        $("table.dealer-list tbody tr").tsort("input[name='Distance']", { attr: "value" });
		}
		else {
			if(errorMsg.length > 0) {
				showErrorMessage();
			}
		}
    }
	
	var showErrorMessage = function() {
		$("div.layout-department button#searchdepartment").callout($.extend({}, {
				className: 'tooltip',
				cornerRadius: 5,
				orient: 'below',
				width: 200,
				arrowHeight: 7,
				arrowInset: 15,
				align: 'left'
			}, 
			{
				text: "Please enter a valid zip code."
			})
		);
			$('#contentBox').css("left","0px");		
	};
});
