/*
 * SEARCH PAGE
 */
ha.ui.compare = {
	init: function(){
		ha.ui.compare.selections();
		ha.ui.compare.events();
	},
	
	selections: function(){
		var doCompare = false;
		if ($.cookie('cmprd-units') != null) {
			var units = unescape($.cookie('cmprd-units')).split(",");
			for(var i = 0; i < units.length; i++){
				var cookieParts = units[i].split(":");
				var unitId = cookieParts[0];
				var selector = '#unit-id-' + unitId;
				var labelObj = $(selector).parents("div.unit-compare").children("div.label");
				if ($(selector).length > 0) {
					$(selector).attr("checked", true);
					labelObj.addClass("link");
					labelObj.click(function(){
						$("#compare-button").click();
					});
					doCompare=true;
				}
			}
		}
		ha.ui.compare.toggle(doCompare);
	},
		
	events: function(){
		// bind event to compare property checkboxes via
		// onclick either add or remove the unit from the cookie
		$(".unit-id").click(function() {
			var units = "";
			var unit = $(this).val();
			var labelObj = $(this).parents("div.unit-compare").children("div.label");
			
			if ($.cookie('cmprd-units') != null) units = unescape($.cookie('cmprd-units'));

			if ($(this).attr("checked")) {
				labelObj.addClass("link");
				labelObj.click(function(){
					$("#compare-button").click();
				});
				
				if (units != "") units += "," + unit;
				else units = unit;
			} else if (units != ""){
				labelObj.removeClass("link");
				labelObj.unbind('click', function(){});
				
				var unitArray = units.split(",");
				units = "";
				for (var i = 0; i < unitArray.length; i++){
					if (unitArray[i] != unit) {
						units += unitArray[i] + ",";
					}
				}
				units = units.substring(0,units.length-1);
			}

			$.cookie('cmprd-units', units, {path: '/'});
			if ($('.search-bar #compare-button').length > 0){
				ha.ui.compare.selections();
			}

		});
		
		// get unit params string from the cookie
        $('#compare-button').click(function(e) {
            var units = "";
        	var searchInfo = $(this).attr("jsObj");
        	if ($('#pm-page').length > -1){
        		searchInfo = searchInfo.split(":")[0] + ":" + location.href;
        	}
            if ($.cookie('cmprd-units') != null){
            	units = unescape($.cookie('cmprd-units'));
            }
        	$.cookie('srch-info', searchInfo, {path: '/'});
        		
        	window.location = "/property/compare?units=" + units;
        });
	},
	
	toggle: function(doCompare){
		if (doCompare && $('.search-bar #compare-button').length > 0){
			$("#compare-button").addClass("on");
		} else if ($('.search-bar #compare-button').length > 0){
			$("#compare-button").removeClass("on");
		}
	}
	
};

/*
 * PROPERTY COMPARE PAGE
 */
ha.page.compare = {
	init: function(){
		ha.page.compare.remove();
		ha.ui.modalbox.init();
	},
	
	remove: function(){
		// rebuild the url without the unit that is to be removed
    	$('.remove').click(function() {
    		var units = "";
    		var id = $(this).attr("id");

    		// remove the unit from the cookie and url string
    		if ($.cookie('cmprd-units') != null) {
    			units = unescape($.cookie('cmprd-units')).split(",");

    			$.cookie('cmprd-units', ha.page.compare.params(id, units), {path: '/'});
    		}

    		var url = location.href;
    		var urlParts = url.split("units=");

    		if (urlParts.length == 2) {
    			units = urlParts[1].split(",");

    			url = urlParts[0] + "units=" + ha.page.compare.params(id, units);
    		}
    		
    		// if there are no more units left to compare,
    		// remove the units parameter from the querystring
    		if(url.match("units=$")){
    			url = url.substr(0, url.indexOf("?"));
    		}

    		window.location = url;
    	});
    	
    	$('#remove-all-link').click(function() {
    		//blow out the cookie and return to the search results page
    		$.cookie('cmprd-units', "", {path: '/'});
    		window.location = "/property/compare";
    	});
	},
	
	params: function(id, units){
		
		var unitParams = "";
		for (var i = 0; i < units.length; i++){
			if (units[i] != id){
				unitParams += units[i] + ",";
			}
		}
	
		return unitParams.substring(0,unitParams.length-1);
	}
	
};

$(document).ready(function(){
	// search
	if ($("body.search-page").length > 0){
		ha.ui.compare.init();
	}
	
	// property compare
	if ($("body.compare").length > 0){
		ha.page.compare.init();
	}
});

