/******* Core Js **********/
/*	Based on prototypes (prototype.conio.net)
/*	Modifid by Todd Lee (www.todd-lee.com)
/*	Last update: 2006-04-12
*/

var Prototype = {
  Version: '1.3.1',
  emptyFunction: function() {}
}

var Class = {
  create: function() {
    return function() { 
      this.initialize.apply(this, arguments);
    }
  }
}

var Abstract = new Object();

Object.extend = function(destination, source) {
  for (property in source) {
    destination[property] = source[property];
  }
  return destination;
}

Object.prototype.extend = function(object) {
  return Object.extend.apply(this, [this, object]);
}

Function.prototype.bind = function(object) {
  var __method = this;
  return function() {
    __method.apply(object, arguments);
  }
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this;
  return function(event) {
    __method.call(object, event || window.event);
  }
}

Number.prototype.toColorPart = function() {
  var digits = this.toString(16);
  if (this < 16) return '0' + digits;
  return digits;
}

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

/*--------------------------------------------------------------------------*/

var PeriodicalExecuter = Class.create();
PeriodicalExecuter.prototype = {
  initialize: function(callback, frequency) {
    this.callback = callback;
    this.frequency = frequency;
    this.currentlyExecuting = false;

    this.registerCallback();
  },

  registerCallback: function() {
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  onTimerEvent: function() {
    if (!this.currentlyExecuting) {
      try { 
        this.currentlyExecuting = true;
        this.callback(); 
      } finally { 
        this.currentlyExecuting = false;
      }
    }
  }
}

/*--------------------------------------------------------------------------*/
function $() { 
	var elements = new Array(); 
	for (var i = 0; i < arguments.length; i++) { 
		var element = arguments[i]; 
		if (typeof element == 'string') 
			element = document.getElementById(element); 
		if (arguments.length == 1) 
			return element; 
		elements.push(element); 
	} 
	return elements; 
}

/*--------------------------------------------------------------------------*/
String.prototype.extend({
  stripTags: function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  },

  escapeHTML: function() {
    var div = document.createElement('div');
    var text = document.createTextNode(this);
    div.appendChild(text);
    return div.innerHTML;
  },

  unescapeHTML: function() {
    var div = document.createElement('div');
    div.innerHTML = this.stripTags();
    return div.childNodes[0].nodeValue;
  }
});

/*--------------------------------------------------------------------------*/
var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
      function() {return new XMLHttpRequest()}
    ) || false;
  }
}

Ajax.Base = function() {};
Ajax.Base.prototype = {
  setOptions: function(options) {
    this.options = {
      method:       'post',
      asynchronous: true,
      parameters:   ''
    }.extend(options || {});
  },

  responseIsSuccess: function() {
    return this.transport.status == undefined
        || this.transport.status == 0 
        || (this.transport.status >= 200 && this.transport.status < 300);
  },

  responseIsFailure: function() {
    return !this.responseIsSuccess();
  }
}

Ajax.Request = Class.create();
Ajax.Request.Events = 
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Request.prototype = (new Ajax.Base()).extend({
  initialize: function(url, options) {
    this.transport = Ajax.getTransport();
    this.setOptions(options);
    this.request(url);
  },

  request: function(url) {
    var parameters = this.options.parameters || '';
    if (parameters.length > 0) parameters += '&_=';

    try {
      if (this.options.method == 'get' && parameters.length > 0)
        url += '?' + parameters;

      this.transport.open(this.options.method, url,
        this.options.asynchronous);

      if (this.options.asynchronous) {
        this.transport.onreadystatechange = this.onStateChange.bind(this);
        setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
      }

      this.setRequestHeaders();

      var body = this.options.postBody ? this.options.postBody : parameters;
      this.transport.send(this.options.method == 'post' ? body : null);

    } catch (e) {
    }
  },

  setRequestHeaders: function() {
    var requestHeaders = 
      ['X-Requested-With', 'XMLHttpRequest',
       'X-Prototype-Version', Prototype.Version];

    if (this.options.method == 'post') {
      requestHeaders.push('Content-type', 
        'application/x-www-form-urlencoded');

      /* Force "Connection: close" for Mozilla browsers to work around
       * a bug where XMLHttpReqeuest sends an incorrect Content-length
       * header. See Mozilla Bugzilla #246651. 
       */
      if (this.transport.overrideMimeType)
        requestHeaders.push('Connection', 'close');
    }

    if (this.options.requestHeaders)
      requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);

    for (var i = 0; i < requestHeaders.length; i += 2)
      this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
  },

  onStateChange: function() {
    var readyState = this.transport.readyState;
    if (readyState != 1)
      this.respondToReadyState(this.transport.readyState);
  },

  respondToReadyState: function(readyState) {
    var event = Ajax.Request.Events[readyState];
	var _arguments = this.options['responseArguments'];
	
    if (event == 'Complete')
      (this.options['on' + this.transport.status]
       || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
       || Prototype.emptyFunction)(this.transport, _arguments);
	  
    (this.options['on' + event] || Prototype.emptyFunction)(this.transport, _arguments);

    /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
    if (event == 'Complete')
      this.transport.onreadystatechange = Prototype.emptyFunction;
  }
});

Ajax.Updater = Class.create();
Ajax.Updater.ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';

Ajax.Updater.prototype.extend(Ajax.Request.prototype).extend({
  initialize: function(container, url, options) {
    this.containers = {
      success: container.success ? $(container.success) : $(container),
      failure: container.failure ? $(container.failure) :
        (container.success ? null : $(container))
    }

    this.transport = Ajax.getTransport();
    this.setOptions(options);

    var onComplete = this.options.onComplete || Prototype.emptyFunction;
    this.options.onComplete = (function() {
      this.updateContent();
      onComplete(this.transport);
    }).bind(this);

    this.request(url);
  },

  updateContent: function() {
    var receiver = this.responseIsSuccess() ?
      this.containers.success : this.containers.failure;

    var match    = new RegExp(Ajax.Updater.ScriptFragment, 'img');
    var response = this.transport.responseText.replace(match, '');
    var scripts  = this.transport.responseText.match(match);

    if (receiver) {
      if (this.options.insertion) {
        new this.options.insertion(receiver, response);
      } else {
        receiver.innerHTML = response;
      }
    }

    if (this.responseIsSuccess()) {
      if (this.onComplete)
        setTimeout((function() {this.onComplete(
          this.transport)}).bind(this), 10);
    }

    if (this.options.evalScripts && scripts) {
      match = new RegExp(Ajax.Updater.ScriptFragment, 'im');
      setTimeout((function() {
        for (var i = 0; i < scripts.length; i++)
          eval(scripts[i].match(match)[1]);
      }).bind(this), 10);
    }
  }
});

Ajax.PeriodicalUpdater = Class.create();
Ajax.PeriodicalUpdater.prototype = (new Ajax.Base()).extend({
  initialize: function(container, url, options) {
    this.setOptions(options);
    this.onComplete = this.options.onComplete;

    this.frequency = (this.options.frequency || 2);
    this.decay = 1;

    this.updater = {};
    this.container = container;
    this.url = url;

    this.start();
  },

  start: function() {
    this.options.onComplete = this.updateComplete.bind(this);
    this.onTimerEvent();
  },

  stop: function() {
    this.updater.onComplete = undefined;
    clearTimeout(this.timer);
    (this.onComplete || Ajax.emptyFunction).apply(this, arguments);
  },

  updateComplete: function(request) {
    if (this.options.decay) {
      this.decay = (request.responseText == this.lastText ? 
        this.decay * this.options.decay : 1);

      this.lastText = request.responseText;
    }
    this.timer = setTimeout(this.onTimerEvent.bind(this), 
      this.decay * this.frequency * 1000);
  },

  onTimerEvent: function() {
    this.updater = new Ajax.Updater(this.container, this.url, this.options);
  }
});

/*--------------------------------------------------------------------------*/
document.getElementsByClassName = function(className) { 
	var children = document.getElementsByTagName('*') || document.all; 
	var elements = new Array(); 
	for (var i = 0; i < children.length; i++) { 
		var child = children[i]; 
		var classNames = child.className.split(' '); 
		for (var j = 0; j < classNames.length; j++) { 
			if (classNames[j] == className) { 
				elements.push(child); 
				break; 
			} 
		} 
	} 
	return elements; 
} 

