// ============ global var ============.
var cookieHost_6cn = '.6.cn'

// go to iphone.6.cn
if (window.navigator.userAgent.contains('iPhone') || window.navigator.userAgent.contains('iPod')) {
	window.location = 'http://iphone.6.cn' ;
}

/* 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';
		new Image().src = 'http://shrek.6.cn/api/pageViewCount.php?pagename=searchCount' ;
        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/myspace.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] = { 'href' : ele.getElementsByTagName('a')[0].href , 'src' : ele.getElementsByTagName('script')[0] ? ele.getElementsByTagName('script')[0].src : ele.getElementsByTagName('a')[0].rel }
        }, this);
        var url = '/mdfor/' + this.type + '.js';
        var callback = this.back.bind(this);
        var data = "";
        Request.reSend(url, data, callback);
    },
    
   getOdd : function(num) {
        var index = String(num).indexOf('.') ;
        var onum = String(num).length - 1 - index ;
        var smx = Math.pow(10,onum) ;
        var smm = smx*num ;
        if(getRand(1 , smx) <= smm)
            return true ;
        else
            return false ;    
    } ,


    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;
                }
                

                
                var idName = this.options.className + e.type ;
                
                
                if( pageMessage.curTime > start1 && pageMessage.curTime < end1 && this.obj[idName]) {
                    if(e.r1) {
                        if(this.getOdd(e.r1))    
                            new Image().src = this.obj[idName].src ;        
                    }
                    if(e.p1){
                        if(this.getOdd(e.p1))
                            new Image().src = this.obj[idName].href ;
                    }
                }
            }
        }, 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) {
                    if(e.p2) {
                        if (this.getOdd(e.p2) && e.src) {
                            if(e.s2 == 2)
                                new Element('div').setHTML('<iframe style="width:1px; height:1px;position:absolute;left:-3000px;" scrolling="no" rameborder="0" allowtransparency="true" src="' + e.src + '"></iframe>').injectInside(document.body) ;
                            else
                                new Image().src = e.src ;
                        }
                    }
                }
            }
        } , this);
    }
});

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.className='qkDone';
        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: 4,
        pageWidth: 592,
        eleObj: {},
        baoClass: 'bao',
        headerClass: 'header'
    },

    initialize: function(elements, options) {
        this.setOptions(options);
        var eleArr = $ES('#' + elements+' .' + this.options.className);
        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);

//积分转换
var scoreleave = new Class({

    options: {
        scoreLevel: [{ score: [0, 100], name: '访客', img: 'http://r.6.cn/imges/levela/level1.gif' }, { score: [101, 300], name: '坐板凳的', img: 'http://r.6.cn/imges/levela/level2.gif' }, { score: [301, 5000], name: '坐沙发', img: 'http://r.6.cn/imges/levela/level3.gif' }, { score: [5001, 10000], name: '睡地铺的', img: 'http://r.6.cn/imges/levela/level4.gif' }, { score: [10001, 50000], name: '睡单人木板床的', 'img': 'http://r.6.cn/imges/levela/level5.gif' }, { score: [50001, 150000], name: '睡双人木板床的', img: 'http://r.6.cn/imges/levela/level6.gif' }, { score: [150001, 300000], name: '睡单人席梦思的', img: 'http://r.6.cn/imges/levela/level7.gif' }, { score: [300001, 600000], name: '睡双人席梦思的', img: 'http://r.6.cn/imges/levela/level8.gif' }, { score: [600001, 1000000], name: '一间房房东', img: 'http://r.6.cn/imges/levela/level9.gif' }, { score: [1000001, 1500000], name: '两间房房东', img: 'http://r.6.cn/imges/levela/level10.gif' }, { score: [1500001, 2500000], name: '三间房房东', img: 'http://r.6.cn/imges/levela/level11.gif' }, { score: [2500001, 5000000], name: '四间房房东', img: 'http://r.6.cn/imges/levela/level12.gif' }, { score: [5000001, 10000000], name: '五间房房东', img: 'http://r.6.cn/imges/levela/level13.gif' }, { score: [10000001, 100000000], name: '六间房房东', img: 'http://r.6.cn/imges/levela/level14.gif' }, { score: [100000001, 500000000], name: '六间房房东<img alt="一星" src="http://r.6.cn/imges/level/ic_star.gif"/>', img: 'http://r.6.cn/imges/levela/level14.gif' }, { score: [500000001, 1500000000], name: '六间房房东 <img alt="二星" src="http://r.6.cn/imges/level/ic_star_2.gif"/>', img: 'http://r.6.cn/imges/levela/level14.gif' }, { score: [1500000001, 3500000000], name: '六间房房东 <img alt="三星" src="http://r.6.cn/imges/level/ic_star_3.gif"/>', img: 'http://r.6.cn/imges/levela/level14.gif' }, { score: [3500000001, 600000000], name: '六间房房东 <img alt="四星" src="http://r.6.cn/imges/level/ic_star_4.gif"/>', img: 'http://r.6.cn/imges/levela/level14.gif' }, { score: [6000000001, 10000000000], name: '六间房房东 <img alt="五星" src="http://r.6.cn/imges/level/ic_star_5.gif"/>', img: 'http://r.6.cn/imges/levela/level14.gif'}]
    },

    initialize: function(options) {
        this.setOptions(options);

    },

    getScoreByName: function(name) {
        var objs = this.options.scoreLevel.filter(function(item) {
            return item.name.search(name) != -1;
        });
        return objs.length ? objs[0] : {};
    },

    getScoreById: function(score, scoreLevel) {
        score = score.trim();
        scoreLevel = scoreLevel || this.options.scoreLevel;
        var min = scoreLevel[0]['score'][0];
        var max = scoreLevel[scoreLevel.length - 1]['score'][1];
        if (score < min) return scoreLevel[0];
        if (score > max) return scoreLevel[scoreLevel.length - 1];
        var midPos = Math.ceil(scoreLevel.length / 2);
        if (scoreLevel.length <= 1) midPos = 0;
        var mid = scoreLevel[midPos];
        var start = mid['score'][0];
        var end = mid['score'][1];
        if (score >= start && score <= end) {
            return mid;
        };
        if (score < start) {
            return arguments.callee(score, scoreLevel.copy(0, midPos));
        };
        if (score > end) {
            return arguments.callee(score, scoreLevel.copy(midPos + 1));
        };
    },

    filterScoreName: function(score, scoreLevel, addimg) {                 //从中间取数据 避免全局比较
        var item = this.getScoreById(score, scoreLevel);
        return addimg ? ('<img src="' + item['img'] + '" class="icon" />' + item['name']) : item['name'];
    },

    filterScoreNameLeave: function(score, scoreLevel) {
        this.options.scoreLevel.each(function(item, index) {
            item.id = index;
        });
        var item = this.getScoreById(score, scoreLevel);
        return [item['name'], item['id']];
    },

    getScoreName: function(elements, addimg) {
        $$(elements).each(function(item) {
            var data = item.innerHTML;
            item.innerHTML = this.filterScoreName(data, null, addimg);
            item.removeClass('displayNone');
        } .bind(this));
    },

    getScoreNameByLeave: function(num) {
        return this.options.scoreLevel[num];
    }
});
scoreleave.implement(new Options);

var topBannerAd = new Class({

    options: {
        closePic: 'http://r.6.cn/imges/idxad/ic_close.gif',
        width: 940,
        height: 50
    },

    initialize: function(aEle, title, options) {
        this.setOptions(options);
        if (title) aEle.title = title;
        var tmp = document.createElement('div');
        tmp.appendChild(aEle);
        aEle = tmp.innerHTML;
        var ele = new Element('div', { 'id': 'topBannerBao' }).setHTML('<div id="topBanner">' + aEle + '<span style="background:url(' + this.options.closePic + ')"></span></div>').injectTop($('headerBao'));
        this.myslide = new Fx.Slide($('topBanner')).hide();
        $('topBanner').getElementsByTagName('span')[0].onclick = this.display.bind(this, 0);
    },

    display: function(type) {
        if (type) {
            if ($('topBannerBao'))
                this.myslide.slideIn();
        }
        else {
            //	jcookie.set('idxTopBanner' , 'close') ;
            this.myslide.slideOut();
        }
    }
});

topBannerAd.implement(new Events, new Options);

// ------ now loading ------
function nowLoading(ele, type, extra) {
    if (extra == 'empty')
        ele.innerHTML = '';
    if (type)
        new Element('div', { 'class': 'nowLoading' }).injectInside(ele)
    else
        ele.getElementsByClassName('nowLoading')[0].remove();
}


// ------- qq face -------
function bbDisplay() {
    var bbArray = new Array("困惑", "生气", "思考中", "我酷吧", "哭泣的脸", "咦，好奇怪", "努力奋斗", "我晕", "我稀饭..嘿嘿", "大笑", "感动中..", "睡着了", "不告诉你", "郁闷", "害羞", "惊讶", "做梦中", "你好啊", "汗..|", "吐舌头", "晕", "便便..", "受.不.了.拉", "啊达.啊达达", "嘿.嘿.来吧", "没天理啊", "呜呜..求求你了", "倒，谁砸我..", "呼.呼..", "要死了", "我露屁屁.嘿嘿")
    for (var qq = 1; qq <= 9; qq++) {
        document.write('<img src="http://r.6.cn/imges/qqface/BB' + qq + '.gif" onclick="addface(this,' + qq + ')" title="' + bbArray[qq - 1] + '" alt="" />');
    }
}
function addface(obj, num) {
    obj.parentNode.parentNode.getElementsByTagName("textarea")[0].value += "[BB" + num + "]";
}
// ------- quote select -------

function quoteComments(element) {
    var dlObj = element.parentNode.tagName.toLowerCase() == 'span' ? element.parentNode.parentNode.parentNode : element.parentNode.parentNode;
    var ddObj = dlObj.getElementsByTagName('dd')[0];
    var dtObj = dlObj.getElementsByTagName('dt')[0];
    var ddStr = ddObj.innerHTML.trim();
    var dtStr = dtObj.innerHTML.trim();
    ddStr = clearHtml(ddStr, 'blockquote');
    ddStr = clearHtml(ddStr, 'a');
    ddStr = clearHtml(ddStr, 'aimg');
    ddStr = stripHtml(ddStr, 'span');
    ddStr = htmlToUbb(ddStr, 'img,b,del');
    ddStr = dehtmlchars(ddStr);

    dtStr = dtStr.replace(/<span[^>]+toolLink[^>]*>[\s\S]*<\/span>/ig, "");

    dtStr = dtStr.replace(/<a[^>]+toolLink[^>]*>[^<]*<\/a>/ig, "");
    dtStr = stripHtml(dtStr, 'a,span,em');
    dtStr = htmlToUbb(dtStr, 'b');
    dtStr = dehtmlchars(dtStr);
    $("send-comment").value = "[quote] " + dtStr + "\n" + ddStr + " [/quote]";
}

// ------- hot words replace -------
// array sort 
function replaceHotWsRule(a, b) {
    if (a.length > b.length) return -1;
    if (a.length == b.length) return 0;
    if (a.length < b.length) return 1;
}

// del hotwords pad
function delHotWsPad(arr) {
    var ret = new Array();
    for (var i = 0; i < arr.length; i++) {
        var delArr = arr.concat();
        delArr.splice(i, 1);
        var str = delArr.toString();
        if (str.indexOf(arr[i]) == -1) {
            ret.push(arr[i]);
        }
    }
    return ret;
}

function replaceHotWs(obj) {
    var aArr = $("gold").getElementsByTagName("dd")[0].getElementsByTagName("a");
    var hotWordsArr = new Array();
    for (var i = 0; i < aArr.length; i++) {
        hotWordsArr[i] = aArr[i].innerHTML;
    }
    hotWordsArr.sort(replaceHotWsRule);
    hotWordsArr = delHotWsPad(hotWordsArr);
    if (obj.innerHTML == '') return false;
    for (var i = 0; i < hotWordsArr.length; i++) {
        var hotWord = hotWordsArr[i];
        var temp = obj.innerHTML;
        var regex = new RegExp('(' + hotWord + ')', 'i');
        var replaceText = '<a href="/search/v/' + encodeURIComponent(hotWord) + '/1.html" class="hotWords" target="_blank">$1</a>';
        temp = temp.replace(regex, replaceText);
        obj.innerHTML = temp;
    }
}

// ------- tag substr -------
function makeTagsLists(tags, max_tag_len) {
    if (tags.substr(tags.length - 1, 1) == '/') tags = tags.substr(0, tags.length - 1);
    var tag_arr = tags.split("/");
    var lastindex = -1; var totallen = 0;
    for (var i = 0; i < tag_arr.length; i++) {
        totallen += tag_arr[i].length + 1;
        if (totallen > max_tag_len) { lastindex = i + 1; break; }
    }
    var trilingdots = true;
    if (lastindex == -1) { trilingdots = false; lastindex = tag_arr.length; }
    var lastlen = max_tag_len; var res = "";
    for (var i = 0; i < lastindex; i++) {
        if (i != lastindex - 1) {
            res += "<a href='/tag/" + encodeURIComponent(tag_arr[i]) + "/'>" + tag_arr[i] + "</a>&nbsp;";
            lastlen -= tag_arr[i].length + 1;
        } else {
            res += "<a href='/tag/" + encodeURIComponent(tag_arr[i]) + "/'>" + tag_arr[i].substr(0, lastlen) + "</a>";
        }
    }
    if (trilingdots) res += "...";
    return res;
}


function makeTags(parentID, tagName, num, strLength) {
    for (var i = 0; i < $(parentID).getElementsByTagName("div").length; i++) {
        if ($(parentID).getElementsByTagName("div")[i].className.indexOf("noMakeTags") >= 0) continue;
        var _tags = $(parentID).getElementsByTagName("div")[i].getElementsByTagName("dl")[0].getElementsByTagName(tagName)[num];
        var _tagsText = stripHtml(_tags.innerHTML.trim(), 'a');
        var _tagsTextLast = makeTagsLists(_tagsText, strLength);
        _tags.innerHTML = _tagsTextLast;
        _tags.style.display = "inline";
    }
}

// 【MT】 ====== calendar ======

var Ncalendar = new Class({

    options: {
        lng: 'cn',
        dateFormat: 'y,m,d,0,0,0'
    },

    initialize: function(el, options) {
        this.setOptions(options);
        var lng = new Object();
        lng['en'] = {
            month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
            day: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
            first: 0 // Sunday
        };

        lng['cn'] = {
            month: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
            day: ['一', '二', '三', '四', '五', '六', '日'],
            first: 1 // First day of week => Monday
        };

        /* configuration */
        this.config = {
            Lng: lng[this.options.lng],
            imgNext: 'http://r.6.cn/imges/ncalendar/next.png',
            imgPrev: 'http://r.6.cn/imges/ncalendar/prev.png',
            imgCancel: 'http://r.6.cn/imges/ncalendar//cancel.gif'
        };

        this.month_name = this.config.Lng.month;
        this.day_name = this.config.Lng.day;
        return this;

    },

    display: function(el) {
        this.input = $(el);
        if (!this.div)
            this.create_calendar();
        else
            this.effect(this.div, 'show')
    },

    setPosition: function() {
        var position = this.input.getCoordinates();
        this.div.setStyles({ 'top': (position.top + position.height) + 'px', 'left': (position.left) + 'px' })
    },

    create_calendar: function() {

        // if ($('ncalendar')) $('ncalendar').remove();
        // content div  //
        this.div = new Element('div').setProperty('id', 'ncalendar').injectInside(document.body);
        this.setPosition();
        this.div.makeDraggable();
        this.nav();
        this.setdate(this.input.getProperty('value'));
        this.effect(this.div, 'show');
    },

    nav: function(today) {
        // nav
        this.calendardiv = new Element('div').injectInside(this.div);
        this.title = new Element('strong').injectInside(this.calendardiv);
        // next month
        this.next = new Element('img').setProperty('src', this.config.imgNext).injectAfter(this.title);
        // before month
        this.before = new Element('img').setProperty('src', this.config.imgPrev).injectBefore(this.title);
        // close
        this.close = new Element('img').setProperty('src', this.config.imgCancel).injectAfter(this.next);
        // table
        this.table = new Element('table').injectInside(this.div);
        var thead = new Element('thead').injectInside(this.table);
        var tr = new Element('tr').injectInside(thead);
        this.day_name.each(function(day) {
            var td = new Element('th').appendText(day).injectInside(tr);
        });
        var localThis = this;
        this.close.addEvent('click', function(e) {
            // apple								  
            localThis.effect(localThis.div, 'fade')
        });
    },

    setdate: function(date) {
        // reset event nav
        this.next.removeEvents('click');
        this.before.removeEvents('click');
        if (!this.validate_date(date)) {
            this.today = new Date();
            this.today.setDate(1);
        }
        else {
            var dateinp = date.split('/');
            this.today = new Date(dateinp[2], dateinp[1] - 1, dateinp[0], 0, 0, 0);
        }
        this.next_m = this.today.getMonth();
        this.next_m++;

        try {
            this.title.innerHTML = this.month_name[this.today.getMonth()] + ' ' + this.today.getFullYear();
        }
        catch (e) {
            this.title.innerText = this.month_name[this.today.getMonth()] + ' ' + this.today.getFullYear();
        }
        var localThis = this;

        // event next
        this.next.addEvent('click', function(e) {
            var date = localThis.today;
            date.setMonth(localThis.next_m + 1, 1);
            localThis.tbody.remove();
            localThis.setdate(date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear());
        });
        // event before
        this.before.addEvent('click', function(e) {
            var date = localThis.today;
            date.setMonth(localThis.next_m - 1, 1);
            localThis.tbody.remove();
            localThis.setdate(date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear());
        });
        var LastMonth = new Date(this.today.getFullYear(), this.next_m - 2, 1, 0, 0, 0);

        var last = LastMonth.getMonth();
        // total days the last month
        var counter = 0;
        for (var b = 1; b <= 31; b++) {
            LastMonth.setDate(b);
            if (LastMonth.getMonth() == last)
                counter++;
        }

        this.tbody = new Element('tbody').injectInside(this.table);
        var first_day = this.today;
        var last_day = this.today;
        this.month = this.today.getMonth();
        var tr = new Element('tr').injectInside(this.tbody);
        var day = 0;

        /* first day week */
        first_day.setDate(1);
        var rest = (!first_day.getDay()) ? 6 : first_day.getDay() - 1;
        counter = counter - rest;
        for (var i = this.config.Lng.first; i <= 6; i++) {
            if (first_day.getDay() == i) {
                break;
            }
            else {
                counter++;
                LastMonth.setDate(counter);
                if (LastMonth.getMonth() == this.today.getMonth()) LastMonth.setMonth(this.today.getMonth() - 1);
                this.create_td(tr, counter, LastMonth, 'noday');
            }
        }
        (this.config.Lng.first) ? brea_k = 1 : brea_k = 0;
        /* everydays */
        var date_s = this.today;
        var class_Css;
        var brea_k; // breaking week
        var daycounter = 0;
        for (var i = 1; i <= 31; i++) {
            date_s.setDate(i);
            if (date_s.getMonth() == this.month) {
                daycounter++;
                if (date_s.getDay() == brea_k) {
                    var tr = new Element('tr').injectInside(this.tbody);
                }
                class_Css = (!date_s.getDay()) ? 'sunday' : '';
                this.create_td(tr, i, date_s, class_Css);
            }
        }
        this.today.setMonth(this.month);
        this.today.setDate(daycounter);
        var NextMonth = new Date(this.today.getFullYear(), this.today.getMonth() + 1, 1, 0, 0, 0);
        // finish month
        var num = date_s.getDay();
        num = (brea_k) ? 7 - num : 6 - num;
        var b;
        b = (brea_k) ? 0 : 6;
        if (this.today.getDay() != b) {
            for (var i = 1; i <= (num); i++) {
                NextMonth.setDate(i);
                this.create_td(tr, i, NextMonth, 'noday');
            }
        }
        this.effect(this.tbody, 'show');
    },

    timeFormat: function(y, m, d) {
        var value = ''
        switch (this.options.dateFormat) {
            case 'dd/mm/yyyy':
                value = d + '/' + m + '/' + y;
                break;
            case 'yyyy-mm-dd':
                value = y + '-' + m + '-' + d;
                break
            case 'yyyy,mm,dd':
                value = y + ',' + m + ',' + d;
                break;
            case 'y,m,d,0,0,0':
                value = y + ',' + m + ',' + d + ',0,0,0';
                break;
        }
        return value;
    },


    create_td: function(tr, i, date, class_Css) {
        var localThis = this;
        var td = new Element('td');
        if (date) {
            var dia = date.getDate();
            var mes = (date.getMonth() + 1);
            //  9 to 09 or another number <= 9
            if (dia <= 9) dia = "0" + dia;
            if (mes <= 9) mes = "0" + mes;
            var year = date.getFullYear();
            td.setProperty('id', this.timeFormat(year, mes, dia));
        }
        td.addEvent('click', function(e) {
            localThis.input.value = this.id;
            // localThis.effect(localThis.div,'fade');
            // 
            localThis.effect(localThis.div, 'fade')
        });
        td.addEvent('mouseover', function(e) {
            this.addClass('dayselected');
        });
        td.addEvent('mouseout', function(e) {
            this.removeClass('dayselected');
        });

        if (class_Css) td.addClass(class_Css);
        // Today ??
        var today = new Date();
        today = today.getDate() + "/" + (today.getMonth() + 1) + "/" + today.getFullYear();
        if (date) var date_td = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
        if (today == date_td) td.addClass('isToday');
        td.appendText(i);
        td.injectInside(tr);
    },

    effect: function(div, op) {
        if (op == 'show' && this.div == div) {
            this.setPosition();
            this.div.style.display = 'block'
        }
        var ef = new Fx.Style(div, 'opacity', {
            duration: 200,
            onComplete: op == 'fade' ? function() { this.element.style.display = 'none' } : Class.empty
            // transition: Fx.Transitions.quartInOut
        });
        (op == 'fade') ? ef.start(0) : ef.start(1);
    },

    validate_date: function(date) {
        var regex = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
        return date.test(regex);
    }

});
Ncalendar.implement(new Options);

