/**
 * lh.js
 * @author Lewis Howles
 *
 * Default Niceties.
 */

var lh = {
	onReady : function() {
		lh.externalLinks();
		lh.highlighter();
		lh.pngfix('.png');
		if ($('#map_canvas').length)
			lh.initialize();

		$propertySearch = $('#PropertySearch');
		if($propertySearch.length) {
			var $contract = $('#Contract'),
				$radios = $propertySearch.find('input[name=Contract]'),
				$ddlPayMin = $('#ddlPayMin'),
				$ddlPayMax = $('#ddlPayMax'),
				contracts = [$contract, $radios];

			$.each(contracts, function(k,v) {
				if (v.length) {
					var type = (k == 0) ? 'select' : 'radios';

					lh.updateCombo(v, $ddlPayMin, $ddlPayMax, type);

					v.change(function() {
						lh.updateCombo(v, $ddlPayMin, $ddlPayMax, type)
					});
				}
			});
		}
		$('#banner').innerfade({
			speed: 1000,
			timeout: 6000,
			containerheight: '227px'
		});

		if ($('h1').text() == "Search Results")
			lh.getValues();

		var quotes = $('#quotes'),
			quotesWrapper = $('#quotes-wrapper');

		if (quotes.length) {
			var height = quotes.height(),
				wrapperHeight = quotesWrapper.height();

			(cycle = function() {
				quotes.delay(5000)
					 .animate({'marginTop' : '-'+(height-wrapperHeight)+'px'}, 18e4, 'linear')
					 .delay(2000)
					 .animate({'marginTop' : '0'}, 2e3, cycle);
			})();
		}
	},

	/*
	 * Set target blank on external links
	 */
	externalLinks : function() {
		$('a[rel="external"]')
			.attr('target', '_blank')
	},

	highlighter : function() {
		$('.fancy')
		.delegate('input, select, textarea', 'mouseover focusin mouseout focusout', function(e) {
			var isIn = (e.type === 'mouseover' || e.type === 'focusin');

			lh.toggleFocus($(this), isIn);
		});
	},

	toggleFocus : function($this, modifier) {
		$this.parent('li').not('.submit').toggleClass('focus', modifier);
	},

	removeFocus : function($this) {
		$this.parent('li:not(.submit)').removeClass('focus');
	},

	pngfix : function(sel) {
		if (typeof DD_belatedPNG == 'undefined') { return; }
		else {
			$(sel).each(function() {
				DD_belatedPNG.fixPng(arguments[1]);
			});
		}
	},

	sale : {
		"50000" : "£50,000",
		"75000" : "£75,000",
		"100000" : "£100,000",
		"125000" : "£125,000",
		"150000" : "£150,000",
		"175000" : "£175,000",
		"200000" : "£200,000",
		"250000" : "£250,000",
		"300000" : "£300,000",
		"400000" : "£400,000",
		"500000" : "£500,000",
		"750000" : "£750,000",
		"1000000" : "£1,000,000",
		"1500000" : "£1,500,000"
	},

	rent : {
		"250" : "£250",
		"500" : "£500",
		"750" : "£750",
		"1000" : "£1000",
		"1250" : "£1250",
		"1500" : "£1500",
		"2000" : "£2000"
	},

	updateCombo : function($contract, $ddlPayMin, $ddlPayMax, type) {
		var	options = '',
			$minParent = $ddlPayMin.parent(),
			$maxParent = $ddlPayMax.parent(),
			values = (type == 'select') ? (values = ($contract.val() == 'buying') ? lh.sale : lh.rent) : (values = ($contract.filter('input:checked').val() == 'buying') ? lh.sale : lh.rent);

		$.each(values, function(val, text) {
			options += '<option value="'+val+'">'+text+'</option>';
		});

		var ddls = [$ddlPayMin, $ddlPayMax];
		$.each(ddls, function(k,v){
			v.empty().detach();

			(k == 0) ? v.append('<option value="0">Min Price</option>') : v.append('<option value="0">Max Price</option>');

			v.append(options).val('0');
		});

		$minParent.append($ddlPayMin);
		$maxParent.append($ddlPayMax);
	},

	getValues : function() {
		var allVars = $.getUrlVars(),
			chainID = allVars["chainID"],
			txtQuickSearch = allVars["txtQuickSearch"],
			Contract = allVars["Contract"],
			ddlBedrooms = allVars["ddlBedrooms"],
			ddlPayMin = allVars["ddlPayMin"],
			ddlPayMax = allVars["ddlPayMax"],
			ddlResultsOrder = allVars["ddlResultsOrder"],
			countries = allVars["countries"],
			jClass = allVars["class"];

		$('#results-frame').attr('src', function() {
			return 'http://search.issl.co.uk/resultslite.aspx?chainID='+chainID+'&Contract='+Contract+'&ddlBedrooms='+ddlBedrooms+'&ddlPayMin='+ddlPayMin+'&ddlPayMax='+ddlPayMax+'&txtQuicksearch='+txtQuickSearch+'&ddlResultsOrder='+ddlResultsOrder+'&class='+jClass+'&countries='+countries;
		});
	},

	initialize : function() {
		// Set a new map and set the lat and long
		var latlng = new google.maps.LatLng(53.56615,-2.44521),
			latlng2 = new google.maps.LatLng(53.59128, -2.43484);

			// Set map options
			var myOptions = {
			zoom: 12,
			center: new google.maps.LatLng(53.578715, -2.44002),
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};

		var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

		// Create a new map marker
		var marker = new google.maps.Marker({
			position: latlng,
			map: map,
			title: "407 Derby Street, Bolton, BL3 6LT"
		});

		var marker2 = new google.maps.Marker({
			position: latlng2,
			map: map,
			title: "183 Halliwell Road, Bolton, BL1 3NN"
		});

		// Creating an InfoWindow object
		var infowindow = new google.maps.InfoWindow({
			maxWidth: 500,
			content: "407 Derby Street, Bolton, BL3 6LT"
		});

		var infowindow2 = new google.maps.InfoWindow({
			maxWidth: 500,
			content: "183 Halliwell Road, Bolton, BL1 3NN"
		});

		// Open the infowindow
		google.maps.event.addListener(marker, 'click', function() {
			infowindow.open(map, marker);
		});

		google.maps.event.addListener(marker2, 'click', function() {
			infowindow2.open(map, marker2);
		});
	}
}

// Get URL Parameters
$.extend({
  getUrlVars: function(){
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++)
	{
	  hash = hashes[i].split('=');
	  vars.push(hash[0]);
	  vars[hash[0]] = hash[1];
	}
	return vars;
  },
  getUrlVar: function(name){
	return $.getUrlVars()[name];
  }
});

$(lh.onReady());