/*--------------------------------------------------------------------------*/
if (!window.Element) {
  var Element = new Object();
}
Object.extend(Element, {
	toggle: function() { 
		for (var i = 0; i < arguments.length; i++) { 
			var element = $(arguments[i]); 
			element.style.display = (element.style.display == 'none' ? '' : 'none'); 
		} 
	}, 
	hide: function() { 
		for (var i = 0; i < arguments.length; i++) { 
			var element = $(arguments[i]); 
			element.style.display = 'none'; 
		} 
	}, 
	show: function() { 
		for (var i = 0; i < arguments.length; i++) { 
			var element = $(arguments[i]); 
			element.style.display = ''; 
		} 
	}, 
	remove: function(element) { 
		element = $(element); 
		element.parentNode.removeChild(element); 
	}, 
	getWidth: function(element) { 
		element = $(element); 
		return element.offsetWidth; 
	},
	getHeight: function(element) { 
		element = $(element); 
		return element.offsetHeight; 
	},
	swapClassName: function(element) {
		element = $(element); 
		for (var i = 1; i < arguments.length; i++) {
			if (element.className == arguments[i]) {
				element.className = (i == arguments.length - 1 ? arguments[1] : arguments[i+1]);
				break;
			}
		}
	},
	getParentElementByTagName: function(element, tagName) {
		element = $(element); 
		while (element.tagName != tagName) {
			element = element.parentNode;
		}
		return element;
	},
	getParentElementByClassName: function(element, _className) {
		element = $(element); 
		while (element.className != _className) {
			element = element.parentNode;
		}
		return element;
	},
	//objPos = Element.getPosition(Obj); objPosLeft = objPos.left; objPosTop = objPos.top;
	getPosition: function(element) {
		for (var sumTop = 0, sumLeft = 0; element != document.body/* && element.tagName != "HTML"*/; sumTop += element.offsetTop, sumLeft += element.offsetLeft, element = element.offsetParent);
		return {left: sumLeft, top: sumTop};
	},
	getChildValueByTagName: function(element, tagName) {
		element = $(element);
		var arr = [];
		var childs = element.getElementsByTagName(tagName);
		for (var i=0; i<childs.length; i++) {
			var c = childs[i];
			if(c.firstChild) {
				if (c.firstChild.nodetype != 1) {
					arr.push(c.firstChild.data);
				}
				else {
					arr.push(null);
				}
			}
			else {
				arr.push('');
			}
		}
		return arr;
	}
});

/*--------------------------------------------------------------------------*/

var Form = {
  serialize: function(form) {
    var elements = Form.getElements($(form));
    var queryComponents = new Array();
    
    for (var i = 0; i < elements.length; i++) {
      var queryComponent = Form.Element.serialize(elements[i]);
      if (queryComponent)
        queryComponents.push(queryComponent);
    }
    
    return queryComponents.join('&');
  },
  
  getElements: function(form) {
    var form = $(form);
    var elements = new Array();

    for (tagName in Form.Element.Serializers) {
      var tagElements = form.getElementsByTagName(tagName);
      for (var j = 0; j < tagElements.length; j++)
        elements.push(tagElements[j]);
    }
    return elements;
  },
  
  getInputs: function(form, typeName, name) {
    var form = $(form);
    var inputs = form.getElementsByTagName('input');
    
    if (!typeName && !name)
      return inputs;
      
    var matchingInputs = new Array();
    for (var i = 0; i < inputs.length; i++) {
      var input = inputs[i];
      if ((typeName && input.type != typeName) ||
          (name && input.name != name)) 
        continue;
      matchingInputs.push(input);
    }

    return matchingInputs;
  },

  disable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.blur();
      element.disabled = 'true';
    }
  },

  enable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.disabled = '';
    }
  },

  focusFirstElement: function(form) {
    var form = $(form);
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      if (element.type != 'hidden' && !element.disabled) {
        Field.activate(element);
        break;
      }
    }
  },

  reset: function(form) {
    $(form).reset();
  }
}

Form.Element = {
  serialize: function(element) {
    var element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);
    
    if (parameter)
      return encodeURIComponent(parameter[0]) + '=' + 
        encodeURIComponent(parameter[1]);                   
  },
  
  getValue: function(element) {
    var element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);
    
    if (parameter) 
      return parameter[1];
  }
}

Form.Element.Serializers = {
  input: function(element) {
    switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
        return Form.Element.Serializers.textarea(element);
      case 'checkbox':  
      case 'radio':
        return Form.Element.Serializers.inputSelector(element);
    }
    return false;
  },

  inputSelector: function(element) {
	var groups = document.getElementsByName(element.name);
	var subValue = new Array();
	for (var i=0; i<groups.length; i++ ) {
		if (groups[i].checked)
		  subValue.push(groups[i].value);
	}
	if (subValue.length < 1)
		subValue = null;
	 return [element.name, subValue];
  },

  textarea: function(element) {
    return [element.name, element.value];
  },

  select: function(element) {
    var value = '';
    if (element.type == 'select-one') {
      var index = element.selectedIndex;
      if (index >= 0)
        value = element.options[index].value || element.options[index].text;
    } else {
      value = new Array();
      for (var i = 0; i < element.length; i++) {
        var opt = element.options[i];
        if (opt.selected)
          value.push(opt.value || opt.text);
      }
    }


    return [element.name, value];
  }
}

/*--------------------------------------------------------------------------*/

var $F = Form.Element.getValue;

/******* Core Js End **********/

/******* My Favor List **********/
/*	Author: Todd Lee (www.todd-lee.com)
/*	Last update: 2005-10-24
*/

