//function trim(inputString) {
/**
* Removes leading and trailing spaces from the passed string.
*   Also removes consecutive spaces and replaces it with one space.
* If something besides a string is passed in (null, custom object, etc.)
*   then return the input.
*/
/*if (typeof inputString != "string") { return inputString; }
var retValue=inputString;
var ch=retValue.substring(0, 1);
while (ch==" " || ch=="\r" || ch=="\n") { // Check for spaces at the beginning of the string
retValue=retValue.substring(1, retValue.length);
ch=retValue.substring(0, 1);
}
ch=retValue.substring(retValue.length-1, retValue.length);
while (ch==" ") { // Check for spaces at the end of the string
retValue=retValue.substring(0, retValue.length-1);
ch=retValue.substring(retValue.length-1, retValue.length);
}
while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
retValue=retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
}
return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function
*/
function trim(v){
if(v.length < 1){
return"";
}
v = rTrim(v);
v = lTrim(v);
if(v==""){
return "";
}
else{
return v;
}
} //End Function

function rTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function lTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function


function goPage(inputId, curPage, maxPage)
{
  curPage++;
try
{
var v = document.getElementById(inputId).value;
var page=parseInt(v);
if (isNaN(page) || page <= 0 || v.match(/[^0-9]/ig))
{
window.alert('请输入一个大于 0 的正整数！');
document.getElementById(inputId).focus();
return false;
}
var locStr=''+window.location;
var locUrl='';
var pageLoc=locStr.indexOf('page');
if (-1==pageLoc)  // no page defined
{
locUrl=locStr + (-1==locStr.indexOf('?')?'?':'&')+'page=' + page;
}
else
{
locUrl=locStr.replace(/(page=)[0-9]+/, ('page='+page));
}
if (curPage != page)
{
if (page <= maxPage)
window.location=locUrl;
else
{
if (window.confirm('嗬嗬，没有第 ' + page + ' 页，最多只有 ' + maxPage + ' 页\n\n如果您愿意，点击 “确定”， 我们将跳转到最后一页！\n点击取消，您可以返回重新填写想要跳转的页码！'))
window.location=locStr.replace(/(page=)[0-9]+/, ('page='+maxPage));
else
{
document.getElementById(inputId).focus();
return false;
}
}
}
else
window.alert('嗬嗬，现在就在第 ' + page + ' 页，不需要跳转喔！');
}
catch (exception)
{
window.alert('请输入一个大于 0 的正整数！');
document.getElementById(inputId).focus();
return false;
}
}

function checkQuickLogin()
{
var id =new Array("uName", "uPass0");
var msg=new Array("用户名","密码");
var limit=id.length;
var doc;
for (var i=0; i < limit; i++)
{
doc=document.getElementById(id[i]);
if (doc.value.length==0 && msg[i] != "")
{
var alertMsg="还没有完成输入！\n\n" + msg[i] + " 不能为空";
window.alert(alertMsg);
doc.focus();
return false;
}
}
setPass();
return true;
}

/*
function setPass()
{

var docPw =document.getElementById('uPass0');
var oldPw =docPw.value;
var str="";
for (var i=0; i < oldPw.length; i++)
{
str += "*";
}
docPw.value=str;
str=MD5(oldPw);
alert(str+document.getElementById('cha').value);
str=MD5(str+document.getElementById('cha').value);
alert(str)
document.getElementById('uPass').value=str;
document.getElementById('js').value='1';
return true;
}
*/

var hexChar="0123456789abcdef";
function rhex(num)
{
 str="";
 for(j=0; j <= 3; j++)
 str += hexChar.charAt((num >> (j * 8 + 4)) & 0x0F) +
 hexChar.charAt((num >> (j * 8)) & 0x0F);
 return str;
}
/*
 * Convert a string to a sequence of 16-word blocks, stored as an 
array.
 * Append padding bits and the length, as described in the MD5 
standard.
 */
function str2blks_MD5(str)
{
 nblk=((str.length + 8) >> 6) + 1;
 blks=new Array(nblk * 16);
 for(i=0; i < nblk * 16; i++) blks[i]=0;
 for(i=0; i < str.length; i++)
 blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
 blks[i >> 2] |= 0x80 << ((i % 4) * 8);
 blks[nblk * 16 - 2]=str.length * 8;
 return blks;
}
/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations 
internally
 * to work around bugs in some JS interpreters.
 */
