
//---title---
function modifyPageTitle() {
	if ($("#page_title").length >0) {
		var tmp =$('#page_title').html();
	    //var tmp = $('#page_title');
	    //alert
	    //document.title=tmp.html();
	//    if (tmp.textContent)
	//    document.title = tmp.textContent+' | 莉诺达斯 - Linodas.com ';
	//    else
	   document.title = tmp + ' | 莉诺达斯 - Linodas.com';
	    //var tmp2 = window.location.href;
	    //tmp.innerHTML = '<a href="http://'+tmp2.replace(/^.+?\/\//,'').replace(/\/.+$/,'')+'">'+tmp2.replace(/^.+?\/\//,'').replace(/\/.+$/,'').toUpperCase()+'</a> &nbsp; '+tmp.innerHTML
	   $('#page_title').html('<a href="'+__GAMEURL+'">'+__GAMEDOMAIN.toUpperCase()+'</a> &nbsp; '+tmp);
	}
}
// ------ Inner Frame Global Menu ----
var timeout    = 400;
var closetimer = 300;
var ddmenuitem = null;

function jsddm_open() {
   jsddm_canceltimer();
   jsddm_close();
   ddmenuitem = $(this).find('ul').show();
}

function jsddm_close() {
    if (ddmenuitem) ddmenuitem.hide();
}

function jsddm_timer() {
    closetimer = window.setTimeout(jsddm_close, timeout);
}