/*** exmaple ***
favList[0] = new Object;
favList[0].id = 1;
favList[0].tit = "Todd Lee";
favList[0].desc = "Todd Lee Blog";
favList[0].url = "http://www.todd-lee.com";

favList[1] = new Object;
favList[1].id = 2;
favList[1].tit = "Todd Lee 2";
favList[1].desc = "Todd Lee Blog 2";
favList[1].url = "http://www.todd-lee.com";
...
*/
if (!favList) var favList = [];
var MyFav = Object.extend((typeof MyFav != 'undefined'? MyFav:{}), {
	/*** global variables ***/
	styleOut 	: 'myfav',		//the class of myFav object
	styleOver 	: 'myfav-over',	//mouseover class
	styleClick 	: 'myfav-over',	//click class
	
	str_noList			: '暂无链接',	//the notice when there is no my favor
	str_editMyFavTitle 	: '新增',		//the words in edit box title
	str_editMyFavTitle2 : '修改',		//the words in edit box title
	str_noticeWordsTitle: '请填写链接名',	//
	str_noticeWordsUrl	: '链接地址格式不正',	//
	str_noticeWordsDel	: '是否确认删除？',	//
	str_noticeLoading	: 'Loading...',	//
	str_noticeDone		: '操作成功',	//
	
	obj_myFavBox 		: 'myFavBox',		//my favor list container 
	obj_popDiv			: 'popDiv',			//my favor cell box
	obj_editMyFavBox	: 'editMyFavBox',	//my favor edit box
	obj_editMyFavTitle 	: 'editMyFavTitle',	//my favor edit box title
	obj_favTitle		: 'favTitle',		//my favor edit box favor's title
	obj_favDesc			: 'favDesc',		//my favor edit box favor's description
	obj_favUrl			: 'favUrl',			//my favor edit box favor's url
	/*** global variables end ***/
	
	//favList : new Array(),
	selectedObj : null,
	showing : false,
	
	/*** build my favor list ***/
	buildMyFavList : function() {
		this.showing = false;
		this.selectedObj = null;
		var str = "";
		if( favList.length > 0 ) {
			var theObj;
			for( var i=0; i<favList.length; i++) {
				theObj = favList[i];
				var _desc = (theObj.desc)? "\n"+theObj.desc : "";
				str += "<div id=\"myFav_"+ theObj.id +"\" tit=\""+ theObj.tit +"\"desc=\""+ theObj.desc +"\" url=\""+ theObj.url +"\" class=\""+ this.styleOut +"\" onmouseover=\"MyFav.mouseEvent(event, this)\" onmouseout=\"MyFav.mouseEvent(event, this)\">";
				str += "<a href=\""+ theObj.url +"\" target=\"_blank\" title=\""+ theObj.tit + _desc +"\"><strong>"+ theObj.tit +"</strong></a> ";
				if (theObj.usr) {
					str += theObj.usr;
				}
				str += "<br /><span style=\"text-decoration: none;\">"+ theObj.desc +"</span>";
				str += "</div>";
			}
		}
		else {
			str = this.str_noList;
		}
		$(this.obj_myFavBox).innerHTML = str;
	},
	/*** build my favor list end ***/

	/*** style operations of my favor list ***/
	//listen mouse event
	mouseEvent : function(e, theObj, opr) {
		if (!e) 
			var e=window.event;
		if (!theObj) {
			try {
				theObj = e.srcElement;
			}
			catch(e){}
		}
		if (theObj.id.indexOf('myFav_') < 0 && this.selectedObj ) {
			theObj = this.selectedObj;
		}
		if ( e.type == 'mouseover' ){
			this.overCell(theObj);
		}
		else if ( e.type == 'mouseout'  ||  e.type == 'blur' ){
			this.outCell(theObj);
		}
		else if ((e.type == 'click')){
			if (opr == 'delete') {
				this.deleteFav(theObj);
			}
			else if (opr == 'edit'){
				this.editFavCheck(theObj);
			}
			else {
				if (!this.showing) {
					this.selectCell(theObj, opr);
				}
				else {
					this.unSelectCell(theObj);
				}
				this.showing = !this.showing;
			}
		}
	},
	
	//on mouse over to do this
	overCell : function(theObj) {
		if (!this.showing) {
			this.outCellAll();
			theObj.className = this.styleOver;
			this.selectEntry(theObj);
			this.showTip(theObj);
		}
	},
	//on mouse out to do this
	outCell : function(theObj) {
		if (!this.showing) {
			theObj.className = this.styleOut;
			this.hideTip();
		}
	},
	//a shortcut to set all to mouse out style
	outCellAll : function() {
		for (var i=0; i<favList.length; i++) {
			this.outCell(favList[i]);
		}
	},

	//on mouse click to do this
	selectCell : function(theObj, opr) {
		if (opr != 'add') {
			theObj.className = this.styleOver;
		}
		this.selectEntry(theObj);
		this.showAddBar(theObj, opr);
	},
	//on clear select to do this
	unSelectCell : function(theObj){
		theObj.className = this.styleOut;
		this.unSelectEntry();
		this.hideTip();
		this.hideAddBar();
	},

	//set mark
	selectEntry : function(theObj){
		if ( !this.isSelected(theObj) ){
			this.selectedObj = theObj;
		}
	},
	//clear mark
	unSelectEntry : function(){
		selectedObj = null;
	},
	//whether the object is selected
	isSelected : function(theObj){
		if (this.selectedObj == theObj)
			return true;
		return false;
	},

	//show edit & delete icon
	showTip : function(theObj) {
		var thePopBox = $(this.obj_popDiv);
		var str = "";
		thePopBox.style.display = 'block';
		thePopBox.style.position = 'absolute';
		thePopBox.style.top    = Element.getPosition(theObj).top -0 +1 + 'px';
		thePopBox.style.left   = Element.getPosition(theObj).left -0 +Element.getWidth(theObj) -33 + 'px';
	},
	hideTip : function() {
		$(this.obj_popDiv).style.display = 'none';
	},

	//show edit panel
	showAddBar : function(theObj, opr) {
		$(this.obj_editMyFavBox).style.display = 'block';
		$(this.obj_editMyFavBox).style.position = 'absolute';
		$(this.obj_editMyFavBox).style.top    = Element.getPosition(theObj).top + 'px';
		$(this.obj_editMyFavBox).style.left   = Element.getPosition(theObj).left -0 +Element.getWidth(theObj) -33 + 'px';
		$(this.obj_editMyFavTitle).innerHTML = (opr == 'add')? this.str_editMyFavTitle : this.str_editMyFavTitle2;
		$(this.obj_favTitle).value = (opr == 'add')? '' : theObj.getAttribute('tit');
		$(this.obj_favDesc).value = (opr == 'add')? '' : theObj.getAttribute('desc');
		$(this.obj_favUrl).value = (opr == 'add')? 'http://' : theObj.getAttribute('url');
		$(this.obj_favTitle).select();
		$(this.obj_favTitle).focus();
	},
	hideAddBar : function() {
		$(this.obj_editMyFavBox).style.display = 'none';
	},
	/*** style operations of my favor list end ***/

	/*** data operations of my favor list ***/
	//get the data index of current object
	getSourceDataIndex : function(theObj) {
		for (var i=0; i<favList.length; i++) {
			if ('myFav_'+favList[i].id == theObj.id) {
				return (i);
			}
		}
		return (-1);
	},
	//confirm delete one
	deleteFav : function(theObj) {
		theObj.className = this.styleOver;
		this.selectEntry(theObj);
		if (confirm(this.str_noticeWordsDel + theObj.getAttribute('tit') +'?')) {
			showTipInfo(MyFav.str_noticeLoading);
			var doDelete = function() {MyFav.requestDeleteStatus(theObj)};
			doIt = setTimeout(doDelete, 1);
			//var doDelete = function() {MyFav.doDeleteFav(theObj)};
			//doIt = setTimeout(doDelete, 1);
		}
		else {
			this.unSelectCell(theObj);
		}
	},
	//request from server
	requestDeleteStatus : function(theObj) {
		var url = '/manage/link.do';
		var pars = 'm=delete&id=' + favList[this.getSourceDataIndex(theObj)].id;
		var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: MyFav.doDeleteFav, responseArguments: theObj } );
	},
	//do delete operation
	doDeleteFav : function(request, theObj) {
		hideTipInfo();
		if (!request || !request.responseText || request.responseText.indexOf('<') !== 0 || !request.responseXML) {
			alert('Error: The resource file is not well-formed.\n'+request.responseText);
			return;
		}
		var xmlDom = request.responseXML;
		var code = Element.getChildValueByTagName(xmlDom, 'code')[0];
		var message = Element.getChildValueByTagName(xmlDom, 'message')[0];
		if (typeof code == 'undefined' || typeof message == 'undefined') {
			alert('Error: The resource file is not well-formed.\n'+request.responseText);
			return;
		}
		if (code != '200') {
			var str = 'Error code: '+ code +'\n';
			str += 'Error Message: '+ message +'\n';
			str += 'Please contact administrators.\n';
			alert(str);
			return;
		}
		showTipInfo(MyFav.str_noticeDone);
		//theObj = MyFav.selectedObj;
		if ( MyFav.getSourceDataIndex(theObj) >= 0 ) {
			favList.splice(MyFav.getSourceDataIndex(theObj), 1);
			MyFav.unSelectCell(theObj);
			MyFav.buildMyFavList();
		}	
		setTimeout(hideTipInfo, 500);
	},
	//check edit data
	editFavCheck : function(theObj) {
		var expRequire = /.+/;
		var expUrl = /^http:\/\/([a-zA-Z0-9]|[-_])+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
		if( !expRequire.test( $(this.obj_favTitle).value ) ){
			alert(this.str_noticeWordsTitle);
			$(this.obj_favTitle).focus();
		}
		else if( !expUrl.test( $(this.obj_favUrl).value ) ){
			alert(this.str_noticeWordsUrl);
			$(this.obj_favUrl).focus();
		}
		else {
			showTipInfo(MyFav.str_noticeLoading);
			this.requestEditStatus(theObj);
		}
	},
	//request from server
	requestEditStatus : function(theObj) {
		//edit
		if (this.getSourceDataIndex(theObj) >= 0) {
			var url = '/manage/link.do';
			var pars = 'm=update&id='+favList[this.getSourceDataIndex(theObj)].id+'&title='+$(this.obj_favTitle).value+'&desc='+$(this.obj_favDesc).value+'&link='+$(this.obj_favUrl).value;
			var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: MyFav.doEditFav, responseArguments: theObj } );
		}
		//add
		else {
			var url = '/manage/link.do';
			var pars = 'm=add&title='+$(this.obj_favTitle).value+'&desc='+$(this.obj_favDesc).value+'&link='+$(this.obj_favUrl).value;
			var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: MyFav.doEditFav, responseArguments: theObj } );
		}
	},
	//do edit operation
	doEditFav : function(request, theObj) {
		hideTipInfo();
		if (!request || !request.responseText || request.responseText.indexOf('<') !== 0 || !request.responseXML) {
			alert('Error: The resource file is not well-formed.\n'+request.responseText);
			return;
		}
		var xmlDom = request.responseXML;
		var code = Element.getChildValueByTagName(xmlDom, 'code')[0];
		var message = Element.getChildValueByTagName(xmlDom, 'message')[0];
		if (typeof code == 'undefined' || typeof message == 'undefined') {
			alert('Error: The resource file is not well-formed.\n'+request.responseText);
			return;
		}
		if (code != '200') {
			var str = 'Error code: '+ code +'\n';
			str += 'Error Message: '+ message +'\n';
			str += 'Please contact administrators.\n';
			alert(str);
			return;
		}
		showTipInfo(MyFav.str_noticeDone);
		var addLink = xmlDom.getElementsByTagName('link')[0];
		var addId = addLink.getAttribute('id') || '';
		var addTit = Element.getChildValueByTagName(addLink, 'name')[0] || '';
		var addDesc = Element.getChildValueByTagName(addLink, 'desc')[0] || '';
		var addUrl = Element.getChildValueByTagName(addLink, 'url')[0] || '';
		if (MyFav.getSourceDataIndex(theObj) >= 0) {
			favList[MyFav.getSourceDataIndex(theObj)].tit = addTit;
			favList[MyFav.getSourceDataIndex(theObj)].desc = addDesc;
			favList[MyFav.getSourceDataIndex(theObj)].url = addUrl;
		}
		else if ( theObj.id.indexOf('myFav_') >= 0 ) {
			var _obj = new Object();
			_obj.id 	= addId;
			_obj.tit 	= addTit;
			_obj.desc 	= addDesc;
			_obj.url 	= addUrl;
			favList[favList.length] = _obj;
		}
		MyFav.unSelectCell(theObj);
		MyFav.buildMyFavList();
		setTimeout(hideTipInfo, 500);
	}
	/*** data operations of my favor list end ***/
});
/******* My Favor List end **********/


