function sortWithUmlaut(a,b) // 'umlaut' ist im englischen ein Fremdwort deutscher Herkunft ;o)
{
	a = a.name;
	a = a.toLowerCase();
	a = a.replace(/ä/g, "a");
	a = a.replace(/ö/g, "o");
	a = a.replace(/ü/g, "u");
	a = a.replace(/ß/g, "s");
	b = b.name;
	b = b.toLowerCase();
	b = b.replace(/ä/g, "a");
	b = b.replace(/ö/g, "o");
	b = b.replace(/ü/g, "u");
	b = b.replace(/ß/g, "s");
	return(a==b)?0:(a>b)?1:-1;
}
function replaceUmlaut(json)
{
	for ( var i in json ) {
		for ( var k in json[i] ) {
			if ( k == 'name' ) {
				json[i][k] = json[i][k].replace(/\u00d6/gi, 'Ö');
			}
		}
	}
	return json;
}


$(document).ready(function(){
	$(".modalClose").click();
});

function toggleFilterHeadline(which){
	var a,b;
	if(which==true) {
		active='A';
		inactive='B';
	} else {
		active='B';
		inactive='A';
	}
	$('.modalTemplateFilter'+ active ).addClass('sortActive');
	$('.modalTemplateFilter'+ inactive).removeClass('sortActive');
}

var initTrigger = function(action) {
	$(".modalTemplateFilterA").click(function(){ toggleFilterHeadline(true); getData(action, true); return false; });
	$(".modalTemplateFilterB").click(function(){ toggleFilterHeadline(false); getData(action, false); return false; });
}

var getData = function(action, _filter)
{
	var win = "#modalTemplate";
	$('#modalColA', win).empty();
	$('#modalColB', win).empty();
	$('#modalColC', win).empty();

	$('#modalColB', win).append('<li class="loading" style="text-align:center;"><img src="/res/img/modal/loading.gif" /></li>');

	var currentURL = URL.indexOf("?") > 1 ? URL + "&" : URL + "?";
	$.getJSON(currentURL+"controller="+SITEINFO+"&action="+action+"&value=all", function(data, i) {

		var parts = Math.ceil(data.length/3) - 1;
		var rest = data.length-(Math.ceil(data.length/3)*2);
		//data = (_filter) ? data : (action=="listCountries") ? replaceUmlaut(data) : data.sort(sortWithUmlaut);

		if (action=="listCountries") data = replaceUmlaut(data);
		data = (_filter) ? data : data.sort(sortWithUmlaut);

		$('#modalColB', win).empty();
		$.each(data, function(i,val) {
			if (i <= parts) { $('#modalColA', win).append('<li><a href="'+val.link+'">'+val.name+'</a> ('+val.number+')</li>'); }
			if (i > parts && i <= parts*2+1) { $('#modalColB', win).append('<li><a href="'+val.link+'">'+val.name+'</a> ('+val.number+')</li>'); }
			if (i > parts*2+1) { $('#modalColC', win).append('<li><a href="'+val.link+'">'+val.name+'</a> ('+val.number+')</li>'); }
		});
	});
}

function confirmDialog(dialogID,url,callback) {
	$(dialogID).dialog({
		resizable:false,
		modal:true,
		buttons :[{
			text: jsTranslation['login.buttons.delete'],
			click: function() {callback(url);}
		},{
			text: jsTranslation['login.buttons.abort'],
			click:function(){ $(this).dialog('close');}
		}]
	});
	return false;
}

function discardAccessRightDialog(dialogID,urlAccess,urlDelete,callback) {
	$(dialogID).dialog({
		resizable:false,
		modal:true,
		width:'680',
		buttons :[{
			text: jsTranslation['login.buttons.content.discardAccessRights'],
			click: function() {callback(urlAccess);}
		},{
			text: jsTranslation['login.buttons.content.delete'],
			click: function() {callback(urlDelete);}
		},{
			text: jsTranslation['login.buttons.abort'],
			click:function(){ $(this).dialog('close');}
		}]
	});
	return false;
}

