/** 获取ID对应的表单对象。 */
function $(objId,IsFrame)
{
  if(null==IsFrame)
  {
    return document.getElementById(objId);
  }
  else
  {
    objId = (objId + "").trim();
    if (IsFrame)
    {
      return IsIE ? frames[objId] : document.getElementById(objId).contentWindow;
    }
    else
    {
      return document.getElementById(objId);
    }
  }
}

/** 获取ID对应的表单对象的值。 */
function $v(objId, isFrame)
{
  return $(objId, isFrame).value;
}

/** 获取ID对应的表单对象的值长度。 */
function $len(objId, isFrame)
{
  return $v(objId, isFrame).length;
}

/** 获取ID对应的表单对象的值是否为空。 */
function $emp(objId, isFrame)
{
  return null == $v(objId, isFrame) || 0 == $len(objId, isFrame) || 0 == $v(objId, isFrame).replace(/[ \t]/g, "").length;
}

/** 按参数清理条件初始值为空字符串。
  参数格式：{name:'表单ID', value:'表单初始值'}...
*/
function submitSearch()
{
  for (var i = 0; i < arguments.length; i++)
  {
    var arg = arguments[i];
    if (null == $(arg.name))
    {
      continue;
    }
    
    if ($(arg.name).value == arg.value)
    {
      $(arg.name).value = "";
    }
  }
  
  cleanParameter();
}

/** 清理注册的查询条件初始值为空字符串。
*/
function cleanParameter()
{
  for (var i = 0; i < searchParameters.length; i++)
  {
    var arg = searchParameters[i];
    if (null == $(arg.name))
    {
      continue;
    }
    
    if ($(arg.name).value == arg.value)
    {
      $(arg.name).value = "";
    }
  }
  
  return true;
}

/** 注册查询条件初始值。
  参数格式：{name:'表单ID', value:'表单初始值'}...
*/
var searchParameters = new Array();
function registerSearchParameter()
{
  for (var i = 0; i < arguments.length; i++)
  {
    var arg = arguments[i];
    if (null == $(arg.name))
    {
      continue;
    }
    searchParameters[searchParameters.length] = arg;
  }
}

/**居中打开窗口。*/
function openWindow(url, title, width, height, attrs)
{
  var wh = getWindowSize();
  window.open(url, title, 
    'left=' + (wh.w - width) / 2 + ',top=' + (wh.h - height) / 2
      + ',height=' + height + ',width=' + width + (attrs ? "," + attrs : ""));
}

/** 居中打开对话框时窗口。 */
function openDialog(url, title, width, height)
{
  openWindow(url, title, width, height, 
    'toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');
}

/** 获取浏览器窗口尺寸。 */
function getWindowSize()
{
  var winWidth = 0;
  var winHeight = 0;
  if (document.documentElement.clientWidth)
  {
    winWidth = document.documentElement.clientWidth;
    winHeight = document.documentElement.clientHeight;
    if (winHeight < document.body.clientHeight)
    {
      winWidth = document.body.clientWidth;
      winHeight = document.body.clientHeight;
    }
  } 
  else if (document.body.clientWidth)
  {
    winWidth = document.body.clientWidth;
    winHeight = document.body.clientHeight;
    if (winHeight < document.documentElement.clientHeight)
    {
      winWidth = document.documentElement.clientWidth;
      winHeight = document.documentElement.clientHeight;
     }
  }
  else if(window.innerWidth)
  {
    winWidth = window.innerWidth;
    winHeight = window.innerHeight;
  }

  return {"w": winWidth, "h": winHeight};
}

/**
 获取左顶点显示位置。
 如果事件发生位置加上对象高度，或宽度超过显示窗口边界，则偏移顶点位置到能完整显示对象的位置。
 preoffset：预偏移值。格式为：{"w":长度，"h"：高度}。
 返回值为：{"x":x轴坐标点,"y":y轴坐标点}。
 */