//open new window in the middle of the screen
//url(String): new window's url
//winName(String): new window's name
//theWidth(Int): new window's width
//theHeight(Int): new window's height
//scrolls(yes|null): wheather can scrolls
function openWindow( url, winName, theWidth, theHeight, scrolls ) {
	var xposition=0; 
	var yposition=0;
	if ( (parseInt(navigator.appVersion) >= 4 ) ){
		xposition = (screen.width - theWidth) / 2;
		yposition = (screen.height - theHeight) / 2;
	}
	var theproperty= "width=" + theWidth + "," ;
	theproperty+= "height=" + theHeight + "," ;
	theproperty+= "location=0," ;
	theproperty+= "menubar=0,";
	theproperty+= "resizable=0,";
	if(scrolls)
		theproperty+= "scrollbars=" + scrolls + ",";
	else
		theproperty+= "scrollbars=0,";	
	theproperty+= "status=0," ;
	theproperty+= "titlebar=0,";
	theproperty+= "toolbar=0,";
	theproperty+= "hotkeys=0,";
	theproperty+= "screenx=" + xposition + ","; //仅?用于Netscape
	theproperty+= "screeny=" + yposition + ","; //仅?用于Netscape
	theproperty+= "left=" + xposition + ","; //IE
	theproperty+= "top=" + yposition; //IE 
	return( window.open( url,winName,theproperty ) );
}

//set cookie
//name(String):	cookie's name
//value(String): cookie's value
//expires(Int:minute|String:never): cookie's expiring time
function setCookie(name, value, expires, path) {
	var str = name + "=" + escape(value);
	if (expires) {
		if (expires == 'never') 
			expires = 100*365*24*60;
		var exp=new Date(); 
		exp.setTime(exp.getTime() + expires*60*1000);
		str += "; expires="+exp.toGMTString();
	}
	if (path) {
		str += "; path=" + path;
	}
	str += "; domain=pepo.cn";
	document.cookie = str;
} 
//get cookie by cookie's name
//name(String): cookie's name
function getCookie(name){
	var tmp, reg = new RegExp("(^| )"+name+"=([^;]*)(;|$)","gi");
	if( tmp = reg.exec( unescape(document.cookie) ) )
		return(tmp[2]);
	return null;
}

/******* Common Js for Sohu Blog **********/
/*	Author: Todd Lee (www.todd-lee.com)
/*	Last update: 2006-04-12
*/

function toggleSidePanel(arrowObj){
	Element.swapClassName(arrowObj, "arrow-up", "arrow-down");
	var children = Element.getParentElementByClassName(arrowObj, "panel").childNodes;
	for (var i = 0; i < children.length; i++) {
		if (children[i].nodeType == 1 && children[i].className.indexOf("content") != -1) {
			var contentObj = children[i];
			break;
		}
	}
	Element.swapClassName(contentObj, "panel-content", "panel-content-hidden");
}

function toggleItem(arrowObj){
	Element.swapClassName(arrowObj, "arrow-up", "arrow-down");
	var children = Element.getParentElementByClassName(arrowObj, "item").childNodes;
	for (var i = 0; i < children.length; i++) {
		if (children[i].nodeType == 1 && children[i].className.indexOf("body") != -1) {
			var contentObj = children[i];
			break;
		}
	}
	Element.swapClassName(contentObj, "item-body", "item-body-hidden");
}