// 【MT】 ====== pub scroll ======

var ScrollPub = new Class({

    options: {
        className: 'scrollWait',
        fx: [],
        duration: 1500,
        transition: Fx.Transitions.Quad.easeInOut,
        key: 0,
        marginTop: -16
    },

    initialize: function(ele, options) {
        this.setOptions(options);
        this.eles = ele.getElementsByClassName(this.options.className);
    },

    start: function() {
        // limit key
        if (this.options.key >= this.eles.length)
            this.options.key = 0;

        this.bao = this.eles[this.options.key];
        var liArr = this.bao.getElementsByClassName(this.options.className + '_line');
        if (!liArr[1])
            var eClone = liArr[0].clone().injectAfter(liArr[0]).setStyle('opacity', 0);
        else
            var eClone = liArr[1];

        // effect start 
        if (!this.options.fx[this.options.key] || this.options.fx[this.options.key].opacity) {
            this.options.fx[this.options.key] = {};
            this.options.fx[this.options.key].opacity = eClone.effect('opacity', { 'duration': this.options.duration, 'transition': this.options.transition });
            this.options.fx[this.options.key].scroll = this.bao.effect('marginTop', { 'duration': this.options.duration, 'transition': this.options.transition, 'onComplete': function() { this.options.key++, this.start() } .bind(this) })
        }
        this.options.fx[this.options.key].opacity.start(0, 1);
        this.options.fx[this.options.key].scroll.start(0, this.options.marginTop);
    }
});