function getStartXY(event, dWidth, dHeight, preoffset)
{
  var wh = getWindowSize();
  
  var x = event.clientX+5;
  if (null != preoffset)
  {
    x += preoffset.w;
  }
  if ((x + parseInt(dWidth)) > wh.w)
  {
     x -= dWidth;
  }
  var y = event.clientY;
  if (null != preoffset)
  {
    y += preoffset.h;
  }
  if ((y + parseInt(dHeight)) > wh.h)
  {
     y -= dHeight;
  }
  
  return {"x" : x, "y" : y};
}

function zoomImage(imgObj, width, height)
{
  var image = new Image(); 
  image.src = imgObj.src;
  if (0 == image.width || 0 == image.height)
  {
    if (null == imageTimer)
    {
      imageObj = imgObj;
      imageWidth = width;
      imageHeight = height;
      imageTimer = window.setInterval("delayZoomImage()", 5);
    }
    return;
  }
  
  if (null != imageTimer)
  {
    window.clearInterval(imageTimer);
    imageTimer = null;
    imageObj = null;
    imageWidth = null;
    imageHeight = null;
  }
  
  if (image.width > width && width < height) 
  {
    imgObj.width = width; 
    imgObj.height = (image.height * width) / image.width; 
  } 
  else if (image.height > height && height < width)
  {
    imgObj.height = height;
    imgObj.width = (image.width * height) / image.height; 
  }
  else
  { 
    imgObj.width = image.width; 
    imgObj.height = image.height; 
  }
}

/** 图片尺寸按指定宽度或高度等比例调整。 */
var imageTimer = null;
var imageObj = null;
var imageWidth = null;
var imageHeight = null;
function delayZoomImage()
{
  zoomImage(imageObj, imageWidth, imageHeight);
}
function zoomImage(imgObj, width, height)
{
  var image = new Image(); 
  image.src = imgObj.src;
  if (0 == image.width || 0 == image.height)
  {
    if (null == imageTimer)
    {
      imageObj = imgObj;
      imageWidth = width;
      imageHeight = height;
      imageTimer = window.setInterval("delayZoomImage()", 5);
    }
    return;
  }
  
  if (null != imageTimer)
  {
    window.clearInterval(imageTimer);
    imageTimer = null;
    imageObj = null;
    imageWidth = null;
    imageHeight = null;
  }
  
  if (image.width > width && width < height) 
  {
    imgObj.width = width; 
    imgObj.height = (image.height * width) / image.width; 
  } 
  else if (image.height > height && height < width)
  {
    imgObj.height = height;
    imgObj.width = (image.width * height) / image.height; 
  }
  else
  { 
    imgObj.width = image.width; 
    imgObj.height = image.height; 
  }
}

//信息显示。
function showMessage(event, messageObj, offsetTop, offsetLeft)
{
  var event = event || window.event;
  
  var messageDivObj = $("messageDiv");
  if (null == messageDivObj)
  {
    var messagePanel = document.createElement("div");
    messagePanel.id = $("messagePanel");
    messagePanel.innerHTML = '<iframe id="maskBgFrame" src="about:blank" style="position:absolute;z-index:98900;filter:Alpha(opacity=0);'
    + 'top:0px;left:0px;overflow:hidden; width:expression(this.nextSibling.offsetWidth);height:expression(this.nextSibling.offsetWidth);"'
    + ' frameborder="0"></iframe>';
    
	  messageDivObj = document.createElement("div");
	  messageDivObj.id = "messageDiv";
	  messageDivObj.style.position = "absolute";
	  messageDivObj.style.zIndex = "98901";
	  
	  messagePanel.appendChild(messageDivObj);
	  document.body.appendChild(messagePanel);
  }
  messageDivObj.style.display = "block";
  messageDivObj.innerHTML = messageObj.innerHTML;
  var obj = messageDivObj.childNodes[0];
  
  var xy = getStartXY(event, 
    parseInt(obj.offsetWidth) || 100, 
    parseInt(obj.offsetHeight) || 200);
  
  xy.x = (xy.x + (offsetLeft || 0));
  xy.y = (xy.y + (offsetTop || 0));
  messageDivObj.style.left = xy.x + "px";
  messageDivObj.style.top = xy.y + "px";
  
  $("maskBgFrame").style.left = xy.x + "px";
  $("maskBgFrame").style.top = xy.y + "px";
}

