var loginFormSelector = '#login';
var addressConfirmed = false;

var formDATA = {
	selector : 'form#reg1',
	url : {
		ac_obec : '/add-vchod/rest-cities',
		ac_ulice : '/add-vchod/rest-streets',
		checkAddr : '/add-vchod/search-address',
	//	submit : '/add-vchod/submit-new-add-vchod'
		submit : 'index2.html'
		}
	}


/*
 ****************************
 *  onReady
 ****************************
*/

$(function(){

	

	$('#inp-obec').bind('keyup change', function () {
		if (this.value && this.value.length>1) {
			$('#inp-ulice').removeClass('disabled').get(0).disabled = false;
			}
		else {
			$('#inp-ulice').addClass('disabled').get(0).disabled = true;
			}
		if (this.value!==this.validValue) {
			this.validValue = 0;
			$('#inp-obecid').val('');
			}
		}).triggerHandler('keyup');

	$('#inp-obec').bind('change', function () {
		if (this.value!==this.validValue) setTimeout(check_Obec,250);
		});

	$('#inp-ulice').bind('change', function () {
		if (this.value!==this.validValue) setTimeout(check_Ulice,250);
		});

	initValidator();
	initAutocomplete();
    
    // třída target-blank způsobí otevření nového okna jako target="_blank"
    $('a.target-blank').click(function(event){
        event.preventDefault();
        window.open(this.href);
        });

    });





/*
 ****************************
 *  Autocomplete
 ****************************
*/

function initAutocomplete() {
	// našeptávač - obec
	$('#inp-obec').autocomplete( formDATA.url.ac_obec, {
		minChars : 1,
		onEnter : function() {
			$('#inp-obec').trigger('change');
			$('#inp-ulice').focus()
			}
		})
	.result( function(event,row,formatted) {
		$('#inp-obec').val(row[0]);
		$('#inp-obecid').val(row[1]);
		});
	// našeptávač - ulice
	$('#inp-ulice').autocomplete( formDATA.url.ac_ulice, {
		minChars : 1,
		extraParams : {
			city : function(){ return $('#inp-obec').val() },
			city_id : function(){ return $('#inp-obecid').val() }
			},
		onEnter : function() {
			$('#inp-ulice').trigger('change');
			}
		})
	.result( function(event,row,formatted) {
		$('#inp-ulice').val(row[0]);
		});
	}

/*
 ****************************
 *  Submit handlers
 ****************************
*/

function submitPre() {
	if (!FormLock) {
		var validated = true;
		var elm1 = $('#inp-obec').get(0);
		if (!elm1.validValue) {
			validated = false;
			check_Obec();
			}
		var elm2 = $('#inp-ulice').get(0);
		if (!elm2.validValue) {
			validated = false;
			check_Ulice();
			}
		}
	if (FormLock || !validated) {
		setTimeout( function(){ $(formDATA.selector).submit() } ,1000);
		return false;
		}
	// unknown address confirmation
	if ( (elm1.validValue==-1 || elm2.validValue==-1) && !addressConfirmed) {
		addressConfirm();
		return false
		}
	else return true
	}

/*
 ****************************
 *  Validator
 ****************************
*/

jQuery.validator.addMethod('ulice', function(value, element) { 
	return this.optional(element) || value.match(/^\s*(\S+\s)*(\d+\/)?\d+[a-zA-Z]*(\s.*)?$/);
	}, $LNG.msg.uliceBadFormat );

function initValidator() {

	$(formDATA.selector).validate({
		submitHandler : function (form) {
			if (submitPre()) form.submit();
			},
//		debug: true,
		errorElement : 'p',
		errorClass : 'invalid',
		ignore : ':disabled',
		rules: {
			obec : {
				required: true
				},
			ulice : {
				required: true,
				ulice: true
				}
			},
		messages: {
			obec : $LNG.msg.obecEmpty,
			ulice : {
				required: $LNG.msg.uliceEmpty,
				ulice: $LNG.msg.uliceBadFormat
				}
			}
		});
	}


function check_Obec() {
	lockForm();
	$('#inp-obec').get(0).validValue = 0;
	$('#inp-obecid').val('');
	$('#obec-check').removeClass('invalid').html($LNG.msg.checkingAddress).show();
	addressConfirmed = false;
	$.ajax({
		url: formDATA.url.checkAddr,
		data: {
			city_name : $('#inp-obec').val()
			},
		dataType : 'json',
		cache : false,
		success : function (data) {
			if (data && data.count) {
				$('#obec-check').empty().hide();
				$('#inp-obec').get(0).validValue = $('#inp-obec').val();
				$('#inp-obecid').val(data.results[0].obec.id);
				}
			else {
				$('#obec-check').addClass('invalid').html($LNG.msg.notfoundCity).show();
				$('#inp-obec').get(0).validValue = -1;
				$('#inp-obecid').val('');
				}
			unlockForm();
			},
		error : function () {
			$('#obec-check').addClass('invalid').html($LNG.msg.notfoundCity).show();
			$('#inp-obec').get(0).validValue = -1;
			$('#inp-obecid').val('');
			unlockForm();
			}
		});
	}

function check_Ulice() {
	lockForm();
	$('#inp-ulice').get(0).validValue = 0;
	$('#ulice-check').removeClass('invalid').html($LNG.msg.checkingAddress).show();
	addressConfirmed = false;
	$.ajax({
		url: formDATA.url.checkAddr,
		data: {
			city_name : $('#inp-obec').val(),
			city_id : $('#inp-obecid').val(),
			street : $('#inp-ulice').val()
			},
		dataType : 'json',
		cache : false,
		success : function (data) {
			if (data && data.count) {
				$('#ulice-check').empty().hide();
				$('#inp-ulice').get(0).validValue = $('#inp-ulice').val();
				}
			else {
				$('#ulice-check').addClass('invalid').html($LNG.msg.notfoundAddress).show();
				$('#inp-ulice').get(0).validValue = -1;
				}
			unlockForm();
			},
		error : function () {
			$('#ulice-check').addClass('invalid').html($LNG.msg.notfoundAddress).show();
			$('#inp-ulice').get(0).validValue = -1;
			unlockForm();
			}
		});
	}

function addressConfirm() {
	var adr = $('#inp-obec').val() + ', ' + $('#inp-ulice').val();
	var s = '<p><strong>'+adr+'</strong><br>'+$LNG.msg.unknownAddress+'</p><p><input type="checkbox" id="floatchkbox"> <label for="floatchkbox">'+$LNG.msg.unknownAddressChk+'</label></p>';
	myConfirm(
		s,
		$LNG.title.confirm,
		$LNG.button.cont,
		$LNG.button.cancel,
		function() {
			if ($('#floatchkbox:checked').length>0) {
				addressConfirmed = true;
				$(formDATA.selector).submit();
				}
			},
		null
		);
	}
/* zvyrazneni inputu */	
$(document).ready(function() {
	$('.form1 input[type="text"]').addClass("idle-field");
	$('.form1 input[type="text"]').focus(function() {
		$(this).removeClass("idle-field").addClass("focus-field");
		$(this).parent().addClass("focus-field-wrapper");
	    if (this.value == this.defaultValue){ 
	    	this.value = '';
		}
	});
	$('.form1 input[type="text"]').blur(function() {
		$(this).removeClass("focus-field").addClass("idle-field");
		$(this).parent().removeClass("focus-field-wrapper");		
	    if ($.trim(this.value) == ''){
	    	this.value = (this.defaultValue ? this.defaultValue : '');
		}
	});
});