function add(x, y)
{
 var lsw=(x & 0xFFFF) + (y & 0xFFFF);
 var msw=(x >> 16) + (y >> 16) + (lsw >> 16);
 return (msw << 16) | (lsw & 0xFFFF);
}
/*
 * Bitwise rotate a 32-bit number to the left
 */
function rol(num, cnt)
{
 return (num << cnt) | (num >>> (32 - cnt));
}
/*
 * These functions implement the basic operation for each round of the
 * algorithm.
 */
function cmn(q, a, b, x, s, t)
{
 return add(rol(add(add(a, q), add(x, t)), s), b);
}
function ff(a, b, c, d, x, s, t)
{
 return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function gg(a, b, c, d, x, s, t)
{
 return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function hh(a, b, c, d, x, s, t)
{
 return cmn(b ^ c ^ d, a, b, x, s, t);
}
function ii(a, b, c, d, x, s, t)
{
 return cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
 * Take a string and return the hex representation of its MD5.
 */
function MD5(str)
{
 x=str2blks_MD5(str);
 var a=1732584193;
 var b=-271733879;
 var c=-1732584194;
 var d=271733878;

 for(i=0; i < x.length; i += 16)
 {
 var olda=a;
 var oldb=b;
 var oldc=c;
 var oldd=d;
 a=ff(a, b, c, d, x[i+ 0], 7 , -680876936);
 d=ff(d, a, b, c, x[i+ 1], 12, -389564586);
 c=ff(c, d, a, b, x[i+ 2], 17, 606105819);
 b=ff(b, c, d, a, x[i+ 3], 22, -1044525330);
 a=ff(a, b, c, d, x[i+ 4], 7 , -176418897);
 d=ff(d, a, b, c, x[i+ 5], 12, 1200080426);
 c=ff(c, d, a, b, x[i+ 6], 17, -1473231341);
 b=ff(b, c, d, a, x[i+ 7], 22, -45705983);
 a=ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
 d=ff(d, a, b, c, x[i+ 9], 12, -1958414417);
 c=ff(c, d, a, b, x[i+10], 17, -42063);
 b=ff(b, c, d, a, x[i+11], 22, -1990404162);
 a=ff(a, b, c, d, x[i+12], 7 , 1804603682);
 d=ff(d, a, b, c, x[i+13], 12, -40341101);
 c=ff(c, d, a, b, x[i+14], 17, -1502002290);
 b=ff(b, c, d, a, x[i+15], 22, 1236535329);
 a=gg(a, b, c, d, x[i+ 1], 5 , -165796510);
 d=gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
 c=gg(c, d, a, b, x[i+11], 14, 643717713);
 b=gg(b, c, d, a, x[i+ 0], 20, -373897302);
 a=gg(a, b, c, d, x[i+ 5], 5 , -701558691);
 d=gg(d, a, b, c, x[i+10], 9 , 38016083);
 c=gg(c, d, a, b, x[i+15], 14, -660478335);
 b=gg(b, c, d, a, x[i+ 4], 20, -405537848);
 a=gg(a, b, c, d, x[i+ 9], 5 , 568446438);
 d=gg(d, a, b, c, x[i+14], 9 , -1019803690);
 c=gg(c, d, a, b, x[i+ 3], 14, -187363961);
 b=gg(b, c, d, a, x[i+ 8], 20, 1163531501);
 a=gg(a, b, c, d, x[i+13], 5 , -1444681467);
 d=gg(d, a, b, c, x[i+ 2], 9 , -51403784);
 c=gg(c, d, a, b, x[i+ 7], 14, 1735328473);
 b=gg(b, c, d, a, x[i+12], 20, -1926607734);
 a=hh(a, b, c, d, x[i+ 5], 4 , -378558);
 d=hh(d, a, b, c, x[i+ 8], 11, -2022574463);
 c=hh(c, d, a, b, x[i+11], 16, 1839030562);
 b=hh(b, c, d, a, x[i+14], 23, -35309556);
 a=hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
 d=hh(d, a, b, c, x[i+ 4], 11, 1272893353);
 c=hh(c, d, a, b, x[i+ 7], 16, -155497632);
 b=hh(b, c, d, a, x[i+10], 23, -1094730640);
 a=hh(a, b, c, d, x[i+13], 4 , 681279174);
 d=hh(d, a, b, c, x[i+ 0], 11, -358537222);
 c=hh(c, d, a, b, x[i+ 3], 16, -722521979);
 b=hh(b, c, d, a, x[i+ 6], 23, 76029189);
 a=hh(a, b, c, d, x[i+ 9], 4 , -640364487);
 d=hh(d, a, b, c, x[i+12], 11, -421815835);
 c=hh(c, d, a, b, x[i+15], 16, 530742520);
 b=hh(b, c, d, a, x[i+ 2], 23, -995338651);
 a=ii(a, b, c, d, x[i+ 0], 6 , -198630844);
 d=ii(d, a, b, c, x[i+ 7], 10, 1126891415);
 c=ii(c, d, a, b, x[i+14], 15, -1416354905);
 b=ii(b, c, d, a, x[i+ 5], 21, -57434055);
 a=ii(a, b, c, d, x[i+12], 6 , 1700485571);
 d=ii(d, a, b, c, x[i+ 3], 10, -1894986606);
 c=ii(c, d, a, b, x[i+10], 15, -1051523);
 b=ii(b, c, d, a, x[i+ 1], 21, -2054922799);
 a=ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
 d=ii(d, a, b, c, x[i+15], 10, -30611744);
 c=ii(c, d, a, b, x[i+ 6], 15, -1560198380);
 b=ii(b, c, d, a, x[i+13], 21, 1309151649);
 a=ii(a, b, c, d, x[i+ 4], 6 , -145523070);
 d=ii(d, a, b, c, x[i+11], 10, -1120210379);
 c=ii(c, d, a, b, x[i+ 2], 15, 718787259);
 b=ii(b, c, d, a, x[i+ 9], 21, -343485551);
 a=add(a, olda);
 b=add(b, oldb);
 c=add(c, oldc);
 d=add(d, oldd);
 }
 return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}

function hideQuickLoginForm()
{
  var cookieName = readCookieValue('userName');
  cookieName = cookieName == '' ? 'Guest' : cookieName;
  if ('Guest' != cookieName && cookieName != '')
  {
    document.getElementById('qLog').style.display = 'none';
  }
}
function checkUserLogin()
{
  var cookieName = readCookieValue('userName');
  cookieName = cookieName == '' ? 'Guest' : cookieName;
  if ('Guest' != cookieName && cookieName != '')
  {
    document.getElementById('replierName').value = cookieName;
    needAlertPass0 = 'checkUserLogin - 您已经登陆，不用填写密码了，本站支持匿名回复\n\n如果您选择匿名回复，请先清空用户名，\n\n如果您希望用另外一个名字回复，请先改变用户名';
//alert(trim(document.getElementById('replierName').value)+' 1 '+cookieName + needAlertPass0);
  }
  else if (trim(document.getElementById('replierName').value).length == 0)
  {
    needAlertPass0 = 'checkUserLogin - 您尚未登陆，本站支持匿名回复\n\n如果您选择匿名回复，不用填写密码了，\n\n如果您希望用另外一个名字回复，请先改变用户名';
  }
  document.getElementById('uPass0r').onfocus = alertPass0;
  document.getElementById('replierName').onchange = setAlertReplierName;
}
var needAlertPass0 = '';
function setAlertReplierName()
{
  var cookieName = readCookieValue('userName');
  cookieName = cookieName == '' ? 'Guest' : cookieName;
  if (trim(document.getElementById('replierName').value).length == 0)  // want to post without user name
  {
    needAlertPass0 = 'setAlertReplierName - 您选择匿名发表回复，不用填写密码了，\n\n如果希望已注册用户身份回复，请先填写用户名！';
  }
  else if (cookieName == trim(document.getElementById('replierName').value))  // want to post as same user name as login
  {
    needAlertPass0 = 'setAlertReplierName - 您已经登陆，不用填写密码了，本站支持匿名回复\n\n如果您选择匿名回复，请先清空用户名，\n\n如果您希望用另外一个名字回复，请先改变用户名';
  }
  else  // want to post as another user name
  {
    needAlertPass0 = '';
  }
}
function alertPass0()
{
  if (needAlertPass0.length > 0)
  {
    window.alert(needAlertPass0);
    document.getElementById('uPass0r').blur();
  }
}
function readCookieValue( name )
{
var c = document.cookie; 
var begin = c.indexOf( name ); 
if( begin < 0 ) return( "" ); 
begin += name.length + 1; 
var end = c.indexOf( ";", begin ); 
if( end == -1 ) end = c.length; 
return( c.slice( begin, end ) );
}

function checkReply()
{
  var cookieName = readCookieValue('userName');
  cookieName = cookieName == '' ? 'Guest' : cookieName;
//alert('checkReply()'+cookieName);
  if (trim(document.getElementById('replyContent').value).length == 0)
  {
    window.alert('回复内容不能为空！');
    return false;
  }
/*
  if (cookieName != trim(document.getElementById('replierName').value) && trim(document.getElementById('uPass0r').value).length == 0 )
  {
    window.alert('请输入密码');
    document.getElementById('uPass0r').focus();
    return false;
  }
var docPw =document.getElementById('uPass0r');
var oldPw =docPw.value;
var str="";
for (var i=0; i < oldPw.length; i++)
{
str += "*";
}
docPw.value=str;
str=MD5(oldPw);
document.getElementById('uPassr').value=str;
document.getElementById('jsr').value='1';
//    window.alert(str + '  ' + document.getElementById('uPassr').value);
  window.alert(document.getElementById('uPass0r').value + '  ' + document.getElementById('uPassr').value);
//return false;
*/
  return true;
}
/*
function preview()
{
  return false;
}
*/
function bookmark()
{
  if ( document.all )
    window.external.AddFavorite('http://www.vapee.net/', "画皮世界");
  else
    alert('您的浏览器不支持此种方式添加到收藏夹, \n\n请点击浏览器菜单 书签->将本页加入书签');
}

/**
 * 用户登陆时候用到的 js 代码，如果用户的浏览器支持 js，则用 md5 编码加密用户密码，
 */
function checkLogin()
{
var id  = new Array("uName", "uPass0");
var msg = new Array("用户名","密码");
  var limit = id.length;
  var doc;
  for (var i = 0; i < limit; i++)
  {
    doc = document.getElementById(id[i]);
    if (doc.value.length == 0 && msg[i] != "")
    {
      var alertMsg = "还没有完成输入！\n\n" + msg[i] + " 不能为空";
      window.alert(alertMsg);
      doc.focus();
      return false;
    }
  }
  setPass();

  return true;
}
function setPass()
{
/*  var docPw  = document.getElementById('uPass0');
  var oldPw  = docPw.value;
  var str = "";
  for (var i = 0; i < oldPw.length; i++)
  {
    str += "*";
  }
  docPw.value = str;
  str = MD5(oldPw);
  document.getElementById('uPass').value = str;
  document.getElementById('js').value = '1';
  return true;
*/

var docPw =document.getElementById('uPass0');
var oldPw =docPw.value;
var str="";
for (var i=0; i < oldPw.length; i++)
{
str += "*";
}

docPw.value=str;
str=MD5(oldPw);
str=MD5(str+document.getElementById('cha').value);
document.getElementById('uPass').value=str;
document.getElementById('js').value='1';
return true;

}
function goPass()
{
location.href = "/lostPass.php";
return false;
}
function goReg(ref)
{
location.href = '/register.php?ref=' + ref;
return false;
}
function checkCow()
{
  if (trim(document.getElementById('acow').value) == '')
  {
    window.alert('请先输入您的 vapeer 合作社内容！');
    document.getElementById('acow').focus();
    return false;
  }
  return true;
}
function goUser()
{
  var v = document.getElementById('user');
  v = v.options[v.selectedIndex].value;
  var u = '';
  switch(v)
  {
    case '1':
      u = '/userMsg.php?action=write';
      break;
    case '2':
      u = '/userMsg.php?folder=inbox';
      break;
    case '3':
      u = '/userMsg.php?folder=sent';
      break;
    case '4':
      u = '/userInfo.php';
      break;
    case '5':
      u = '/userPosts.php';
      break;
    case '6':
      u = '/userComments.php';
      break;
  }
  
  location.href = u;
  return true;
}
function go(v)
{
if (v == 0) return false;
window.location = 'index.php?action=' + v;
}
function goPost()
{
var nn = window.open("post.php",null);
nn.focus();
}
function $(id) {return document.getElementById(id);}
