function yoo_key_sn_tolerant(sn) {
  var i = parseInt(sn, 10);
  if (!isNaN(i)) {
    return 'SN-'+sn;
  }
  return sn;
}

function parse_form_params(elem) {
  var params = {};
  elem.find('input').each(function() {
    if (this.name == 'submit') {
      return;
    }
    if (this.name) {
      var value = this.value;
      if (this.name == 'sn' | 
          this.name == 'new_sn' | 
          this.name == 'old_sn') {
        value = yoo_key_sn_tolerant(value);
      }
      params[this.name] = value;
    }
  });
  return params;
}

function pre_process_form_params(elem) {
  elem.find('input').each(function() {
    if (this.name) {
      if (this.name == 'sn' |
          this.name == 'new_sn' |
          this.name == 'old_sn') {
        this.value = yoo_key_sn_tolerant(this.value);
      }
    }
  });
}

function pre_check_form_params(elem) {
  var check_status = true;
  $(elem).find('input').each(function() {
    if (this.name) {
      if ($(this).next().html() == '*' && !this.value) {
        check_status = false;
        var error = '#' + this.name + '_err';
        var error_i = '#' + this.name + '_err_i';
        $(error_i).html('这个输入是必须的');
        $(error).show();
      }
    }
  });
  return check_status;
}

function ok_func(split_data){
	var sn = split_data[1];

	var endtime = split_data[2];
	var validate_code = split_data[3];
	var msg = "密宝序列号：" + sn + "<br/>到期时间：" + endtime + "<br/>安全码：" + validate_code;

	return msg;

}

function display_validate_code(split_data){
	$('#recover_result').show();
	$('#recover_form').html('');

	$('#validate_header').html("请记录您需要恢复的密宝序列号：");
	$('#validate_code').html("安全码为：" + split_data[3] );

	$('#sn_header').html("序列号：");
	$('#appuser_header').html("绑定帐号：");
	$('#endtime_header').html("到期时间：");

	$('#sn').html(split_data[1]);
	$('#appuser').html(split_data[4]);
	$('#endtime').html(split_data[2]);


}// display_validate_code()

function display_recover_user_list( user_name_id_list ){
	$("#recover_form").hide();

	var jq_user_name_list = $("#user_name_list");
	var jq_user_name_list_submit_btn = jq_user_name_list.find(":input[@type=submit]");

	var jq_user_name_item_demo = $("#user_name_item_demo").find(".user_name_item");

	for( var i = 0; i < user_name_id_list.length; i += 1 )
	{
		var split_data = user_name_id_list[i].split(':');
		var user_id_val = split_data[0];
		var user_name_val = split_data[1];

		var new_item = jq_user_name_item_demo.clone();
		new_item.find(":input[@name=user_id]").val( user_id_val );
		new_item.find("span").text( user_name_val );

		jq_user_name_list_submit_btn.before( new_item );
	}

	jq_user_name_list.find(":input[@name=user_id]").eq(0).attr("checked", "checked");

	jq_user_name_list.show();
}

function user_id_appendto_form(){
	var jq_recover_form = $("#recover_form");
	var jq_user_name_list = $("#user_name_list");

	jq_user_name_list.find(".user_name_item :checked").remove().appendTo( jq_recover_form );
	jq_user_name_list.hide();
}

