var rdb_labels = [];
var my_routes = [];

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function printMyRoutes() {
	if (my_routes.length > 0) {
		var _id_str = '';
		for (var i = 0; i < my_routes.length; i++) {
			if (i > 0) {
				_id_str += ',';
			}
			_id_str += my_routes[i].route_id;
		}
		$('#myRouteIDs').val(_id_str);
	      	$('#printForm').submit();
	} else {
		alert('Sie müssen mindestens 1 Route auswählen.');
	}
      	return false;
}

function countMyRoutes(sector_id) {
	var _count = 0;
	for (var i = 0; i < my_routes.length; i++) {
		if (parseInt(my_routes[i].sector_id) == parseInt(sector_id)) {
			_count += 1;
		}
	}
	return _count;
}

function selectMyRoutes() {
	$('table.routeList tr').each( function() {
		var _data = $(this).attr('data');
		if (existMyRoute(_data)) {
			$(this).addClass('route_selected');
		}
	});
}

function updateMyRoutes(sector_id) {
	$('#myRoutesBtn').html('<span>Meine Routen (' + my_routes.length + ')</span>');
	$('#mainMyRoutesBtn').html('Meine Routen (' + my_routes.length + ')');
	var current_sector = $('span.rdb_left_' + sector_id);
	var current_sector_text = current_sector.text();
	var _count = countMyRoutes(sector_id);
	if (_count > 0) {
		current_sector_text = current_sector_text.split('(')[0] + ' (' + _count + ')';
	} else {
		current_sector_text = current_sector_text.split('(')[0];
	}
	$('span.rdb_left_' + sector_id).text(current_sector_text);
}

function existMyRoute(route_id) {
	var _exists = false;
	for (var i = 0; i < my_routes.length; i++) {
		if (parseInt(my_routes[i].route_id) == parseInt(route_id)) {
			_exists = true;
			break;
		}
	}
	return _exists;
}

function addMyRoute(route_id, sector_id) {
	if (!existMyRoute(route_id)) {
		my_routes.push({
			route_id: parseInt(route_id),
			sector_id: parseInt(sector_id)
		});
	}
	updateMyRoutes(sector_id);
}

function removeMyRoute(route_id, sector_id) {
	var _my_routes = [];
	for (var i = 0; i < my_routes.length; i++) {
		if (parseInt(my_routes[i].route_id) != parseInt(route_id)) {
			_my_routes.push(my_routes[i]);
		}
	}
	my_routes = _my_routes;
	updateMyRoutes(sector_id);
}

rdb_labels[1] = {x: 52, y: 167 };
rdb_labels[2] = {x: 23, y: 264 };
rdb_labels[3] = {x: 60, y: 350 };
rdb_labels[4] = {x: 126, y: 235 };
rdb_labels[5] = {x: 225, y: 62 };
rdb_labels[6] = {x: 438, y: 128 };
rdb_labels[7] = {x: 420, y: 300 };
rdb_labels[8] = {x: 470, y: 220 };
rdb_labels[9] = {x: 183, y: 137 };
rdb_labels[10] = {x: 268, y: 18 };
rdb_labels[11] = {x: 371, y: 44 };
rdb_labels[12] = {x: 323, y: 125 };
rdb_labels[13] = {x: 352, y: 359 };
rdb_labels[14] = {x: 486, y: 34 };
rdb_labels[15] = {x: 175, y: 90 };
rdb_labels[16] = {x: 50, y: 430 };

function addTableHandler(praefix) {
      $(praefix + 'table.routeList tr').click( function() {
      	var _data = $(this).attr('data');
      	var _sector_id = $(this).attr('sector_id');
         $('tr[data=' + _data + ']').toggleClass('route_selected');
          if ($(this).hasClass('route_selected')) {
          	addMyRoute(_data, _sector_id);
          } else {
          	removeMyRoute(_data, _sector_id);
          }
      });
}

function addHandler() {
      updateMyRoutes();
      selectMyRoutes();
      $('.route_classes').hover(
        function() {
          var rc = $(this).attr('data');
          $('.route_' + rc).addClass('route_highlighted');
        },
        function() {
          var rc = $(this).attr('data');
          $('.route_' + rc).removeClass('route_highlighted');
        }
      );
      $('.route_classes').click( function() {
        var rc = $(this).attr('data');
        $('.route_' + rc).toggleClass('route_selected');
        $('.route_' + rc).each( function() {
        		var _data = $(this).attr('data');
        		var _sector_id = $(this).attr('sector_id');
        		if ($(this).hasClass('route_selected')) {
        			addMyRoute(_data, _sector_id);
        		} else {
        			removeMyRoute(_data, _sector_id);
        		}
        });
      });
      $('#myRoutesBtn').click( function() {
	return printMyRoutes();
      });
      addTableHandler('');
}

function rdb_load_sector_detail(_order_by, _desc, _this) {
	if ((_desc == null) || (_desc == '')) { desc = false; }
	if ((_order_by == null) || (_order_by == '')) { order_by = 'sline_nr'; }
    $('#rdb_dialog').load(
		'http://www.kletterhallewien.at/routen.php', 
		{
			mode: 'sector', 
			sector_id: $(_this).attr('data'),
			order_by: _order_by,
			desc: _desc
		}, function() {
      $('#rdb_dialog').dialog('option', 'title', 'Informationen zum Sektor <strong>' + $(_this).text() + '</strong>');
      $('#rdb_dialog').dialog('open');
      
      addHandler();
    });
}

