$(document).ready(function(){
	var cache=new Array(), invalidCache=new Array();
	var toolTip = new Array();
	var req;
	var tmp = $('.ie');
	if (tmp.length) $('body').addClass(tmp[0].className);
	var $frmAstro = $('#frmAstro');
	var chkManual = $frmAstro.find(':input[name="manual"]').click(function(){toggleManual();})[0];
	var $locDetails = $('#locDetails');//.show();
	var $inpLocation = $frmAstro.find(':input[name="location"]');
	var $inpLocId = $frmAstro.find(':input[name="loc"]');
	var tmpLastLoc = $inpLocation[0].value;
	var $lnkManual = $('#manualLocation').click(function(){
		chkManual.checked=true;
		toggleManual();
	});
	function toggleManual(){
		var loc = $inpLocation.val();
		var locNotAvailable = (jQuery.inArray(loc, invalidCache) != -1);
		if (chkManual.checked || locNotAvailable) {
			if (!chkManual.checked) {
				$('<div/>').text('Sorry, ' + loc + ' is not available in our database. Please enter location and timezone details.').before($locDetails);
				chkManual.checked=true;
			}
			$lnkManual.hide();
			$locDetails.show();
			$(chkManual).parents('form').find('.selLoc').text(loc + ' [Manual]');
			$(':input[name^="lat_"],:input[name^="lon_"],:input[name^="tz_"]').removeAttr('disabled');
		} else if(data=cache[loc]) {
			$(chkManual).parents('form').find('.selLoc').html('<img src="http://files.astroica.com/images/flags/'+data[4].toLowerCase()+'.gif" alt="'+data[4]+'" title="'+data[4]+'"/> '+ loc);
			$(':input[name^="lat_"],:input[name^="lon_"],:input[name^="tz_"]').attr('disabled', 'disabled');
			updateData(cache[loc],chkManual.form);
		} else {
			$.get('/location-search.php',{q:loc,locid:$inpLocId.val(),exact:1,limit:1},function(data){
				data=$.trim(data).split('|');
				if(data.length > 1)cache[loc]=data;
				else invalidCache[invalidCache.length]=loc;
				toggleManual();
			});
		}
	}
	
	//tool tip
	$('.help').hover(function(e){
		if (req) req.abort();
		var id = $(this).attr('id');
		if (toolTip[id] == undefined) {
			var tip = $('<div class="tooltip toolTipLoad"> </div>').css({'left' : e.pageX + 5, 'top' : e.pageY - 5}).appendTo('body');
			req = $.get('tooltip.php?id='+$(this).attr('id'), null, function(data){
				toolTip[id] = data;
				tip.removeClass('toolTipLoad').html(toolTip[id]);
				
			});
			return false;
		}
		var tip = $('<div class="tooltip"> </div>').html(toolTip[id]).css({'left' : e.pageX + 5, 'top' : e.pageY - 5}).appendTo('body');
	}, function () {
		$('.tooltip').remove();
	});
	
	function selectACItem(event, data, formatted){cache[data[0]]=data;chkManual.checked=false;tmpLastLoc=data[0];toggleManual();}
	function formatItem(row, i, max, term) {
		return "<span title='"+row[4]+"'><img src='http://files.prokerala.com/imgs/flags/"+row[4].toLowerCase()+".gif' width='16' height='11' alt='"+row[4]+"'/><span> " + row[0] + "</span></span>";
	}
	function updateData(data,form){
		var f=$(form).find(':input');
		var lat=Math.floor(Math.abs(data[1])), lon=Math.floor(Math.abs(data[2])), tz=Math.floor(Math.abs(data[3]));
		f.filter("[name='lat_dir']").val((data[1] < 0) ? 'South' : 'North');
		f.filter("[name='lat_deg']").val(Math.floor(lat));
		f.filter("[name='lat_min']").val(Math.floor((Math.abs(data[1]) - lat) * 60));
		f.filter("[name='lon_dir']").val((data[2] < 0) ? 'West' : 'East');
		f.filter("[name='lon_deg']").val(Math.floor(lon));
		f.filter("[name='lon_min']").val(Math.floor((Math.abs(data[2]) - lon) * 60));
		f.filter("[name='tz_dir']").val((data[3] < 0) ? 'West' : 'East');
		f.filter("[name='tz_hr']").val(Math.floor(tz));
		f.filter("[name='tz_min']").val(Math.floor((Math.abs(data[3]) - tz) * 60));
		$inpLocId.val(data[5]);
	}
	$inpLocation.autocomplete('/location-search.php', {max:20, autoFill:true,selectFirst:true,minChars:3, formatItem:formatItem}).result(selectACItem).blur(function(){if (tmpLastLoc == this.value) return;$inpLocId.val('');setTimeout(toggleManual, 100);});
	if (!chkManual.checked) toggleManual();
});

$(window).load(function(){
    // Add Google CSE branding to Search Box
    $('.google-cse-input').focus(function(){this.style['background'] = '';}).blur(function(){
        if (!this.value) this.style['background'] = 'white url(http://www.google.com/coop/images/google_custom_search_watermark.gif) no-repeat 0% 50%';
    }).blur();
});