function yoo_key_handler_wrapper(display_validate_code) {
	function yoo_key_handler(data) {

	  var split_data = data.split('\n')
	  var status = split_data[0]

	  if (status == 'OK') {
            $('#error_box_data').show();
            $('#msg').hide();
            $('#original_input').hide();
            var msg = ""
            if (display_validate_code == undefined) {
                msg = split_data[1];
                $('#msg_i').html(msg);
            } // if()
            else {
                display_validate_code(split_data);
            } // else
            $('#msg').show();
		return;
	  }

	  $('#msg').removeClass();
	  $('#msg').addClass('err');

	  var code = split_data[1]
	  switch (code) {

		case '400': 

              var curr;

              for(i=2;i<split_data.length;i++) {

                var split = split_data[i].split(':')

                if(split[0]=='field') {
                    curr = $('#'+split[1]+'_err_i') 
                    $('#'+split[1]+'_err').show()
                } else { 
                    curr.html(split_data[i])
                }
                
              }
		  $('#msg').hide();
		  break;
		case '403':
		  $('#msg').show();
		  $('#msg_i').html('超时或动态密码错');
		  break;
		case '404':
		  $('#msg').show();
		  $('#msg_i').html('序列号不存在');
		  break;
		case '600':
		  $('#msg').show();
		  $('#msg_i').html('电子邮箱或手机号已存在，可能你之前已经注册过。如果不是，请联系客服。');
		  break;
		case '2002':
		  var token = split_data[2].split(':')[1];
		  $('#'+token+'_sn_err').show();
		  var msg = split_data[3];
		  $('#'+token+'_sn_err_i').html(msg);
		  $('#msg').hide();
		  break;

		case '3001':
		  var token = split_data[2].split(':')[1];
		  $('#'+token+'_sn_err').show();
		  var msg = split_data[3];
		  $('#'+token+'_sn_err_i').html(msg);
		  $('#msg').hide();
		  break;
		case '3002': 
		  $('#msg').show();
		  $('#msg_i').html('口令错误');
		  break;
		case '4002':
		  var token = split_data[2].split(':')[1];
		  $('#'+token+'_err').show();
		  var msg = split_data[3];
		  $('#'+token+'_err_i').html(msg);
		  $('#msg').hide();
		  break;
		case '4003':
		  $('#msg').show();
		  var msg = '口令错误';
		  if (split_data.length ==4) {
			msg = split_data[3];
		  }
		  $('#msg_i').html(msg);
		  break;

		case '4004':
		  display_recover_user_list( split_data.slice(3) );
		  break;

		case '5004':
		  var token = split_data[2].split(':')[1];
		  $('#'+token+'_sn_err').show();
		  var msg = split_data[3];
		  $('#'+token+'_sn_err_i').html(msg);
		  $('#msg').hide();
		  break;

		case '6003':
		  var msg = '用户身份资料验证失败'; 
		  $('#msg').show();
		  $('#msg_i').html(msg);
		  break;

		default:
		  $('#msg').show();
		  $('#msg_i').html('服务器不明返回值：'+code);
		  break;
	  }
	}
	return yoo_key_handler;
}

function submit_and_process(elem, url, is_recover_mode) {
  hide_error_info();
  if (!pre_check_form_params(elem)) {
    return false;
  }

  $('#msg').removeClass();
  $('#msg').addClass('notice');
  $('#msg_i').html('数据提交中，请稍候...');
  $("#msg").ajaxStart(function() {
    $(this).show();
    $(elem).find('input[@type=submit]').attr("disabled", "disabled"); 
  });
  $("#msg").ajaxError(function(request, settings){
    $('#msg').removeClass();
    $('#msg').addClass('err');
    $('#msg_i').html('信息提交失败!');
  });
  $("#msg").ajaxStop(function() {
    $(elem).find('input[@type=submit]').removeAttr("disabled");
  });

  var params = parse_form_params($(elem));

  if(is_recover_mode == undefined){
	  $.post(url, params, yoo_key_handler_wrapper());
  }else{
	  $.post(url, params, yoo_key_handler_wrapper(display_validate_code));
  } // else

}


// UI
function set_nav_linked(cur_path) {
  $('.left li a').each(function() {
    if (this.pathname == cur_path) {
      $(this).parent().addClass('link');
    }
  });
}

function find_page_tile(pathname) {
  var title = $('.right h5').html();
  if (!title) {
    title = $('.succ').html();
  }
  return title;
}

function set_page_location(pathname) {
  var title = find_page_tile(pathname);
  $('#page_location').html('<a href="'+pathname+'"><font>'+title+'</font></a>');
}

function hide_error_info() {
  $(".err").each(function() {
    $(this).hide();
  });
}