function rdb_search_routes() {
	$('#rdb_dialog').load(
		'http://www.kletterhallewien.at/routen.php', 
		{
			mode: 'routeSearch'
		}, function() {
		      $('#rdb_dialog').dialog('option', 'title', 'Routen suchen');
		      $('#rdb_dialog').dialog('open');
		      $('#searchTab').tabs();
		      addHandler();
		      $('#searchByUser .route_menu a').click( function() {
		      	var _user_id = parseInt($('#routeUserList').val());
		      	if (_user_id > 0) {
				$('#searchByUser div.results').load(
					'http://www.kletterhallewien.at/routen.php', 
					{
						mode: 'routeSearchResult',
						searchType: 'user',
						user_id: _user_id
					}, function() {
						addTableHandler('#searchByUser ');
					}
				);
		      	} else {
		      		alert('Bitte wählen Sie zuerst einen Routensetzer aus!');
		      	}
		      	return false;
		      });
		      $('#searchByDifficulty .route_menu a').click( function() {
		      	var _min_lvl = parseInt($('#minLevelList').val());
		      	var _min_skala = $('#minLevelList :selected').attr('data');
		      	var _max_lvl = parseInt($('#maxLevelList').val());
		      	var _max_skala = $('#maxLevelList :selected').attr('data');
		      	if ((_min_lvl > 0) || (_max_lvl > 0)) {
				$('#searchByDifficulty div.results').load(
					'http://www.kletterhallewien.at/routen.php', 
					{
						mode: 'routeSearchResult',
						searchType: 'difficulty',
						min_lvl: _min_lvl,
						max_lvl: _max_lvl,
						min_skala: _min_skala,
						max_skala: _max_skala
					}, function() {
						addTableHandler('#searchByDifficulty ');
					}
				);
		      	} else {
		      		alert('Sie müssen mindestens ein Kriterium angeben!');
		      	}
		      	return false;
		      });
		      $('#searchByName .route_menu a').click( function() {
		      	var _route_name = trim($('#routeName').val());
		      	if (_route_name.length >= 3) {
				$('#searchByName div.results').load(
					'http://www.kletterhallewien.at/routen.php', 
					{
						mode: 'routeSearchResult',
						searchType: 'name',
						route_name: _route_name
					}, function() {
						addTableHandler('#searchByName ');
						$('#searchByName div.results strong').each (function() {
							var _text = $(this).text();
							$(this).html(_text.replace(_route_name, '<span style="background: #ff0;">' + _route_name + '</span>'));
						});
					}
				);
		      	} else {
		      		alert('Sie müssen mindestens ein Suchbegriff von mindestens 3 Zeichen eingeben!');
		      	}
		      	return false;
		      });
		}
	);
}

$(document).ready( function() {
  $('#rdb_nojs').hide();
  $('#rdb_js').show();
  
  var rdbitems = $('.rdb_left li span');
  var _rdb_layer = '';
  
  $('#rdb_layer').html('');
  for (var i = 0; i < rdbitems.length; i++) {
    var rdbitem = rdbitems[i];
    if (rdbitem != null) {
      _id = eval($(rdbitem).attr('data'));
      if (_id > 0) {
        if (rdb_labels[_id] != null) {
          _rdb_layer += '<div style="position: absolute; left: ' + rdb_labels[_id].x + 'px; top: ' + rdb_labels[_id].y + 'px;" class="rdb_layer_label rdb_layer_' + _id + '" data="' + _id + '">' + $(rdbitem).text() + '</div>';
        }
      }
    }
  }
  $('#rdb_layer').html(_rdb_layer);  
  
  
  if ($('body').attr('data') == 'print_view') {
  	/* Druckansicht */
  	$('div.rdb_left').hide();
  	$('#rdb_container .plan #rdb_layer').css('right', 'auto');
  	$('#rdb_container .plan #rdb_layer').css('left', '10px');
  	$('#rdb_container .plan img').css('right', 'auto');
  	$('#rdb_container .plan img').css('left', '10px');
  	$('#rdb_container').css('width', '610px');
  	$('#toggleLageplan').click (function() {
  		$('#lageplan').toggle();
  		return false;
  	});
  } else {

  $('#rdb_dialog').dialog({
    autoOpen: false,
    resizable: false,
    modal: true,
    width: 750,
    height: 450
  });
  $('.rdb_left li span').click(function(event) {
     rdb_load_sector_detail('sline_nr', '', this);
   });
   
  $('#routeSearch').click(function() {
  	rdb_search_routes();
  	return false;
  });
  
  $('.rdb_left li span').hover(
    function() {
      $(this).addClass('highlighted');
      $('.rdb_layer_' + $(this).attr('data')).addClass('highlighted');
      $('#rdb_layer_stat').html($('.rdb_stat_' + $(this).attr('data')).html());
    },
    function() {
      $(this).removeClass('highlighted');
      $('.rdb_layer_' + $(this).attr('data')).removeClass('highlighted');
      $('#rdb_layer_stat').html('');
    }
  );
  
  $('.rdb_layer_label').hover(
    function() {
      $(this).addClass('highlighted');
      $('.rdb_left_' + $(this).attr('data')).addClass('highlighted');
      $('#rdb_layer_stat').html($('.rdb_stat_' + $(this).attr('data')).html());
    },
    function() {
      $(this).removeClass('highlighted');
      $('.rdb_left_' + $(this).attr('data')).removeClass('highlighted');
      $('#rdb_layer_stat').html('');
    }
  );
  $('.rdb_layer_label').click( function() {
    $('.rdb_left_' + $(this).attr('data')).click();
  });
  updateMyRoutes();
  $('#mainMyRoutesBtn').click( function() {
  	return printMyRoutes();
  });
  
  }
});