//信息关闭。
function closeMessage()
{  
  var messageDivObj = $("messageDiv");
	if (null != messageDivObj)
	{
	  messageDivObj.style.display = "none";
	}
}
  
/**
  下拉列表关联对象，按数组顺序逐级联动显示。
 objs：关联对象数组。格式为：{"对象ID":"关联对象当前值",...}。
*/
function onChangeSelectObj(objs, reset, keyName)
{ 
  var keyName = keyName || "default";
  var startOId = null; //标记开始关联的对象ID。
  var objArrs = selectObjs[keyName];
  for (var oId in objArrs)
  {
    var pValue = objs[oId];
    if (null == startOId && null == pValue)
    {
      continue;
    }
    startOId = oId;
    
    var pOptions = $(oId).options;
    for (var j = pOptions.length; j > 0; j--)
    {
      pOptions[j] = null;
    }
    pOptions[0].selected = true;
    
    if (null != pValue)
    {
      var arrObj = objArrs[oId][pValue];
  
      if (null != arrObj)
      {
        for (var i = 0, j = 1; i < arrObj.length; i++, j++)
        {
          pOptions[j] = arrObj[i];
          pOptions[j].selected = 0 < arrObj[i].attributes["initSelected"].value.length;
        }
        
        if (null == reset || reset)
        {
          pOptions[0].selected = true;
        }
      }
    }
  }
}

var selectObjs = new Array();
function setSelectObjs(objIds, keyName)
{
  var keyName = keyName || "default";
  if (null == selectObjs[keyName])
  {
    selectObjs[keyName] = new Array();
  }
  
  var objArr = selectObjs[keyName];
  for (var i = 0; i < objIds.length; i++)
  {
    objArr[objIds[i]] = new Array();
  }
}

function addSelectOptions(arrName, pValue, dValue, dText, selected, keyName)
{
  var keyName = keyName || "default";
  if (null == selectObjs[keyName])
  {
    alert("请先通过setSelectObjs()绑定关联对象顺序数组。");
    return;
  }
  
  var arrObjs = selectObjs[keyName][arrName];
  if (null == arrObjs[pValue])
  {
    arrObjs[pValue] = new Array();
  }
  var o = document.createElement("option");
  o.value = dValue;
  o.text = dText;

  o.setAttribute("initSelected", selected || "");
  arrObjs[pValue][arrObjs[pValue].length] = o;
}

/**
 * 获取年月日格式的联动下拉列表。
 * required：是否必须。
 * privacy：是否有隐私控制。
 * privacyValue：隐私的控制值。
 */