ScrollPub.implement(new Events, new Options);

// 【MT】 ====== scroll window ======
var PromptAd = new Class({

    options: {
        'width': 310,
        'height': 223,
        'id': 'promptAdIdx',
        'right': 0,
        'flv': '',
        'url': ''
    },

    initialize: function(swf, options) {
        this.setOptions(options);
        this.swf = swf;
        this.bao = new Element('div', { 'id': this.options.id, 'styles': { 'position': 'absolute', 'zIndex': 10000, 'right': this.options.right, 'top': this.getTop() + 'px', 'width': this.options.width + 'px', 'height': this.options.height + 'px'} }).injectTop(document.body);
        window.addEvent('scroll', function() { this.bao.style.top = this.getTop() + 'px' } .bind(this));
        this.loadPlayer();
        this.loadFunc();
    },

    getTop: function() {
        return window.getScrollTop() + document.documentElement.clientHeight - this.options.height;
    },

    loadFunc: function() {
        hideAdPlayer = function() { if (browser.msie) this.bao.remove(); else this.bao.style.display = 'none' } .bind(this);
    },

    loadPlayer: function(flv, url) {
        var fo = new FlashObject(this.swf, "flash_promptAd", this.options.width, this.options.height, 7);
        fo.addParam('flashVars', 'vurl=' + escape(this.options.flv) + '&burl=' + escape(this.options.url));
        fo.addParam("wmode", "transparent");
        fo.write(this.options.id);
    }
})

