var CountryISOtoIRU = {'AL':'AL', 'AT':'A', 'BE':'B', 'BY':'BY', 'BA':'BIH', 'BG':'BG', 'CZ':'CZ', 'HR':'HR', 'DK':'DK', 'CH':'CH', 'EE':'EST', 'FI':'FIN', 'FR':'F', 'DE':'D', 'GR':'GR', 'IT':'I', 'LV':'LV', 'LT':'LT', 'MK':'MK', 'GB':'GB', 'MD':'MD', 'NO':'N', 'NL':'NL', 'PL':'PL', 'PT':'P', 'RO':'RO', 'RU':'RUS', 'YU':'SRB', 'SK':'SK', 'SI':'SLO', 'ES':'E', 'SE':'S', 'TR':'TR', 'HU':'H', 'UA':'UA', 'LU':'LU', 'IE':'IRL', 'ME':'ME'};
var loadMessages = new Array();
var truckMessages = new Array();
truckMessages['type'] = new Array();

function addLoad(load)
{
	if(filter['type'] == 'p2p') 
	{
		source_deviation = distance(filter['source_lat'], filter['source_lon'], load['source_lat'], load['source_lon']);
		destination_deviation = distance(filter['destination_lat'], filter['destination_lon'], load['destination_lat'], load['destination_lon']);
		if(filter['deviation']>=(source_deviation+destination_deviation) && checkInterval(load) && checkWeight(load)
				&& checkGroupage(load) && checkVolume(load) && checkLength(load) && checkADR(load) && checkTC(load))
			prependLoad(load, source_deviation, destination_deviation);
	} else {
		if((filter['source_lat']) && (filter['source_lon']) && (filter['deviation']) && distance(filter['source_lat'], filter['source_lon'], load['source_lat'], load['source_lon'])>filter['deviation']) return;
		if((filter['destination_lat']) && (filter['destination_lon']) && (filter['deviation']) && distance(filter['destination_lat'], filter['destination_lon'], load['destination_lat'], load['destination_lon'])>filter['deviation']) return;
		if((filter['source_country']) && load['source_country']!=filter['source_country']) return;
		if((filter['destination_country']) && load['destination_country']!=filter['destination_country']) return;
		if(!checkTrafic(load)) return;
		if(!checkInterval(load)) return;
		if(!checkGroupage(load)) return;
		if(!checkWeight(load)) return;
		if(!checkVolume(load)) return;
		if(!checkLength(load)) return;
		if(!checkADR(load)) return;
		if(!checkTC(load)) return;
		prependLoad(load);
	}
}

function prependLoad(load, a, b)
{
	//if($("#load_" + load['id']).text()!='') return;
	$("#load_" + load['id']).remove();
	$("#resultsArea").prepend("<div id='load_"+load['id']+"' class='e'></div>");
	$("#load_" + load['id']).hide();
	
	buffer = "<div class='e1'>";
		buffer+= "<a href='#' onclick='return unfoldLoad(" + load['id'] + ")'><b style='font-size: 13px;'>";
		buffer+= load['source'] + ', ' + CountryISOtoIRU[load['source_country']];
		//if(a) buffer+= ' -> ' + a + 'km';
		if(load['source_zip']!='') buffer+= " ("+load['source_zip']+")";
		buffer+= '<br />';
		buffer+= load['destination'] + ', ' + CountryISOtoIRU[load['destination_country']];
		//if(b) buffer+= ' -> ' + b + 'km';
		if(load['destination_zip']!='') buffer+= " ("+load['destination_zip']+")";
		buffer+= '</b></a><br />';
		buffer+= 'BM-' + load['id'];
	buffer+= "</div>";

	buffer+="<div class='e2'>";
		buffer+= load['start_date'] + '<br />' + load['end_date'] + '<br />';
		if(load['external_reference'] && load['external_reference']!='') buffer+= '<img src="/img/references/' + load['external_reference'] + '.gif" title="' + load['external_reference'] +'" />';
		buffer+= load['company_paymentincidentsimage'];
	buffer+="</div>";

	buffer+="<div class='e3 n'>";
		buffer+= "<div style='float:left; width:70px;'>";
		buffer+= load['weight'] + ' to<br />';
		if(load['volume']>0) buffer+= load['volume'] + ' mc<br />';
		if(load['length']>0) buffer+= load['length'] + ' ml<br />';
		buffer+= "</div>";
		buffer+= "<div style='float:left;'>";
		if(load['price']!='') buffer+= load['price'] + '<br />';
		if(load['adr']==1) buffer+='<img src="/img/adr.png" title="' + loadMessages['adr'] + '" />';
		if(load['tc']==1) buffer+='<img src="/img/snowflake.png" title="' + loadMessages['tc'] + '" />';
		if(load['groupage']==1) buffer+='<img src="/img/package_green.png" title="' + loadMessages['groupage'] + '" />';
		buffer+= "</div>";
		buffer+= "<div class='clear'></div>";
		
	buffer+="</div>";
	
	buffer+="<div class='clear'></div>";
	
	buffer+="<div id='details_"+load['id']+"' class='d'></div>";
	
	$("#load_" + load['id']).html(buffer);
	$("#load_" + load['id']).slideDown('fast');
	if($('#resultsArea > div').length>50) 
		$('#resultsArea > div:last').slideUp('fast', function(){$(this).remove();});
}