function isLogin() {
   // if (getCookie("P")!=null && getCookie("P")!="" && getCookie("P")!="null")
   if($('hibnickname').value!="")
        return true;
	return false;
}
function hasBlog() {
    if($('hibUserBlogId').value>0)
        return true;
	return false;
}
function getP() {
	var str = getCookie('P');
	str = unescape(str);
	var c = String.fromCharCode(str.charCodeAt(0) - str.length);
	for(var i=1; i<str.length; i++) {
		c += String.fromCharCode(str.charCodeAt(i) - c.charCodeAt(i-1));
	}
	return c;
}
function getD() {
	return getCookie('ud');
}
function isMyBlog() {
    if(!$('hibBlogId').value) return false;
    if(!$('hibUserBlogId').value) return false;
    if($('hibBlogId').value!= $('hibUserBlogId').value)
    {
         return false;
    }
	return true;
}
function showTipInfo(text, tipBox) {
	if ($('tipBoxDiv')) {
		var tipBox = $('tipBoxDiv');
	}
	var body = document.body;
	if (!tipBox) {
		var tipBox = document.createElement("div");
		body.appendChild(tipBox);
	}
	tipBox.innerHTML = text;
	tipBox.id = "tipBoxDiv";
	tipBox.style.color = "#333";
	tipBox.style.border = "2px solid #cecece";
	tipBox.style.background = "#ffffe1";
	tipBox.style.padding = "10px";
	tipBox.style.display = "block";
	tipBox.style.zIndex = "1";
	tipBox.style.position = "absolute";
	var x = (body.offsetWidth - tipBox.offsetWidth)/2;
	var y = Math.ceil((document.documentElement.clientHeight - tipBox.offsetHeight)/2) + document.documentElement.scrollTop;
	tipBox.style.left = x + "px";
	tipBox.style.top = y + "px";
}
function hideTipInfo(tipBox, tipBoxShadow) {
	if (tipBox && tipBoxShadow) {
		tipBox.style.display = 'none';
	}
	else if($('tipBoxDiv')) {
		$('tipBoxDiv').style.display = 'none';
	}
}
function getBlogTitle() {
	if (!$('blogTitle')) return null;
	return ($('blogTitle').firstChild.innerHTML);
}
function getBlogLink() {
	if (!$('blogTitle')) return null;
	return ($('blogTitle').firstChild.href);
}
function getBlogDesc() {
	if (!$('blogDesc')) return null;
	return ($('blogDesc').innerHTML);
}
function addToFav() {
	var _title = getBlogTitle();
	var _desc = getBlogDesc();
	var _link = getBlogLink();
	if (!_title || !_link) {
		alert('无法获得此站点相应数据');
		return;
	}
	if (menu_tool)	disableMenu(menu_tool);
	showTipInfo(MyFav.str_noticeLoading);
	
	var url = '/manage/link.do';
	var pars = 'm=add&title='+ _title +'&desc='+ (_desc || '') +'&link='+ _link;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: doneAddToFav } );
}
function doneAddToFav(request) {
	hideTipInfo();
	if (!request || !request.responseText || request.responseText.indexOf('<') !== 0 || !request.responseXML) {
		alert('Error: The resource file is not well-formed.\n'+request.responseText);
		return;
	}
	var xmlDom = request.responseXML;
	var code = Element.getChildValueByTagName(xmlDom, 'code')[0];
	var message = Element.getChildValueByTagName(xmlDom, 'message')[0];
	if (typeof code == 'undefined' || typeof message == 'undefined') {
		alert('Error: The resource file is not well-formed.\n'+request.responseText);
		return;
	}
	if (code != '200') {
		var str = 'Error code: '+ code +'\n';
		str += 'Error Message: '+ message +'\n';
		str += 'Please contact administrators.\n';
		alert(str);
		return;
	}
	showTipInfo(MyFav.str_noticeDone);
	if (menu_tool)	setTimeout(function(){ableMenu(menu_tool)}, 1000);
	setTimeout(hideTipInfo, 1000);
}
function timeStamp() {	var now = new Date();return (now.getTime());};
function checkLogonForm(frm) {	
	if ($F('username').length <= 0) {
		alert("请填写用户名");
		$('username').focus();
		return false;
	}
	if ($F('passwd').length <= 0) {
		alert("请填写密码");
		$('passwd').focus();
		return false;
	}
	if ($('reme') && $F('reme') >= 1){
		setCookie('username', $F('username'), 'never', '/');
		setCookie('domain', $F('maildomain'), 'never', '/');
		setCookie('rememberme', 'true', 'never', '/');
	}else{
		setCookie('username', '', 'never', '/');
		setCookie('domain', '', 'never', '/');
		setCookie('rememberme', 'false', 'never', '/');
	}
	$('loginid').value = $F('username') + $F('maildomain');
	setParm(frm);frm.Submit.disabled = 'disabled';
	$('submitInfo').style.visibility = 'visible';
	return true;
};
function setLogonForm() {
	$('username').value = getCookie('username') || '';
	for (var i = 0; i < $('maildomain').options.length; i++) {
		if( $('maildomain').options[i].value == getCookie('domain') ) {
			$('maildomain').options[i].selected = true;break;
		}
	}
	if (getCookie('rememberme') == "true") {
		$('reme').checked = true;
		$('passwd').select();
		$('passwd').focus();
	}
};
function getLogonForm() {var str = '<form action="http://passport.sohu.com/login.jsp" method="post" name="form_login" id="form_login" onsubmit="return checkLogonForm(this)"><input type="hidden" name="loginid" id="loginid" value="" /><table width="100%" border="0" cellspacing="2" cellpadding="0"><tr><td nowrap="nowrap"><label for="username" class="redfont">用户名</label></td><td><input name="username" type="text" class="text" id="username" value="" /> <select name="maildomain" id="maildomain" class="text"><option value="@sohu.com" selected="selected">@sohu.com</option><option value="@chinaren.com">@chinaren.com</option><option value="@vip.sohu.com">@vip.sohu.com</option><option value="@sms.sohu.com">@sms.sohu.com</option><option value="@sol.sohu.com">@sol.sohu.com</option><option value="@sogou.com">@sogou.com</option></select></td></tr><tr><td nowrap="nowrap" class="redfont"><label for="passwd">密　码</label></td><td><input name="passwd" type="password" class="text" id="passwd" value="" /></td></tr><tr><td></td><td><input name="Submit" id="Submit" type="submit" class="button-submit" value=" 登  录 " />你是新人吗？<a href="/login/reg.do">立刻申请</a><br /><span class="notice" id="submitInfo" style="visibility: hidden">正在登录，请稍候……</span></td></tr><tr><td colspan="2"><label for="save"><input name="reme" type="checkbox" id="reme" value="1" />记住我的登录状态(在公共计算机上请慎用此功能)</label></td></tr></table></form>';return str;};
function showManageSideBar() {
	$('toggleSideBar').innerHTML = '&lt;&lt; 关闭侧栏';
	$('toggleSideBar').href = 'javascript:hideManageSideBar()';
	$('content').className = 'content';
	Element.show($('sidebar'));
}
function hideManageSideBar() {
	$('toggleSideBar').innerHTML = '展开侧栏 &gt;&gt;';
	$('toggleSideBar').href = 'javascript:showManageSideBar()';
	Element.hide($('sidebar'));
	$('content').className = 'content-wide';
}
function getPPFrag(elm,pars) {
	if (!$(elm)) return;
	if(!_categoryUrl) return;
	var url = _categoryUrl;
    var pars = pars;
    var myAjax = new Ajax.Updater(elm, url, {method: 'get', parameters: pars,onComplete: entryLoaded});

//	str += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="180" height="150" id="myFlash">';
//	str += '<param name="movie" value="http://img3.pp.sohu.com/ppp/blog/flash/ppm_060718.swf" />';
//	str += '<param name="quality" value="high" />';
//	str += '<param name="wmode" value="transparent" />';
//	str += '<param name="FlashVars" value="url1='+ _ppsrc +'$http://'+ _blog_domain +'.blog.sohu.com/pp/" />';
//	str += '<embed src="http://img3.pp.sohu.com/ppp/blog/flash/ppm_060718.swf" FlashVars="url1='+ _ppsrc +'$http://'+ _blog_domain +'.blog.sohu.com/pp/" quality="high" width="180" height="150" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true" wmode="opaque" />';
//	str += '</object>';

	//$(elm).innerHTML = str;
}
function getPPSelect() {
	if (typeof ppuserid == 'undefined' || !ppuserid) return('');
	var str = '';
	str += '<select name="ppSource" id="ppSource" onchange="setPPSource()">';
	str += '<option value="http://pp.sohu.com/photolist-list-4-'+ ppuserid +'-1.html" selected="selected">全部</option>';
	for (var i=0; i<photosets.length; i++) {
		var photoset = photosets[i];
		if (!photoset.id) continue;
		str += '<option value="http://pp.sohu.com/set-view-'+ photoset.id +'-4-1.html">'+ photoset.name +'</option>';
	}
	str += '</select>';
	return str;
}
function getPPLabel() {
	if (typeof ppuserid == 'undefined' || !ppuserid) return('');
	var str = '';
	str += '<a href="http://pp.sohu.com/photolist.jhtml?method=list&style=1&userid='+ ppuserid +'&pageNo=1" target="_blank" class="contentLabel" onfocus="this.blur();">缩&nbsp;&nbsp;略</a>';
	str += '<a href="http://pp.sohu.com/photolist.jhtml?method=list&style=0&userid='+ ppuserid +'&pageNo=1" target="_blank" class="contentLabel" onfocus="this.blur();">标&nbsp;&nbsp;准</a>';
	str += '<span class="contentLabelActive">幻&nbsp;&nbsp;灯</span>';
	return str;
}
//function getPPBigFlash(elm) {
//	if (typeof ppuserid == 'undefined' || !ppuserid) {
//		$(elm).innerHTML = '暂时无法获取数据，请稍后再试';
//		return;
//	}
//	if (ppuserid < 0) {
//		$(elm).innerHTML = '还未开通相册';
//		return;
//	}
//	if (!$(elm)) return;
//	var str = '';
//	str += '<object id="myFlash" width=720 height=550 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">';
//	str += '<param name="movie" value="http://img3.pp.sohu.com/ppp/blog/flash/show20060525.swf">';
//	str += '<param name="wmode" value="opaque">';
//	str += '<param name="quality" value="autohigh">';
//	str += '<param id="flashvars" name="flashvars" value="urlA=http://pp.sohu.com/photolist-list-4-'+ ppuserid +'-1.html"/>';
//	str += '<embed width="720" height="550" src="http://img3.pp.sohu.com/ppp/blog/flash/show20060525.swf?urlA=http://pp.sohu.com/photolist-list-4-'+ ppuserid +'-1.html" quality="autohigh" wmode="opaque" type="application/x-shockwave-flash" plugspace="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true"> </embed>';
//	str += '</object>';
//	$(elm).innerHTML = str;
//}
//function getMusicFlash(elm) {
//	if (!$(elm)) return;
//	var str = '';
//	str += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="180" height="200" id="zhr">';
//	str += '<param name="movie" value="/flash/musicbox.swf" />';
//	str += '<param name="quality" value="high" />';
//	str += '<embed src="/flash/musicbox.swf"  name="zhr" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="180" height="200"></embed> </object>';
//	$(elm).innerHTML = str;
//}
//function getMusicFrag(request) {
//	if (!request || request.responseText == '') return('<hr />没有获得音乐盒数据');
//	if (!request.responseXML || !request.responseXML.documentElement) return('<hr />分析音乐盒数据失败');
//	var str = '';
//	str += '<div>';
//	str += '<hr />';
//	var xmlDom = request.responseXML;
//	var lists = xmlDom.getElementsByTagName('musiclist');
//	if (lists[0]) {
//		str += '<input name="flashvar" type="hidden" value="'+ lists[0].getAttribute('address') +'$red" />';
//	}
//	for (var i=0; i<lists.length; i++) {
//		var list = lists[i];
//		str += '<div>';
//		str += '<a href="javascript:changelist(\''+ list.getAttribute('address') +'$red\', \''+ list.getAttribute('sogouurl') +'\')">';
//		str += list.getAttribute('name') +'</a>';
//		str += '<br />';
//		str += list.getAttribute('num') +' 首 ';
////		str += list.getAttribute('num') +' 首 '+ list.getAttribute('desc').substring(0, 11);
//		str += '</div>';
//		str += '<hr />';
//	}
//	str += '</div>';
//	return str;
//}
//function getMusicSelect(request) {
//	if (!request || request.responseText == '') return('没有获得音乐盒数据');
//	if (!request.responseXML || !request.responseXML.documentElement) return('分析音乐盒数据失败');
//	var xmlDom = request.responseXML;
//	var lists = xmlDom.getElementsByTagName('musiclist');
//	var str = '';
//	str += '<select name="musicSource" id="musicSource" onchange="setMusicSource()">';
//	for (var i=0; i<lists.length; i++) {
//		var list = lists[i];
//		if (!list.getAttribute('sogouurl')) continue;
//		str += '<option value="'+ list.getAttribute('sogouurl').replace('&amp;', '&') +'">'+ list.getAttribute('name') +'</option>';
//	}
//	str += '</select>';
//	return str;
//}
//function getMusicLabel() {
//	if (!$('musicSource') || !$F('musicSource')) return('没有获得音乐盒数据');
//	var str = '';
//	str += '<a href="javascript:var musicBox = openWindow(\''+ $F('musicSource') +'\', \'musicBox\', 595, 415 );" class="contentLabel" onfocus="this.blur();" title="弹出小窗口">弹出小窗口</a>';
//	//str += '<span class="contentLabelActive">大窗口</span>';
//	return str;
//}
function highLightMsg(elm) {
	if (!$(elm)) return;
	var element = $(elm);
	element.style.borderColor = '#29aba3';
}
function highLightErr(elm) {
	if (!$(elm)) return;
	var element = $(elm);
	element.style.borderColor = 'red';
}
function lowLightMsg(elm) {
	if (!$(elm)) return;
	var element = $(elm);
	element.style.borderColor = '#ccc';
}
function flashMsg(elm) {
	if (!$(elm)) return;
	var element = $(elm);
	setTimeout(function(){highLightMsg(element)}, 0);
	setTimeout(function(){lowLightMsg(element)}, 50);
	setTimeout(function(){highLightMsg(element)}, 150);
	setTimeout(function(){lowLightMsg(element)}, 200);
	setTimeout(function(){highLightMsg(element)}, 300);
	setTimeout(function(){lowLightMsg(element)}, 350);
	setTimeout(function(){highLightMsg(element)}, 450);
	setTimeout(function(){lowLightMsg(element)}, 1500);
}
function flashErr(elm) {
	if (!$(elm)) return;
	var element = $(elm);
	setTimeout(function(){highLightErr(element)}, 0);
	setTimeout(function(){lowLightMsg(element)}, 50);
	setTimeout(function(){highLightErr(element)}, 150);
	setTimeout(function(){lowLightMsg(element)}, 200);
	setTimeout(function(){highLightErr(element)}, 300);
	setTimeout(function(){lowLightMsg(element)}, 350);
	setTimeout(function(){highLightErr(element)}, 450);
	setTimeout(function(){lowLightMsg(element)}, 1500);
}
flashMsg('message');
flashErr('errormsg');

