﻿//顶层名称空间YHC
var YHC={};

//获取元素的绝对定位
YHC.Utils={
  //获取元素的绝对位置
  'GetAbsolutePosition':function(id){
    var temp=document.getElementById(id);
    var curleft = curtop = 0;
    if (temp.offsetParent)
    {
      curleft = temp.offsetLeft;
      curtop = temp.offsetTop;
      while (temp = temp.offsetParent)
      {
        curleft += temp.offsetLeft;
        curtop += temp.offsetTop;
      }
    }
    return {left:curleft,top:curtop};
  }

};

/*
  提示框
*/
var Prompt={
  'Show':function(txtID){
    //可选参数设定
    var options={offsetX:0,offsetY:0,message:'关键字不能为空<br />请输入关键字！'};
    if(arguments.length>1){
      var temp=arguments[1];
      for(var key in temp){
        options[key]=temp[key];
      }
    }
  
    //var html='<div id="searchNotice" class="notice_search" style="display:none">关键字不能为空<br />请输入关键字！</div>';
    var txtNode=$(txtID);
    if(!txtNode){
      alert('txtID所标示的元素不存在');
    }
    var promptNode;
    if(!$('searchNotice')){
      promptNode=document.createElement('div');
      promptNode.id='searchNotice';
      promptNode.className='notice_search';
      promptNode.style.display='none';
      promptNode.innerHTML=options.message;
      
      txtNode.parentNode.appendChild(promptNode);
    }
    else{
      promptNode=$('searchNotice');
      promptNode.innerHTML=options.message;
    }
    
    var position=YHC.Utils.GetAbsolutePosition(txtID);
    promptNode.style.display='block';
    promptNode.style.top=parseInt(position.top)+25+options.offsetY+'px';
    promptNode.style.left=position.left+options.offsetX+'px';
    
    //提示框消失控制
    if(txtNode.timer1){
      window.clearTimeout(txtNode.timer1);
    }
    txtNode.timer1=window.setTimeout('$("searchNotice").style.display="none";',2000);
    
    //input|text 闪烁效果
    if(txtNode.nodeName!='INPUT'){
      return;
    }
    var coruscateColor='#fff7b4';
    
    if(txtNode.timer2){
      window.clearInterval(txtNode.timer2);
    }
    
    txtNode.timerTotal=0;
    txtNode.timer2=window.setInterval(
      function(){
        txtNode.style.backgroundColor=txtNode.style.backgroundColor==coruscateColor?'':coruscateColor;
        
        if(txtNode.timerTotal==5){
          txtNode.style.backgroundColor='';
          window.clearInterval(txtNode.timer2);
        }
        txtNode.timerTotal++;
      },
      300
    );
    
  }
};

/*
  背景幕
*/
var Backdrop={
  //与特定元素相关
  'Open': function(element){
  
    if(!($('backdrop_element')) ){
    
      var temp=document.createElement('div');
      temp.id='backdrop_element';
      temp.innerHTML='&nbsp;';
      
      temp.className='backdrop';
      element.parentNode.appendChild(temp);
    }
    
    $('backdrop_element').style.display='block';
    Backdrop.SetPosition();
  },
  'Close': function(){
    $('backdrop_element').style.display='none';
  },
  'SetPosition': function(){
  
    //之前的，在body高度不够浏览器高度时，只会显示一般背景
    //var bodyWidth=parseInt(document.body.offsetWidth);
    //var bodyHeight=parseInt(document.body.offsetHeight);
    
    //现在的
    var bodyWidth=parseInt(document.documentElement.clientWidth);
    var bodyHeight=parseInt(document.documentElement.clientHeight);
    
    var element=$('backdrop_element');
    element.style.top='0px';
    element.style.left='0px';
    element.style.width=bodyWidth+'px';
    element.style.height=bodyHeight+'px';
  }
};

/*
 * Ajax加载数据
 *
 * 功能：
 *   设置完全居中等
 * 
*/
var Loading={
  'Open': function(element){
  
    if(!($('loading_element')) ){
    
      var temp=document.createElement('div');
      temp.id='loading_element';
      temp.style.position='absolute';
      temp.style.zIndex=2;
      temp.innerHTML='<img id="loadingImg" src="/images/reading.gif" />';
      
      //document.body.appendChild(temp);
      element.parentNode.appendChild(temp);
    }
    
    $('loading_element').style.display='block';
    WinPosition.SetMiddle($('loading_element'));
  },
  'Close': function(){
    $('loading_element').style.display='none';
  },
  'SetImage': function(imgSrc){
    $('loadingImg').setAttribute('src',imgSrc);
  }
};