function unlinkDeleteDialog(dialogID,urlUnlink,urlDelete,callback) {
	$(dialogID).dialog({
		resizable:false,
		modal:true,
		width:'550',
		buttons :[{
			text: jsTranslation['login.buttons.content.unlink'],
			click: function() {callback(urlUnlink);}
		},{
			text: jsTranslation['login.buttons.content.delete'],
			click: function() {callback(urlDelete);}
		},{
			text: jsTranslation['login.buttons.abort'],
			click:function(){ $(this).dialog('close');}
		}]
	});
	return false;
}

function unlinkDialog(dialogID,urlUnlink,callback) {
	$(dialogID).dialog({
		resizable:false,
		modal:true,
		width:'500',
		buttons :[{
			text: jsTranslation['login.buttons.content.unlink'],
			click: function() {callback(urlUnlink);}
		},{
			text: jsTranslation['login.buttons.abort'],
			click:function(){ $(this).dialog('close');}
		}]
	});
	return false;
}

function infoDialog(dialogID,captionClose,callback) {
	$(dialogID).dialog({
		resizable:true,
		modal:false
	});
	return false;
}

function engageValidation(formSelector,parentElement) {
	if(parentElement==null) parentElement='tr';

	$(formSelector).validate({
		errorPlacement: function(error, element) {
			element.parents(parentElement).first().addClass('missing');
			$('#validatorMessage').show();
			$('#messageTopWrap').addClass('Red');
		},
		unhighlight: function(element, errorClass, validClass) {
			$(element).closest(parentElement).removeClass('missing');
		}
	});
}

if(jQuery.validator!=undefined) {
	jQuery.validator.addMethod("phonenumber", function(value, element) {
		return this.optional(element) || /^\+\d+-\d+/i.test(value);
	}, "");

	jQuery.validator.addMethod("zipcode", function(value, element) {
//		return this.optional(element) || /^\d{5}$/i.test(value);
		return this.optional(element) || /^.*$/i.test(value);
	}, "");

	jQuery.validator.addMethod("cellphone", function(value, element) {
		return this.optional(element) || /^\+\d+-\d+/i.test(value);
	}, "");

	jQuery.validator.addMethod('multiCheck', function(value, element) {
		var items=document.getElementsByClassName("multiCheckItems");

		for(i=0;i<items.length;++i)
			if(items[i].checked==true) {return true;}

		return false;
	}, "");
}

function cityDialog(dialogID) {
	$(dialogID).dialog({
		width: 460,
		height:520,
		resizable:true,
		modal:true,
		buttons : [{
			text: jsTranslation['login.buttons.abort'],
			click:function(){ $(this).dialog('close'); }
		}]
	});
}

function searchUnknownLocation() {
	if($('#locationSearch').val()!='') {
		var payload=new Array();
		$.ajaxSetup({
			beforeSend: function() {
				$('#spinnerDialog').show();
			},
			complete: function(){
				$('#spinnerDialog').hide();
			}
		});

		$.getJSON('/login/?controller=location&action=searchUnknownLocation&location='+$('#locationSearch').val()+'&country='+$('#citySearchDialog-country option:selected').attr('value'),function(data) {
			if(data) {
				$('#locSearchMessage').hide('slow');
				$("#formCityDialog #cityMultiple").empty();
				var i=0;
				$.each(data,function(key, value){
					$('#formCityDialog #cityMultiple').append('<option value="'+i+'">'+value.label+'</option>');
					payload.push(value.payload);
					i++;
				});
				$('#cityMultiple').click(function() {createNewLocation(payload);});
			} else {
				$('#locSearchMessage').show('slow');
				$('#formCityDialog #cityMultiple').empty();
			}
		});
	}
}

function createNewLocation(payload) {
	var selected = $('#cityMultiple option:selected').attr('value');

	$.post('/login/?controller=location&action=createNewLocation',{payload:payload[selected]},function(data) {
		var json_data=$.parseJSON(data);
		if(json_data.success==true) {
			$('#city').val(json_data.city);
			$('#country').val(json_data.county_uid);
			$('#cityUid').val(json_data.city_uid);
		}
		$('#searchCityDialog').dialog('close');
	});
}