function unfoldLoad(load_id)
{
	$("#details_" + load_id).hide();
	
	$.ajax({
		type: 'GET',
		url: '/freightexchange/default/unfoldloadX?id='+load_id,
		dataType: 'json',
		beforeSend: function() { 
			$("#load_" + load_id + " > .e1").addClass('l');
			$("#load_" + load_id + " > .e1 > a").replaceWith($("#load_" + load_id + " > .e1 > a").html());
		},
		complete: function() {
			$("#load_" + load_id + " > .e1").removeClass('l'); 
			$("#load_" + load_id + " > .e3").removeClass('n');
		},
		success: function(d) {
			buffer = '';
			if(d['isGuest']==1) {
				window.location.replace('/login');
			} else if(d['noSubscription']==1) {
				window.location.replace('/account/financial/subscribe');
			} else if(d['noLoad']==1) {
				buffer = 'NO or DELETED LOAD !!!';
			} else {
				buffer = '<table><tr><td>';
				buffer+= d['contact']['company_name'] + '<br />';
				buffer+= d['contact']['site_name'] + '<br />';
				buffer+= '<b>' + d['contact']['contact_name'] + '</b><br />';
				buffer+= '<div>' + d['contact']['contact_phone'] + '<br />' + d['contact']['site_phone'] + '</div>';
				buffer+= '</td><td>';
				buffer+= d['details']['description'] + '<br />';
				buffer+= '<i>' + d['details']['updated'] + '</i>';
				buffer+= '</td></tr></table>';
				
			}
			
			$("#details_" + load_id).html(buffer);
			$("#details_" + load_id).slideDown('fast');
		}
	});

	return false;
}

function addTruck(truck)
{
	if(filter['type'] == 'p2p') 
	{
		source_deviation = distance(filter['source_lat'], filter['source_lon'], load['source_lat'], load['source_lon']);
		destination_deviation = distance(filter['destination_lat'], filter['destination_lon'], load['destination_lat'], load['destination_lon']);
		if(filter['deviation']>=(source_deviation+destination_deviation) && checkInterval(truck) && checkWeight(truck, 'truck')
				&& checkGroupage(truck, 'truck') && checkVolume(truck, 'truck') && checkLength(truck, 'truck') && checkADR(truck) && checkTC(truck))
			prependTruck(truck);
	} else {
		if((filter['source_lat']) && (filter['source_lon']) && (filter['deviation']) && (truck['source_lon']) && distance(filter['source_lat'], filter['source_lon'], truck['source_lat'], truck['source_lon'])>filter['deviation']) return;
		if((filter['source_country']) && filter['source_country']!=truck['source_country']) return;
		if((filter['destination_lat']) && (filter['destination_lon']) && (filter['deviation']) && (truck['destination_lon']) && distance(filter['destination_lat'], filter['destination_lon'], truck['destination_lat'], truck['destination_lon'])>filter['deviation']) return;
		if((filter['destination_country']) && truck['destination_country']!=filter['destination_country']) return;
		if(!checkTrafic(truck)) return;
		if(!checkInterval(truck)) return;
		if(!checkWeight(truck, 'truck')) return;
		if(!checkGroupage(truck, 'truck')) return;
		if(!checkVolume(truck, 'truck')) return;
		if(!checkLength(truck, 'truck')) return;
		if(!checkADR(truck)) return;
		if(!checkTC(truck)) return;
		prependTruck(truck);
	}
}

