function removeMe(e){
	if($('.att_field').length > 1){
		$(this).parent().remove();
	}else{
		$(this).prev().val('');
	}
	e.preventDefault();
}
function isInteger(s) {
  return (s.toString().search(/^-?[0-9]+$/) == 0);
}
function mergeObj(obj1, obj2){
	if(obj1 == {} || !obj1) return obj2;
	if(obj2 == {} || !obj2) return obj1;
	for(var i in obj2){ obj1[i] = obj2[i];}
	return obj1;
}
function not_empty(validate_ne, errors){
	var ret_errors = {};
	for(var key in validate_ne['input']){
		var inputName = key;
		var parentLvl; var element;
		if(isInteger(validate_ne['input'][key])){
			parentLvl = validate_ne['input'][key];
			element = $(':input[name="' + inputName + '"]');
		}else{
			parentLvl = validate_ne['input'][key]['parentLvl'];
			element = validate_ne['input'][key]['element'];
		}
		ret_errors[inputName] = checkError(element, parentLvl);
	}
	
	for(var key in validate_ne['textarea']){
		var inputName = key;
		var parentLvl; var element;
		if(isInteger(validate_ne['textarea'][key])){
			parentLvl = validate_ne['textarea'][key];
			element = $('textarea[name="' + inputName + '"]');
		}else{
			parentLvl = validate_ne['textarea'][key]['parentLvl'];
			element = validate_ne['textarea'][key]['element'];
		}
		ret_errors[inputName] = checkError(element, parentLvl);
	}
	
	return mergeObj(errors, ret_errors);
}
function checkError(element, parentLvl){
	var ret = (element.val()) ? ((element.val().length < 1) ? true : false): true;
	
	if(ret){
		var elToError = element;
		for(var i = parentLvl; i > 0; i--){
			elToError = elToError.parent();
		}
		elToError.addClass('error');
	}
	return ret;
}
$(function(){
	$('#addMoreFile').click(function(e){
		$('.att_field:last').after($('.att_field:last').clone());
		$('.att_field:last a.removeMe').click(removeMe).prev().val('');
		e.preventDefault();
	});
	$('a.removeMe').click(removeMe);
	$('#LicenceRetailerAddForm').submit(function(e){
		$('.error').removeClass('error');
		$('#error-msg').hide();
		
		var validate_ne = {
				'input':{
					'data[LicenceRetailer][name]' : 1,
					'data[LicenceRetailer][od_exempted]' : 1,
					'data[LicenceRetailer][has_other_licence]' : 1,
					'data[LicenceRetailer][related_has_licence]' : 1,
					'data[LicenceRetailer][related_is_gas_transporter]' : 1,
					'data[LicenceRetailer][toreg_w_market_com]' : 1,
					'data[LicenceRetailer][toreg_w_licensee]' : 1,
					'data[LicenceRetailer][split_billing]' : 1,
					'data[LicenceRetailer][consolidated_billing]' : 1,
					'data[LicenceRetailer][signature]': 1,
					'data[LicenceRetailer][app_name]' : 1,
					'data[LicenceRetailer][app_designation]' :1,
					'data[LicenceRetailer][app_ic]' : 1,
					'data[LicenceRetailer][app_company_name]':1,
					'data[Attachment][file][]' : {
						'parentLvl' : 1,
						'element' : $('.att_field:first').children('input') 
					}
				}
		};
		var errors = not_empty(validate_ne);
		var s_validate_ne = {'textarea':{}};
		if(!errors['data[LicenceRetailer][od_exempted]'] && $(':input[name="data[LicenceRetailer][od_exempted]"]').val() == 1){
			s_validate_ne['textarea']['data[LicenceRetailer][od_exemption_details]'] = 1;
		}
		if(!errors['data[LicenceRetailer][has_other_licence]'] && $(':input[name="data[LicenceRetailer][has_other_licence]"]').val() == 1){
			s_validate_ne['textarea']['data[LicenceRetailer][other_licence_details]'] = 1;
		}
		if(
			!errors['data[LicenceRetailer][related_has_licence]'] &&
			!errors['data[LicenceRetailer][related_is_gas_transporter]'] &&
			(
				$(':input[name="data[LicenceRetailer][related_has_licence]"]').val() == 1 ||
				$(':input[name="data[LicenceRetailer][related_is_gas_transporter]"]').val() == 1
			)
		){
			s_validate_ne['textarea']['data[LicenceRetailer][related_details]'] = 1;
		}
		errors = not_empty(s_validate_ne, errors);
		
		var ret = true;
		for(var key in errors){
			if(errors[key]){
				ret = false;
			}
		}
		if(!ret){
			$('#error-msg').show();
		}else{
			$('.formContainer input').attr('disabled', 'disabled');
			$('.formContainer textarea').attr('disabled', 'disabled');
			$('.formContainer select').attr('disabled', 'disabled');
			$('.formContainer').addClass('reviewContainer');
			$('.finalSubmit').show();
			$('a.removeMe').hide();
			$('#addMoreFile').hide();
			$('#nextStep').hide();
		}
		$(document).scrollTo($('a[name="top"]'), 800);
		
		ret = ($(':input[name="reviewForm"]').val() == 1) && ret;
		if(ret){
			$('.formContainer input').removeAttr('disabled');
			$('.formContainer textarea').removeAttr('disabled');
			$('.formContainer select').removeAttr('disabled');
			return true;
		}
		return ret;
	});
	$('#editForm').click(function(){
		$('.formContainer input').removeAttr('disabled');
		$('.formContainer textarea').removeAttr('disabled');
		$('.formContainer select').removeAttr('disabled');
		$('.formContainer').removeClass('reviewContainer');
		$('.finalSubmit').hide();
		$('a.removeMe').show();
		$('#addMoreFile').show();
		$('#nextStep').show();
		$(':input[name="reviewForm"]').val(0);
		$(document).scrollTo($('a[name="top"]'), 800);
	});
	$('#submitForm').click(function(){
		$(':input[name="reviewForm"]').val(1);
	});
});
