/*******************************************************
 *	File: NetRain blog js script file
 *	Author: starain
 *	Version: 1.0.0
 *	CreateTime：2005-10-02
 *	LastUpdate：2005-10-02
 *	Copyright: (C) 2005 Starain All rights reserved.
 *	Web: http://www.starain.com
 *  ----------------------------------------------------
 *  Base on jquery
 *          json
 *	        netrain library
 *******************************************************/

/**
 * attach load event
 */
$(function(){
  nrblog.init();
});

/**
 * blog
 */
nrblog={util:{modalBox:null},login:{},logout:{},reg:{}};

/**
 * init
 */
nrblog.init = function(){
  $("a").bind("click", nrblog.call);
};

/**
 *  user login
 */
nrblog.util.call = function(method, params, suc_callback){
  sdata = JSON.stringify({'method':method, 'params':[params]});
  $.ajax({
    global:true,
    url:'ajax.php', //后台处理程序
    type:'post',         //数据发送方式
    dataType:'json',     //接受数据格式
    data:'data='+sdata,  //要传递的数据
    success:suc_callback,  //回传函数(这里是函数名)
    error:nrblog.util.err,
    beforeSend: function(){ Netrain.Loader.show(); },
    complete: function(){ Netrain.Loader.show(true); }
  });
};

/**
 *  util getArgs
 */
nrblog.util.getArgs = function(sHref){
  var o = {};
  var p = "|target|page|catid|postyear|postmonth|postday|logid|userid|";
  var args  = (""+sHref).split("?");
  if(args[0] == sHref){ /*参数为空*/
    return o; /*无需做任何处理*/
  }
  var str = args[1];
  args = str.split("&");
  for(var i = 0; i < args.length; i ++){
    str = args[i];
    var arg = str.split("=");
    if(arg.length <= 1) continue;
    var argName = (arg[0]+"").toLowerCase();
    if(p.indexOf("|" + argName + "|") != -1){
      if(argName.indexOf("post")!=-1) argName = argName.replace("post","s");
      o[argName] = arg[1];
    }
  }
  return o;
}

/**
 *  util getModalBox
 */
nrblog.util.getModalBox = function(){
	if(!nrblog.util.modalBox)
		nrblog.util.modalBox = new Netrain.Feature.ModalBox();
	return nrblog.util.modalBox;
}

/**
 *  util showText
 */
nrblog.util.showText = function(rs, map){
  if(rs && rs.result>0){
    window.location.reload();
  }
  else{
    for(var i=0; rs.message && rs.message.length && i<rs.message.length; i++){
      var ele = document.getElementById(map[rs.message[i].code]);
      if(ele && ele.parentNode){
        ele = ele.parentNode.nextSibling;
        if(ele) ele.innerHTML = rs.message[i].body;
      }
    }
    //$(map[rs.message[i].code]).html(rs.message[i].body);
  }
}

/**
 *  util refreshText
 */
nrblog.util.refreshText = function(ids){
  for(var i=0; ids && ids.length && i<ids.length; i++){
    var ele = document.getElementById(ids[i]);
    if(ele && ele.parentNode){
      ele = ele.parentNode.nextSibling;
      if(ele) ele.innerHTML = '';
    }
  }
}

/**
 *  util shomsg
 */
nrblog.util.shomsg = function(id, rs){
  if(rs && rs.result>0){
    window.location.reload();
  }
  else{
    var msg = ['<ul>'];
    for(var i=0; rs.message && rs.message.length && i<rs.message.length; i++)
      msg.push('<li>' + rs.message[i].body + '</li>');
	  msg.push('</ul>');
    $(id).html(msg.join(''));
  }
}

/**
 *  util err handle
 */
nrblog.util.err = function(s, xhr, status, e){
  Netrain.Loader.show(true);
  alert(s.responseText);
}

/**
 *  blog call
 */
nrblog.call = function(){
  var sHref = this + "";
  if(sHref){
    var args = nrblog.util.getArgs(sHref);
		if(!args) return true;
		switch (args["target"]){
			case "register":
				return nrblog.reg.show();
			case "login":
				return nrblog.login.show();
			case "postlogout":
				return nrblog.logout.post();
			default :
				return true;
		}
  }
  return true;
};

/**
 *  user login show
 */
nrblog.login.show = function(){
  nrblog.util.call('gLoginInfo', [], nrblog.login.showCallback);
  return false;
};

/**
 *  user login show showCallback
 */
nrblog.login.showCallback = function(o){
	var items = [[0,o.nosa],[1,o.day],[2,o.month],[3,o.year]];
	var str = '<div id="loginBox"><form onsubmit="return false;" class="ajax_form">';
	str += '<label>' + o.userName + '</label><span><input id="ausername" value="" /></span><h6></h6><br />';
	str += '<label>' + o.passWord + '</label><span><input id="apassword" type="password" value="" /></span><h6></h6><br />';
	if(o.loginCode=='1')str += '<label>' + o.valicode + '</label><span><input id="avalicode" type="valicode" value="" style="width:95px;" /> <img id="dispcode" src="include/pub/imgcode.php" style="margin-bottom:-6px;" /></span><h6></h6><br />';
	str += '<label>' + o.item + '</label><span>'+
			Netrain.Fom.createSelect('acookie','',items,0)+'</span><h6></h6>';
	str += '<label> </label><span> </span>';
	str += '<label>&nbsp;</label><span><input id="b_l_submit" type="submit" onclick=\"nrblog.login.post();\" value=" ' + o.submit + ' " name="submit" />';
	str += '&nbsp; <input type="reset" value=" ' + o.reset + ' " name="reset" /></span>';
	str += '</form></div>';
	var t = nrblog.util.getModalBox();
	t.title = o.logcap;
	t.width = 360;
	t.height = 190;
	t.inHTML = str;
	t.show(true);
  return false;
}