function prependTruck(truck, a, b)
{
	//if($("#truck_" + truck['id']).text()!='') return;
	$("#truck_" + truck['id']).remove();
	$("#resultsArea").prepend("<div id='truck_"+truck['id']+"' class='e'></div>");
	$("#truck_" + truck['id']).hide();
	
	buffer = "<div class='e1'>";
		buffer+= "<a href='#' onclick='return unfoldTruck(" + truck['id'] + ")'><b style='font-size: 13px;'>";
		buffer+= truck['source'];
		if(truck['source_lat']!=null) buffer+= ', ' + CountryISOtoIRU[truck['source_country']];
		if(truck['source_zip']!='') buffer+= " ("+truck['source_zip']+")";
		buffer+= '<br />';
		if(truck['destination']!=null) {
			buffer+= truck['destination'];
			if(truck['destination_lat']!=null) buffer+= ', ' + CountryISOtoIRU[truck['destination_country']];
			if(truck['destination_zip']!='' && truck['destination_zip']!=null) buffer+= " ("+truck['destination_zip']+")";
		} else {
			buffer+= truckMessages['any'];
		}
		buffer+= '</b></a><br />';
		buffer+= 'BC-' + truck['id'];
	buffer+= "</div>";

	buffer+="<div class='e2'>";
		buffer+= truck['start_date'] + '<br />' + truck['end_date'];
	buffer+="</div>";

	buffer+="<div class='e3 n'>";
		buffer+= "<div style='float:left; width:70px;'>";
		buffer+= truck['weight'] + ' to<br />';
		if(truck['volume']>0) buffer+= truck['volume'] + ' mc<br />';
		if(truck['length']>0) buffer+= truck['length'] + ' ml<br />';
		buffer+= "</div>";
		buffer+= "<div style='float:left;'>";
		if(truck['price']!='') buffer+= truck['price'] + '<br />';
		buffer+= truckMessages['type'][truck['type']] + '<br />';
		if(truck['adr']==1) buffer+='<img src="/img/adr.png" title="' + truckMessages['adr'] + '" />';
		if(truck['tc']==1) buffer+='<img src="/img/snowflake.png" title="' + truckMessages['tc'] + '" />';
		if(truck['groupage']==1) buffer+='<img src="/img/package_green.png" title="' + truckMessages['groupage'] + '" />';
		buffer+= "</div>";
		buffer+= "<div class='clear'></div>";
		
	buffer+="</div>";
	
	buffer+="<div class='clear'></div>";
	
	buffer+="<div id='details_"+truck['id']+"' class='d'></div>";
	
	$("#truck_" + truck['id']).html(buffer);
	$("#truck_" + truck['id']).slideDown('fast');
	if($('#resultsArea > div').length>50) 
		$('#resultsArea > div:last').slideUp('fast', function(){$(this).remove();});
}

function unfoldTruck(truck_id)
{
	$("#details_" + truck_id).hide();
	
	$.ajax({
		type: 'GET',
		url: '/freightexchange/default/unfoldtruckX?id='+truck_id,
		dataType: 'json',
		beforeSend: function() { 
			$("#truck_" + truck_id + " > .e1").addClass('l');
			$("#truck_" + truck_id + " > .e1 > a").replaceWith($("#truck_" + truck_id + " > .e1 > a").html());
		},
		complete: function() {
			$("#truck_" + truck_id + " > .e1").removeClass('l'); 
			$("#truck_" + truck_id + " > .e3").removeClass('n');
		},
		success: function(d) {
			buffer = '';
			if(d['isGuest']==1) {
				window.location.replace('/login');
			} else if(d['noSubscription']==1) {
				window.location.replace('/account/financial/subscribe');
			} else if(d['noLoad']==1) {
				buffer = 'NO or DELETED LOAD !!!';
			} else {
				buffer = '<table><tr><td>';
				buffer+= d['contact']['company_name'] + '<br />';
				buffer+= d['contact']['site_name'] + '<br />';
				buffer+= '<b>' + d['contact']['contact_name'] + '</b><br />';
				buffer+= '<div>' + d['contact']['contact_phone'] + '<br />' + d['contact']['site_phone'] + '</div>';
				buffer+= '</td><td>';
				buffer+= d['details']['description'] + '<br />';
				buffer+= '<i>' + d['details']['updated'] + '</i>';
				buffer+= '</td></tr></table>';
				
			}
			
			$("#details_" + truck_id).html(buffer);
			$("#details_" + truck_id).slideDown('fast');
		}
	});

	return false;
}

