var response = null;

$( function() {

	$( '#exchange-details .back' ).click( function() {

		$( '#exchange-details' ).hide();
		$( '#exchange' ).show();
	});

	$( '#samknows-submit' ).click( function() {

		$.ajax({ 
			type : 'POST',
			url  : '/adsl-check', 
			data : 'action=samknows_proxy&postcode=' + $( '#samknows-postcode' ).val(),
			dataType : 'json',
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				alert( 'Error: ' +  XMLHttpRequest + ' ' + textStatus + ' ' + errorThrown );
			},
			success : function( json ) {

				response = json;
				json = null;

				$( '#exchange-details' ).hide();

				$( '#exchange tbody' ).html( 
					'<tr>' +
						'<td class="name"><a href="#">' + response.exchange.name + '</a></td>' +
						'<td>' + response.exchange.OLO + '</td>' +
					'</tr>' );
				$( '#exchange' ).show();

				// Apply some events
				$( '#exchange tbody .name a' ).click( function() {

					$( '#exchange' ).hide();
					
					$( '#exchange-details table.general' ).find( '.exchange-name' ).html( response.exchange.name );
					$( '#exchange-details table.general' ).find( '.exchange-code' ).html( response.exchange.OLO );
					$( '#exchange-details table.general' ).find( '.postcode' ).html( response.exchange.postcode );
					
					var samKnowsURL = $( '#exchange-details table.general' ).find( '.maps a' ).eq(0).attr( 'href' );
					samKnowsURL = samKnowsURL.replace( /{code}/g, response.exchange.OLO );
					$( '#exchange-details table.general' ).find( '.maps a' ).eq(0).attr( 'href', samKnowsURL );

					var multiMapURL = $( '#exchange-details table.general' ).find( '.maps a' ).eq(1).attr( 'href' );
					multiMapURL = multiMapURL.replace( /{postcode}/g, response.exchange.postcode );
					$( '#exchange-details table.general' ).find( '.maps a' ).eq(1).attr( 'href', multiMapURL );

					var streetMapURL = $( '#exchange-details table.general' ).find( '.maps a' ).eq(2).attr( 'href' );
					streetMapURL = streetMapURL.replace( /{postcode}/g, response.exchange.postcode );
					$( '#exchange-details table.general' ).find( '.maps a' ).eq(2).attr( 'href', streetMapURL );

					// Wireless broadband availability
					$( '#exchange-details table.wireless' ).find( '.ltt' ).html( samknows_check_enable( 'ltt' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.ltt.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.wireless' ).find( '.now' ).html( samknows_check_enable( 'now' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.now.enabledate + ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.wireless' ).find( '.onlincs' ).html( samknows_check_enable( 'onlincs' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.onlincs.enabledate + ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.wireless' ).find( '.uwimax' ).html( samknows_check_enable( 'uwimax' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.uwimax.enabledate + ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.wireless' ).find( '.kijoma' ).html( samknows_check_enable( 'kijoma' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.kijoma.enabledate + ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.wireless' ).find( '.emnet' ).html( samknows_check_enable( 'emnet' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.emnet.enabledate + ' as of ' ) ) : samknows_no( 'Not available' ) );

					// Broadband availability overview
					$( '#exchange-details table.bao' ).find( '.adsl' ).html( samknows_check_enable( 'adsl' ) ? samknows_yes( 'Yes' ) : samknows_no ( 'No' ) );
					$( '#exchange-details table.bao' ).find( '.sdsl' ).html( samknows_check_enable( 'sdsl' ) ? samknows_yes( 'Yes' ) : samknows_no ( 'No' ) );
					$( '#exchange-details table.bao' ).find( '.llu-services' ).html( samknows_has_llu_services() ? samknows_yes( 'Yes' ) : samknows_no( 'No' ) );
					$( '#exchange-details table.bao' ).find( '.cable' ).html( samknows_has_cable() ? samknows_yes( 'Yes' ) : samknows_no( 'No' ) );
					$( '#exchange-details table.bao' ).find( '.wireless' ).html( samknows_has_wireless() ? samknows_yes( 'Yes' ) : samknows_no( 'No' ) );

					$( '#exchange-details table.btwi' ).find( '.adsl-status' ).html( samknows_yes( 'Enabled as of ' + samknows_date( response.checks.adsl.enabledate ) ) );
					$( '#exchange-details table.btwi' ).find( '.adsl-max-status' ).html( samknows_yes( 'Enabled as of ' + samknows_date( response.checks.adslmax.enabledate ) ) );
					$( '#exchange-details table.btwi' ).find( '.sdsl-status' ).html( samknows_yes( 'Enabled as of ' + samknows_date( response.checks.sdsl.enabledate ) ) );



					$( '#exchange-details table.lluop' ).find( '.aol' ).html( samknows_check_enable( 'aol' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.aol.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.be' ).html( samknows_check_enable( 'be' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.be.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.bulldog' ).html( samknows_check_enable( 'bulldog' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.bulldog.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.edge' ).html( samknows_check_enable( 'edge' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.edge.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.entanet' ).html( samknows_check_enable( 'entanet' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.entanet.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.lumison' ).html( samknows_check_enable( 'lumison' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.lumison.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.newnet' ).html( samknows_check_enable( 'newnet' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.newnet.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.node4' ).html( samknows_check_enable( 'node4' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.node4.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.wanadoo' ).html( samknows_check_enable( 'wanadoo' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.wanadoo.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.pipex' ).html( samknows_check_enable( 'pipex' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.pipex.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.easynet' ).html( samknows_check_enable( 'easynet' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.easynet.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.smallworld_llu' ).html( samknows_check_enable( 'smallworld_llu' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.smallworld_llu.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.cpw' ).html( samknows_check_enable( 'cpw' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.cpw.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.tiscali' ).html( samknows_check_enable( 'tiscali' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.tiscali.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.homechoice' ).html( samknows_check_enable( 'homechoice' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.homechoice.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.wbi' ).html( samknows_check_enable( 'wbi' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.wbi.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.lluop' ).find( '.zen' ).html( samknows_check_enable( 'zen' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.zen.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );
					
					// Cable broadband availability

					$( '#exchange-details table.cba' ).find( '.virgin' ).html( samknows_check_enable( 'virgin' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.virgin.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					$( '#exchange-details table.cba' ).find( '.smallworld_cable' ).html( samknows_check_enable( 'smallworld_cable' ) ? samknows_yes( 'Enabled' + samknows_date( response.checks.smallworld_cable.enabledate, ' as of ' ) ) : samknows_no( 'Not available' ) );

					
					$( '#exchange-details' ).show();
					samknows_gmap_initialize( response.inputs.postcode.latitude, response.inputs.postcode.longitude );
					
					return false;
				});
			}
		});

		return false;
	});
});

function samknows_gmap_initialize( lat, lng ) {

      if (GBrowserIsCompatible()) {

		   function createMarker(point,html) {
        var marker = new GMarker(point, icon);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });

        return marker;
      }
	 
	  var map = new GMap2(document.getElementById("google-map"));

	  var icon = new GIcon();
      icon.image = "http://www.samknows.com/broadband/images/greenmarker.png";
      icon.shadow = "";
      icon.iconSize=new GSize(20,34);
      icon.shadowSize=new GSize(0,0);
      icon.iconAnchor=new GPoint(16,32);
      icon.infoWindowAnchor=new GPoint(16,0);

      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(lat,lng), 13);
      var point = new GLatLng(lat,lng);
     var marker = createMarker(point,'<div style="padding-top:5px; font-family: Arial; font-size: 8pt; color: black"><b><a href="#">Greenwich</a></b><br><b>Code</b>: LSGRNW<br><b>Postcode</b>: SE109XF</div>');
     map.addOverlay(marker);

      }
 }

function samknows_has_cable() {
	
	$response = $( response );

	if( samknows_check_enable( 'virgin' ) )
		return true;

	if( samknows_check_enable( 'ntl' ) )
		return true;

	if( samknows_check_enable( 'telewest' ) )
		return true;

	if( samknows_check_enable( 'smallworld_cable' ) )
		return true;
	
	return false;
}

function samknows_check_enable( name ) {
	try
	{
		return response.checks[name].status == '2' ? true : false;
	}
	catch (e)
	{
		return false;
	}
	
}

function samknows_has_wireless() {
	
	$response = $( response );

	if( samknows_check_enable( 'now' ) )
		return true;

	if( samknows_check_enable( 'onlincs' )  )
		return true;

	if( samknows_check_enable( 'emnet' )  )
		return true;

	if( samknows_check_enable( 'kijoma' )  )
		return true;

	if( samknows_check_enable( 'kijoma' ) )
		return true;

	if( samknows_check_enable( 'uwimax' ) )
		return true;
	
	return false;
}

function samknows_has_llu_services() {
	
	$response = $( response );

	if( samknows_check_enable( 'aol' ) )
		return true;

	if( samknows_check_enable( 'bulldog' ) )
		return true;

	if( samknows_check_enable( 'cpw' ) )
		return true;

	if( samknows_check_enable( 'edge' ) )
		return true;

	if( samknows_check_enable( 'easynet' ) )
		return true;

	if( samknows_check_enable( 'homechoice' ) )
		return true;

	if( samknows_check_enable( 'lumison' ) )
		return true;

	if( samknows_check_enable( 'pipex' ) )
		return true;

	if( samknows_check_enable( 'wbi' ) )
		return true;

	if( samknows_check_enable( 'node4' ) )
		return true;

	if( samknows_check_enable( 'smallworld_llu' ) )
		return true;

	if( samknows_check_enable( 'tiscali' ) )
		return true;

	if( samknows_check_enable( 'wanadoo' ) )
		return true;

	if( samknows_check_enable( 'zen' ) )
		return true;


	return false;
}

function samknows_date( adslDate, addText ) {
	
	var adslDateParts = adslDate.split( '-' );
	
	if( adslDateParts.length == 1 )
		return '';

	var r = adslDateParts[2] + '/' + adslDateParts[1] + '/' + adslDateParts[0];

	if( typeof addText != 'undefined' )
		return addText + r;

	return r;
}

function samknows_yes( text ) {
	
	return '<div class="yes">' + text + '</div>';
}

function samknows_no( text ) {
	
	return '<div class="no">' + text + '</div>';
}
