function ccGetOffsetLeft(obj) {
  if (obj.tagName && obj.tagName=="BODY") { return 0;}
  else return obj.offsetLeft + ccGetOffsetLeft(obj.offsetParent);
}

function ccGetOffsetTop(obj) {
  if(!obj){ return 0; }
  if (obj.tagName && obj.tagName=="BODY") { return 0;}
  else return obj.offsetTop + ccGetOffsetTop(obj.offsetParent);
}

var ccPickerArray = new Array();
var activePickerId;

function ccShowPickerById(popId, displayById, clickFromId,isNeedScrollTop) {
  var popObj = document.getElementById(popId);
  var displayByObj = document.getElementById(displayById);
  var clickFromObj = document.getElementById(clickFromId);
  ccPickerArray[popId]=popObj;
  ccShowPicker(popObj, displayByObj, clickFromObj,isNeedScrollTop);
}

function ccShowPicker(popObj, displayByObj, clickFromObj,isNeedScrollTop) {
  if (activePickerId != popObj.id) { ccHideAllPickers(); } //avoid blinking
  popObj.style.display="block";
  var left = ccGetOffsetLeft(displayByObj);
  var heightTop=displayByObj.offsetHeight;
  var scrollTop=0;
  if(typeof(isNeedScrollTop)!='undefined' && isNeedScrollTop){
    scrollTop=document.body.scrollTop;
  }
  if( document.body.clientWidth <= displayByObj.clientWidth+left+4){
    left = document.body.clientWidth - popObj.clientWidth - displayByObj.clientWidth - 2;
    heightTop=4;
  }else if(left<2){
    left = left + displayByObj.clientWidth + 12;
  }else if (document.body.clientWidth < (left+popObj.clientWidth)) {
    left = document.body.clientWidth - popObj.clientWidth - 12;
  }
  popObj.style.display="";
  popObj.style.left = left;
  popObj.style.top = ccGetOffsetTop(displayByObj) + heightTop + scrollTop; 
  var ccHeight = popObj.getAttribute("ccheight");
  if (ccHeight) {popObj.style.height = ccHeight + "px";}
  popObj.style.visibility="visible";
  popObj.style.zIndex=10;
  activePickerId = popObj.id;  
  if (clickFromObj) {
    if (document.all) {
      document.onclick = function() {ccIECheckPicker(clickFromObj);}
    } else {
      document.addEventListener("click",function(event){ccHideAllPickers();},true);
    }
  }
}

function ccIsActivePicer(popObj) { return (popObj.id ==  activePickerId);}
function ccClosePicker() { ccHidePicker(activePickerId); self.focus();}
function ccHideAllPickers() { for (var key in ccPickerArray) {ccHidePicker(key);} }

function ccIECheckPicker(clickFrom) {
  var fooNode =  window.event.srcElement;
  if (fooNode!=clickFrom) {
    if (fooNode.parentNode!=clickFrom) {ccHideAllPickers();}
  }
}

function ccHidePicker(popId) {
  var popObj = document.getElementById(popId);
  if(typeof(popObj)!="undefined" && popObj!=null){
    popObj.style.visibility="hidden";
    popObj.height = 0;
  }
}

var ccPickerObj={
  doInterval:function(funcName,time,p_thread){
    if(typeof(p_thread)!='undefined' && p_thread){
      this.killInterval(p_thread);
    }
    var args=[];
    for(var i=3;i<arguments.length;i++){
     args.push(arguments[i]);
    }
    return window.setInterval(function(){
     funcName.apply(this,args);
    },time);
  },
  killInterval:function(p_thread){
    if(p_thread){
      window.clearInterval(p_thread);
      p_thread=false;
    }
  },
  doShowDialog:function(p_isShow,p_prefix,p_msg,p_objId){
    ccExpandArea(p_prefix+'MsgImg');
    if(p_isShow){
      var b=document.getElementById(p_prefix+'MsgBody');
      b.className="ccMsg";
      b.innerHTML=p_msg;
      ccShowPickerById(p_prefix+'Msg',p_objId,'');
    }else{
      ccHidePicker(p_prefix+'Msg');
    }
  }   
}