function getDateSelect(dayObjId, required, privacy, privacyValue,isBack)
{  
  
  var date2 = $(dayObjId).value;
  
  var date = (null != date2 && '' != date2) ? date2.split("-") : null;
  
  var year = null != date ? date[0] : null;
  var month = null != date ? date[1] : null;
  var day = null != date ? date[2] : null;
  if(month!=null){
	  if(month.substring(0,1)=='0'){
		  month=month.substring(1,2);
	  }  
  }
  if(day!=null){
	  if(day.substring(0,1)=='0'){
		  day=day.substring(1,2);
	  }
  }
  
  var endYear = new Date().getFullYear()-10;
  var startYear = endYear-50;
  var str = "<ul><li><select size='1' targetObj='" + dayObjId
    + "' id='yearSelect' name='yearSelect' onchange='verifyDaySelect();'>";
  for (var i = endYear-50; i < endYear; i++)
  {
	  
	 str += "<option value='" + i+"'";
	 if(i==year){
		 str +=" selected ";
	 }
	  str +=">" + i + "</option>";
  }
  str += "</select></li><li class='date_name'>&nbsp;&nbsp;年&nbsp;&nbsp;</li><li class='li1'><ul><li>";
  str += "<select size='1' id='monthSelect' name='monthSelect' onchange='verifyDaySelect();'>";
  for (var i = 1; i <= 12; i++)
  {
    str += "<option value='" + i + "'";
    	 if(i==month){
    		 str +=" selected ";
    	 }
    	     str +=">" + i + "</option>";
  }
  str += "</select></li><li class='date_name'>&nbsp;&nbsp;月&nbsp;&nbsp;</li><li class='li1'><ul><li>";
  str += "<select size='1' id='daySelect' name='daySelect' onchange='verifyDaySelect();'>";
  for (var i = 1; i <= 31; i++)
  {
    str += "<option value='" + i + "'";
    if(i==day){
		 str +=" selected ";
	 }	
         str += ">" + i + "</option>";
  
  }
  str += "</select></li><li class='date_name'>&nbsp;&nbsp;日" + (required ? "<span>*</span>" : "") + "</li>"
  + (privacy ? "<li>&nbsp;&nbsp;公开<input type='checkbox' id='privacyDate' name='privacySelect'"+(isBack ? "checked='checked'" : "")+ " value='" + privacyValue + "'>" : "")
  + "</li></ul>";
  return str;
}
function getUserDateSelect(dayObjId, privacy, privacyValue,isBack)
{  
  
  var date2 = $(dayObjId).value;
  
  var date = (null != date2 && '' != date2) ? date2.split("-") : null;
  
  var year = null != date ? date[0] : null;
  var month = null != date ? date[1] : null;
  var day = null != date ? date[2] : null;
  if(month!=null){
    if(month.substring(0,1)=='0'){
      month=month.substring(1,2);
    }  
  }
  if(day!=null){
    if(day.substring(0,1)=='0'){
      day=day.substring(1,2);
    }
  }
  
  var endYear = new Date().getFullYear()-10;
  var startYear = endYear-50;
  var str = "<select size='1' targetObj='" + dayObjId
    + "' id='yearSelect' name='yearSelect' onchange='verifyDaySelect();'>";
  for (var i = endYear-50; i < endYear; i++)
  {
    
   str += "<option value='" + i+"'";
   if(i==year){
     str +=" selected ";
   }
    str +=">" + i + "</option>";
  }
  str += "</select>年";
  str += "<select size='1' id='monthSelect' name='monthSelect' onchange='verifyDaySelect();'>";
  for (var i = 1; i <= 12; i++)
  {
    str += "<option value='" + i + "'";
       if(i==month){
         str +=" selected ";
       }
           str +=">" + i + "</option>";
  }
  str += "</select>月";
  str += "<select size='1' id='daySelect' name='daySelect' onchange='verifyDaySelect();'>";
  for (var i = 1; i <= 31; i++)
  {
    str += "<option value='" + i + "'";
    if(i==day){
     str +=" selected ";
   }  
         str += ">" + i + "</option>";
  
  }
  str += "</select>日";
  str +=  (privacy ? "&nbsp;&nbsp;公开<input type='checkbox' id='privacyDate' name='privacySelect'"+(isBack ? "checked='checked'" : "")+ " value='" + privacyValue + "'>" : "");
  return str;
}

function verifyDaySelect()
{
  var year = $('yearSelect').value;
  var month = $('monthSelect').value - 1;
  var day = $('daySelect').value;
  var date = new Date(year, month, day);
  while (date.getFullYear != year && 
      date.getMonth() != month && date.getDay() != day)
  {
    date = new Date(year, month, --day);
  }
  
  $('daySelect').options[day-1].selected = true;
  
  changeSelectDate();
}

function changeSelectDate()
{
  var targetObj = $('yearSelect').attributes["targetObj"].value;
  var year = $('yearSelect').value;
  var month = $('monthSelect').value;
  var day = $('daySelect').value;
  
  $(targetObj).value = year + "-" + month + "-" + day;
}

function addSelectOption(selectObjId, optionValue, optionText, defaultData)
{
    var selectObj = $(selectObjId);
    if (null == selectObj)
    {
        return null;
    }
    
    var optionObj = document.createElement("option");
    optionObj.value = optionValue;
    optionObj.text = optionText;
    selectObj.options[selectObj.options.length] = optionObj;
    optionObj.selected = (optionValue == defaultData);
    return optionObj.toString();
}
 