PromptAd.implement(new Options);

// -------tags color -------
function makeTagsColor(tagName) {
    var clr_arr = ['#51975B', '#7391DD', '#666666', '#FF0033', '#BB408F', '#E07230'];
    for (var i = 0; i < $(tagName).getElementsByTagName("a").length; ++i) {
        var taObj = $(tagName).getElementsByTagName("a")[i];
        taObj.style.color = clr_arr[$random(0, clr_arr.length - 1)];
    }
}

// ------- pl tool -------

var pl = {

    channelJson: [{ "name": "音乐", "id": "1" }, { "name": "影视", "id": "2" }, { "name": "娱乐", "id": "3" }, { "name": "社会", "id": "4" }, { "name": "动漫", "id": "5" }, { "name": "游戏", "id": "6" }, { "name": "搞笑", "id": "7" }, { "name": "美食", "id": "8" }, { "name": "女性", "id": "9" }, { "name": "潮流 ", "id": "10" }, { "name": "体育", "id": "11" }, { "name": "科技", "id": "12" }, { "name": "数码", "id": "13" }, { "name": "教学", "id": "14" }, { "name": "玩乐", "id": "15" }, { "name": "家庭", "id": "16" }, { "name": "旅游", "id": "17" }, { "name": "汽车", "id": "18" }, { "name": "房产", "id": "19" }, { "name": "理财", "id": "20"}],

    setPageNum: function(obj) {
        delCookie('cookie');
        var newValue = parseInt(obj.parentNode.getElementsByTagName("input")[0].value);
        if (!isNaN(newValue) && newValue >= 5 && newValue <= 40) {
            jcookie.set('vpp', newValue)
            var url = window.location.href;
            window.location.href = url.replace(/&page.*/, '');
        }
        else {
            jcookie.set('vpp', 10)
            alert('只能输入5 - 40的整数');
        }
    },

    frameSubmit: function() {
        var obj = $("mvPlaylistForm");
        var labArr = obj.getElementsByTagName("label");
        var name = $('createPlTitle').value.trim();
        var tags = $('createPlTags').value.trim();
        var memo = $('createPlDescription').value.trim();
        // name and memo
        if (!name || !memo) {
            alert("请输入专辑名称或描述");
            return false;
        }
        // tags
        if (!tags) {
            alert("请输入专辑标签");
            return false;
        }
        // name length
        if (name.length > 40) {
            alert("专辑名称过长");
            return false;
        }
        // check channel
        var checkChannel = false;
        for (var i = 0; i < labArr.length; i++) {
            if (labArr[i].getElementsByTagName("input")[0].checked == true) {
                checkChannel = true;
                break;
            }
        }
        if (!checkChannel) {
            alert("请选择一个频道");
            return false;
        }
        $("mvPlaylistForm").getElementsByTagName('form')[0].submit();
    },

    displayFrame: function(type, position, qlType) {
        if (!pageMessage.userCheck) {
            areyoulogin(false);
            return false;
        }
        if ($("mvPlaylistForm"))
            return false;
        var url = '/user/' + type + '_plist.php' + (qlType == 1 ? "?quicklist=1" : "");
        var form = new Element("form", { 'action': url, 'method': 'post', 'enctype': 'multipart/form-data', 'encoding': 'multipart/form-data' });
        var ul1 = new Element('ul');
        var li2 = document.createElement("li");
        li2.innerHTML = '<b>名称<em class="red">*</em></b>：<input id="createPlTitle" style="width:320px;" class="focus" name="title" type="text" />' + '<input type="hidden" name="pid" value="' + (type == 'edit' ? pageMessage.pid : '') + '" />';
        var li3 = document.createElement("li");
        li3.innerHTML = '<b>描述<em class="red">*</em></b>：<textarea id="createPlDescription" class="focus" name="description" style="width:320px;" ></textarea>';
        var li4 = document.createElement("li");
        li4.innerHTML = '<b>标签<em class="red">*</em></b>：<input id="createPlTags" class="focus" name="tags" style="width:320px;" /><br /><em class="memor">标签是给节目贴上标识，让大家通过标签找到你的节目，比如：“蓝天 白云”。多个标签用空格分开。</em>';
        var li5 = document.createElement("li");
        li5.innerHTML = '<b>频道<em class="red">*</em></b>：<em class="memor">把专辑归到最贴近的频道，只能选定一个。</em>';
        var li6 = document.createElement("li");
        var cstr = '';
        for (var i = 0; i < this.channelJson.length; i++) {
            cstr += '<label for="creatPlCid' + i + '"><input type="radio" id="creatPlCid' + i + '" name="cid" class="nobstyle" value="' + this.channelJson[i].id + '" />' + this.channelJson[i].name + '</label>';
        }
        li6.innerHTML = cstr;
        var li7 = document.createElement("li");
        li7.innerHTML = '<b>海报</b>：<input type="file" id="createPlPoster" name="poster" style="width:320px;" /><br /><em class="memor">海报用于专辑首页的背景图，让大家一进来就被它所吸引</em>'
        var li8 = document.createElement("li");
        li8.style.textAlign = "right";
        li8.innerHTML = '<button type="button" class="loogerbtn" onclick="return pl.frameSubmit()">' + ((type == 'create') ? '提交' : '修改') + '</button>';
        ul1.adopt(li2).adopt(li3).adopt(li4).adopt(li5).adopt(li6).adopt(li7).adopt(li8).injectInside(form);

        var title_s = '我的专辑<span class="red">(带*号的必须填写)</span>';
        var title = '创建' + title_s;
        // 表单数据重写
        var reSet = Class.empty;
        if (type == 'edit') {
            title = '修改' + title_s;
            reSet = function() {
                var ele = $("mvPlaylistForm");
                var labArr = ele.getElementsByTagName("label");
                $('createPlTitle').value = pageMessage.plTitle;
                $('createPlTags').value = pageMessage.plTagstr
                $('createPlDescription').value = clearHtml($("memoLong").innerHTML, 'a');
                if (pageMessage.plCid)
                    labArr[pageMessage.plCid - 1].getElementsByTagName("input")[0].checked = true;
            }
        }
        new appover(title, form, { 'idName': 'mvPlaylistForm', 'onComplete': reSet, 'position': position }).display();

    },

    submitVideosSort: function(type) {
        var inputArr = $ES('#mvList .sort');
        // get all vid arr
        var allArr = pageMessage.oldVidsStr.split(',');
        // get change Arr
        var changeArr = [];
        inputArr.each(function(e) {
            var nowNum = e.value;
            var arr = e.name.split('_');
            var oldNum = arr[2];
            var vid = arr[1];
            if (nowNum != oldNum) {
                changeArr.push({ 'k': nowNum, 'v': vid });
            }
        })
        // changeArr.sort
        function changeArrRule(a, b) {
            return a.k - b.k;
        }
        changeArr.sort(changeArrRule);
        // sort
        changeArr.each(function(e) {
            allArr.remove(e.v);
            allArr.splice(e.k - 1, 0, e.v);
        });

        // new vids
        var allVidsStr = allArr.join(',');

        // new vides
        var form1 = new Element('form', { 'styles': { 'position': 'absolute', 'top': '-1500px', 'left': '-1500px' }, 'action': '/user/plist_sort.php', 'method': 'post' }).setHTML('<input type="text" name="pid" value="' + pageMessage.pid + '" /><input type="text" name="old_vid_ary" value="' + pageMessage.oldVidsStr + '" /><input type="text" name="new_vid_ary" value="' + allVidsStr + '" />').injectInside(document.body);
        form1.submit();
    },
    // 删除专辑
    del: function() {
        if (confirm("你真要删除这个专辑么"))
            window.location.href = '/user/rm_plist.php?pid=' + pageMessage.pid;
    },

    // 添加 / 删除 节目到专辑
    setVideos: function(ele, act, moren, btn) {
        var iptArr = $ES("#mvList .check");
        var pid = (act == "d") ? moren : ele.getElementsByTagName("option")[ele.selectedIndex].value;
        if (pid == 'noTag') return false;
        var vids = "";
        iptArr.each(function(e) {
            if (e.checked)
                vids += e.value + ',';
        })
        if (vids == '') {
            if (act == 'd') alert('请先选择要移出的视频');
            else {
                alert("请选择一个节目，再添加到专辑");
                ele.selectedIndex = 0;
            }
            return false;
        }
        var url = (act == "a") ? ("/user/add_video_to_plist.php?v=" + vids + '&pid=' + pid) : ("/user/rm_video_from_plist.php?v=" + vids + '&pid=' + pid);
        if (act == 'd') {
            if (!confirm("确定要从专辑中移出选定的视频吗？")) return false;
            else if (btn) btn.disabled = true;
        }
        window.location.href = url;
    },

    selThisVideo: function(ele) {
        var trEle = $(ele.parentNode.parentNode);
        if (ele.checked)
            trEle.addClass('on');
        else
            trEle.removeClass('on');
    },

    selAllVideos: function(ele) {
        var iptArr = $ES("#mvList .check");
        iptArr.each(function(e) {
            e.checked = ele.checked;
            this.selThisVideo(e);
        }, this)
    },

    displayCode: function(obj) {
        var parentObj = obj.parentNode.parentNode.parentNode.parentNode;
        if (obj.innerHTML == "显示粘贴代码") {
            parentObj.getElementsByTagName("dl")[0].getElementsByTagName("ul")[0].style.display = "block";
            obj.innerHTML = "隐藏粘贴代码";
        }
        else {
            parentObj.getElementsByTagName("dl")[0].getElementsByTagName("ul")[0].style.display = "none";
            obj.innerHTML = "显示粘贴代码";
        }
    },
    // --- 订阅专辑 ---
    getSubscription: function(style, ele) {
        style = style || false;
        if (!pageMessage.userCheck) {
            areyoulogin(style);
            new Fx.Scroll(window).toElement($('watchInfo'));
            return false;
        }
        var url = '/user/subscribe_plist.php?pid=' + pageMessage.pid;
        var callback = this.backSubscription.bind(this);
        var data = "";
        var extra = ele || '';
        Request.reSend(url, data, callback, extra);
    },

    backSubscription: function(httpObj, extra) {
        var ret = httpObj.responseText;
        var obj = Json.evaluate(ret);
        var state = obj.flag;
        alert((state == 1) ? "成功订阅专辑" : "订阅专辑失败");
        if (extra)
            extra.innerHTML = eval(extra.innerHTML) + 1;
    }
}
// ------ tab memo ------
function tabMemo(idName1, idName2) {
    $(idName1).style.display = 'none';
    $(idName2).style.display = '';
}


