// ============ 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' ;
}

// ============ ajaxClass ( XMLHttp Object Pool and XMLHttp chunnel Pool ) ============

var Request = new function(){

this.pool = new Array();

this.getXMLHttp = function (chunnel)
{
	
   if(chunnel != null)
   {
      for (var a = 0; a < this.pool.length; a++)
      {
         if(this.pool[a]["chunnel"] == chunnel)
         {
	        if(this.pool[a]["obj"].readyState == 0 || this.pool[a]["obj"].readyState == 4)
            {
               return this.pool[a]["obj"];
            }
	        else 
	        {
               return "busy";
	        }
         }
      }
  
      this.pool[this.pool.length] = new Array();
      this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
      this.pool[this.pool.length - 1]["chunnel"] = chunnel;
      return this.pool[this.pool.length - 1]["obj"];
   }
	
   for (var i = 0; i < this.pool.length; i++)
   {
      if(this.pool[i]["obj"].readyState == 0 || this.pool[i]["obj"].readyState == 4)
      {
         return this.pool[i]["obj"];
      }
   }
 
   this.pool[this.pool.length] = new Array();
   this.pool[this.pool.length - 1]["obj"] = this.createXMLHttp();
   this.pool[this.pool.length - 1]["chunnel"] = "";
   return this.pool[this.pool.length - 1]["obj"];

}


this.createXMLHttp = function ()
{
 
   if(window.XMLHttpRequest)
   {
      var xmlObj = new XMLHttpRequest();
   } 
   else 
   {
      var MSXML = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
      for(var n = 0; n < MSXML.length; n++)
      {
         try
         {
            var xmlObj = new ActiveXObject(MSXML[n]);        
            break;
         }
         catch(e)
         {
         }
      }
   } 
 
   return xmlObj;

}


this.reSend = function (url,data,callback,extra,chunnel)
{
   var objXMLHttp = this.getXMLHttp(chunnel) ;
 
   if(typeof(objXMLHttp) != "object")
   {
      return false ;
   }

   if(data == "")
   {
      objXMLHttp.open('GET' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.send('');
   }
   else 
   { 
      objXMLHttp.open('POST' , url, true);
	  objXMLHttp.setRequestHeader("If-Modified-Since", 0); // no cache
      objXMLHttp.setRequestHeader("Content-Length",data.length); 
      objXMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      objXMLHttp.send(data);
   }
 
   if(typeof(callback) == "function" )
   {
      objXMLHttp.onreadystatechange = function ()
      {
         if(objXMLHttp.readyState == 4)
         {
            if(objXMLHttp.status == 200 || objXMLHttp.status == 304)
            {
               if(extra != null)
			   {
			      callback(objXMLHttp,extra) ;
			   }
			   else
			   {
			      callback(objXMLHttp) ;
			   }
            }
//            else
//          {
//             alert("Error loading page\n" + objXMLHttp.status + ":" + objXMLHttp.statusText);
//          }
         }
      }
   }

}

}


/*
 * FlashObject embed
 * by Geoff Stearns (geoff@deconcept.com, http://www.deconcept.com/)
 *
 * v1.1.1 - 05-17-2005
 *
 * writes the embed code for a flash movie, includes plugin detection
 *
 * Usage:
 *
 *	myFlash = new FlashObject("path/to/swf.swf", "swfid", "width", "height", flashversion, "backgroundcolor");
 *	myFlash.write("objId");
 *
 * for best practices, see:
 *  http://blog.deconcept.com/2005/03/31/proper-flash-embedding-flashobject-best-practices/
 *
 */

var FlashObject = function(swf, id, w, h, ver, c) {
	this.swf = swf;
	this.id = id;
	this.width = w;
	this.height = h;
	this.version = ver;
	this.align = "middle";

	this.params = new Object();
	this.variables = new Object();

	this.redirect = "";
	this.sq = document.location.search.split("?")[1] || "";
	this.bypassTxt = "<p>Already have Macromedia Flash Player? <a href='?detectflash=false&"+ this.sq +"'>Click here if you have Flash Player "+ this.version +" installed</a>.</p>";
	
	if (c) this.color = this.addParam('bgcolor', c);
	this.addParam('quality', 'high'); // default to high
	this.doDetect = getQueryParamValue('detectflash');
}

var FOP = FlashObject.prototype;

FOP.addParam = function(name, value) { this.params[name] = value; }

FOP.getParams = function() { return this.params; }

FOP.getParam = function(name) { return this.params[name]; }

FOP.addVariable = function(name, value) { this.variables[name] = value; }

FOP.getVariable = function(name) { return this.variables[name]; }

FOP.getVariables = function() { return this.variables; }

FOP.getParamTags = function() {
    var paramTags = "";
    for (var param in this.getParams()) {
        paramTags += '<param name="' + param + '" value="' + this.getParam(param) + '" />';
    }
    return (paramTags == "") ? false:paramTags;
}

FOP.getHTML = function() {
    var flashHTML = "";
    if (navigator.plugins && navigator.mimeTypes.length) { // netscape plugin architecture
        flashHTML += '<embed type="application/x-shockwave-flash" src="' + this.swf + '" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '" align="' + this.align + '"';
        for (var param in this.getParams()) {
            flashHTML += ' ' + param + '="' + this.getParam(param) + '"';
        }
        if (this.getVariablePairs()) {
            flashHTML += ' flashVars="' + this.getVariablePairs() + '"';
        }

		flashHTML += ' allowScriptAccess="sameDomain"';
        flashHTML += '></embed>';
    } else { // PC IE
        flashHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '" name="' + this.id + '" align="' + this.align + '">';
        flashHTML += '<param name="movie" value="' + this.swf + '" />';
		flashHTML += '<param name="allowScriptAccess" value="sameDomain" />'
        if (this.getParamTags()) {
            flashHTML += this.getParamTags();
        }
        if (this.getVariablePairs() != null) {
            flashHTML += '<param name="flashVars" value="' + this.getVariablePairs() + '" />';
        }
        flashHTML += '</object>';
    }
    return flashHTML;	
}

FOP.getVariablePairs = function() {
    var variablePairs = new Array();
    for (var name in this.getVariables()) { 
    	variablePairs.push(name + "=" + escape(this.getVariable(name))); 
    }
    return (variablePairs.length > 0) ? variablePairs.join("&"):false;
}

FOP.write = function(elementId) {
	if(detectFlash(this.version) || this.doDetect=='false') {
		if (elementId) {
			document.getElementById(elementId).innerHTML = this.getHTML();
		} else {
			document.write(this.getHTML());
		}
	} else {
		if (this.redirect != "") {
			document.location.replace(this.redirect);
		} else if (this.altTxt) {
			if (elementId) {
				document.getElementById(elementId).innerHTML = this.altTxt +""+ this.bypassTxt;
			} else {
				document.write(this.altTxt +""+ this.bypassTxt);
			}
		}
	}		
}

/* ---- detection functions ---- */
function getFlashVersion() {
	var flashversion = 0;
	if (navigator.plugins && navigator.mimeTypes.length) {
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			var y = x.description;
   			flashversion = y.charAt(y.indexOf('.')-1);
		}
	} else {
		result = false;
	    for(var i = 15; i >= 3 && result != true; i--){
   			execScript('on error resume next: result = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'"))','VBScript');
   			flashversion = i;
   		}
	}
	return flashversion;
}

function detectFlash(ver) {	return (getFlashVersion() >= ver) ? true:false; }

// get value of query string param
function getQueryParamValue(param) {
	var q = document.location.search || document.location.href.split("#")[1];
	if (q) {
		var detectIndex = q.indexOf(param +"=");
		var endIndex = (q.indexOf("&", detectIndex) > -1) ? q.indexOf("&", detectIndex) : q.length;
		if (q.length > 1 && detectIndex > -1) {
			return q.substring(q.indexOf("=", detectIndex)+1, endIndex);
		} else {
			return "";
		}
	}
}

/* add Array.push if needed */
if(Array.prototype.push == null){
	Array.prototype.push = function(item) { this[this.length] = item; return this.length; }
}

// ============================== js prototype or for ie5.5 ↓ ===================================

// -- for ie 5 push
if(!Array.prototype.push) {
   Array.prototype.push = function (new_ele) {
        this[this.length] = new_ele;
        return this.length;
   }
}

// -- for ie 5 splice
if(!Array.prototype.splice) {
	Array.prototype.splice = function () {
		var start = arguments[0];
		var deleteCount = arguments[1];
		var len = arguments.length - 2;
		var returnValue = this.slice(start);
		for (var i = 0; i < len; i++) {
			this[start + i] = arguments[i + 2];
		}
		for (var i = 0; i < returnValue.length - deleteCount; i++) {
			this[start + len + i] = returnValue[deleteCount + i];
		}
		this.length = start + len + returnValue.length - deleteCount;
		returnValue.length = deleteCount;
		return returnValue;
	}
}

// -- for ie 5.5↓ encodeURI

if(typeof(encodeURI) == "undefined")
{
	function encodeURI(str) {
		var l = ['%00', '%01', '%02', '%03', '%04', '%05', '%06',
				 '%07', '%08', '%09', '%0A', '%0B', '%0C', '%0D',
				 '%0E', '%0F', '%10', '%11', '%12', '%13', '%14',
				 '%15', '%16', '%17', '%18', '%19', '%1A', '%1B',
				 '%1C', '%1D', '%1E', '%1F', '%20', '!', '%22',
				 '#', '$', '%25', '&', "'", '(', ')', '*', '+', ',',
				 '-', '.', '/', '0', '1', '2', '3', '4', '5', '6',
				 '7', '8', '9', ':', ';', '%3C', '=', '%3E', '?',
				 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
				 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
				 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%5B', '%5C',
				 '%5D', '%5E', '_', '%60', 'a', 'b', 'c', 'd', 'e',
				 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
				 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
				 'z', '%7B', '%7C', '%7D', '~', '%7F'];
		var out, i, j, len, c, c2;
	
		out = [];
		len = str.length;
		for (i = 0, j = 0; i < len; i++) {
			c = str.charCodeAt(i);
			if (c <= 0x007F) {
				out[j++] = l[c];
				continue;
			}
			else if (c <= 0x7FF) {
				out[j++] = '%' + (0xC0 | ((c >>  6) & 0x1F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | (        c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else if (c < 0xD800 || c > 0xDFFF) {
				out[j++] = '%' + (0xE0 | ((c >> 12) & 0x0F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | ((c >>  6) & 0x3F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 |         (c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else {
				if (++i < len) {
					c2 = str.charCodeAt(i);
					if (c <= 0xDBFF && 0xDC00 <= c2 && c2 <= 0xDFFF) {
						c = ((c & 0x03FF) << 10 | (c2 & 0x03FF)) + 0x010000;
						if (0x010000 <= c && c <= 0x10FFFF) {
							out[j++] = '%' + (0xF0 | ((c >>> 18) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>> 12) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>>  6) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 |          (c & 0x3F)).toString(16).toUpperCase();
							continue;
						}
					}
				}
			}
		}
		return out.join('');
	}
}

// -- for ie 5.5↓ encodeURIComponent
if(typeof(encodeURIComponent) == "undefined") 
{
	function encodeURIComponent(str) {
		var l = ['%00', '%01', '%02', '%03', '%04', '%05', '%06',
				 '%07', '%08', '%09', '%0A', '%0B', '%0C', '%0D',
				 '%0E', '%0F', '%10', '%11', '%12', '%13', '%14',
				 '%15', '%16', '%17', '%18', '%19', '%1A', '%1B',
				 '%1C', '%1D', '%1E', '%1F', '%20', '!', '%22',
				 '%23', '%24', '%25', '%26', "'", '(', ')', '*', '%2B', '%2C',
				 '-', '.', '%2F', '0', '1', '2', '3', '4', '5', '6',
				 '7', '8', '9', '%3A', '%3B', '%3C', '%3D', '%3E', '%3F',
				 '%40', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
				 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
				 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%5B', '%5C',
				 '%5D', '%5E', '_', '%60', 'a', 'b', 'c', 'd', 'e',
				 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
				 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
				 'z', '%7B', '%7C', '%7D', '~', '%7F'];
		var out, i, j, len, c;
	
		out = [];
		len = str.length;
		for(i = 0, j = 0; i < len; i++) {
			c = str.charCodeAt(i);
			if (c <= 0x007F) {
				out[j++] = l[c];
				continue;
			}
			else if (c <= 0x7FF) {
				out[j++] = '%' + (0xC0 | ((c >>  6) & 0x1F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | (        c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else if (c < 0xD800 || c > 0xDFFF) {
				out[j++] = '%' + (0xE0 | ((c >> 12) & 0x0F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 | ((c >>  6) & 0x3F)).toString(16).toUpperCase();
				out[j++] = '%' + (0x80 |         (c & 0x3F)).toString(16).toUpperCase();
				continue;
			}
			else {
				if (++i < len) {
					c2 = str.charCodeAt(i);
					if (c <= 0xDBFF && 0xDC00 <= c2 && c2 <= 0xDFFF) {
						c = ((c & 0x03FF) << 10 | (c2 & 0x03FF)) + 0x010000;
						if (0x010000 <= c && c <= 0x10FFFF) {
							out[j++] = '%' + (0xF0 | ((c >>> 18) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>> 12) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 | ((c >>>  6) & 0x3F)).toString(16).toUpperCase();
							out[j++] = '%' + (0x80 |          (c & 0x3F)).toString(16).toUpperCase();
							continue;
						}
					}
				}
			}
		}
		return out.join('');
	}
}

// ============================== js ==> php ===================================

// -- in_array
function in_array(a, arr) {
    for(var i in arr) {
        if (arr[i] == a) return true ;
    }
    return false;
}

// -- array_merge => 返回一个arr2 后并 arr1 ，且直不等于 arr1 的数组
function array_merge(arr1, arr2) {
	var arr = arr1 ;
    for (var i in arr2) {
        if (!in_array(arr2[i], arr)) arr.push(arr2[i]);
    }
    return arr;
}

// -- array_diff => 返回一个 arr1 和 arr2 中不重复的数组
function array_diff(arr1, arr2) {
    var arr = new Array() ;
    for (var i in arr1) {
        if (!in_array(arr1[i], arr2)) arr.push(arr1[i]);
    }
    return arr;
}

// -- array_unique => 返回一个没有重复值的数组 
function array_unique(arr) {
    var ret = new Array() ;
    for (var i in arr) {
        if (!in_array(arr[i], ret)) ret.push(arr[i]) ;
    }
    return ret;
}

// 返回一个不为空的数组
function my_split(se , str) {
	var arr = str.split(se) ;
	var ret = [] ;
	for(var i=0 ; i < arr.length ; i++) {
		if(arr[i]) ret.push(arr[i]) ;
	}
	return ret ;
}

// array_walk 
function batchFun(arr , func) {
	for(var i=0 ; i < arr.length; i++) {
		func(arr[i]) ;
	}
}

// ============================== string html ubb ===================================


// arr regexp replace
function replaceRexExp (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" />');
	return str ;
}

// -- 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') ;
		}) ; 
	}
}


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 ;	
		
		return hh > 24 ? '23:59:59' : 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 ,
		onComplete : Class.empty ,
		idName : '' ,
		contentClassName : '' ,
		closeType : 'remove' , // or display
		frameClassName : 'overFrame' , // or others style  ,
		frameClassWidth : {'overFrame': 6} ,
		
		overlay : true , 
		
		opacity : 0.5 ,
		alpha : true , // opacity 0 - - - - 80
		parent : 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('<span></span>' + this.title) ;
			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('span')[0].onclick = this.esc.bind(this) ;
			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':'50%' , 'top':window.getScrollTop() + 50 + 'px' , 'marginLeft':-this.ele.getSize().size.x/2 + 'px'} : {'left':0 , 'top':0} ;
		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() {
		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);