function writeInnerText(id, text)
{
  if (document.all)
  {
    $(id).innerText = text;
  }
  else
  {
    $(id).textContent = text;
  }
}

//复选框
function selectAll(eventObj, targetname)
{
  var objs = document.getElementsByTagName("input");
  for (var i = 0; i < objs.length; i++)
  {
    if (objs[i].id == targetname)
    {
      objs[i].checked = eventObj.checked;
    } 
  }
}

/**
  获取指定对象相对于目标对象的偏移位置坐标。
  如果未指定目标对象targetObj，则默认目标对象为document.body。
*/
function getOffset(obj, targetObj)
{
   var opl = 0;
   var opt = 0;
   var pObj = obj.offsetParent;//检索并获取当前触发事件的对象的父对象
   
   while(pObj!=null && pObj != targetObj && pObj != document.body)      
   {
       opl += parseInt(pObj.offsetLeft) || 0;
       opt += parseInt(pObj.offsetTop) || 0;   
       
       pObj = pObj.offsetParent;
   } 
   var oLeft = parseInt((obj.offsetLeft + opl) || 0);//检索与触发事件的对象相关的鼠标位置的水平坐标
   var oTop = parseInt((obj.offsetTop + opt) || 0);//检索与触发事件的对象相关的鼠标位置的垂直坐标 
  
   return {"l" : oLeft, "h" : oTop};  
}

/**
 * 是否为空
 */
function isBlack(obj) {
  if(obj==null || obj.length<=0) {
    return true;
  }else {
    return false;
  }
}
function isNotBlank(str)
{
  return !isBlack(str);
}
/**
 * 是否是规范的数字
 */
function isValidNum(obj) {
  if(!isBlack(obj)) {
    if(!isNaN(obj)) {
      return true
    }
  }
  return false;
}
/**
 *iframe高度自增
*/
function iframeAutoFit()   
{   
    try  
    {   
        if(window!=parent)   
        {   
            var a = parent.document.getElementsByTagName("IFRAME");   
            for(var i=0; i<a.length; i++) //author:meizz   
            {   
                if(a[i].contentWindow==window)   
                {   
                    var h1=0,w1=0, h2=0,w2=0, d=document, dd=d.documentElement;   
                    a[i].parentNode.style.height = a[i].offsetHeight +"px";    
                    a[i].style.height = "10px";    
                    if(dd && dd.scrollHeight) h1=dd.scrollHeight;   
                    if(dd && dd.scrollWidthHeight) h2=dd.scrollWidth;   
                    if(d.body) h2=d.body.scrollHeight;   
                    if(d.body) w2=d.body.scrollWidth;   
                    var h=Math.max(h1, h2);   
                    var w = Math.max(w1,w2);   
                    if(document.all) {h += 0;}   
                    if(window.opera) {h += 1;} 
                    if(document.all) {w += 0;}   
                    if(window.opera) {w += 1;} 
                    a[i].style.height = a[i].parentNode.style.height = h +"px";     
                    //a[i].style.width = a[i].parentNode.style.width = w +"px";
                }   
            }   
        }   
    }   
    catch (ex){}   
} 
/**
服务端返回消息提示
msg 消息内容
iframe 是否为iframe 如果为iframe则需要在回显后重新定位iframe高度
timer 是否启用定时
*/
function showTip(msg,iframe,timer){
  if(isBlack(msg)) {
    return ;
  }          
  var tip_msg="<div id=\"tip_prompt1\" style=\"width:638px;border:1px solid #FFBA43; background:#FDFFCE; padding:5px;margin-bottom:2px;\"  >";
  tip_msg+="<div style=\"font-size:14px;margin-bottom:2px;text-align:left;\">";
  tip_msg+="<img src=\"/images/tip_ok.gif\" align=\"absmiddle\" />";
  tip_msg+="&nbsp;"+msg+"</div>";
  tip_msg+="</div>";
 document.write(tip_msg);
 if(!timer) {//如果不启用定时
   return ;
 }
 var divObj=document.getElementById("tip_prompt1");
 var tipInterval=setInterval(function(){
  divObj.parentNode.removeChild(divObj);
  clearInterval(tipInterval);
  if(iframe) {
    iframeAutoFit();
  }
 },4000);
}
/**
 * 一个页面会出现多个下提示层的时候
 */