/**
 * WinForm窗体位置设置类
 *
 * 功能：
 *   设置完全居中等
 * 
**/
var WinPosition={
  'SetMiddle': function(element){
    var bodyWidth=parseInt(document.body.offsetWidth);
    var bodyHeight=parseInt(document.body.offsetHeight);
    var bodyScrollTop=parseInt(document.body.scrollTop);
    
    var documentClientWidth=parseInt(document.documentElement.clientWidth);
    var documentClientHeight=parseInt(document.documentElement.clientHeight);
    
    var elementWidth=parseInt(element.offsetWidth);
    var elementHeight=parseInt(element.offsetHeight);
    
    var elementLeft=(bodyWidth-elementWidth)/2+'px';
    var elementTop=getScrollTop()+(documentClientHeight-elementHeight)/2+(bodyScrollTop/2)+'px';
    
    element.style.top=elementTop;
    element.style.left=elementLeft;
  }
};

/*
 * 获取滚动高度
 *
*/
function getScrollTop(){
  var scrollTop=0;
  if(document.documentElement&&document.documentElement.scrollTop){
    scrollTop=document.documentElement.scrollTop;
  }
  else if(document.body){
    scrollTop=document.body.scrollTop;
  }
  return scrollTop;
}

/**
 * 窗体辅助类
 *
 * 功能：
 *   将HTML文本包含在一个DIV中，默认为隐藏的
 * 
 * @id divPanel的ID
 * @parentNode divPanel的挂接点
**/
function DivPanel(id,html,parentNode){
  var nDiv=document.createElement('div');
  nDiv.id=id;
  nDiv.innerHTML=html;
  nDiv.style.position='absolute';
  nDiv.style.display='none';
  nDiv.style.zIndex=10;
  parentNode.appendChild(nDiv);
  
  nDiv.Dispose=function(){
    
  };
}

/**
 * WinForm窗体类
 *
 * 功能：
 *   将元素注册后，便具备窗体的功能，可以关闭，拖动，打开
 * 
**/
function WinForm(){
  
  //注册窗体类
  this.Register=function(id,closeId){
    
    var element=$(id);
    
    element.Open=function(){
      element.style.display='block';
      WinPosition.SetMiddle(element);
    };
    
    element.Close=function(){
      element.style.display='none';
      Backdrop.Close();//背景幕关闭
    };
    
    if(closeId!=''){
    
      if(closeId.indexOf('|')==-1){
        $(closeId).onclick=function(){
          element.Close();
        };
      }
      else{
        var temp=closeId.split('|');
        for(var i=0;i<temp.length;i++){
          $(temp[i]).onclick=function(){
            element.Close();
          };
        }//end for
      }
      
    }//end if
    
  };
  
}
var WF=new WinForm();

/**
 * 简单滑动门类
 *
 * 功能：
 *   简单的滑动门处理类，适合在元素的id已知的情况下使用
 *
 * 构造方法：
 *   @slips 滑动按钮以及滑动门的对应数组 请按顺序填写 [滑动门开关,滑动门,滑动门未开启时的样式,滑动门开启后的样式]
 *
 * 例：
 *   var slt=new SimpleSlip([
 *     ["natureChange","naturePage","a1","a2"],
 *     ["changeTop","TopPage","a1","a2"]
 *   ],{changeEvent:"mouseenter"});
**/
function SimpleSlip(slips){
  var options={changeEvent:"click",visibleDisplay:"block",invisibleDisplay:"none"};
  //参数设定
  if(arguments.length>1){
    var temp=arguments[1];
    for(var key in temp){
      options[key]=temp[key];
    }
  }
  
  if($type(slips)!="array"){
    alert("参数@slips类型不正确");  //Exception
  }
  
  var slipSwitchIds=new Array();  //滑动门开关id
  
  var openSlipId="";  //当前开启的滑动门id
  
  for(var i=0;i<slips.length;i++){
  
    var slipItems=slips[i];
    slipSwitchIds.push(slipItems[0]);
    
    var slipSwitch = $(slipItems[0]);
    slipSwitch.slip = slipItems[1]; //设置滑动门开关所对应的滑动门
    slipSwitch.closeClass = slipItems[2]; //滑动门关闭开关样式
    slipSwitch.openClass = slipItems[3]; //滑动门开启开关样式
    
    slipSwitch.addEvent(options.changeEvent,
      function(evt){
        Blurs();
        openSlipId=this.id;
        this.className=this.openClass;
        if(this.slip!=""){
          $(this.slip).style.display=options.visibleDisplay;
        }
      }
    );
  }
  
  //让所有的滑动门按钮和滑动门失去焦点
  function Blurs(){
    for(var i=0;i<slipSwitchIds.length;i++){
    
      var slipSwitch=$(slipSwitchIds[i]);
      slipSwitch.className=slipSwitch.closeClass;
      if(slipSwitch.slip!=""){
        $(slipSwitch.slip).style.display=options.invisibleDisplay;
      }
    }//end for
  }
  
  //将第一个滑动门设置为焦点对象
  $(slipSwitchIds[0]).fireEvent(options.changeEvent);
  
  //共有方法，获取当前开启的滑动门
  this.getOpenSlipId=function(){
    return openSlipId;
  };
}

