dial = (function () {

  var blui = {
        style: 'position:absolute;display:none;top:0px;left:-40px;zIndex:200;width:0px;height:0px;backgroundColor:#ccc;opacity:0.6;filter:alpha(Opacity=60);',
        id: 'blockui'
      },
      reToForm = []

  var cfmid = null;

  function toggleUI (state) {
    var div = document.getElementById(blui.id);
      if (!div) {
        div = document.body.appendChild(document.createElement('div'));
        div.id = blui.id;
      }
    setStyle(div, blui.style);
      if (state && div) {
        window.onresize = null;
        document.body.removeChild(div, true);
      }
      if (!state) {
        div.style.display = 'block';
        setBlockSize(div);
        window.onresize = function () {
          setBlockSize(div);
          setFormPosition(document.getElementById(cfmid));
        }
      }
  }

  function setStyle (div, str) {
    var arr = str.split(';');
      for (var i = 0; i < arr.length; i++) {
        var tmp = arr[i].split(':');
          try {
            div.style[tmp[0]] = tmp[1];
          }
          catch (e) {}
      }
  }

  function setBlockSize (div) {
      if (!div) {return}
    div.style.width = (40+document.body.clientWidth)+'px';
    div.style.height = '3000px';//2*document.body.clientHeight+'px';
  }

  function setFormPosition (form) {
      if (!form) {return}
    form.style.left = Math.round((document.body.clientWidth-form.clientWidth)/2)+'px'
    var scrolled = window.pageYOffset ? window.pageYOffset : document[(document.compatMode == 'CSS1Compat') ? 'documentElement' : 'body'].scrollTop;
    form.style.top = Math.round(scrolled+150)+'px'
  }

  function show (fmid, id) {
    toggleUI(false);
    cfmid = fmid;
    var form = document.getElementById(fmid);
    form.reset();
    form.object.value = id;
    form.style.display = 'block';
    setFormPosition(form);
    document.body.onkeydown = function (e) {
      e = e ? e : window.event;
        if (e.keyCode == 27) {
          close();
        }
    }
    window.onscroll = function () {setFormPosition(form)}
	if(window.OnDialogOpen){
	window.OnDialogOpen(form);
	}
  }

  function close () {
    toggleUI(true);
    document.getElementById(cfmid).style.display = 'none';
    window.onscroll = null;
    document.body.onkeydown = null;
  }

  return {
    init: function (regExp, fmid) {
      reToForm.push({re: regExp, fid: fmid});
      document.body.onclick = function (e) {
        e = e ? e : window.event;
        var obj = e.target ? e.target : e.srcElement;
            for (var i = 0; i < reToForm.length; i++) {
                if (reToForm[i].re.test(obj.id)) {
                  show(reToForm[i].fid, obj.id.split('_')[1]);
                  return reToForm[i];
                }
            }
      }
    },
    close: close,
	show:  function (fmid,id){
	toggleUI(false);
    cfmid = fmid;
    var form = document.getElementById(fmid);
    form.reset();
    form.object.value = id;
    form.style.display = 'block';
    setFormPosition(form);
    window.onscroll = function () {setFormPosition(form)}
	if(window.OnDialogOpen){
	window.OnDialogOpen(form);
	}
	}
  }
})();


function findPos (obj) {
    var curleft = 0,
        curtop = 0;
        while (obj) {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
          //alert(obj.tagName+': '+curleft+' '+curtop+'; '+obj.offsetLeft+' '+obj.offsetTop);
          obj = obj.offsetParent;
        }
    return {x: curleft, y: curtop}
	}
	
	function findPos2(obj)
{
 var curleft = 0;
 var curtop = 0;
 if (obj.offsetParent)
 {
  while (obj.offsetParent)
  {
   curleft += obj.offsetLeft-obj.scrollLeft;
   curtop += obj.offsetTop-obj.scrollTop;
   var position='';
   if (obj.style&&obj.style.position)
      position=obj.style.position.toLowerCase();
   if (!position)
       if (obj.currentStyle && obj.currentStyle.position)
           position = obj.currentStyle.position.toLowerCase();
   if ((position=='absolute')||(position=='relative')) break;
   while (obj.parentNode!=obj.offsetParent) {
    obj=obj.parentNode;
    curleft -= obj.scrollLeft;
    curtop -= obj.scrollTop;
   }
   obj = obj.offsetParent;
  }
 }
 else {
     if (obj.x)
      curleft += obj.x;
  if (obj.y)
      curtop += obj.y;
    }
 return {x:curleft,y:curtop};
}	
function expandPersonal () {
	  var ico = document.getElementById('pmenubtn'),
	      menu = document.getElementById('pmenu'),
	      pos = findPos2(ico);
	  menu.style.top = (pos.y+13)+'px';
	  menu.style.left = (pos.x-((window.external &&
typeof window.XMLHttpRequest == "undefined") ? 1 : 0))+'px';
	  menu.style.display = 'block';
	  document.body.onmousedown = function (e) {
	    e = e ? e : window.event;
	    var el = e.target ? e.target : e.srcElement;
	      while (el != document.body) {
	        if (el == menu) {
	          return true;
	        }
	        el = el.parentNode;
	      }
	    menu.style.display = 'none';
	  }
	}