/******* comment form ********/
function setCPShow() {
	if (isLogin()) {
		//hideAnonyForm();
	}
	else {
		if (commentPermission == '2') {
			$('commentForm').innerHTML = '作者只允许登录用户才可对此文评论。<a href="/login/logon.do">登录</a>';
		}
		else {
			showAnonyForm();
		}
	}
	setMyCName();
}
function showAnonyForm() {
	Element.show($('aNotice'));
	Element.show($('aNickname'));
	Element.show($('aEmail'));
	Element.show($('aSite'));
	Element.show($('aRemember'));
}
function hideAnonyForm() {
	//Element.hide($('aNotice'));
	Element.hide($('aNickname'));
	Element.hide($('aEmail'));
	Element.hide($('aSite'));
	Element.hide($('aRemember'));
}
function rememberMyCName() {
	if ($('rememberme').checked) {
		setCookie('authorName', $F('authorName'), 'never', '/');
		setCookie('authorEmail', $F('authorEmail'), 'never', '/');
		setCookie('authorSite', $F('authorSite'), 'never', '/');
		setCookie('rememberme', $F('rememberme'), 'never', '/');
	}
	else {
		setCookie('authorName', '', 'never', '/');
		setCookie('authorEmail', '', 'never', '/');
		setCookie('authorSite', '', 'never', '/');
		setCookie('rememberme', '', 'never', '/');
	}
}
function haveValue(o) {
	if (o!=null && o!="" && o!="null")
		return true;
	return false;
}
function setMyCName() {
//	if (!$('authorName')) return;
//	if (haveValue(getCookie('authorName')))
//		$('authorName').value = getCookie('authorName');
//	else
//		$('authorName').value = 'PEPO网友';
//		
//	if (haveValue(getCookie('authorEmail')))
//		$('authorEmail').value = getCookie('authorEmail');
//		
//	if (haveValue(getCookie('authorSite')))
//		$('authorSite').value = getCookie('authorSite');
//	else
//		$('authorSite').value = 'http://blog.pepo.cn';
//		
//	if (haveValue(getCookie('rememberme')))
//		$('rememberme').checked = true;
//	else
//		$('authorSite').checked = false;
}
function checkCForm() {
	if (!isLogin() && commentPermission != '2') {
		if($F('authorName').length == 0){
			alert("称呼不能为空");
			$('authorName').focus();
			return false;
		}
		
		if($F('authorSite').length != 0){
			var reg = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
			if (!reg.test($F('authorSite'))) {
				alert("网站链接格式不正确");
				$('authorSite').focus();
				return false;
			}
		}
	}
	if($F('commentContent').length == 0){
		alert("评论内容不能为空");
		$('commentContent').focus();
		return false;
	}
	if($F('commentContent').length > 1000){
		alert("评论内容过多，最多为1000字");
		$('commentContent').focus();
		return false;
	}
	if (!$('vcode')) {
		showC_code();
	}
	if($F('vcode').length == 0){
	     alert("验证码不能为空");
		 $('vcode').focus();
	     return false;
	}
	rememberMyCName();
	return true;
}
function showC_code() {
	if ($('c_codeTextBox').innerHTML == '') {
		$('c_codeTextBox').innerHTML = str_c_codeText;
	}
	if ($('c_codeInputBox').innerHTML == '') {
		$('c_codeInputBox').innerHTML = str_c_codeInput;
	}
}
function initCForm() {
	if ($('commentContent') && $F('commentContent')) {
		showC_code();
	}
}
function doQuote(obj,strAuthor,id){
	if (!$('commentContent')) return;
	var obj = $(obj);
	var text = obj.innerHTML;
	text = text.replace(/alt\=(\"|)([^\"\s]*)(\"|)/g,"> $2 <");
	text = text.replace(/\<[^\<\>]+\>/g,"\n");
	text = text.replace(/ +/g," ");
	text = text.replace(/\n+/g,"\n");
	text = text.replace(/^\n*/gm,"");
	text = text.replace(/^\s*/gm,"");
	text = text.replace(/\n*$/gm,"");
	text = text.replace(/\s*$/gm,"");
	$('commentContent').value += "[quote]"+strAuthor+" 在上文中提到：\n"+text+"[/quote]\n";
	$('parentId').value = id;

	if($('commentContent').parentNode.childNodes[$('commentContent').parentNode.childNodes.length-1] && $('commentContent').parentNode.childNodes[$('commentContent').parentNode.childNodes.length-1].tagName == "DIV"){
		var _div = $('commentContent').parentNode.childNodes[$('commentContent').parentNode.childNodes.length-1];
	}
	else if( $('commentContent').nextSibling && $('commentContent').nextSibling.tagName == "DIV" ){
		var _div = $('commentContent').nextSibling;
	}
	else {
		var _div = document.createElement("div");
		$('commentContent').parentNode.appendChild(_div);
	}
	_div.style.color = "red";
	var str = "提示：“[quote]”和“[/quote]”间为引用内容，您不必修改。在后面写上您的回复即可。";
	_div.innerHTML = str;

	window.location.hash = "commentbox";
	$('commentContent').focus();
	try {
		var r = $('commentContent').createTextRange();
		r.moveStart("character",$('commentContent').value.length);
		r.collapse(true);
		r.select();
	}catch(e){}
}
/******* entry form ********/
function swapEditMode() {editor.focusEditor();	editor.setMode();editor.updateToolbar();$('insertImgBut').href = ($('insertImgBut').href == 'javascript:void(0)')? 'javascript:insertImg()' : 'javascript:void(0)';$("insertImgBox").onclick = ($("insertImgBox").onclick == noImg)? "" : noImg;$("swapViewText").innerHTML = ($("swapViewText").innerHTML == "切换到代码视图")? "切换回设计视图" : "切换到代码视图";}
function noImg() {	alert("请切换回设计视图，再添加图片。");$("swapView").focus();}
function insertImg() {	editor.focusEditor();editor._insertImage();}
function recoverArticle() {editor.focusEditor();try {	editor._doc.execCommand('paste');} catch (e) {	if (HTMLArea.is_gecko) {if (confirm("Unprivileged scripts cannot access Cut/Copy/Paste programatically " +	"for security reasons.  Click OK to see a technical note at mozilla.org " +	"which shows you how to allow a script to access the clipboard."))window.open("http://mozilla.org/editor/midasdemo/securityprefs.html");}}}
function showAddGategoryBox() { $('addGategoryBox').style.display = '';$('addGategoryBut').style.display = 'none';$('newGategory').focus();}
function hideAddGategoryBox() { $('newGategory').value = '';$('addGategoryBox').style.display = 'none';$('addGategoryBut').style.display = '';}
function checkAddGategory() {if ($F('newGategory').length == 0) {	alert('请填写分类名称');$('newGategory').focus();}else {showTipInfo("loading...");doAddGategory();}}
function doAddGategory() {	var url = '/manage/category.do';var pars = 'm=save&&name='+$F('newGategory');var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: responseAddGategory } );}function responseAddGategory(request) {if (request.responseText.indexOf(0) != 0){alert('error code: '+request.responseText);}else {showTipInfo("操作成功！");	_id = request.responseText.substring(1);_value = $F('newGategory');	var option = new Option(_value, _id, true, true);	document.entryForm.categoryId.options.add(option, 1); document.entryForm.categoryId.options[1].selected = true;hideAddGategoryBox();}setTimeout(hideTipInfo, 500);}
function showTip(theObj) {	var thePopBox = $('myHumor');var str = "";	thePopBox.style.display = 'block';thePopBox.style.position = 'absolute';thePopBox.style.top = Element.getPosition(theObj).top + 'px';thePopBox.style.left = Element.getPosition(theObj).left + 'px';}
function hideTip() {$('myHumor').style.display = 'none';}
function selectHumor(_id) {$('selectedHumor').src = "http://img3.pp.sohu.com/ppp/blog/images/common/e_"+ _id +".gif";$('art_face').value = _id;hideTip();}
function saveDraft() {	$('oper').value = 'art_draft';document.entryForm.target = '_self';$('save').click();$('oper').value = 'art_ok';document.entryForm.target = '_self';}
function preview() {$('oper').value = 'art_view';	document.entryForm.target = '_blank';	$('save').click();$('oper').value = 'art_ok';	document.entryForm.target = '_self';}
function checkEntryForm(frm) {if ($F('entrytitle') == '') {alert("请填写日志标题");$('entrytitle').focus();return false;}if ($F('entrytitle').length > 50) {alert("日志标题过长。\n目前为"+$F('entrytitle').length+"字，请缩短到50字内");	$('entrytitle').focus();	return false;}if ($F('entrycontent') == '') {alert("请填写日志内容");editor.focusEditor();return false;}return true;}