function showMoreTip(msg,iframe,id){      
  var tip_msg="<div id=\"tip_prompt1_+"+id+"\" style=\"width:638px;border:1px solid #FFBA43; background:#FDFFCE; padding:5px;margin-bottom:2px;\"  >";
  tip_msg+="<div style=\"font-size:14px;margin-bottom:2px;text-align:left;\">";
  tip_msg+="<img src=\"/images/tip_ok.gif\" align=\"absmiddle\" />";
  tip_msg+="&nbsp;"+msg+"</div>";
  tip_msg+="</div>";
 document.write(tip_msg);
 var divObj=document.getElementById("tip_prompt1_+"+id);
 id=setInterval(function(){
  divObj.parentNode.removeChild(divObj);
  clearInterval(id);
  if(iframe) {
    iframeAutoFit();
  }
 },4000);
}
/**
 *在页面创建div ，然后附加到指定对象上 
 */
function createDivShow(obj,msg,iframe,id){
  var pdiv=document.createElement("DIV");
  pdiv.id="tip_prompt1_+"+id+"";
  if(document.all) {
    pdiv.style.width="796px";
  }else {
    pdiv.style.width="788px";
  }
  pdiv.style.border="1px solid #FFBA43";
  pdiv.style.background="#FDFFCE";
  pdiv.style.padding="5px";
  pdiv.style.marginBottom="2px";
  var ndiv=document.createElement("DIV");
  ndiv.style.fontSize="14px";
  ndiv.style.marginBottom="2px";
  ndiv.style.textAlign="left";
  ndiv.innerHTML="<img src=\"/images/tip_ok.gif\" align=\"absmiddle\" />&nbsp;"+msg+"";
  pdiv.appendChild(ndiv);
  obj.appendChild(pdiv);
  id=setInterval(function(){
   pdiv.parentNode.removeChild(pdiv);
   clearInterval(id);
   if(iframe) {
     iframeAutoFit();
   }
  },4000);
}

function showTopMsg(bandTblId, msg, oked)
{
  if (null == document.getElementById("topMsgs"))
  {
    var et = document.getElementById(bandTblId).insertRow(0);
    var ed = et.insertCell(-1);
    ed.colSpan = "2";
    ed.className = null == oked ? "errorTips" : oked ? "okMsg" : "noMsg";
    ed.width = "100%";
    ed.innerHTML = "<span id='topMsgs' class='errorMsg'></span>";
  }
  document.getElementById("topMsgs").innerHTML = msg;
}
 
function hiddenTopMsg(bandTblId)
{
  if (null == document.getElementById("topMsgs"))
  {
    return;
  }
  
  document.getElementById(bandTblId).deleteRow(0);
}

/**
 * 获取日期是一年中的第几周。
 */
function getYearWeek(date) 
{
  var d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); 
  var DoW = d.getDay(); 
  d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu 
  var ms = d.valueOf(); // GMT 
  d.setMonth(0); 
  d.setDate(4); // Thu in Week 1 
  return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; 
} 


var msgContent=function(objText,showSpan){
  this.obj=document.getElementById(objText);
  this.showObj=document.getElementById(showSpan);
}
msgContent.prototype={
  update:function(){
    if(this.obj == null || this.showObj== null){
      return ;
    }
    if(this.last==this.obj.value) return;
    this.last=this.obj.value;
    var length=this.obj.value.length;
    if(length <= 200){
      this.showObj.innerHTML="你还可输入 <span>"+(200-length)+"</span> 个字";
    }else{
      this.showObj.innerHTML="你已经超出 <span class='error'>"+(length-200)+"</span> 个字";
    }
  }
}