function distance(lat1, lon1, lat2, lon2) {
	if(lat1 == lat2 && lon1 == lon2) return 0;
	var radlat1 = Math.PI * lat1/180;
	var radlat2 = Math.PI * lat2/180;
	var radlon1 = Math.PI * lon1/180;
	var radlon2 = Math.PI * lon2/180;
	var theta = lon1-lon2;
	var radtheta = Math.PI * theta/180;
	var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
	dist = Math.acos(dist);
	dist = dist * 180/Math.PI;
	dist = dist * 60 * 1.1515;
	dist = dist * 1.609344;
	return Math.round(dist);
}

function checkGroupage(ad, type)
{
	if(!(type) || type=='load') {
		if(filter['groupage']) 
		{
			if(filter['groupage'] == 0) return true;
			if(filter['groupage'] == 1 && ad['groupage']==0) return true;
			if(filter['groupage'] == 2 && ad['groupage']==1) return true;
			return false;
		} else return true;
	} else if(type=='truck') {
		if(filter['groupage'])
			if(filter['groupage']==ad['groupage']) return true;
			else return false;
		return true;
	}
}

function checkInterval(ad)
{
	if((filter['start_date']) && (filter['end_date']))
		if((ad['start_date_nix'] >= filter['start_date'] && ad['start_date_nix'] <= filter['end_date']) || (ad['end_date_nix'] >= filter['start_date'] && ad['end_date_nix'] <= filter['end_date']) 
				|| (ad['start_date_nix'] <= filter['start_date'] && filter['end_date'] <= ad['end_date_nix'])) return true;
		else return false;
	else return true;
	
}

function checkWeight(ad, type)
{
	if(!(type) || type=='load') {
		if(filter['weight']) {
			if(filter['groupage'] == 0 || filter['groupage'] == 2)
			{
				if(filter['weight']>=ad['weight']) return true;
			} else {
				if(filter['weight']*1.1>=ad['weight'] && filter['weight']*0.5<=ad['weight']) return true;
			}
			return false;
		} else return true;
	} else if(type=='truck') {
		if(filter['weight']) {
			if(filter['weight']*0.8<=ad['weight'] && ad['weight']<=filter['weight']*1.7) return true;
			else return false;
		}
		return true;
	}
}

function checkVolume(ad, type)
{
	if(!(type) || type=='load') {
		if(filter['volume']) {
			if(!ad['volume'] || ad['volume']==0) return true;
			if(filter['groupage'] == 0 || filter['groupage'] == 2)
			{
				if(filter['volume']>=ad['volume']) return true;
			} else {
				if(filter['volume']*1.1>=ad['volume'] && filter['volume']*0.5<=ad['volume']) return true;
			}
			return false;
		} else return true;
	} else {
		if(filter['volume']) {
			if(!ad['volume'] || ad['volume']==0) return true;
			if(filter['volume']*0.8<=ad['volume'] && ad['volume']<=filter['volume']*1.7) return true;
			return false;
		} else return true;
	}
}

function checkLength(ad, type)
{
	if(!(type) || type=='load') {
		if(filter['length']) {
			if(!ad['length'] || ad['length']==0) return true;
			if(filter['groupage'] == 0 || filter['groupage'] == 2)
			{
				if(filter['length']>=ad['length']) return true;
			} else {
				if(filter['length']*1.1>=ad['length'] && filter['length']*0.5<=ad['length']) return true;
			}
			return false;
		} else return true;
	} else {
		if(filter['length']) {
			if(!ad['length'] || ad['length']==0) return true;
			if(filter['length']*0.8<=ad['length'] && ad['length']<=filter['length']*1.7) return true;
			return false;
		} else return true;
	}
}

function checkADR(ad)
{
	if(filter['adr'] == 1 && ad['adr']!=1) return false;
	return true;
}

function checkTC(ad)
{
	if(filter['tc'] == 1 && ad['tc']!=1) return false;
	return true;
}

function checkTrafic(ad)
{
	if(filter['trafic'] == 1)
	{
		if(ad['source_country'] != ad['destination_country']) return true;
		else return false;
	} else return true;
}

function updateTraficType()
{
	
	if(($("[name='source_id']").val() != undefined && $("[name='destination_id']").val() == undefined) || 
		($("[name='destination_id']").val() != undefined && $("[name='source_id']").val() == undefined))
		$("#traficType").slideDown('fast');
	else
		$("#traficType").slideUp('fast');
}