/******** comment list ******/
function getCommontList(_id, _pg, _cc, _noCache) {
	if (_pg>0)
		showTipInfo('loading...');
	
	var url ='/page/blog/blogajax.aspx'
	var pars = 'type=getCommontList&articleId='+ $('hibArticleId').value;
	//if(_noCache) pars = 'nc=true';
    if(_pg > 1){
		pars += '&page=' + _pg;
	}
	
	if ($('commentlist')) {
	      
			var myAjax = new Ajax.Updater('commentlist', url, {method: 'post', parameters: pars, onComplete: commontLoaded } );
	}
}
function commontLoaded() {
	hideTipInfo();
	if (jumpAnchor)
		location.hash = '#comment';
	jumpAnchor = true;
	//insertCmtOpr();
	insertIconInfo();
}
//function getPageText(_con, _startPg, _totalItem, _itemPerPg, _curPg, _act) {
//	_con = $(_con);
//	if (!_con) return;
//	if (_curPg == 0) _curPg = 1;
//	var _pgCount = Math.ceil(_totalItem/_itemPerPg);
//	 _pgCount = _pgCount || 1;
//	var str = '';
//	str += '共'+ _pgCount +'页';
//	str += '&nbsp;&nbsp;|&nbsp;&nbsp;';
//	if (_curPg == _startPg) {
//		str += '第一页';
//		str += '&nbsp;';
//		str += '上一页';
//	}
//	else {
//		str += '<a href="#" onclick="'+_act+'('+_startPg+');return false;">第一页</a>';
//		str += '&nbsp;';
//		str += '<a href="#" onclick="'+_act+'('+(_curPg-1)+');return false;">上一页</a>';
//	}
//	str += '&nbsp;';
//	for (var i=_startPg; i<=_pgCount; i++) {
//		if (i == _curPg) {
//			str += i;
//			str += '&nbsp;';
//		}
//		else if (i>=_curPg-5 && i<=_curPg+5) {
//			str += '<a href="#" onclick="'+_act+'('+i+');return false;">['+i+']</a>';
//			str += '&nbsp;';
//		}
//		else if (i == _curPg-6 || i == _curPg+6) {
//			str += '...&nbsp;';
//		}
//	}
//	if (_curPg == _pgCount) {
//		str += '下一页';
//		str += '&nbsp;';
//		str += '最末页';
//	}
//	else {
//		str += '<a href="#" onclick="'+_act+'('+(_curPg+1)+');return false;">下一页</a>';
//		str += '&nbsp;';
//		str += '<a href="#" onclick="'+_act+'('+_pgCount+');return false;">最末页</a>';
//	}
//	_con.innerHTML = str;
//}
function getPageText(_con, _startPg, _totalItem, _itemPerPg, _curPg, _act) {
    var url;
    if($('hibcategoryId'))
    {
          url='/page/blog/MyBlog.aspx?blogid='+ $('hibBlogId').value +'&categoryId='+ $('hibcategoryId').value;
    }
    if($('hibArticleId'))
    {
        url='/page/blog/getArticleById.aspx?articleId=' +  $('hibArticleId').value
    }
  
  
	if (!_con) return;
	
	if (_curPg == 0) _curPg = 1;
	var _pgCount = Math.ceil(_totalItem/_itemPerPg);
	 _pgCount = _pgCount || 1;
	var str = '';
	str += '共'+ _pgCount +'页';
	str += '&nbsp;&nbsp;|&nbsp;&nbsp;';
	if (_curPg == _startPg) {
		str += '第一页';
		str += '&nbsp;';
		str += '上一页';
	}
	else {
	    var imba=_curPg-1;
		str += '<a href='+ url + '&page='+_startPg +'>第一页</a>';
		str += '&nbsp;';
		str += '<a href='+ url + '&page='+imba +'>上一页</a>';
		
	}
	str += '&nbsp;';
	for (var i=_startPg; i<=_pgCount; i++) {
		if (i == _curPg) {
			str += i;
			str += '&nbsp;';
		}
		else if (i>=_curPg-5 && i<=_curPg+5) {
			str += '<a  href='+ url + '&page='+i+'>['+i+']</a>';
			str += '&nbsp;';
		}
		else if (i == _curPg-6 || i == _curPg+6) {
			str += '...&nbsp;';
		}
	}
	if (_curPg == _pgCount) {
		str += '下一页';
		str += '&nbsp;';
		str += '最末页';
	}
	else {
	    var imba1=_curPg+1;
		str += '<a href='+ url + '&page='+imba1 +'>下一页</a>';
		str += '&nbsp;';
		str += '<a  href='+ url + '&page='+_pgCount +' >最末页</a>';
	}
	_con.innerHTML = str;
}
function chagePage(_pg) {
	curPage = _pg || 0;
	getCommontList(entryId, curPage, totalCount, noCache);
	getPageText(pageTextContainer, startPage, totalCount, itemPerPage, curPage, chagePageAction);
	
	return false;
}
/******** entry list ******/
function chageEntryPage(_pg) {
    
    
	curPage = _pg || 0;
	getEntryList(curPage, category);
	getPageText(pageTextContainer, startPage, totalCount, itemPerPage, curPage, chagePageAction);
	return false;
}
function getEntryList(_pg, _c) {
//	if (_pg>0)
//		showTipInfo('loading...');
	//var url = '/action/v_frag-ebi_'+escape(_ebi);
	var url ='/page/blog/MyBlog.aspx'
	//var url ='/page/blog/blogajax.aspx'
	var pars = 'blogid='+ $('hibBlogId').value +'&categoryId='+ $('hibcategoryId').value;
//	if(_pg > 1){
//		pars += '&page=' + _pg;
//	}
//	if(_c > 0){
//		pars += '&c=' + _c;
//	}

//	if ($('entryList')) {
//		var myAjax = new Ajax.Updater('entryList', url, {method: 'get', parameters: pars, onComplete: entryLoaded } );
//	}
   //window.location= url +"?"+pars;
  // alert(1);
    
}