/**
 *  user login
 */
nrblog.login.post = function(){
  var params={'username':$('#ausername').val(),
    'password':$('#apassword').val(),
    'valicode':$('#avalicode').val(),
    'cookieDate':$('#acookie').val()
  }
  nrblog.util.refreshText(['ausername', 'apassword', 'avalicode']);
  nrblog.util.getModalBox().showLoader();
  nrblog.util.call('postLogin', params, nrblog.login.postCallback);
};

/**
 *  user login callback
 */
nrblog.login.postCallback = function(data){
  nrblog.util.getModalBox().termLoader();
  var m={'ELGI0001':'ausername',
      'ELGI0002':'apassword','ELGI0004':'ausername',
      'ELGI0004':'apassword','ELGI0005':'avalicode'};
  nrblog.util.showText(data, m);
};


/**
 *  user logout post
 */
nrblog.logout.post = function(){
  nrblog.util.call('postLogout', [], nrblog.logout.postCallback);
  return false;
};

/**
 *  user logout callback
 */
nrblog.logout.postCallback = function(data){
  window.location.reload();
};


/**
 *  user login show
 */
nrblog.reg.show = function(){
  nrblog.util.call('gRegInfo', [], nrblog.reg.showCallback);
  return false;
};

/**
 *  user login show showCallback
 */
nrblog.reg.showCallback = function(o){
  var sexs = [[1,o.male],[2,o.female],[0,o.secret]];
  var str = '<div id="regBox"><form onsubmit="return false;" class="ajax_form">';
  str += '<label>' + o.userName + '</label><span><input id="ausername" value="" /></span><h6></h6>';
  str += '<label>' + o.passWord + '</label><span><input id="apassword" type="password" value="" /></span><h6></h6>';
  str += '<label>' + o.checkPwd + '</label><span><input id="acheckPwd" type="password" value="" /></span><h6></h6>';
  if(o.regCode=='1')str += '<label>' + o.valicode + '</label><span><input id="avalicode" type="valicode" value="" style="width:95px;" /> <img id="dispcode" src="include/pub/imgcode.php" style="margin-bottom:-6px;" /></span><h6></h6><br />';
	str += '<label>' + o.sex + '</label><span>'+
      Netrain.Fom.createSelect('asex','',sexs,0)+'</span><h6></h6>';
  str += '<label>' + o.email + '</label><span><input id="aemail" value="" />'+
      ' <input id="ahemail" type="checkbox" value="1" /> '+o.secret+'</span><h6></h6>';
  str += '<label>' + o.homepage + '</label><span><input id="ahomepage" value="" /></span><h6></h6>';
  str += '<label>' + o.explain + '</label><span><textarea id="aexplain" cols="28" rows="3"></textarea></span><h6></h6>';
  str += '<label> </label><span> </span>';
  str += '<label>&nbsp;</label><span><input  id="b_r_submit" type="submit" onclick=\"nrblog.reg.post();\" value=" ' + o.submit + ' " name="submit" />';
  str += '&nbsp; <input type="reset" value=" ' + o.reset + ' " name="reset" /></span>';
  str += '</form></div>';
  var t = nrblog.util.getModalBox();
  t.title = o.regcap;
  t.width = 500;
  t.height = 320;
  t.inHTML = str;
  t.show(true);
  return false;
}


/**
 *  user reg
 */
nrblog.reg.post = function(){
  var params={'username':$('#ausername').val(),
    'password':$('#apassword').val(),
    'checkpwd':$('#acheckPwd').val(),
    'sex':$('#asex').val(),
    'email':$('#aemail').val(),
    'hemail':($('#ahemail').attr('checked') ? 1 : 0),
    'homepage':$('#ahomepage').val(),
    'explain':$('#aexplain').val(),
    'valicode':$('#avalicode').val()
  };
  nrblog.util.refreshText(['ausername', 'apassword', 'avalicode', 'aemail', 'acheckPwd']);
  nrblog.util.getModalBox().showLoader();
  nrblog.util.call('postRegister', params, nrblog.reg.postCallback);
};

/**
 *  user reg callback
 */
nrblog.reg.postCallback = function(data){
  nrblog.util.getModalBox().termLoader();
  var m={'EREG0001':'ausername',
      'EREG0002':'aemail','EREG0003':'apassword',
      'EREG0004':'ausername','EREG0005':'aemail',
      'EREG0006':'acheckPwd','EREG0007':'avalicode',
      'EREG0008':'ausername'};
  nrblog.util.showText(data, m);
};

/**/
function printObject(obj){
  var out="obj:{\n";
  for (element in obj){
     out +=element+" = "+obj[element]+";"+"\n";
  }
  out +="}";
  alert(out);
}