/*
  简单菜单类
*/
function WinMenu(optionid,menuid){
  var options={left:0,top:0};
  //参数设定
  if(arguments.length>2){
    var temp=arguments[2];
    for(var key in temp){
      options[key]=temp[key];
    }
  }

  var optionNode = $(optionid);
  var menuNode = $(menuid);
  var position = YHC.Utils.GetAbsolutePosition(optionid);
  
  //初始化
  menuNode.style.left = (position.left + options.left) + 'px';
  menuNode.style.top = (position.top + optionNode.offsetHeight + options.top) + 'px';
  menuNode.style.position = 'absolute';
  menuNode.style.zIndex = '1000';
  menuNode.style.display = 'none';
  var isOut = false;
  
  //绑定事件
  optionNode.onmouseover = function(){
    isOut = false;
    displayMenu();
  };
  
  optionNode.onmouseout = function(){
    isOut = true;
    hiddenMenu();
  };
  
  menuNode.onmouseover = function(){
    isOut = false;
    displayMenu();
  };
  
  menuNode.onmouseout = function(){
    isOut = true;
    hiddenMenu();
  };
  
  //显示菜单
  function displayMenu(){
    menuNode.style.display = 'block';
  }
  
  //隐藏菜单
  function hiddenMenu(){
    window.setTimeout(
      function(){
        if(isOut){
          menuNode.style.display = 'none';
        }
      },
      1000 //一秒后消失
    );
  }
  
}

/*
  登录框
*/
var WinLogon = {
  'getHtml':function(url){
    var html = '';
    html += '<form action="http://www.3637.com/user/logon.aspx?url='+url+'" method="post">';
    html += '<input id="act" name="act" value="logon" type="hidden" />';
    html += '	<h1><b>登录</b><i><a href="javascript:WinLogon.close();"><img src="/images/icon_close.gif"  title="关闭"/></a></i></h1>';
    html += '    <ul>';
    html += '    	<li><b>用户名：</b><input id="uname" name="uname" type="text" tabindex="1"  maxlength="20" value="萤火虫帐号或Email"';
    html += 'onfocus="if (value ==\'萤火虫帐号或Email\'){value =\'\'};" ';
    html += 'onblur="if (value ==\'\'){value=\'萤火虫帐号或Email\';};" />';
    html += '<a href="http://www.3637.com/user/reg.aspx" tabindex="3" >免费注册</a></li>';
    html += '        <li><b>密码：</b><input id="pwd" name="pwd" type="password" tabindex="2" maxlength="20"/>';
    html += '<a href="http://www.3637.com/safe/findpsw/" tabindex="4" >忘记密码</a></li>';
    html += '        <li><b>&nbsp;</b><input id="cookieDate1" name="cookieDate" value="on" type="checkbox" class=\"a1\" />';
    html += '<label for="cookieDate1" tabindex="5" >记住登录状态</label></li>';
    html += '    </ul>';
    html += '    <h2><span><input name="submit" type="submit" tabindex="6" value="登 录"/><input type="button" onclick=\"WinLogon.close();\" value=" 取 消 " class="a1" tabindex="7" /></span></h2>';
    html += '</form>';    
    return html;
  },
  'open':function(containerid,url){
    var logonDiv = $('yhc_win_logon');
    if(!logonDiv){
      var logonDiv = document.createElement('div');
      logonDiv.id = 'yhc_win_logon';
      logonDiv.className = 'pop_logon popping2';
      logonDiv.innerHTML = WinLogon.getHtml(url);
      $(containerid).appendChild(logonDiv);
      logonDiv.style.position = 'absolute';
      logonDiv.style.zIndex = '10000';
    }
    Backdrop.Open($(containerid));
    logonDiv.style.display = 'block';
    WinPosition.SetMiddle(logonDiv);
  },
  'close':function(){
    Backdrop.Close();
    $('yhc_win_logon').style.display = 'none';
  }
};