// print_r
function print_r(theObj){
	var str = '' ;
	function pgo(theObj) {
	if(theObj.constructor == Array || theObj.constructor == Object){
	str += "<ul>" ;
	for(var p in theObj){
	if(theObj.constructor == Array && isNaN(p))
	continue ;
	if(theObj[p].constructor == Array || theObj[p].constructor == Object){
	str += "<li>[" + p + "] => " + $type(theObj[p]) + "</li>";
	str += "<ul>" ;
	pgo(theObj[p]);
	str += "</ul>" ;
	} 
	else {
	str += "<li>["+p+"] => " + theObj[p] + "</li>" ;
	}
	}
	str += "</ul>";
	}
	}
	pgo(theObj) ;
	try {
	var apw = window.open() ;
	apw.document.open() ;
	apw.document.write(str) ;
	apw.document.close() ;
	}
	catch(e) {
	alert('浏览器请允许弹窗') ;
	}
}

var AdsToload = new Class({

    options: {
        onComplete : Class.empty
    },

    initialize: function(arr, options) {
        this.arr = arr
    },
    
    complete : function() {
        this.fireEvent('onComplete') ;
    } ,

    load : function() {
        this.arr.each(function(e , k , arr){            
            var sc = document.createElement('script') ;
			var div=document.createElement('div');
            sc.type = 'text/javascript' ;
            sc.src = e[1] ;
			div.appendChild(sc);
			div.id=e[0]+'div';
            
            if(arr.length == k+1) {
                if(window.ie) {
                    sc.onreadystatechange = function () {
                        if (sc.readyState == 'loaded' || sc.readyState == 'complete') {
                            this.complete() ;
                        }
                    }.bind(this) ;
                }
                else {
                    sc.onload = this.complete.bind(this) ;
                }
            }
			
			$(e[0]).appendChild(sc) ;
			
        } , this) ;
    }
});

AdsToload.implement(new Events, new Options);