function jsddm_canceltimer() {
    if (closetimer) {
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}

$(document).ready(function() {
    $('#header_nav > li').bind('mouseover', jsddm_open)
    $('#header_nav > li').bind('mouseout',  jsddm_timer)
});

//document.onclick = jsddm_close;


/*
==============================
 Common & Global Functions
==============================
 2009-2010 Linoa All Rights Reserved
==============================
*/

//static
var __AJAX_LOADING_IMG = "<img src='img/common/ajax_loading.gif' class='tip_image'> Loading...";
var __AJAX_ERROR = "!!! ERROR !!!";
var __TRUE_IMG = "<img src='img/common/true.png' class='tip_image'>";
var __FALSE_IMG = "<img src='img/common/false.png' class='tip_image'>";
//ajax

$.ajaxSetup({
  dataType: "json",
  type: "POST",
  cache:false,
  timeout: 60000
});

//重载alert
window.alert=function(s) { 
    $("body").append("<div id='body_mask'></div>");
    var x=$("#body_mask");
    x.css("top",0);
    x.css("left",0);
    x.css("height",$(document).height());
    x.css("width",$(document).width());
    x.css("position","absolute");
    x.css("z-index","255"); 
	x.css("background","black");
	x.css("opacity",0);
    $("body").append("<div id='fullscreen_alert_tip' class='fullscreenwindow bg1 bd1 pad10'><div style='align:left'>"+s+"</div><BR><center><input type='button' id='fullscreen_alert_close_button' class='link red' value='　关闭　'></center></div>");
    $("#fullscreen_alert_close_button").click(function(){
        $("#fullscreen_alert_tip").remove();
        $("#body_mask").remove();
        //$("#main_gameframe").fadeTo("slow", 1);
    })
	$("#body_mask").fadeTo("normal",0.6); 
    //$("#main_gameframe").fadeTo("slow", 0.3); 
	showTooltip();
}

//初始化标题
function initTitle() {
    $("#page_title").addClass("c5");
}


//共用函数

//淡出元素
function hideElement(elename) {
    var newname="#"+elename;
    $(newname).fadeOut(300,function(){
    $(newname).hide();
    });
}

function removeElement(elename) {
    var newname="#"+elename;
    $(newname).fadeOut(300,function(){
    $(newname).remove();
    });
}

//闪烁元素
function blinkElement(elename) {
    var newname="#"+elename;
    $(newname).fadeOut(170);
    $(newname).fadeIn(170);
    $(newname).fadeOut(170);
    $(newname).fadeIn(170);
}

//NR转换为BR
function nr2br(str) {
    str=str.replace(/<br[^>]*>/gi,"");
    str=str.replace(/(\n)/g,"<br>");
    return str
}

//反方向
function br2nr(str) {
    str=str.replace(/(\n)/g,"");
    str=str.replace(/<br[^>]*>/gi,"\n");
    return str
}

//公共数值确认窗体
//prefix 前缀 id 确认 maxnum 确认最大数值 applyfunc
function showConfirmForm(prefix,id,maxnum,applyfunc,defaultnum) {
    if (defaultnum===undefined) defaultnum=1;
    if (!applyfunc) applyfunc='void(0)';
    var win="<div id='"+prefix+"_confirm_form"+id+"' class='smallwindow bd1 alpha_95'><b>数值确认</b>: "+
        "<input name='"+prefix+"_confirm_num"+id+"' id='"+prefix+"_confirm_num"+id+"' class='bd1' type='text' value='"+defaultnum+"' size='10' />"+
        "<br />&nbsp; &nbsp; &nbsp;<a href='javascript:void(0);' class='noud' onclick=\"modifyInputNum('"+prefix+"_confirm_num"+id+"','down');\">[-]</a> "+
        "<a href='javascript:void(0);' class='noud' onclick=\"modifyInputNum('"+prefix+"_confirm_num"+id+"','up');\">[+]</a> "+
        "<a href='javascript:void(0);' class='noud' onclick=\"modifyInputNum('"+prefix+"_confirm_num"+id+"','"+maxnum+"');\">[ALL]</a> "+
        "<br /><br /><form class='floatright'><input class='link green' type='button' onclick=\""+applyfunc+";\" value='提交'></input> "+
        "<input class='link red' type='button' onclick=\"hideConfirmForms('"+prefix+"');\" value='取消' /> "+
        "</form></div>";
    return win;
}

//公共共用确认窗体
function showVerifyForm(prefix,id,text,applyfunc) {
    if (!applyfunc) applyfunc='void(0)';
    var win="<div id='"+prefix+"_verify_form"+id+"' class='smallwindow bd1 alpha_95'><b>确认</b>: "+
        text+
        "<br /><br /><form class='floatright'><input class='link green' type='button' onclick=\""+applyfunc+";\" value='确认'></input> "+
        "<input class='link red' type='button' onclick=\"hideVerifyForms('"+prefix+"');\" value='取消' /> "+
        "</form></div>";
    return win;
}

//隐藏指定前缀的所有确认窗体
function hideConfirmForms(prefix) {
    if (prefix=='all' || !prefix) {
        $("div[id*='_confirm_form']").each( function() {
            $(this).remove();
        }
        );
    }
    else {
        $("div[id^='"+prefix+"_confirm_form']").each( function() {
            $(this).remove();
        }
        );
    }
}

//类似上面的
function hideVerifyForms(prefix) {
    if (prefix=='all' || !prefix) {
        $("div[id*='_verify_form']").each( function() {
            $(this).remove();
        }
        );
    }
    else {
        $("div[id^='"+prefix+"_verify_form']").each( function() {
            $(this).remove();
        }
        );
    }
}

//全体隐藏
function hideAllForms() {
    hideVerifyForms('all');
    hideConfirmForms('all');
}

// 单步变更某个INPUT DOM的数值
// 确认DOM之后，该DOM的value将被变更为指定数值
function modifyInputNum(dom,num) {
    var n=$("#"+dom).val();
    //alert(n);
    if (num=="up") {
        n++;
    }
    else if (num=="down") {
        if (n>1) n--;
    }
    else if (!isNaN(num)) {
        n=num;
    }
    else return false;
    $("#"+dom).val(n);
    return true;
}

//取得系列prefix的ID
//必须是完整prefix才可以取得 格式 prefix+id 不能有其他
function getID(dom,prefix) {
    var tmpid = dom.replace(prefix, "");
    return tmpid;
}

// 公共调用TIP显示
// 所有页面均需调用此函数，显示全部TOOLTIP
// 将所有TIP调整为自适应位置
function showTooltip() {
    $("a.info").each( function () {
        var oc=$(this).children("span.info"); //hover tip
        var n=$(this).find("span").first(); //inner name frame
        var clsname=n.attr("class");
        $(this).bind("mouseover",function(){
            //n.removeClass();
			var ooc=oc.clone()
			$("#global_tooltip").html(ooc);
            n.addClass("hovercolor");
        });
        $(this).bind("mousemove", function(e){
            //inner dom size
			var o=$("#global_tooltip").children("span.info");
            var iwidth=o.width();
            var iheight=o.height();
            //mouse
            var cx=e.clientX;
            var cy=e.clientY; //posi
            var px=e.pageX;
            var py=e.pageY; //abo
            //alert(cx+"|"+cy+"|"+px+"|"+py);
            //old dom
//            var oo=$(this).offset();
//            var ox=oo.left;
//            var oy=oo.top;
//            var oxx=$(this).width();
//            var oyy=$(this).height();
//            var mx=o.width();
//            var my=o.height();
            //calc left / right
            var wx=$(window).width();
            var wy=$(window).height();
            //new move
            if (cx<wx/2 && cy<wy/2) { //左上
                o.css("top",py+8);
                o.css("left",px+8);
            }
            else if (cx>wx/2 && cy<wy/2) { //右上
                o.css("top",py);
                o.css("left",px-iwidth-28);
            }
            else if (cx<wx/2 && cy>wy/2) { //左下
                o.css("top",py-iheight-28);
                o.css("left",px);
            }
            else { //右下
                o.css("top",py-iheight-28);
                o.css("left",px-iwidth-28);
            }
            //old move tab
//            if (ox<wx/2 && oy<wy/2) { //左上
//                o.css("top", 16);
//                o.css("left", oxx+5);
//            }
//            else if (ox>wx/2 && oy<wy/2) { //右上
//                o.css("top",16);
//                o.css("left", -mx-22);
//            }
//            else if (ox<wx/2 && oy>wy/2) { //左下
//                o.css("top",-my-22);
//                o.css("left", oxx+5);
//            }
//            else { //右下
//                o.css("top",-my-22);
//                o.css("left", -mx-22);
//            }
            //此时已经取得o的位置
//            o.css("visibility","hidden");
//            var realx=o.offset().left;
//            var realy=o.offset().top;
            //$("#system_info").append(o);
            o.show();
            //alert("外层元素距离 "+ox+":"+oy+" 外层尺寸"+oxx+":"+oyy+" 屏幕高度和宽度"+wx+":"+wy)
        });
        $(this).bind("mouseout", function(){
			var o2=$("#global_tooltip").children("span.info");
            o2.hide();
            n.removeClass();
            n.addClass(clsname);
        });
//        o.bind("mouseover", function(){
//            o.hide();
//        });
    });
}

//========================TAB相关函数========================

//TAB格式开列如下
//tab需要被包括在common_tab的dom中
//每个tab的标签命名格式
//tab_buttonN   N为从0开始的数字
//每个tab的内容命名格式
//tab_contentN  N必须对应
//每个tab的内容需要带上tab_content  自带hide
//-----

//初始化页面TAB

function initTab() {
    var id;
    //绑定TAB
    $(".common_tab > .tab_title").each(function() {
        $(this).bind('click', function() {
            id=getID($(this).attr("id"),"tab_button");
            selTab(id);
        })
    })
    //如果页面有TAB，将第一个发现的TAB标记为current TAB
    //current获得bg1的class
    //立即对current TAB进行show，并hide所有其他tab
    $(".common_tab > .tab_title").eq(0).addClass('current bg1');
    //取得prefix
    selTab(0);
}

//选定TAB，选定之后hide其他不同id的tab
function selTab(id) {
    $(".common_tab > .tab_title").each(function() {
        $(this).removeClass('current bg1');
    })
    $("#tab_button"+id).addClass('current bg1');
    $(".common_tabcontent > .tab_content").hide();
    $("#tab_content"+id).show();
 }


/* 
 * 全局通用JS ajax标准化模式
 * 只能用于单一的提交按钮，并且要与数据库交互的项目
 * 多个项目的方法不能使用这种模型进行初始化
 * 
 * 只能用于简单的输出TIP的  不能用于复杂的AJAX！！
 * 
 * written by fyruka
 * 
 * === 操作 ===
 * 隐藏按钮，并且在output显示信息，完成之后显示按钮，第二个参数加入TRUE，那么就不会显示
 * 
 * === 格式需求 ===
 * 表单名字 xxx_form
 * 提交按钮 xxx_btn
 * 输出框 xxx_output
 * 
 * === 输入命名法则 ===
 * 只需要输入name xxx即可
 * msg 和 success 是必须项目
 * 
 * === 返回 ===
 * true 或者 false 有特殊需求可以自定义之
 * 
 * === 第二个参数 ===
 * 
 * options 顺序
 * 
 * - hidemsg 是否反馈结果，默认FALSE ，设置TRUE可以不反馈任何结果。
 * - hidebtn 是否在完成之后再次显示按钮 默认显示
 * - callback 回调函数，在成功之后执行
 * - alertmsg 是否用弹出窗口提示，如果不为NULL那么会弹出窗口
 * 
 * 
 */

function initAjaxForm(name,options) {
    var r;
    //全默认参数设定
    if (options==null) {
        var options={};
        options.successBtn=false; //成功后不显示提交按钮
        options.failBtn=true; //失败后继续显示按钮
        options.callback=null; //没回调
        options.alertMsg=true; //错误之后弹出全屏ALERT警告窗口
    }
    //参数默认值
    if (options.successBtn==null) options.successBtn=false;
    if (options.failBtn==null) options.failBtn=true;
    $('#'+name+'_form').ajaxForm({
        beforeSubmit: function(){
            $("#"+name+"_btn").hide();
            $("#"+name+"_output").html(__AJAX_LOADING_IMG);
        },
        success: function(e) {
            //兼容性考虑  有text 和 msg两种格式
            var showmsg = e.msg ? e.msg : e.text;
            //msg优先处理
            if (e.success) {
                if (options.successBtn) $("#"+name+"_btn").show();
                $("#"+name+"_output").html(__TRUE_IMG+showmsg);	
                eval(options.callback);
                showTooltip();
                return true;
            }
            else {
                
                if (options.failBtn) $("#"+name+"_btn").show();
                if (options.alertMsg) alert(showmsg);  
                $("#"+name+"_output").html(__FALSE_IMG+showmsg);		
                //eval(options.callback);
                return false;
            }
            
        },
        error: function() {
            //$("#"+name+"_btn").show();
            alert(__AJAX_ERROR);
            $("#"+name+"_output").html(__FALSE_IMG+__AJAX_ERROR);		
            return false;
        }
    });	
	
}

//延时跳转



//======================底部通栏触发器===================

 //聊天系统

var chatOpen = false;
var chatTimer;

function showChatbox() {
    if (!chatOpen) {
       reloadChat();
       chatOpen = true;
       chatTimer=setInterval("reloadChat()",60000);
       //定位
       var o=$("#bottombar").offset();
       var y = $(window).height()-35;
       var x = $(window).width();
       $("#chatbox").css("top",y-300);
       $("#chatbox").css("left",x-650);
       //完成
       $("#chatbox").fadeIn(300);
    }
    else {
       chatOpen = false;
       clearInterval(chatTimer);
       $("#chatbox").fadeOut(300);
    }
}

//音乐系统

function toggleMusic() {
    alert('点击确定后你将切换到音乐版，建议你使用耳机以免影响他人。BGM播放器将会在一个独立窗口中打开，可以随时关闭。<BR><BR>本站所有BGM由 Zetacola 原创制作');
}


// TOP

function toggleTop() {
	var px=$(window).width();
	var llf=(px-900)/2;
	$("#gototop").css('left',llf+900+10);
	if ($(document).scrollTop() <100) {
		$("#gototop").hide();
	} else $("#gototop").show();
}


// 页面JS控制台，使用`键打开
// 包括三个函数，请勿改动
// Powered by NGACN 
commonui.console = {
_w:null,
_t:{value:''},
echo:function (txt,nonl){
if(!nonl)txt+='\n'
this._t.value+=txt
var x = this._t.scrollHeight - this._t.clientHeight;
if (x>0)
   this._t.scrollTop =x
},//fe
open:function (){
if(!this._w){
   var v=this._t.value
   this._t = _$('<textarea/>')._.css({width:'500px',height:'200px',overflow:'hidden',display:'block',background:'#000',border:'none',color:'#eee',margin:'0',padding:'0',fontFamily:'Monospace',textAlign:'left'})
   this.echo(v)
   var tmp = _$('<input/>')._.attr('type','text')._.css({width:'500px',background:'#000',border:'none',color:'#eee',fontFamily:'Monospace'})._.on('keyup',function(e){
      if (!e)e = window.event;
      if (e.keyCode == 13 && this.value){
         var x = this.value
         if (x == 'show me the money') {
             commonui.console.echo('你需要更多的水晶塔');
         }
         else if (x == 'dawnoflinodas') commonui.console.echo('Nyx hell.');
         this.value=''
         try{
            eval('var r=(function(){\n'+x+'\n})()')
            if (typeof(r)!='undefined')commonui.console.echo(r)
            }
         catch (e){
            //window.alert(e)
            }
         }
      })
   this._w = _$('<div/>')._.css({left:'5px',top:'5px',padding:'5px',position:'absolute',zIndex:'999',display:'none',background:'#000',border:'2px solid #aaa',borderRadius:'8px','boxShadow':'9px 9px 9px #444'})._.aC(this._t)._.aC(tmp)
   document.body.appendChild(this._w)
   }
if(this._w.style.display=='none'){
   var s = this.getScroll();
   this._w.style.left=(s.x+5)+'px'
   this._w.style.top=(s.y+5)+'px'
   this._w.style.display='block'
   this._w.getElementsByTagName('input')[0].focus()
   }
else
   this._w.style.display='none'
},//fe
getScroll:function (){
return commonui.getScroll()
},//fe
init:function (){
commonui.aE(document,'keyup',function (e){
   var x = document.activeElement
   if (typeof(x)=='undefined' || (x.nodeName && (x.nodeName=='INPUT' || x.nodeName=='TEXTAREA')))return
   if (!e)e = window.event;
   if (e.keyCode == 192){
      commonui.console.open()
      }
   })
}//fe
}

//获取高度
commonui.getScroll=function (){
var x = document.documentElement.scrollLeft || document.body.scrollLeft || 0;
var y = document.documentElement.scrollTop || document.body.scrollTop || 0;
return {x:x,y:y}
}

//事件注册
commonui.aE=function(obj,evt,fn) {
if (evt=='DOMContentLoaded'){
	var x = this._addEventOnDOMContentLoadedFucns
	x[x.length++]=fn
	if(x.done)fn()
	return
	}
if (obj.addEventListener)
	obj.addEventListener(evt,function(event){fn.call(obj,event)},false)
else if (obj.attachEvent)
	obj.attachEvent('on'+evt,function(event){fn.call(obj,event)})
}

var _$ = function (){//fs
var els={} 
var m=null 
var single=true 
for (var i=0,j=0;i<arguments.length;++i,++j) 
	{ 
	var e = arguments[i]; 
	if (typeof e == 'string') { 
		if (e.indexOf('<')==0){ 
			if(m = e.match(/^<(\/?)([a-zA-Z0-9]+)(\/?)>$/)){ 
				if (m[3] || m[1]) 
					els[j] = document.createElement(m[2]); 
				else{ 
					m =document.getElementsByTagName(m[2]) 
					for (var ii=0;ii<m.length;ii++,++j) 
						els[j]=m[ii]; 
					--j; 
					single=false 
					} 
				} 
			else{ 
				m = e.match(/^<([a-zA-Z0-9]+)>(.*?)<\/([a-zA-Z0-9]+)>$/) 
				if(m && m[1]==m[3]){ 
					els[j] = document.createElement(m[1]); 
					if(m[2])els[j].innerHTML=m[2]; 
					} 
				else 
					els[j]=null 
				} 
			} 
		else 
			els[j] = document.getElementById(e); 
		} 
	else 
		els[j] = e 
	} 
els.length = j; 
if(arguments.length==1 && single) 
	{ 
	if(!els[0])return null; 
	var o = els[0]; 
	o._=function(){} 
	o._.prototype=domExtPrototype 
	o._ = new o._ 
	} 
else 
	{ 
	var o = els; 
	o._=function(){} 
	o._.prototype=domExtPrototype 
	o._ = new o._ 
	o._.els=o; 
	} 
o._.self = o 
return o; 
}//fe 

var domExtPrototype={ 
'each':function(fn) { 
	var s = this.self 
	if (s.els)
		if(Object.prototype.toString.apply(s.els) === '[object Array]')
			for ( var i = 0, len = s.els.length; i<len; ++i ) 
				fn.call(s.els[i]); 
		else
			for ( var i in s.els) 
				fn.call(s.els[i]); 
	else 
		fn.call(s) 
	return s; 
	}, 
'cls':function(cn) { 
	this.each(function(){this.className += ' '+cn;}); 
	return this.self; 
	}, 
'css':function(o,v) { 
	if (typeof(v)!='undefined') 
		this.each(function(){this.style[o] = v;}); 
	else 
		for (var prop in o)  
			this.css(prop, o[prop]); 
	return this.self; 
	}, 
'on':function(type, fn, old) { 
	if(old)
		var listen = function(el) { 
				el['on'+type]=fn
			};
	else
		var listen = function(el) { 
				if (window.addEventListener) { 
					el.addEventListener(type, fn, false); 
				} else if (window.attachEvent) { 
					el.attachEvent('on'+type, function() {fn.call(el, window.event);}); 
				} 
			}; 
	this.each(function(){listen(this);}); 
	return this.self; 
	}, 
'attr':function(o,v,set) { 
	if (typeof(v)!='undefined'){
		if(set)
			this.each(function(){this[o]=v;}); 
		else
			this.each(function(){this.setAttribute(o,v);});
		}
	else 
		for (var prop in o)  
			this.attr(prop, o[prop]); 
	return this.self; 
	}, 
'aC':function() { 
	var o = this.self; 
	var i=0; 
	if (typeof arguments[0]=='number') 
		{ 
		i=1; 
		if (o.els) 
			o = o.els[arguments[0]] 
		} 
	if (arguments[i+1]) 
		for (;i<arguments.length;i++) 
			o.appendChild(arguments[i]); 
	else 
		o.appendChild(arguments[i]) 
	return o; 
	}, 
'sV':function (o,v){
	if(!this.anyVar)this.anyVar={}
	if (typeof(v)!='undefined') 
		this.anyVar[o]=v; 
	else 
		for (var prop in o)  
			this.sV(prop, o[prop]); 
	return this.self; 
	},
'gV':function (k){
	if(!this.anyVar)this.anyVar={}
	return this.anyVar[k]; 
	}
}//oe


//================通用页面事件触发器===============

$(document).ready(function(){
    showTooltip();
    initTitle();
    initTab();
    modifyPageTitle();
    commonui.console.init();
	toggleTop();
});

$(document).scroll(function(){
	toggleTop();
})

$(window).resize(function(){
	toggleTop();
})

