

var Request = new function(){

this.pool = new Array();

this.getXMLHttp = function (chunnel)
{
	
   if(chunnel != null)
   {
      for (var a = 0; a < this.pool.length; a++)
      {
         if(this.pool[a]["chunnel"] == chunnel)
         {
	        if(this.pool[a]["obj"].readyState == 0 || this.pool[a]["obj"].readyState == 4)
            {
               return this.pool[a]["obj"];
            }
	        else 
	        {
               return "busy";
	        }
         }
      }
  
      this.pool[this.pool.length] = new Array();
      this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
      this.pool[this.pool.length - 1]["chunnel"] = chunnel;
      return this.pool[this.pool.length - 1]["obj"];
   }
	
   for (var i = 0; i < this.pool.length; i++)
   {
      if(this.pool[i]["obj"].readyState == 0 || this.pool[i]["obj"].readyState == 4)
      {
         return this.pool[i]["obj"];
      }
   }
 
   this.pool[this.pool.length] = new Array();
   this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
   this.pool[this.pool.length - 1]["chunnel"] = "";
   return this.pool[this.pool.length - 1]["obj"];

}


this.createXMLHttp = function ()
{
 
   if(window.XMLHttpRequest)
   {
      var xmlObj = new XMLHttpRequest();
   } 
   else 
   {
      var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
      for(var n = 0; n < MSXML.length; n++)
      {
         try
         {
            var xmlObj = new ActiveXObject(MSXML[n]);        
            break;
         }
         catch(e)
         {
         }
      }
   } 
 
   return xmlObj;

}


this.reSend = function (url,data,callback,extra,chunnel)
{
   var objXMLHttp = this.getXMLHttp(chunnel) ;
 
   if(typeof(objXMLHttp) != "object")
   {
      return false ;
   }

   if(data == "")
   {
      objXMLHttp.open('GET' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.send('');
   }
   else 
   { 
      objXMLHttp.open('POST' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.setRequestHeader("Content-Length",data.length); 
      objXMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      objXMLHttp.send(data);
   }
 
   if(typeof(callback) == "function" )
   {
      objXMLHttp.onreadystatechange = function ()
      {
         if(objXMLHttp.readyState == 4)
         {
            if(objXMLHttp.status == 200 || objXMLHttp.status == 304)
            {
               if(extra != null)
			   {
			      callback(objXMLHttp,extra) ;
			   }
			   else
			   {
			      callback(objXMLHttp) ;
			   }
            }
//            else
//          {
//             alert("Error loading page\n" + objXMLHttp.status + ":" + objXMLHttp.statusText);
//          }
         }
      }
   }

}

}


/*
 * FlashObject embed
 * by Geoff Stearns (geoff@deconcept.com, http://www.deconcept.com/)
 *
 * v1.1.1 - 05-17-2005
 *
 * writes the embed code for a flash movie, includes plugin detection
 *
 * Usage:
 *
 *	myFlash = new FlashObject("path/to/swf.swf", "swfid", "width", "height", flashversion, "backgroundcolor");
 *	myFlash.write("objId");
 *
 * for best practices, see:
 *  http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/
 *
 */

var FlashObject = function(swf, id, w, h, ver, c) {
	this.swf = swf;
	this.id = id;
	this.width = w;
	this.height = h;
	this.version = ver;
	this.align = "middle";

	this.params = new Object();
	this.variables = new Object();

	this.redirect = "";
	this.sq = document.location.search.split("?")[1] || "";
	this.bypassTxt = "<p>Already have Macromedia Flash Player? <a href='?detectflash=false&"+ this.sq +"'>Click here if you have Flash Player "+ this.version +" installed</a>.</p>";
	
	if (c) this.color = this.addParam('bgcolor', c);
	this.addParam('quality', 'high'); // default to high
	this.doDetect = getQueryParamValue('detectflash');
}

var FOP = FlashObject.prototype;

FOP.addParam = function(name, value) { this.params[name] = value; }

FOP.getParams = function() { return this.params; }

FOP.getParam = function(name) { return this.params[name]; }

FOP.addVariable = function(name, value) { this.variables[name] = value; }

FOP.getVariable = function(name) { return this.variables[name]; }

FOP.getVariables = function() { return this.variables; }

FOP.getParamTags = function() {
    var paramTags = "";
    for (var param in this.getParams()) {
        paramTags += '<param name="' + param + '" value="' + this.getParam(param) + '" />';
    }
    return (paramTags == "") ? false:paramTags;
}

FOP.getHTML = function() {
    var flashHTML = "";
    if (navigator.plugins && navigator.mimeTypes.length) { // netscape plugin architecture
        flashHTML += '<embed type="application/x-shockwave-flash" src="' + this.swf + '" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '" align="' + this.align + '"';
        for (var param in this.getParams()) {
            flashHTML += ' ' + param + '="' + this.getParam(param) + '"';
        }
        if (this.getVariablePairs()) {
            flashHTML += ' flashVars="' + this.getVariablePairs() + '"';
        }

		flashHTML += ' allowScriptAccess="sameDomain"';
        flashHTML += '></embed>';
    } else { // PC IE
        flashHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '" name="' + this.id + '" align="' + this.align + '">';
        flashHTML += '<param name="movie" value="' + this.swf + '" />';
        if(!this.getParam('allowscriptaccess')){
		    flashHTML += '<param name="allowScriptAccess" value="sameDomain" />';    
		}
		
        if (this.getParamTags()) {
            flashHTML += this.getParamTags();
        }
        if (this.getVariablePairs() != null) {
            flashHTML += '<param name="flashVars" value="' + this.getVariablePairs() + '" />';
        }
        flashHTML += '</object>';
    }
    return flashHTML;	
}

FOP.getVariablePairs = function() {
    var variablePairs = new Array();
    for (var name in this.getVariables()) { 
    	variablePairs.push(name + "=" + escape(this.getVariable(name))); 
    }
    return (variablePairs.length > 0) ? variablePairs.join("&"):false;
}

FOP.write = function(elementId) {
	if(detectFlash(this.version) || this.doDetect=='false') {
		if (elementId) {
			document.getElementById(elementId).innerHTML = this.getHTML();
		} else {
			document.write(this.getHTML());
		}
	} else {
		if (this.redirect != "") {
			document.location.replace(this.redirect);
		} else if (this.altTxt) {
			if (elementId) {
				document.getElementById(elementId).innerHTML = this.altTxt +""+ this.bypassTxt;
			} else {
				document.write(this.altTxt +""+ this.bypassTxt);
			}
		}
	}		
}

/* ---- detection functions ---- */
function getFlashVersion() {
	var flashversion = 0;
	if (navigator.plugins && navigator.mimeTypes.length) {
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			var y = x.description;
   			flashversion = y.charAt(y.indexOf('.')-1);
		}
	} else {
		result = false;
	    for(var i = 15; i >= 3 && result != true; i--){
   			execScript('on error resume next: result = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'"))','VBScript');
   			flashversion = i;
   		}
	}
	return parseInt(flashversion);
}

function detectFlash(ver) {	return (parseInt(getFlashVersion())>= ver) ? true:false; }

// get value of query string param
function getQueryParamValue(param) {
	var q = document.location.search || document.location.href.split("#")[1];
	if (q) {
		var detectIndex = q.indexOf(param +"=");
		var endIndex = (q.indexOf("&", detectIndex) > -1) ? q.indexOf("&", detectIndex) : q.length;
		if (q.length > 1 && detectIndex > -1) {
			return q.substring(q.indexOf("=", detectIndex)+1, endIndex);
		} else {
			return "";
		}
	}
}

/* add Array.push if needed */
if(Array.prototype.push == null){
	Array.prototype.push = function(item) { this[this.length] = item; return this.length; }
}

// ============================== js prototype or for ie5.5 ↓ ===================================

// -- for ie 5 push
if(!Array.prototype.push) {
   Array.prototype.push = function (new_ele) {
        this[this.length] = new_ele;
        return this.length;
   }
}

// -- for ie 5 splice
if(!Array.prototype.splice) {
	Array.prototype.splice = function () {
		var start = arguments[0];
		var deleteCount = arguments[1];
		var len = arguments.length - 2;
		var returnValue = this.slice(start);
		for (var i = 0; i < len; i++) {
			this[start + i] = arguments[i + 2];
		}
		for (var i = 0; i < returnValue.length - deleteCount; i++) {
			this[start + len + i] = returnValue[deleteCount + i];
		}
		this.length = start + len + returnValue.length - deleteCount;
		returnValue.length = deleteCount;
		return returnValue;
	}
}

// -- for ie 5.5↓ encodeURI

if(typeof(encodeURI) == "undefined")
{
	function encodeURI(str) {
		var l = ['%00', '%01', '%02', '%03', '%04', '%05', '%06',
				 '%07', '%08', '%09', '%0A', '%0B', '%0C', '%0D',
				 '%0E', '%0F', '%10', '%11', '%12', '%13', '%14',
				 '%15', '%16', '%17', '%18', '%19', '%1A', '%1B',
				 '%1C', '%1D', '%1E', '%1F', '%20', '!', '%22',
				 '#', '$', '%25', '&', "'", '(', ')', '*', '+', ',',
				 '-', '.', '/', '0', '1', '2', '3', '4', '5', '6',
				 '7', '8', '9', ':', ';', '%3C', '=', '%3E', '?',
				 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
				 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
				 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%5B', '%5C',
				 '%5D', '%5E', '_', '%60', 'a', 'b', 'c', 'd', 'e',
				 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
				 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
				 'z', '%7B', '%7C', '%7D', '~', '%7F'];
		var out, i, j, len, c, c2;
	
		out = [];
		len = str.length;
		for (i = 0, j = 0; i < len; i++) {
			c = str.charCodeAt(i);
			if (c <= 0x007F) {
				out[j++] = l[c];
				continue;
			}
			else if (c <= 0x7FF) {
				out[j++] = '%' + (0xC0 | ((c >>  6) & 0x1F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | (        c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else if (c < 0xD800 || c > 0xDFFF) {
				out[j++] = '%' + (0xE0 | ((c >> 12) & 0x0F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | ((c >>  6) & 0x3F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 |         (c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else {
				if (++i < len) {
					c2 = str.charCodeAt(i);
					if (c <= 0xDBFF && 0xDC00 <= c2 && c2 <= 0xDFFF) {
						c = ((c & 0x03FF) << 10 | (c2 & 0x03FF)) + 0x010000;
						if (0x010000 <= c && c <= 0x10FFFF) {
							out[j++] = '%' + (0xF0 | ((c >>> 18) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>> 12) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>>  6) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 |          (c & 0x3F)).toString(16).toUpperCase();
							continue;
						}
					}
				}
			}
		}
		return out.join('');
	}
}

// -- for ie 5.5↓ encodeURIComponent
if(typeof(encodeURIComponent) == "undefined") 
{
	function encodeURIComponent(str) {
		var l = ['%00', '%01', '%02', '%03', '%04', '%05', '%06',
				 '%07', '%08', '%09', '%0A', '%0B', '%0C', '%0D',
				 '%0E', '%0F', '%10', '%11', '%12', '%13', '%14',
				 '%15', '%16', '%17', '%18', '%19', '%1A', '%1B',
				 '%1C', '%1D', '%1E', '%1F', '%20', '!', '%22',
				 '%23', '%24', '%25', '%26', "'", '(', ')', '*', '%2B', '%2C',
				 '-', '.', '%2F', '0', '1', '2', '3', '4', '5', '6',
				 '7', '8', '9', '%3A', '%3B', '%3C', '%3D', '%3E', '%3F',
				 '%40', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
				 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
				 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%5B', '%5C',
				 '%5D', '%5E', '_', '%60', 'a', 'b', 'c', 'd', 'e',
				 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
				 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
				 'z', '%7B', '%7C', '%7D', '~', '%7F'];
		var out, i, j, len, c;
	
		out = [];
		len = str.length;
		for(i = 0, j = 0; i < len; i++) {
			c = str.charCodeAt(i);
			if (c <= 0x007F) {
				out[j++] = l[c];
				continue;
			}
			else if (c <= 0x7FF) {
				out[j++] = '%' + (0xC0 | ((c >>  6) & 0x1F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | (        c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else if (c < 0xD800 || c > 0xDFFF) {
				out[j++] = '%' + (0xE0 | ((c >> 12) & 0x0F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | ((c >>  6) & 0x3F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 |         (c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else {
				if (++i < len) {
					c2 = str.charCodeAt(i);
					if (c <= 0xDBFF && 0xDC00 <= c2 && c2 <= 0xDFFF) {
						c = ((c & 0x03FF) << 10 | (c2 & 0x03FF)) + 0x010000;
						if (0x010000 <= c && c <= 0x10FFFF) {
							out[j++] = '%' + (0xF0 | ((c >>> 18) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>> 12) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>>  6) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 |          (c & 0x3F)).toString(16).toUpperCase();
							continue;
						}
					}
				}
			}
		}
		return out.join('');
	}
}

// ============================== js ==> php ===================================

// -- in_array
function in_array(a, arr) {
    for(var i in arr) {
        if (arr[i] == a) return true ;
    }
    return false;
}

// -- array_merge => 返回一个arr2 后并 arr1 ，且直不等于 arr1 的数组
function array_merge(arr1, arr2) {
	var arr = arr1 ;
    for (var i in arr2) {
        if (!in_array(arr2[i], arr)) arr.push(arr2[i]);
    }
    return arr;
}

// -- array_diff => 返回一个 arr1 和 arr2 中不重复的数组
function array_diff(arr1, arr2) {
    var arr = new Array() ;
    for (var i in arr1) {
        if (!in_array(arr1[i], arr2)) arr.push(arr1[i]);
    }
    return arr;
}

// -- array_unique => 返回一个没有重复值的数组 
function array_unique(arr) {
    var ret = new Array() ;
    for (var i in arr) {
        if (!in_array(arr[i], ret)) ret.push(arr[i]) ;
    }
    return ret;
}

// 返回一个不为空的数组
function my_split(se , str) {
	var arr = str.split(se) ;
	var ret = [] ;
	for(var i=0 ; i < arr.length ; i++) {
		if(arr[i]) ret.push(arr[i]) ;
	}
	return ret ;
}

// array_walk 
function batchFun(arr , func) {
	for(var i=0 ; i < arr.length; i++) {
		func(arr[i]) ;
	}
}

// ============================== string html ubb ===================================


// arr regexp replace
function replaceRegExp (str , arr) {
	arr.each(function(e){ 
		var reg = $type(e[0]) == 'string' ?  new RegExp(e[0].escapeRegExp() , 'ig') : e[0] ;
		str = str.replace( reg , e[1]) ;
	}) ;
	return str ;
}

// -- ubb bb => img
function uncodeUbb(str){
    str = str.replace(/\[BB(\d+)\]/gi, '<img alt="" src="http://r.6.cn/imges/qqface/BB$1.gif" />');
	str = parseUBB(str);
	return str ;
}
function parseUBB(data){
    if(typeof(src) == 'undefined')  return data;
    var re = /(\[BB:([^\]]+?)\])/i;	   	    
    data = data.replace(/(\[BB:([^\]]+?)\])/ig,function(p){	   	        
        if((re).test(p)){
            var href = RegExp.$2;
            p = '<img src="'+src+href+'.jpg" />';
            return p;
        }
    })
    return data;
}

// -- limit ubb num
function limitUbb(str){
  var ubbNum = 3 ;
  for(var i=0 ; i < ubbNum ; i++){
     str = str.replace(/\[BB(\d+)\]/i, '<BB$1>');
  }  
  str = str.replace(/\[BB(\d+)\]/ig, '') ; 
  for(var i=0 ; i < ubbNum ; i++){
     str = str.replace(/<BB(\d+)>/i, '[BB$1]');
  }  
  return str ;
}

// -- en htmlSpecialchars 
function enhtmlchars(str) {
	str = str.replace(/</g , '&lt;').replace(/>/g , '&gt;') ;
	str = str.replace(/"/g , '&quot;').replace(/'/g , '&#039;') ;
	str = str.replace(/ /g , '&nbsp;') ;
	return str ;
}

// -- de htmlSpecialchars 
function dehtmlchars(str) {
	str = str.replace(/&lt;/g , '<').replace(/&gt;/g , '>') ;
	str = str.replace(/&quot;/g , '"').replace(/&#039;/g , "'") ;
	str = str.replace(/&nbsp;/g , ' ') ;
	return str ;
}

function htmlToUbb(str ,ext){
	var arr = ext.split(',') ; 
	if(in_array('all' , arr))
		return str.replace(/</g , "[").replace(/>/g , "]") ;
	else {
		for(var i=0 ; i < arr.length; i++) {
			if(arr[i] == 'img')
				str = str.replace(/<img[^>]+src=['"][^>]*bb(\d+)\.gif[^>]*>/ig , "[BB$1]") ;
			else {
				var a = arr[i] ;
				str = str.replace(new RegExp('<' + a + '[^>]*>([^<]*)<\\/' + a + '>' , 'ig'), '[' + a + ']$1[/' + a + ']') ;
			}
		}
	}
	str = str.replace(/<br[^>]*>/ig , browser.msie ? "\n" : '') ;
	return str ;
}

function clearHtml(str , ext) {
	var arr = ext.split(',') ;
	for(var i=0; i < arr.length ; i++) {
		var a = arr[i]
		if(a == 'aimg')
			str = str.replace(/<a[^>]*><img[^>]+><\/a>/ig  , "") ;
		else
			str = str.replace(new RegExp('<' + a + '[^>]*>[\\s\\S]*<\\/' + a + '>' , 'ig')  , "") ;
	}
	return str ;
}

function stripHtml(str , ext) {
	var arr = ext.split(',') ;
	if(in_array('all' , arr))
		return str.replace(/<\/?[^>]+>/gi, '');
	else {
		for(var i=0 ; i < arr.length ; i++) {
			var a = arr[i] ;
			str = str.replace(new RegExp('(<' + a + '[^>]*>)|(<\\/' + a + '>)' , 'ig') ,"") ;
		}
	}
	return str ;
}

// ============================== num  ===================================

// -- get rand
function getRand(n1, n2) {
	var equNum = Math.abs(n1 - n2) + 1;
	var lowNum = Math.min(n1 , n2) ;
	return n1 + Math.floor(equNum*Math.random()) ;
}


// ============================== browser navigator ===================================

var browser = new Object(); 
function getBrowser() {
	var b = navigator.userAgent.toLowerCase();
	browser = { 
		safari: /webkit/.test(b),
		opera: /opera/.test(b),
		ie6: /msie 6/.test(b) && !/opera/.test(b),
		ie7: /msie 7/.test(b) && !/opera/.test(b),
		msie: /msie/.test(b) && !/opera/.test(b),
		mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)
	};
}
getBrowser() ;

// ============================== element ===================================

// --- by className
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}

// --- by AttributeValue
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}

// --- add class
function addClassName(oElm, strClassName){
	var strCurrentClass = oElm.className;
	if(!new RegExp(strClassName, "i").test(strCurrentClass)){
		oElm.className = strCurrentClass + ((strCurrentClass.length > 0)? " " : "") + strClassName;
	}
}

// --- remove calss
function removeClassName(oElm, strClassName){
	var oClassToRemove = new RegExp(('(^|\\s)' + strClassName + "($|\\s)"), "i");
	oElm.className = oElm.className.replace(oClassToRemove, "").replace(/^\s*|\s*$/g, "");
}

// --- renturn input value 
function sketch(objId){
	return document.getElementById(objId).value;
}

// ============================== style ===================================

// --- ai ---
function setStyle (element, style) { 
	for (var name in style) {
		if(name != 'opacity')
			element.style[name] = style[name] ;
		else
			setOpacity(element , parseInt(style[name])) ;
	}
}

// --- ai ---
function getStyle (element, style) {
	var value = null ; 
	
	if(style != 'opacity')
		value = element.style[style] ;
	else
		value = getOpacity(element) ;
		
	return value == 'auto' ? null : value ;
}

function setOpacity(element,num) {
	num = (num > 1) ?  num : num*100 ;
	if(browser.msie)
		element.filters.alpha.opacity = num ;
	else if(browser.mozilla)
		element.style.opacity = num/100 ;
}

function getOpacity(element) {
	if(browser.msie)
		return element.filters.alpha.opacity ;
	else if(browser.mozilla) { 
		if (document.defaultView && document.defaultView.getComputedStyle) { 
			var css = document.defaultView.getComputedStyle(element, null);
			value = css ? css.getPropertyValue('opacity') : null;
			return value*100 ;
		}
	}		
}

function displaySelect(type) {
	var selArr = document.body.getElementsByTagName('select') ;
	var selValue = type ? 'visible' : 'hidden' ;
	for(var i=0 ; i < selArr.length ; i++) {
		selArr[i].style.visibility = selValue ;
	}
}


// ============================== attach css just for ie ===================================

// - load fish
function applefish(extra , tfish , strTagName , oElm , strClassName ) { 

	var tempFun = function() {
		var elementArr = strClassName ? getElementsByClassName(oElm , strTagName , strClassName) : oElm.getElementsByTagName(strTagName)  ;
		tfish(elementArr) ;
	}
	
	if(extra && window.attachEvent) {
		window.attachEvent("onload", tempFun);
	}
	else if (extra && window.addEventListener) {
		window.addEventListener('load' , tempFun , false);
	}

}

var sffocus = function(iptArr) {
	for (var i=0; i < iptArr.length; i++) {
		if(iptArr[i].className == 'focus') {
			iptArr[i].attachEvent("onfocus" , function(evt) {
			   element = returnEventValue('srcElement' , evt)
			   addClassName(element , 'sffocus') ;
			}) ;
			iptArr[i].attachEvent("onblur", function(evt) {
			   element = returnEventValue('srcElement' , evt)								  
			   removeClassName(element , 'sffocus') ;
			}) ;
		}
	}
}

var qlmouse = function(emArr) {
	for (var i=0; i < emArr.length; i++) {
		emArr[i].attachEvent("onmouseover" , function(evt) {
			element = returnEventValue('srcElement' , evt)
			addClassName(element , 'qklistOver')
		}) ;	
		emArr[i].attachEvent("onmouseout", function(evt) {
			element = returnEventValue('srcElement' , evt)	
			removeClassName(element , 'qklistOver') ;
		}) ; 
		emArr[i].attachEvent("onclick", function(evt) {
			element = returnEventValue('srcElement' , evt)
			ql.addQlist(element) ;
			
		}) ; 
	}
}


// applefish( browser.msie , sffocus, "input" , document );
// applefish( browser.msie , sffocus, "textarea" , document );
// applefish( browser.ie6 , qlmouse , 'em' , document , 'addQlist' );


// ============================== event ===================================

// -- add event 

function a_addEvent(oElm , strEvent , fuc) {
	strEvent = strEvent.replace(/^on/i , '') ;
	if(browser.msie)
		oElm.attachEvent('on' + strEvent , fuc) ;
	else 
		oElm.addEventListener(strEvent , fuc , false) ;
}

// -- remove event 
function a_removeEvent(oElm , strEvent , fuc) {
	strEvent = strEvent.replace(/^on/i , '') ;
	if(browser.msie)
		oElm.detachEvent('on' + strEvent , fuc) ;
	else 
		oElm.removeEventListener(strEvent , fuc , false) ;
}

// -- return event value
function returnEventValue (type , evt) {
	var ret ; 
	switch(type) {
		case 'srcElement' : 
			ret = evt.srcElement ? evt.srcElement : evt.target ;
			break ;
		case 'clientX' :
			ret = evt.clientX ? evt.clientX : evt.pageX ;
			break ;
		case 'clientY' :
			ret = evt.clientY ? evt.clientY : evt.pageY ;
			break ;
		case 'keyCode' :
			ret = evt.keyCode ? evt.keyCode : evt.which ;
			break ;
	}
	return ret ;	
}

// -- stop event down
// v -> 默认动作 || b -> 事件传递 
function stopEvent(evt , type){
	if (evt.preventDefault) {
		if(type == 'v' || type == null) evt.preventDefault();
		if(type == 'b' || type == null) evt.stopPropagation();
	}
	else{
		if(type == 'v' || type == null) evt.returnValue = false;
		if(type == 'b' || type == null) evt.cancelBubble = true;     
	}
}



// ============================== cookie ===================================

function getExpTime(time,type){
    var expTime = new Date();
	switch(type) {
		case 'year' :
			expTime.setFullYear(expTime.getFullYear() + time );
			break ;
		case 'month' :
			expTime.setMonth( expTime.getMonth() + time );
			break;
		case 'day' :
			expTime.setDate( expTime.getDate() + time );
			break;
		case 'hour' :
			expTime.setHours( expTime.getHours() + time );
			break;
	}
    return expTime.toGMTString();
}

function getCookieVal(offset) {
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return decodeURIComponent(document.cookie.substring(offset, endstr));
}

function getCookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen){
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		return getCookieVal(j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return "";
}


// 针对6.cn特别处理一下
function setCookie(name,value,expires,path,domain,secure) {
	document.cookie = name + "=" + encodeURIComponent(value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain && !browser.msie) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}


function delCookie(name){
	var guoqu = new Date();
	expiresTime = guoqu.setTime(guoqu.getTime() - 100);
	setCookie(name,'',expiresTime,'/', browser.msie ? '' :  cookieHost_6cn) ;
}


// ============================== open new window ===================================

// open kai
function kai(page,name,width,height,left,top,type){
	var left = (typeof(left) == 'undefined') ? (screen.availWidth - 400)/2 : left;
	var top =  (typeof(top) == 'undefined') ? (screen.availHeight - 460)/2 : top;
	newopen = window.open(page,name,"width=" + width + ",height=" + height + ",left=" + left + ",top=" + top + (type ? ',location=1,menubar=1,resizable=1,scrollbars=1,status=1,toolbar=1' : ''));
	newopen.focus();
}

// 【MT】 ============================== color Frame ===================================

/*
#colorFrame { width:228px; overflow:hidden; border:1px solid #000000; border-width:1px 0 0 1px; position:absolute;
}
#colorFrame a { width:11px; text-indent:-99px; cursor:pointer; height:11px; display:block; float:left; overflow:hidden; border:1px solid #000000; border-width:0 1px 1px 0;
}
*/
var colorFrame = new Class({
	
	options : {
		onStart : Class.empty ,
		onComplete : Class.empty ,
		onClick : Class.empty ,
		onHide : Class.empty ,
		relative : {x:0 , y:0} 
	} ,
	
	initialize : function(elements , options) {
		this.setOptions(options);
		$(document.body).addEvent("click" , this.hide.bind(this)) ;
		$$(elements).addEvent('click' , this.create.bindWithEvent(this)) ;
	} ,

	hide : function () {
		if($('colorFrame')) {
			$('colorFrame').style.display = 'none' ;
			this.fireEvent('onHide') ;
		}
	} ,
	
	click : function(e) {
		if(e.target.tagName.toLowerCase() == 'a')
			this.fireEvent('onClick' , [e.target.innerHTML , e , this.element]) ;
	} ,
	
	create : function(ev) {
		ev.stop() ;	
		this.fireEvent('onStart' , ev) ;
		if(!$('colorFrame')) {
			var colorHex=new Array('00','33','66','99','CC','FF') ;
			var SpColorHex = new Array('FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF') ;
			var colorHtml = '' ;	
			for(var a=0 ; a < 12 ; a++) {
				for(var i=0 ; i < 3; i++) {
					for(var j=0 ; j < 6; j++) {
						if(i == 0 && j == 0) {
							var spColor = (a < 6) ? (colorHex[a] + colorHex[a] + colorHex[a]) : SpColorHex[a-6] ; 
							colorHtml += '<a href="javascript://" style="background-color:#' + spColor + '" >' + spColor + '</a>' ;
						}
						var color = colorHex[(a<6) ? i : (3+i)] + colorHex[j] + colorHex[(a<6) ? a : (a-6)] ;
						colorHtml +=  '<a href="javascript://" style="background-color:#' + color + '" >' + color + '</a>' ;
					}
				}
			}
			
			new Element('div' , {id:'colorFrame'}).setHTML(colorHtml).injectInside(document.body).addEvent('click' , this.click.bindWithEvent(this)) ;
		}
		else
			$('colorFrame').style.display = 'block' ;
			
		this.element = ev.target ;
		$('colorFrame').setStyles({left : ev.client.x + 10 + this.options.relative.x + 'px' , top : ev.client.y + window.getScrollTop() + this.options.relative.y + 'px' })
		this.fireEvent('onComplete' , ev) ;
	} 	
})

colorFrame.implement(new Events, new Options);


// ------  time(aptime) ------

var aptime = {
	//--- s => hh : mm : ss
	 sToHours : function (s) {
		var hh , mm , ss 
		ss = s % 60 ;
		s = Math.floor(s / 60) ;
		ss = ss >= 10 ? ss : '0' + ss ;
		
		mm = s % 60 ;
		s = Math.floor(s / 60) ;
		mm = mm >= 10 ? mm : '0' + mm ;	
		
		hh = s % 60 ;
		s = Math.floor(s / 60) ;
		hh = hh >= 10 ? hh : '0' + hh ;	
		
		if(hh > 24)
			return '23:59:59' ;
		else if(hh < 1)
			return mm + ':' + ss ;
		else 
			return hh + ':' + mm + ':' + ss ;
		
	} ,
	
	toTime : function(y,m,d,h,f,s) {
		return new Date(y,m-1,d,h||0,f||0,s||0).getTime()/1000 ;
	} ,
	
	// tdesc
	tdesc : function(time , nowTime) {
		if(isNaN(time))
			return time ;
		var uts = (nowTime || new Date().getTime()/1000) - time ;
		if (uts < 1)
			return "1秒前";
		else if (uts < 60)
			return Math.ceil(uts) + "秒前";
		else if (uts < 3600) {
			var m = Math.ceil(uts/60) ;
			return m + "分钟前";
		}
		else if (uts < 86400) {
			var h = Math.ceil(uts/3600) ;
			return h + "小时前" ;
		}
		else {
			var d = Math.ceil(uts/86400) ;
			return d + "天前" ;
		}
	}
}


// ------ full screen watch ------

function fullScreen() {
	window.focus() ;
	var cW = document.documentElement.clientWidth ;
	var cH = document.documentElement.clientHeight ;
	var sW = document.documentElement.scrollWidth ;
	var sH = document.documentElement.scrollHeight;
	if(!$("cureBlack")){
		var w = (cW > sW) ? cW : sW ;
		var h = (cH > sW) ? cH : sH ;
		var cureBlack = document.createElement("div");
		with(cureBlack.style){
			cureBlack.id = "cureBlack";
			width = w + 'px';
			height = h + 'px';
			left = '0px';
			top = '0px';
		}
		document.body.appendChild(cureBlack) ;
		cureBlack.style.display = 'block' ;
		cureBlack.onclick = normalScreen ;
	}
	else {
		$("cureBlack").style.display = "block" ;
	}
	// get size
	var obj = $("flash_play") ;
	var content = $('flashWatch') ;
	// fuck 
	displaySelect(0) ;
	if($('video-others')) $('video-others').style.display = 'none' ;
	document.documentElement.scrollTop = 0 ;
	
	if (document.removeEventListener) {
		document.addEventListener("keydown", nomalScreen_esc , false);
	} 
	else if (document.body.detachEvent) {
		document.body.attachEvent("onkeydown", nomalScreen_esc);
	}
	
	// set size
	setStyle(obj , {width:cW + 'px' , height:cH + 'px'})
	content.style.zIndex = '1001' ;
	// content.className = "fullWatch" ;
	setStyle(content , {top:0 , left:0}) ;
}


function nomalScreen_esc (evt) {
	evt = evt ? evt : event ;
	var keyCode = returnEventValue('keyCode' , evt) ;
	if(keyCode == 27 && $('cureBlack').style.display == 'block')
	normalScreen() ;
}

function normalScreen() {
	var w = pageMessage.playerWidth  || 480 ;
	var h = pageMessage.playerHeight  || 415 ;
	setStyle($("flash_play") , {'width': w + 'px' , 'height': h + 'px'}) ;
	setStyle($('flashWatch') , {'left':'' , 'top':'' , 'zIndex':1}) ;
	$("cureBlack").style.display = 'none' ;
	// fuck
	displaySelect(1) ;
	if($('video-others')) $('video-others').style.display = 'block' ;
	$("flash_play").SetVariable('watch_play', 'normal') ;
}


// ------ 加入收藏 ------

function bookmark(){
	var title = document.title
	var url = document.location.href
	if (browser.mozilla) 
		window.sidebar.addPanel(title, url,"");
	else if(browser.opera){
		var mbm = document.createElement('a');
		mbm.setAttribute('rel','sidebar');
		mbm.setAttribute('href',url);
		mbm.setAttribute('title',title);
		mbm.click();
	}
	else if(browser.msie) 
		window.external.AddFavorite( url, title);
}

function copyCode(e) {
	var text = '' ;
	if(typeof e != 'string') {
		var iptEle = e.parentNode.getElementsByTagName('input')[0] ;
		iptEle.select() ;
		text = iptEle.value ;
	}
	else 
		text = e ;
	if(browser.ie6) {
		window.clipboardData.setData('text',text)
		alert('已复制，请使用Ctrl+V粘贴出来') ;
	}	
}

function pageFav(ele) {
	var title = document.title ;
	var url = window.location.href ;
	var className = ele.className ;
	if(className == 'host' && browser.ie6) {
		ele.style.behavior='url(#default#homepage)';
		ele.setHomePage(url)
	}
	else {
		bookmark() ;
	}
}

// ------ json cookie ------

var jcookie = {

	pub : {
		limitTime : 1 ,
		timeType : 'day'
	} ,

	create : function() {
		var json = {apple:'comeback'} ;
		var expiresTime = getExpTime(this.pub.limitTime,this.pub.timeType) ;
		var value = Json.toString(json) ;
		setCookie('json',value,expiresTime,'/',cookieHost_6cn) ;
		return json ;
	} ,

	get : function(str) {
		var json = null
		var value = getCookie('json') ;
		if(!value)
			json = this.create() ;
		else {
			json = Json.evaluate(value) ;
			if(typeof json != 'object') 
				json = this.create() ;
		}
		return str ? json[str] : json ;
	} ,
	
	set : function(name , value) {
		var json = this.get() ;
		json[name] = value ;
		var expiresTime = getExpTime(this.pub.limitTime,this.pub.timeType) ;
		var value = Json.toString(json) ;
		setCookie('json',value,expiresTime,'/',cookieHost_6cn) ;
	}
	
}

// 【MT】 ------ over frame ------

function createOverlay (alpha , zIndex) {
	if(!$('overlay')) {
		var img1 = new Image();
		img1.src = "http://r.6.cn/imges/overlay.png";
		var img2 = new Image();
		img2.src = "http://r.6.cn/imges/blank.gif";
		var overlay = new Element("div" , {
			id : "overlay" 
		}).injectInside(document.body) ;
	}
	$('overlay').setStyles({'opacity':alpha , 'width':window.getWidth()+'px' , 'height':window.getScrollHeight()+'px' , 'left':0 , 'top':0 , 'display':'block'}) ;
	if(zIndex)
		$('overlay').setStyle('zIndex' , zIndex) ;
}

var appover = new Class({
						
	options : {
		width : '' ,
		positon : null ,
		onHide : Class.empty ,
		onClickhide : Class.empty ,
		onComplete : Class.empty ,
		idName : '' ,
		contentClassName : '' ,
		closeType : 'remove' , // or display
		frameClassName : 'overFrame' , // or others style  ,
		frameClassWidth : {'overFrame': 0} ,
		
		overlay : true , 
		
		opacity : 0.5 ,
		alpha : true , // opacity 0 - - - - 80
		parent : null  ,
		pos : null
		
	} ,
	
	initialize : function(title , eleContent , options) {
		this.setOptions(options);
		this.title = title ;
		this.eleContent = eleContent ;
		this.options.parent = this.options.parent || document.body ;
		if(this.options.width) 
			this.options.actualWidth = parseInt(this.options.width) - this.options.frameClassWidth[this.options.frameClassName] + 'px'
	} ,
	
	overFrame : function(){
		if(this.options.closeType == 'remove' || !this.ele) {
			var div1 = new Element('div' , {'id':this.options.idName , 'class': this.options.frameClassName , 'styles':{'position':'absolute' , 'display':'block'}}) ;
			var h52 = new Element('h5' , {'class':'htitle'}).setHTML('<em>关闭</em>' + '<span>' + this.title + '</span>') ;
			var div3 = new Element('div' , {'class':this.options.frameClassName + 'ContentBao'}) ;

			var div4 = new Element('div' , {'class':this.options.frameClassName + 'Content ' + this.options.contentClassName}).adopt(this.eleContent).injectInside(div3) ;
			div1.adopt(h52).adopt(div3).injectInside(this.options.parent) ; 
			if(this.options.width)
				div1.setStyle('width' , this.options.actualWidth) ;
			h52.getElementsByTagName('em')[0].onclick = this.esc.bind(this,'click') ;
			this.eleTitle = h52.getElementsByTagName('span')[0] ;
			this.ele = div1 ;
			this.eleContent = div4 ;
			this.setPosition() ;
		}
		else {
			this.ele.style.display = 'block' ;
		}
		this.fireEvent('onComplete') ;
	} ,
	
	setPosition : function() {
		var pos = this.options.overlay ? {'left': this.options.pos && $defined(this.options.pos.x) ? this.options.pos.x : '50%' , 'top': (this.options.pos && $defined(this.options.pos.y)  ? this.options.pos.y : 50) + window.getScrollTop() + 'px' , 'marginLeft': (this.options.pos && this.options.pos.x ? 0 : -this.ele.getSize().size.x/2) + 'px'} : {'left':(this.options.pos && $defined(this.options.pos.x) ? this.options.pos.x : 0) + 'px' , 'top':(this.options.pos && $defined(this.options.pos.y) ? this.options.pos.y : 0) + 'px'} ;
		this.ele.setStyles(this.options.position || pos) ;
	} ,
	
	display : function(){
		if(this.options.overlay) {
			displaySelect(0) ;
			createOverlay(0.01 , 555) ;
			if(this.options.alpha)
				$('overlay').effect('opacity' , {duration:300 , 'onComplete':this.overFrame.bind(this)}).start(this.options.opacity) ;
			else {
				$('overlay').setStyle('opacity' , this.options.opacity) ;
				this.overFrame() ;
			}
		}
		else 
			this.overFrame() ;
		return this ;
	} , 
	
	esc : function(type) {
		if(type == 'click')
			this.fireEvent('onClickhide') ;
		var overFunc = function(){ if(this.options.closeType == 'remove')  this.ele.remove() ; else this.ele.style.display = 'none' ; if(this.options.overlay) { displaySelect(1) ; $('overlay').setStyle('display' , 'none') } ; this.fireEvent('onHide') }.bind(this) ;
		if(this.options.overlay) {
			if(this.options.alpha)
				$('overlay').effect('opacity' , {duration:200 , onComplete:overFunc}).start(0) ;
			else {
				$('overlay').setStyle('opacity' , 0) ;
				overFunc() ;
			}
		}
		else
			overFunc() ;
	}
})
appover.implement(new Events, new Options);


/*
function getOverFrameWidth(num) {
	return (num - 26) + 'px' ;
}

function createOverFrame(title , idName , pe , eleContent , styles , onHide , onStart) {
		onHide = onHide || Class.empty ; 
		var div1 = new Element('div' , {'id':idName , 'class':'overFrame' , 'styles':{'position':'absolute' , 'display':'block' , 'left':0 , 'top':0}}) ;
		var h52 = document.createElement('h5') ;
		h52.innerHTML = '<span>关闭</span>' + title ; 
		div1.setStyles(styles).adopt(h52).adopt(eleContent).injectInside(pe) ;
		h52.getElementsByTagName('span')[0].onclick = function(){div1.style.display = 'none' ; onHide();} ;  
}
*/

// 【MT】 ------ get no repeat random id ------

function getRandNoReapt(id , n){
	var str = '' ;
	var idName = id || 'apple' ;
	var num = n ? Number(n) : 3 ;
	num.times(function(){str += String($random(1 , 10000))}) ;
	return idName + str ;
}

// ------ write iframe ------

function writeIframe(obj) {
	document.write('<iframe width="' + obj.width + '" scrolling="no" style="display:block" height="' + obj.height + '" frameborder="0" allowtransparency="true" src="' + obj.src + '"></iframe>') ;
} ;

// ================ lubo
function luboPlayer_write() {
	var playerStr = '' ;
	if(browser.mozilla)
		playerStr = '<embed id="v6ocx" type="application/x-oleobject"  width="500" HEIGHT="375" clsid="{E7181F81-7D6D-4A76-86AF-718F065CE7E4}" param_backcolor="16776960" />' ;
	else if(browser.msie)
		playerStr = '<object wmode="transparent" classid="clsid:E7181F81-7D6D-4A76-86AF-718F065CE7E4" id="v6ocx"  width="500" height="375">' +
					'<param name="wmode" value="transparent" />' +
					'</object>' ;
	document.write(playerStr) ;
}


// 【MT】 ------ ajax upload file ------
var ajaxUploadFile = new Class({
	options : {
		styles : {'position':'absolute' , 'top':'-1200px' , 'left':'-1200px'} ,
		onStart : Class.empty 
	} ,
	
	initialize : function(options) {
		this.setOptions(options);
		var timeNum = new Date().getTime() ;
		this.idNameFrame = 'ajaxUploadFileIFrame' + timeNum ;
		this.idNameForm = 'ajaxUploadFileForm' + timeNum ;
		new Element('div' , {'styles':this.options.styles}).setHTML('<form id="' + this.idNameForm + '" target="' + this.idNameFrame + '" action="" method="post" enctype="multipart/form-data"></form>').injectTop(document.body) ;
		new Element('div' , {'styles':{'display':'none'}}).setHTML('<iframe id="' + this.idNameFrame + '" name="' + this.idNameFrame + '" width="500" height="500" ></iframe>').injectTop(document.body)	;
		return this ;
	} ,
	
	send : function(fileArr , url) {
		var form = $(this.idNameForm) ;
		form.innerHTML = '' ;
		form.action = url ;
		$$(fileArr).each( function(e){ e.replaceWith(e.clone(true)).setProperty('value' , '') ; form.appendChild(e);  } ) ;
		this.fireEvent('onStart') ;
		form.submit() ;
		return this ;
	} ,
	
	cancel : function() {
		var iframe = $(this.idNameFrame) ;
		iframe.src = '_blank' ;
	}
})

ajaxUploadFile.implement(new Events, new Options);

//pagepub
// ------- fen page lei -------
function fenPage(page, pageTotal, middle, extra) {
    this.page = page;
    this.pageTotal = pageTotal;
    this.middle = middle;
    this.extra = extra;

    // middleurl
    this.middleUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockCount = Math.ceil(this.pageTotal / this.middle);
        var blockStart = (blockNum - 1) * this.middle + 1;
        var blockEnd = blockNum * this.middle;
        var insert_ml = "";

        if (blockCount == 1) {
            for (var i = 1; i <= this.pageTotal; i++) {
                insert_ml += (i == this.page) ? '<span>' + i + '</span>' : '<a href="' + this.extra + 'page=' + i + '">' + i + '</a>';
            }
        }
        else if (blockCount == blockNum) {
            for (var a = blockStart; a <= this.pageTotal; a++) {
                insert_ml += (a == this.page) ? '<span>' + a + '</span>' : '<a href="' + this.extra + 'page=' + a + '">' + a + '</a>';
            }
        }
        else {
            for (var b = blockStart; b <= blockEnd; b++) {
                insert_ml += (b == this.page) ? '<span>' + b + '</span>' : '<a href="' + this.extra + 'page=' + b + '">' + b + '</a>';
            }
        }
        return insert_ml;
    }

    // nexturl
    this.nextUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockCount = Math.ceil(this.pageTotal / this.middle);
        var blockNext = blockNum * this.middle + 1;
        var insert_next = (blockNum < blockCount) ? '<a href="' + this.extra + 'page=' + blockNext + '">' + '下' + this.middle + '页' + '</a>' : '';
        return insert_next;
    }

    // preurl
    this.preUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockPre = (blockNum - 1) * this.middle;
        var insert_pre = (this.page > this.middle) ? '<a href="' + this.extra + 'page=' + blockPre + '">' + '上' + this.middle + '页' + '</a>' : '';
        return insert_pre;
    }

    // firsturl
    this.firstUrl = function() {
        var insert_first = (this.page != 1) ? '<a href="' + this.extra + 'page=1">首页</a>' : '';
        return insert_first;
    }

    // endurl
    this.endUrl = function() {
        var insert_end = (this.page != this.pageTotal) ? '<a href="' + this.extra + 'page=' + this.pageTotal + '">尾页</a>' : '';
        return insert_end;
    }

    // display
    this.display = function() {
        if (this.pageTotal <= 1)
            return false;
        else
            document.write(this.firstUrl() + this.preUrl() + this.middleUrl() + this.nextUrl() + this.endUrl());
    }

}

// -- two
function fenPage2(page, pageTotal, middle, extra) {

    this.page = page;
    this.pageTotal = pageTotal;
    this.middle = middle;
    this.extra = extra;

    // middleurl
    this.middleUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockCount = Math.ceil(this.pageTotal / this.middle);
        var blockStart = (blockNum - 1) * this.middle + 1;
        var blockEnd = blockNum * this.middle;
        var insert_ml = "";

        if (blockCount == 1) {
            for (var i = 1; i <= this.pageTotal; i++) {
                insert_ml += (i == this.page) ? '<span>' + i + '</span>' : '<a href="' + this.extra + i + '.html">' + i + '</a>';
            }
        }
        else if (blockCount == blockNum) {
            for (var a = blockStart; a <= this.pageTotal; a++) {
                insert_ml += (a == this.page) ? '<span>' + a + '</span>' : '<a href="' + this.extra + a + '.html">' + a + '</a>';
            }
        }
        else {
            for (var b = blockStart; b <= blockEnd; b++) {
                insert_ml += (b == this.page) ? '<span>' + b + '</span>' : '<a href="' + this.extra + b + '.html">' + b + '</a>';
            }
        }
        return insert_ml;
    }

    // nexturl

    this.nextUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockCount = Math.ceil(this.pageTotal / this.middle);
        var blockNext = blockNum * this.middle + 1;
        var insert_next = (blockNum < blockCount) ? '<a href="' + this.extra + blockNext + '.html">' + '下' + this.middle + '页' + '</a>' : '';
        return insert_next;
    }

    // preurl

    this.preUrl = function() {
        var blockNum = Math.ceil(this.page / this.middle);
        var blockPre = (blockNum - 1) * this.middle;
        var insert_pre = (this.page > this.middle) ? '<a href="' + this.extra + blockPre + '.html">' + '上' + this.middle + '页' + '</a>' : '';
        return insert_pre;
    }

    // firsturl

    this.firstUrl = function() {
        var insert_first = (this.page != 1) ? '<a href="' + this.extra + '1.html">首页</a>' : '';
        return insert_first;
    }

    // endurl

    this.endUrl = function() {
        var insert_end = (this.page != this.pageTotal) ? '<a href="' + this.extra + this.pageTotal + '.html">尾页</a>' : '';
        return insert_end;
    }

    // display

    this.display = function() {
        if (this.pageTotal <= 1)
            return false;
        else
            document.write(this.firstUrl() + this.preUrl() + this.middleUrl() + this.nextUrl() + this.endUrl());
    }

}

// ------- 新分页 -------

var basePage = new Class({

    options: {
        middle: 10,
        extra: { 'p': '?page=', 'n': '' },
        showLast: false
    },

    initialize: function(page, pageTotal, options) {
        this.setOptions(options);
        this.page = page;
        this.pageTotal = pageTotal;
        // block 
        this.curBlockPage = Math.ceil(this.page / this.options.middle);
        this.totalBlockPage = Math.ceil(this.pageTotal / this.options.middle);
        this.blockPageStart = (this.curBlockPage - 1) * this.options.middle + 1;
        this.blockPageEnd = this.curBlockPage != this.totalBlockPage ? this.curBlockPage * this.options.middle : this.pageTotal;
    },

    setUrl: function(num) {
        return this.options.extra.p + num + this.options.extra.n;
    },

    prePage: function() {
        return this.page > 1 ? '<a class="pre" href="' + this.setUrl(this.page - 1) + '">上一页</a>' : '';
    },

    nextPage: function() {
        return this.page < this.pageTotal ? '<a class="next" href="' + this.setUrl(this.page + 1) + '">下一页</a>' : '';
    },

    preBlockPage: function() {
        var pre = (this.curBlockPage - 1) * this.options.middle;
        return this.curBlockPage > 1 ? '<a class="preBlock" href="' + this.setUrl(pre) + '">上' + this.options.middle + '页' + '</a>' : '';
        return insert_pre;
    },

    nextBlockPage: function() {
        var next = this.curBlockPage * this.options.middle + 1;
        return this.curBlockPage < this.totalBlockPage ? '<a class="nextBlock" href="' + this.setUrl(next) + '">下' + this.options.middle + '页</a>' : '';

    },

    firstPage: function() {
        return this.page != 1 ? '<a class="first" href="' + this.setUrl(1) + '">首页</a>' : '';
    },

    lastPage: function() {
        return this.page != this.pageTotal && this.pageTotal > 1 ? '<a class="last" href="' + this.setUrl(this.pageTotal) + '">尾页</a>' : '';
    },

    middlePage: function() {
        var htmlStr = '';
        for (var i = this.blockPageStart; i <= this.blockPageEnd; i++)
            htmlStr += '<a  ' + (i == this.page ? 'class="on"' : '') + ' href="' + this.setUrl(i) + '">' + i + '</a>';
        return htmlStr;
    },

    lastTip: function() {
        return this.blockPageEnd < this.pageTotal ? '<b>...</b>' : '';
    },

    display: function() {
        return this.firstPage() + this.preBlockPage() + this.middlePage() + this.nextBlockPage() + (this.options.showLast ? this.lastPage() : '');
    },

    // new add list
    middlePage_list: function() {
        var addp = Math.ceil(this.options.middle / 2) - 1;
        var addn = this.options.middle - addp - 1;
        var start = this.page - addp;
        var end = this.page + addn;
        if (start < 1) {
            start = 1;
            end = this.options.middle <= this.pageTotal ? this.options.middle : this.pageTotal;
        }
        else if (end > this.pageTotal) {
            end = this.pageTotal;
            start = this.pageTotal - this.options.middle >= 0 ? this.pageTotal - this.options.middle + 1 : 1;
        }

        var htmlStr = '';
        for (var i = start; i <= end; i++)
            htmlStr += '<a  ' + (i == this.page ? 'class="on"' : '') + ' href="' + this.setUrl(i) + '">' + i + '</a>';
        return htmlStr;
    },

    display_list: function(showLast) {
        return this.firstPage() + this.prePage() + this.middlePage_list() + this.lastTip() + this.nextPage() + (this.options.showLast ? this.lastPage() : '');
    }
})

basePage.implement(new Options);

// date 分页
var datePage = basePage.extend({

    initialize: function(page, pageTotal, today_timestamps, options) {
        this.today_Timestamps = today_timestamps;
        this.parent(page, pageTotal, options);
    },

    setUrl: function(num) {
        if (num == 1)
            return '/';
        var day_Timestamps = 86400000;
        var cur_Timestamps = this.today_Timestamps - (num - 1) * day_Timestamps;
        var dada = new Date(cur_Timestamps);
        var year = dada.getFullYear();
        var month = dada.getMonth() + 1;
        var day = dada.getDate();
        return '/a/' + year + '/' + (month < 10 ? '0' + month : month) + (day < 10 ? '0' + day : day) + '.html';
    },

    display: function() {
        return this.prePage() + this.middlePage_list() + this.nextPage();
    }

});

// ------- autoAutomatic-------
var inputAuto = new Class({

    initialize: function(bao, form, input, btn, typeArr) {
        this.typeArr = typeArr;
        this.form = form;
        $(document.body).addEvent('click', this.leave.bindWithEvent(this));
        $('autoAutomatic').addEvent('click', function(e) { e.stopPropagation() } .bindWithEvent());
        $E('#searchBox input').addEvent('click', function(e) { e.stopPropagation() } .bindWithEvent());
        this.input = $(input).addEvent('focus', this.focus.bind(this)).addEvent('keyup', this.handEvent.bindWithEvent(this));
        this.bao = $(bao);
        this.matchCheck = false;
        this.position = -1;
    },

    handEvent: function(e) {
        this.curKey = e.code;
        if ([37, 39, 9, 6, 17, 18, 22].contains(this.curKey))
            return false;
        var value = this.input.value.trim();
        if (value == '') {
            //	this.bao.setStyle('display' , 'none') ;
            this.empty();
            return false;
        }

        if (this.curKey != 38 && this.curKey != 40 && this.curKey != 13) {
            this.cacheWord = value;
            this.matchCheck = false;
            //	this.bao.setStyle('display' , 'none').setHTML('') ;
            this.empty();
            var url = '/search.php?koko=1&k=' + encodeURIComponent(this.cacheWord);
            var callback = this.handEventBack.bind(this);
            var data = "";
            cacheAjax(url, callback);
            // Request.reSend(url,data,callback);
        }
        else
            this.handEventBack();
    },

    handEventBack: function(httpObj) {
        if (httpObj) {
            var ret = httpObj.responseText;
            var obj = Json.evaluate(ret);
            if (obj.length > 0 && this.input.value != '') {
                this.matchCheck = true;
                this.bao.setHTML('');
                for (var i = 0; i < obj.length; i++)
                    this.append(obj[i]);
            }
        }
        if (this.matchCheck) {
            // this.bao.setStyle('display' , 'block') ;
            this.display();
            if (this.curKey == 38 || this.curKey == 40 || this.curKey == 13)
                this.keyScroll();
            else
                this.position = -1;
        }
        else {
            if (this.curKey == 13)
                this.submit('blank');
        }
    },

    changeWord: function(str) {
        this.input.value = str;
    },

    checkPosition: function() {
        var aArr = this.bao.getElementsByTagName("a");
        for (var i = 0; i < aArr.length; i++) {
            if (aArr[i].className == 'autoMouseover') {
                aArr[i].className = 'autoMouseout';
                this.position = i;
                return;
            }
        }
    },

    keyScroll: function() {
        this.checkPosition();
        var aArr = this.bao.getElementsByTagName("a");
        var aLength = aArr.length;
        var kword = this.cacheWord;
        if (this.curKey == 40) {
            if (this.position >= 0)
                aArr[this.position].className = "autoMouseout";
            this.position = (this.position >= aLength - 1) ? -1 : (this.position + 1);
            if (this.position > -1) {
                aArr[this.position].className = "autoMouseover";
                kword = aArr[this.position].innerHTML;
            }
        }

        if (this.curKey == 38) {
            if (this.position >= 0)
                aArr[this.position].className = "autoMouseout";
            this.position = (this.position <= 0) ? ((this.position == 0) ? -1 : aLength - 1) : (this.position - 1);
            if (this.position > -1) {
                aArr[this.position].className = "autoMouseover";
                kword = aArr[this.position].innerHTML;
            }
        }

        if (this.curKey == 13) {
            this.empty();
            // this.bao.setStyle('display' , 'none') ;
            this.display();
            //if(this.position >= 0)
            //	this.input.value = liArr[this.position].innerHTML ;					
            this.submit('blank');

            return true;
        }
        this.changeWord(kword);
    },

    append: function(msg) {
        var fucObj = eval(this.fucName);
        if (!this.bao.getElementsByTagName("ul")[0]) {
            var ul = document.createElement("ul");
            this.bao.appendChild(ul);
        }
        ulEle = this.bao.getElementsByTagName("ul")[0];
        var li = document.createElement("li");
        li.innerHTML = '<a href="#">' + msg + '</a>';
        a = li.getElementsByTagName('a')[0];
        a.onmouseover = this.mouseover.bindWithEvent(this);
        a.onmouseout = this.mouseout.bindWithEvent(this);
        a.onclick = this.dclick.bindWithEvent(this);
        a.className = "autoMouseout";
        ulEle.appendChild(li);
    },

    dclick: function(e) {
        var ele = e.target;
        // this.bao.setStyle('display' , 'none') ;
        this.display();
        this.input.value = ele.innerHTML;
        this.submit();
        e.stop();
    },

    mouseover: function(e) {
        var ele = e.target;
        if (this.position >= 0)
            this.bao.getElementsByTagName("li")[this.position].className = "autoMouseout";
        this.position = -1;

        ele.className = "autoMouseover";
    },

    mouseout: function(e) {
        var ele = e.target;
        ele.className = "autoMouseout";
    },

    getType: function() {

        return this.typeArr.filter(function(e) { return e.checked })[0].value;
    },

    submit: function(style) {
        style = style || 'self'
        if (this.input.value.trim() == '') return false;
        var type = this.getType();
        var url = 'http://6.cn/search.php?t=' + type + '&k=' + encodeURIComponent(this.input.value) + '&ko=1';
        if (style == 'self')
            window.location.href = url;
    },

    empty: function() {
        this.bao.addClass('displayNone').setHTML('');
    },

    display: function() {
        this.bao.removeClass('displayNone');
    },

    leave: function(e) {
        setTimeout(function() { this.empty(); $('autoAutomatic').addClass('displayNone'); } .bind(this), 200);
    },

    focus: function() {
        $('autoAutomatic').removeClass('displayNone');
    }
})



// ------- login header && pageMessage -------
var pageMessage = new Object();

function areyoulogin(style, pos) {
    style = style || false;
    pos = pos || null;
    userLogin.loginAndReg('login', !style, pos);
}


var login = new Class({

    options: {
        status: 'www',
        LR: {
            'appover': null,
            'loginHtmlstr': '<form id="loginFrame_quick" class="LRFrame_quick" method="post" action="http://6.cn/login.php">' +
			  '<dl>' +
			  '<dd><input onkeydown="userLogin.enterSubmit(event , \'login\')" id="member-login-un" style="width:300px" class="focus" type="text" name="username" /><label for="member-login-un">用户名</label></dd>' +
			  '<dd><input onkeydown="userLogin.enterSubmit(event , \'login\')" id="member-login-pd" style="width:300px" class="focus" type="password" name="passwd" /><label for="member-login-pd">密码</label></dd>' +
			  '<dt><a class="loading" style="float:right" href="#" onclick="userLogin.loginToReg() ; return false ;">快速注册</a><input type="hidden" name="action" value="login" /><input type="hidden" name="back" value="1" /><button id="loginSubmit" class="loogerbtn" type="button" onclick="userLogin.loginAndRegCheckForm(this , \'login\')">登录</button></dt>' +
			  '</dl>' +
			  '</form>',
            'regHtmlstr': '<form action="http://6.cn/reg.php" class="LRFrame_quick" id="regFrame_quick" method="post" enctype="multipart/form-data" >' +
			  '<dl>' +
			  '<dd><label for="member-signup-un">用户名<em>(4～12字符)</em></label><span><input onkeydown="userLogin.enterSubmit(event , \'reg\')" class="focus" name="username" type="text" maxlength="16" style="width:300px;"  id="member-signup-un"  /> &nbsp; <button onclick="userLogin.checkLoginName(this)" type="button" >检测</button></span></dd>' +
			  '<dd><label for="member-signup-email">电子邮件</label><span><input onkeydown="userLogin.enterSubmit(event , \'reg\')" class="focus" name="email" type="text" style="width:300px;"  id="member-signup-email"  /></span></dd>' +
			  '<dd><label for="member-signup-pw">密码<em>(4～12字符)</em></label><span><input onkeydown="userLogin.enterSubmit(event , \'reg\')" class="focus" name="passwd" type="password" style="width:300px;" maxlength="12"  id="member-signup-pw"  /></span></dd>' +
			  '<dd><label for="member-signup-pwag">密码确认</label><span><input onkeydown="userLogin.enterSubmit(event , \'reg\')" class="focus" name="passwd2"   type="password" style="width:300px;"  maxlength="12" id="member-signup-pwag"  /></span></dd>' +
			  '<dd><label for="member-signup-picsig">验证码</label><span><img height="26" title="看不清，请点击重新刷新" src="/sessimg.php?s=wreg&n=" ' + $random(1, 1000) + ' style="margin-left:12px;vertical-align: middle; cursor: pointer;position:relative; top:-2px; float:right;" onclick="this.src = \'/sessimg\.php\?s=wreg&n=\' \+ $random\(1,1000\)"/><input class="focus" name="sessimg"   type="text" style="width:228px;"  maxlength="4" id="member-signup-picsig"  /></span></dd>' +
			  '<dd style="color:#FF0000;">验证码为四位英文字母，看不清点击图片</dd>' +
			  '<dd><input name="agree" id="login-agree" type="checkbox" value="checkbox" checked="checked" class="nobstyle"  /> 我已阅读并同意 <a target="_blank" href="/about/agreement.php">六间房使用协议</a><em>*</em></dd>' +
			  '<dt><input type="hidden" name="action" value="reg" /><button type="button" id="regSubmit" class="loogerbtn" onclick="userLogin.loginAndRegCheckForm(this , \'reg\')">提交</button></dt>' +
			  '</dl>' +
			  '</form>'
        }
    },
    initialize: function(options) {
        this.setOptions(options);
        var str = getCookie("_6user").trim();
        var username = getCookie("username").trim();
        pageMessage.status = this.options.status;

        if (!username || !str || str == 'nologin') {
            pageMessage.userCheck = 0;
            pageMessage.uid = 0;
        }
        else {
            var arr = str.trim().split("|");
            pageMessage.userCheck = 1;
            pageMessage.uid = arr[0];
            pageMessage.username = arr[1];
            pageMessage.msnNum = arr[2];
        }
        this.estr = getCookie('_info').trim();
        if (this.estr)
            this.proEstr(this.estr);
    },

    rewrite: function() {
        var htmlstr = this.getHtml();
        $('header_right_top').innerHTML = htmlstr;
    },

    // ======================================================================
    loginToReg: function() {
        this.options.LR.appover.eleTitle.innerHTML = '快速注册';
        this.options.LR.appover.eleContent.innerHTML = this.options.LR.regHtmlstr;
        (function() { $('member-signup-un').focus() }).delay(100);
    },

    enterSubmit: function(evt, type) {
        var e = new Event(evt);
        if (e.key == 'enter') {
            if (type == 'login')
                this.loginAndRegCheckForm($('loginSubmit'), type);
            else
                this.loginAndRegCheckForm($('regSubmit'), type);
        }
    },

    checkLoginName: function(ele) {
        var name = sketch("member-signup-un").trim();

        if (!name) {
            alert('请输入用户名');
            return false;
        }

        if (name.length > 16 || name.length < 4) {
            alert("用户名长度不对");
            return false;
        }

        var url = '/check_dup_username.php?username=' + encodeURIComponent(name);
        var data = "";
        var callback = this.updateCheckLoginName.bind(this);
        var extra = ele;
        ele.disabled = true;
        ele.innerHTML = '检测中...';
        Request.reSend(url, data, callback, extra);
    },

    updateCheckLoginName: function(httpObj, extra) {
        var ret = httpObj.responseText;
        if (ret == 1)
            alert("不巧,这个名字已经被别人抢注了");
        else
            alert("运气不错,没有人和你重名");
        extra.disabled = false;
        extra.innerHTML = '检测';
    },

    loginAndReg: function(type, style, pos) {
        style = style ? style : false;
        if (type == 'login') {
            var htmlstr = this.options.LR.loginHtmlstr;
            var title = '立即登录';
        }
        else {
            var htmlstr = this.options.LR.regHtmlstr;
            var title = '快速注册';
        }
        var eleContent = new Element('div', { 'class': '' }).setHTML(htmlstr);
        this.options.LR.appover = new appover(title, eleContent, { 'onComplete': function() { $('member-login-un').focus() }, 'overlay': style, 'parent': style ? null : $('watchInfo'), 'pos': pos, 'alpha': false, 'width': 480 }).display();
    },

    loginAndRegCheckForm: function(ele, type) {
        if (type == 'reg') {
            if (sketch("member-signup-email").trim() == "" || sketch("member-signup-un").trim() == "" || sketch("member-signup-pw").trim() == "" || sketch("member-signup-pwag").trim() == "") {
                alert("请确实是否填写完整");
                return false;
            }

            if (sketch("member-signup-un").trim().length > 16 || sketch("member-signup-pw").trim().length > 12 || sketch("member-signup-pw").trim().length < 4 || sketch("member-signup-un").trim().length < 4) {
                alert("用户名或密码的长度不对");
                return false;
            }

            if (!(/^.+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/i.test(sketch("member-signup-email").trim()))) {
                alert("邮件的格式不正确");
                return false;
            }
            if (sketch("member-signup-pw").trim() != sketch("member-signup-pwag").trim()) {
                alert("两次的密码输入不一样，你再检查一下");
                return false;
            }
            if (!$('login-agree').checked) {
                alert("你还没有同意六间房的使用协议");
                return false;
            }
        }
        else {
            if (sketch("member-login-un").trim() == "" || sketch("member-login-pd").trim() == "") {
                alert('请确认是否填写完整');
                return false;
            }
        }
        this.loginAndRegSend(ele, type)
    },

    loginAndRegSend: function(ele, type) {
        ele.disabled = true;
        if (type == 'login') {
            ele.innerHTML = '登录中...';
            var url = 'http://6.cn/login.php?api=ajax';
            var callback = this.loginAndRegBack.bind(this);
            var data = $('loginFrame_quick').toQueryString();
        }
        else {
            ele.innerHTML = '提交中...';
            var url = 'http://6.cn/reg.php?api=ajax';
            var callback = this.loginAndRegBack.bind(this);
            var data = $('regFrame_quick').toQueryString();
        }
        var extra = type;
        Request.reSend(url, data, callback, extra);
    },

    loginAndRegBack: function(httpObj, type) {
        var ret = httpObj.responseText;
        var obj = Json.evaluate(ret);
        this.options.LR.appover.esc();
        if (obj.flag == 1) {
            if (type == 'login')
                alert('成功登录');
            else
                alert('注册成功，已经登录');
        }
        else
            alert(obj.msg);
        this.initialize();
        this.rewrite();
    },

    // ======================================================================
    getHtml: function() {
        var headStr = '';
        if (pageMessage.userCheck) {
            headStr = '<ul class="stepBao">' +
					  '<li class="noborder"><a href="http://6.cn/logout.php">离开</a></li>' +
					  '<li><a href="http://6.cn/about/help.php">帮助</a></li>' +
					  '<li><a href="http://6.cn/watched/recent_watched.php">我看过的</a></li>' +
					  '<li><a href="http://6.cn/watched/quick_list.php">点播单</a>&nbsp;<a href="http://6.cn/watched/quick_list.php" id="qlNum">(0)</a></li>' +
					  '<li id="msnNum">' + (this.estr ? this.getExtraHtml('msn') : '') + '</li>' +
					  '<li id="myAccountTool" onmouseover="myaccount.lp(1)"  onmouseout="myaccount.lp(0)">' +
					  '<div id="myAccount" class="stepBao displayNone">' +
					  '<div class="top"></div>' +
					  '<div class="scontent">' +
					  '<ol class="stepBao">' +
					  '<li><a href="http://6.cn/user/mv.php">我的视频</a></li>' +
					  '<li><a href="http://6.cn/user/mp.php">我的专辑</a></li>' +
					  '<li><a href="http://6.cn/user/friend.php">我的圈子</a></li>' +
					  '<li><a href="http://6.cn/user/mc.php">我的评论</a></li>' +
					  '<li><a href="http://6.cn/user/inbox.php">我的邮箱</a></li>' +
					   '<li><a href="http://6.cn/profile/' + pageMessage.uid + '.html">我的主页</a></li>' +
					  '</ol>' +
					  '</div>' +
					  '<div class="bottom"></div>' +
					  '</div>' +
					  '<a class="sjx" href="http://6.cn/user/mv.php">我的菜单</a>' +
					  '</li>' +
					  '<li><b><a href="http://6.cn/profile/' + pageMessage.uid + '.html">' + pageMessage.username + '</a></b></li>' +
					  '</ul>';
            myaccount = {
                interval: null,
                displayAccount: function(type) {
                    if (this.interval) clearTimeout(this.interval);
                    var ele = $("myAccount");
                    var aEle = $(ele.parentNode).getElementsByClassName('sjx')[0];
                    if (type) {
                        ele.removeClass('displayNone');
                        aEle.addClass('sjxOn');
                    }
                    else {
                        ele.addClass('displayNone');
                        aEle.removeClass('sjxOn');
                    }
                },

                lp: function(type) {
                    if (type)
                        myaccount.displayAccount(1);
                    else
                        this.interval = setTimeout(function() { myaccount.displayAccount(0) }, 500);
                }
            };
        }
        else {
            headStr = '<ul>' +
					  '<li class="noborder"><a href="http://6.cn/about/help.php">帮助</a></li>' +
					  '<li><a href="http://6.cn/watched/recent_watched.php">我看过的</a></li>' +
					  '<li><a href="http://6.cn/watched/quick_list.php">点播单</a>&nbsp;<a href="http://6.cn/watched/quick_list.php" id="qlNum">(0)</a></li>' +
					  '<li><a href="http://6.cn/login.php">登录</a></li>' +
					  '<li><a href="http://6.cn/reg.php" >注册</a></li>' +
					  '</ul>';
        }
        return headStr;
    },


    write: function() {
        var htmlstr = this.getHtml();
        document.write(htmlstr);
        if (!this.estr && pageMessage.status == 'www') {
            this.get('header');
        }
    },

    getExtraHtml: function(type) {
        var htmlstr;
        switch (type) {
            case 'msn':
                if (pageMessage.msnNum == undefined) pageMessage.msnNum = 0;
                htmlstr = '<a ' + (pageMessage.msnNum ? 'class="red"' : '') + ' href="http://6.cn/user/inbox.php"><img src="http://r.6.cn/imges/new_6/' + (pageMessage.msnNum > 0 ? 'new' : 'no') + '_mail.gif" alt="" /> (' + (pageMessage.msnNum || 0) + ')</a>';
                break;
        }
        return htmlstr;
    },

    proEstr: function(str) {
        if (isNaN(str)) {
            arr = str.trim().split('|');
            pageMessage.msnNum = eval(arr[0]) || 0;
            pageMessage.score = eval(arr[1]);
            pageMessage.upic = arr[2];
            pageMessage.comments = arr[3];
            pageMessage.bwCheck = arr[4];
            pageMessage.curTime = arr[5];
            pageMessage.gender = arr[6] || 0;
            pageMessage.levelid = arr[7] || 0;
            pageMessage.level = arr[8] || '';
        }
        else
            pageMessage.curTime = str;
    },

    get: function(type) {
        var url = '/api/refreshuser.php';
        var callback = this.back.bind(this);
        var data = "";
        var extra = type;
        Request.reSend(url, data, callback, extra);
    },

    back: function(httpObj, extra) {
        var obj = httpObj.responseText;
        this.estr = getCookie('_info');
        this.proEstr(this.estr);
        if (extra == 'header') {
            if (isNaN(this.estr))
                $('msnNum').innerHTML = this.getExtraHtml('msn');
        }
    }
})
login.implement(new Events, new Options);

//index watch
var mdFor2 = new Class({

    options: {
        className: 'ays'
    },

    initialize: function(type, options) {
        this.setOptions(options);
        this.type = type;
        this.obj = {};
    },

    get: function() {
        $ES('.' + this.options.className).each(function(ele) {
            if (ele.getElementsByTagName('a')[0])
                this.obj[ele.id] = ele.getElementsByTagName('a')[0].href;
        }
		, this);
        var url = '/mdfor/' + this.type + '.js';
        var callback = this.back.bind(this);
        var data = "";
        Request.reSend(url, data, callback);
    },

    back: function(httpObj) {
        var ret = httpObj.responseText;
        var obj = Json.evaluate(ret);
        var yes_arr = obj.yes;
        var no_arr = obj.no;
        var dateObj = new Date();
        obj.yes.each(function(e) {
            if (e.start1 && e.end1) {
                try {
                    var start1 = aptime.toTime.pass(e.start1.split(','))();
                    var end1 = aptime.toTime.pass(e.end1.split(','))();
                }
                catch (e) {
                    var start1 = 0;
                    var end1 = 0;
                }

                if (pageMessage.curTime > start1 && pageMessage.curTime < end1) {
                    var mx = parseInt(1 / e.p1);
                    var idName = this.options.className + e.type;
                    if ($random(1, mx) == $random(1, mx) && this.obj[idName])
                        new Image().src = this.obj[idName];
                }
            }
        }, this);

        obj.no.each(function(e) {
            if (e.start2 && e.end2) {
                try {
                    var start2 = aptime.toTime.pass(e.start2.split(','))();
                    var end2 = aptime.toTime.pass(e.end2.split(','))();
                }
                catch (e) {
                    var start2 = 0;
                    var end2 = 0;
                }
                if (pageMessage.curTime > start2 && pageMessage.curTime < end2) {
                    var mx = parseInt(1 / e.p2);
                    if ($random(1, mx) == $random(1, mx) && e.src)
                        new Image().src = e.src;
                }
            }
        });
    }
});

mdFor2.implement(new Options);

// ------- quicklist and recent watched  -------
var ql = {

    pub: {
        limitTime: 10,
        timeType: 'day',
        nextVid: 0
    },

    updateNum: function(num) {
        $("qlNum").innerHTML = '(' + num + ')';
        if ($("qlistToolbar"))
            $("qlistToolbar").getElementsByTagName("em")[0].innerHTML = '(' + num + ')';
        if ($("qlManageNum"))
            $("qlManageNum").innerHTML = num;
    },

    addRecentWatched: function() {
        var vid = pageMessage.vid;
        var name = 'rw';
        this.addCookie(name, vid);
    },

    delCookie: function(name, vid) {
        var expiresTime = getExpTime(this.pub.limitTime, this.pub.timeType)
        var oldValue = getCookie(name);
        var newValue = '';
        var matchStr = 'v' + oldValue + 'v';
        replaceStr = 'v' + vid + 'v';
        newValue = matchStr.replace(replaceStr, 'v').slice(1, -1);
        setCookie(name, newValue, expiresTime, '/', cookieHost_6cn);
        return newValue;
    },

    addCookie: function(name, vid) {
        var expiresTime = getExpTime(this.pub.limitTime, this.pub.timeType);
        var oldValue = getCookie(name);
        var newValue = ''
        if (oldValue) {
            var matchStr = 'v' + oldValue + 'v';
            if (new RegExp('v' + vid + 'v').test(matchStr))
                return '';
            if (oldValue.split('v').length >= 100)
                newValue = oldValue.replace(/\d*v/, '') + 'v' + vid;
            else
                newValue = oldValue + 'v' + vid;
        }
        else
            newValue = vid;
        setCookie(name, newValue, expiresTime, '/', cookieHost_6cn);
        return newValue;
    },

    addEvents: function() {
        var emArr = $ES('em.addQlist', '#content');
        if (browser.ie6) {
            emArr.addEvents({ 'mouseover': function(e) { e.target.addClass('qklistOver') } .bindWithEvent(), 'mouseout': function(e) { e.target.removeClass('qklistOver') } .bindWithEvent() })
        }
        emArr.addEvent('click', ql.addQlist.bindWithEvent(ql));
    },

    addQlist: function(e) {
        var obj;
        if ($type(e) == 'element') obj = e;
        else obj = e.target;
        var name = 'ql';
        // 正常
        obj.style.backgroundImage = 'url(http://r.6.cn/imges/watch/qkDone.gif)';
        var imgObj = $(obj.parentNode.getElementsByTagName("img")[0]);
        var cacheObj = $(imgObj).getStyles('position', 'width', 'height', 'marginLeft', 'marginTop');
        imgObj.setStyles({ 'position': 'absolute', 'zIndex': 500 })
        imgObj.effects({ 'duration': 600, 'onComplete': function() { imgObj.setStyles(cacheObj).effect('opacity').start(0.6) } }).start({ 'width': parseInt(imgObj.width) * 1.5, 'height': parseInt(imgObj.height) * 1.5, 'marginLeft': -parseInt(imgObj.width) / 4, 'marginTop': -parseInt(imgObj.width) / 4, 'opacity': 0 });

        // 特殊 是专辑展示
        var url = obj.parentNode.getElementsByTagName("a")[0].href;
        var vid = /watch\/\d+\.html/.test(url) ? url.match(/\/(\d+)\.html/)[1] : obj.parentNode.getElementsByTagName("a")[0].rel;
        var newValue = '';
        newValue = this.addCookie(name, vid);
        // 在watch页的时候
        if ($("qlistToolbar")) {
            if ($("qlistToolbar").style.display == 'none')
                $("qlistToolbar").style.display = 'block';
        }
        // 补全
        if (newValue) {
            this.updateNum(newValue.split('v').length);
            if ($("qlistToolbar")) {
                var curArr = watchMore.pub.jobj[watchMore.pub.curv];
                for (var i = 0; i < curArr.videos.length; i++) {
                    if (curArr.videos[i].vid == vid) {
                        var curObj = curArr.videos[i];
                        var div1 = document.createElement('div');
                        if (pageMessage.vid == curObj.vid)
                            div1.style.backgroundColor = '#FFFFEA';
                        div1.innerHTML = '<span>' + curObj.ll + ' <img onclick="ql.delThisQlist(this,' + curObj.vid + ')" title="删除" src="http://r.6.cn/imges/watch/trash.gif" alt="" /></span> <p><a href="/watch/' + curObj.vid + '.html"><img src="' + curObj.pic + '" alt="" /></a></p><dl><dt><a href="/watch/' + curObj.vid + '.html">' + curObj.title + '</a></dt><dd>上传:<a href="/profile/' + curObj.uid + '.html" target="_blank">' + curObj.uploader + '</a></dd>' + ((pageMessage.vid == curObj.vid) ? '<dd style="color:#FF6600; font-weight:bold;">&raquo;&raquo; 正在播放</dd>' : '') + '</dl>'
                        $("qlistToolbarBaoBao").appendChild(div1);
                    }
                }
                this.checkWatchQlistTotal();
            }
        }
    },

    clearAllQlist: function() {
        if (confirm("你确定要清空么")) {
            if ($("qlistToolbar"))
                $("qlistToolbar").style.display = 'none';
            delCookie('ql');
            window.location.reload();
        }
    },

    delThisQlist: function(obj, vid) {
        if ($("qlistToolbarBaoBao")) {
            var divObj = obj.parentNode.parentNode;
            $("qlistToolbarBaoBao").removeChild(divObj);
            this.checkWatchQlistTotal();
        }
        else if ($("qlManageContent") && obj != null) {
            var divObj = obj.parentNode.parentNode;
            divObj.style.display = 'none'
        }
        var newValue = this.delCookie('ql', vid);
        var num = (newValue == '') ? 0 : newValue.split('v').length;
        this.updateNum(num)
    },

    qlistNotWatch: function() {
        var rw = getCookie('rw');
        var rwArr = rw.split('v');
        var ql = getCookie('ql');
        var qlArr = ql.split('v');
        var new_ql = array_diff(qlArr, rwArr).join('v');
        var expiresTime = getExpTime(this.pub.limitTime, this.pub.timeType);
        setCookie('ql', new_ql, expiresTime, '/', cookieHost_6cn);
        window.location.reload();
    },

    playAllQlist: function() {
        var str = getCookie('ql');
        if (str == '') return false;
        var vid = str.split('v')[0];
        window.location.href = '/watch/' + vid + 'q.html'
    },

    displayQlistBao: function() {
        var obj = $("qlistToolbarBaoBao");
        var parentobj = obj.parentNode;
        if (obj.style.display == 'none') {
            obj.style.display = 'block';
            parentobj.getElementsByTagName("h6")[1].style.display = 'block';
            $('qlistToolBarDisplay').style.backgroundPosition = 'left bottom';
            this.checkWatchQlistTotal();
        }
        else {
            obj.style.display = 'none';
            parentobj.getElementsByTagName("h6")[1].style.display = 'none';
            $('qlistToolBarDisplay').style.backgroundPosition = 'left top';
        }
    },

    checkWatchQlistTotal: function() {
        var num = $('qlistToolbarBaoBao').getElementsByTagName('div').length;
        $('qlistToolbarBaoBao').style.height = num > 6 ? '300px' : 'auto';
    },

    playCheck: function() {
        // check qlplay
        var matchArr = window.location.href.match(/(\d*)q/);
        if (matchArr) {
            var vid = matchArr[1];
            var arr = getCookie('ql').split('v');
            var arrPoint = arr.indexOf(vid);
            if (arrPoint < arr.length - 1)
                this.pub.nextVid = arr[arrPoint + 1];
        }
    },

    watchGet: function() {
        // get
        var url = '/api/getql.php?v=' + pageMessage.evid + '&q=' + (this.pub.nextVid ? 1 : 0);
        var data = '';
        var thisObj = this;
        var callback = function(e) { ql.watchBack(e) };
        Request.reSend(url, data, callback);
    },

    // ql_next
    watchBack: function(httpObj) {
        var ret = httpObj.responseText;
        var obj = Json.evaluate(ret);

        $E('.qlistToolBarHup em').innerHTML = '(' + obj.total + ')';
        // show or hidden
        if (obj.total == 0) {
            $("qlistToolbar").style.display = 'none';
            return false;
        }
        else
            $("qlistToolbar").style.display = 'block';


        for (var i = 0; i < obj.ql.length; i++) {
            var curObj = obj.ql[i];
            var div1 = document.createElement('div');
            if (pageMessage.vid == curObj.id)
                div1.style.backgroundColor = '#FFFFEA';
            div1.innerHTML = '<span>' + curObj.ll + ' <img onclick="ql.delThisQlist(this,' + curObj.id + ')" title="删除" src="http://r.6.cn/imges/watch/trash.gif" alt="" /></span> <p><a href="/watch/' + curObj.id + '.html"><img src="' + curObj.pic + '" alt="" /></a></p><dl><dt><a href="/watch/' + curObj.id + '.html">' + curObj.title + '</a></dt><dd>上传:<a href="/profile/' + curObj.uid + '.html" target="_blank">' + curObj.username + '</a></dd>' + ((pageMessage.vid == curObj.id) ? '<dd style="color:#FF6600; font-weight:bold;">&raquo;&raquo; 正在播放</dd>' : '') + '</dl>';
            $("qlistToolbarBaoBao").appendChild(div1);
        }

        // 加入 next
        if (obj.next != 0) {
            this.displayQlistBao();
            $$('.qlistToolBarHup')[0].adopt(new Element('a', { 'href': '/watch/' + obj.next.id + 'q.html' }).setHTML('<img src="' + obj.next.pic + '" width="36" height="25" title="" alt="" />')).adopt(new Element('a', { 'title': obj.next.title, href: '/watch/' + obj.next.id + 'q.html' }).setHTML('下一个'));
        }

    }
}

window.addEvent('load', ql.addEvents.bind(ql));
// 【MT】 ====== scroll show ======

var ScrollShow = new Class({

    options: {
        className: 'scrollShow',
        pageNumber: 3,
        pageWidth: 389,
        eleObj: {},
        baoClass: 'bao',
        headerClass: 'header'
    },

    initialize: function(elements, options) {
        this.setOptions(options);
        var eleArr = $ES('.' + this.options.className, '#' + elements);
        eleArr.each(function(e) {
            var id = getRandNoReapt('show');
            e.id = id;
            var total = getElementsByClassName(e, 'div', 'vlist1').length;
            var pageTotal = Math.ceil(total / this.options.pageNumber);
            var navEle = e.getElements('.' + this.options.headerClass + ' .nav')[0];
            var btnEle = e.getElements('.' + this.options.headerClass + ' .btn')[0];
            for (var i = 0; i < pageTotal; i++) {
                var a1 = document.createElement('a');
                a1.href = '#';
                a1.className = i ? '' : 'on';
                a1.innerHTML = i + 1;
                $(a1).addEvent('click', function(evt) { this.scroll(evt.target.innerHTML, id); evt.stop(); } .bindWithEvent(this)).addEvent('focus', function(evt) { evt.target.blur() } .bindWithEvent(this));
                navEle.appendChild(a1);
            }
            navEle.setStyle('display', 'block');
            for (var i = 0; i < 2; i++) {
                $(btnEle.getElementsByTagName('a')[i]).addEvent('click', function(evt) { this.lr(evt.target.innerHTML, id); evt.stop(); } .bindWithEvent(this)).addEvent('focus', function(evt) { evt.target.blur() } .bindWithEvent(this))
            }
            btnEle.setStyle('display', 'block').getElements('a')[0].addClass('disabled');
            this.options.eleObj[id] = { page: 1, pageTotal: pageTotal, navElea: navEle.getElements('a'), btnElea: btnEle.getElements('a') };
        }, this);
    },

    scroll: function(num, id) {
        if (this.options.eleObj[id].page == num) return;
        this.checkNav(num, id);
        this.checkBtn(num, id);
        this.getSrc(id);
        var end = -this.options.pageWidth * (num - 1);
        $(id).getElementsByClassName(this.options.baoClass)[0].effect('margin-left').start(end);
        this.options.eleObj[id].page = num;
    },

    lr: function(str, id) {
        var addNum = str == 'l' ? -1 : 1;
        var curNum = parseInt(this.options.eleObj[id].page) + addNum;
        if (curNum < 1)
            curNum = 1;
        else if (curNum > this.options.eleObj[id].pageTotal)
            curNum = this.options.eleObj[id].pageTotal;
        this.scroll(curNum, id)
    },

    getSrc: function(id) {
        if (!this.options.eleObj[id].getSrcNum) {
            this.options.eleObj[id].getSrcNum = 1;
            $A(getElementsByClassName($(id), 'div', 'vlist1')).each(function(e) {
                var pEle = e.getElementsByTagName('p')[0];
                pEle.getElementsByTagName('img')[0].src = pEle.getElementsByTagName('a')[0].rel;
            })
        }
    },

    checkNav: function(num, id) {
        this.options.eleObj[id].navElea.removeClass('on')[num - 1].addClass('on')
    },

    checkBtn: function(num, id) {
        var aArr = this.options.eleObj[id].btnElea.removeClass('disabled');
        if (num == 1)
            aArr[0].addClass('disabled');
        else if (num == this.options.eleObj[id].pageTotal)
            aArr[1].addClass('disabled');
    }
})

ScrollShow.implement(new Events, new Options);