function entryLoaded() {
	hideTipInfo();
//	if (jumpAnchor)
//		location.hash = '#entry';
	jumpAnchor = true;
	insertItemCmtCount();
	
	insertItemOpr();
	//insertLatestEntries();
	loadItemCmtCount();
}
function loadItemCmtCount() {
	if (!$('entriesIdData')) return;
	var itemsId = $('entriesIdData').innerHTML;
	if (!itemsId) return;
	var url = '/page/comment.do';
	var pars = 'm=list&v=count&eids='+itemsId;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: insertItemCmtCount } );
}
var ITEMCMTCOUNT_PREFIX = 'itemCmtCount_';
function insertItemCmtCount(request) {
	if (!request || !request.responseText) return;
	try {
		eval(request.responseText);
	}catch(e){}
	if(typeof eccs == 'undefined' || eccs == null) return;
	var items = [];
	items = document.getElementsByClassName('itemCmtCount');
	if (items.length <= 0) return;
	for (var i=0; i<items.length; i++) {
		var _item = items[i];
		if ( _item && _item.id && (_item.id.indexOf(ITEMCMTCOUNT_PREFIX)==0) ) {
			var itemId = _item.id.substr(ITEMCMTCOUNT_PREFIX.length);
			var _count = eccs[itemId];
			var str = '';
			if (!isNaN(_count))
				str += _count;
			if (!_item.innerHTML || _item.innerHTML == '?')
				_item.innerHTML = str;
		}
	}
}
/******** insert operation button ******/
var ITEM_PREFIX = 'itemId_';
function insertItemOpr(from) {

	if (!isMyBlog()) return;
	
	var items = [];
	items = document.getElementsByClassName('itemOpr');
	if (items.length <= 0) return;
	for (var i=0; i<items.length; i++) {
		if ( items[i] && items[i].id && (items[i].id.indexOf(ITEM_PREFIX)==0) ) {
			var itemId = items[i].id.substr(ITEM_PREFIX.length);
			var str = '';
			str += '<a href="/page/blog/blog.aspx?method=addArticle&type=Edit&articleId='+ itemId +'" target="_blank">';
			str += '<img src="/page/images/blog/ico_edit.gif" alt="修改" />';
			str += '</a>&nbsp;&nbsp;|';
			str += '<a href="/page/blog/BlogAjax.aspx?type=deleteArticle&id='+ itemId +'&returnUrl=http://blog.pepo.cn/'+ $('hibNickname').value;
			if (typeof from != 'undefined' && from != '') str += '&from=' + from;
			str += '" onclick="return confirm(\'确认要删除吗？\')">';
			str += '<img src="/page/images/blog/ico_del.gif" alt="删除" />';
			str += '</a>';
			if (!items[i].innerHTML)
				items[i].innerHTML = str;
		}
	}
}
//var CMT_PREFIX = 'cmtId_';
//function insertCmtOpr() {
//        if (!isMyBlog()) return;
//        var cmts = [];
//        cmts = document.getElementsByClassName('cmtOpr');
//        if (cmts.length <= 0) return;
//        for (var i=0; i<cmts.length; i++) {
//                if ( cmts[i] && cmts[i].id && (cmts[i].id.indexOf(CMT_PREFIX)==0) ) {
//                        var cmtId = cmts[i].id.substr(CMT_PREFIX.length);
//                        var str = '';
//                        str += '|<a href="/manage/comment.do?m=delete&id='+ cmtId +'" onclick="return confirm(\'确认要删除吗？\')">';
//                        str += '<img src="http://img3.pp.sohu.com/ppp/blog/styles/images/ico_del.gif" alt="删除" align="absbottom" />';
//                        str += '</a>';
//                        if (!cmts[i].innerHTML)
//                                cmts[i].innerHTML = str;
//                }
//        }
//}
//var CMTICO_PREFIX = 'icoId_';
//var CMTICOIMG = 'http://img3.pp.sohu.com/ppp/blog/images/common/nobody.gif';
function insertIconInfo() {

//	var icos = [];
//	icos = document.getElementsByClassName('cmtIco');
//	if (icos.length <= 0) return;
//	for (var i=0; i<icos.length; i++) {
//		if ( icos[i] && icos[i].id && (icos[i].id.indexOf(CMTICO_PREFIX)==0) ) {
//			var icoId = icos[i].id.substr(CMTICO_PREFIX.length);
//			var icoImg = icos[i].getElementsByTagName('img')[0];
//			if (icoId == getCookie("I") && icoImg && icoImg.src == CMTICOIMG) {
//				var str = '';
//				str += '<a href="http://blog.sohu.com/manage/profile.do" target="_blank" title="上传我的头像">';
//				//str +='<img src="'+ CMTICOIMG +'" />';
//				str += '<span>上传头像</span></a>';
//				icos[i].innerHTML = str;
//			}
//		}
//	}

    if (!isMyBlog()) return;
    if(!$('upImg')) return;
    var str = '';
        str += '<a href="/page/individual/myhouseIndex.aspx?method=UploadHead"  title="上传我的头像">';
		str += '<span align="center">上传头像</span></a>';
    $('upImg').innerHTML = str;
	
}
insertIconInfo();
//function insertMngOpr() {
//	if (!isMyBlog()) return;
//	if (!$('mngOpr')) return;
//	var mng = $('mngOpr');
//	var str = '<a href="http://blog.sohu.com/manage/main.do" class="navSysOpt">管理我的博客</a>';
//	if (!mng.innerHTML)
//		mng.innerHTML = str;
//}
//insertMngOpr();
function insertNewEntryOpr() {
	if (!isMyBlog()) return;
	if (!$('newEntryOpr')) return;
	var newEntry = $('newEntryOpr');
	var str = '<a href="/page/blog/blog.aspx?method=addArticle" target="_blank">撰写新日志</a>';
	if (!newEntry.innerHTML)
		newEntry.innerHTML = str;
}
insertNewEntryOpr();

///******** insert latest entries list ******/
//function insertLatestEntries() {
//	if (!$('latestEntriesList') || !$('latestEntriesData')) {
//		//setTimeout(insertLatestEntries, 1000);
//		return;
//	}
//	if ($('latestEntriesData').innerHTML)
//		$('latestEntriesList').innerHTML = $('latestEntriesData').innerHTML;
//	else {
//		$('latestEntriesList').innerHTML = '<ul><li>暂无日志</li></ul>';
//	}
//}
///******** get refer list ******/
//function reqReferUserList() {
//	if (!$('refer')) return;
//	if (typeof referid == 'undefined' || referid == '') {
//		$('refer').innerHTML = '无法获得最近访客数据';
//		return;
//	}
//	var referUserListUrl = '/frag/referfrag.jsp?u='+_blog_domain+'&ids='+referid;
//	var myAjax_refer = new Ajax.Request(referUserListUrl, {method:'get',onComplete:getReferUserList});
//}
//function getReferUserList(request) {
//	if (!$('refer')) return;
//	if (!request.responseText) {
//		$('refer').innerHTML = '无法获得最近访客列表';
//		return;
//	}
//	$('refer').innerHTML = request.responseText;
//}
/******* Common Js for Sohu Blog end **********/