var ajxreq; 

function loadXMLDoc(sid,file,key,loc,tmp) {
  var url=file+"?"+sid+"&"+key;
  if (sid && key) {
    url=file+"?"+sid+"&"+key;
  } else {
    if (sid) {
      url=file+"?"+sid;
    } else {
      if (key) {
        url=file+"?"+key;
      } else {
        url=file;
      }
    }
  }
  if (tmp) {getObject(loc).innerHTML = tmp;}
  try { ajxreq = new ActiveXObject("Msxml2.XMLHTTP"); } 
  catch(e) { 
  try { ajxreq = new ActiveXObject("Microsoft.XMLHTTP"); } 
  catch(oc) { ajxreq = null; } 
  } 
  if (!ajxreq && typeof XMLHttpRequest != "undefined") { 
    ajxreq = new XMLHttpRequest(); 
  } 
  if (ajxreq != null) {
    var ctrl = getBusyOverlay(document.getElementById(loc));
    ajxreq.onreadystatechange=function(){
      if(ajxreq.readyState!=4)return;
      if(ajxreq.status==200){
        getObject(loc).innerHTML = ajxreq.responseText
      }
      };
    ajxreq.open("GET", url, true);
    //ajxreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    ajxreq.send(null); 
  } 
} 

function getObject(name) { 
   var ns4 = (document.layers) ? true : false; 
   var w3c = (document.getElementById) ? true : false; 
   var ie4 = (document.all) ? true : false; 

   if (ns4) return eval('document.' + name); 
   if (w3c) return document.getElementById(name); 
   if (ie4) return eval('document.all.' + name); 
   return false; 
}

function SetFocus(TargetFormName) {
  var target = 0;
  if (TargetFormName != "") {
    for (i=0; i<document.forms.length; i++) {
      if (document.forms[i].name == TargetFormName) {
        target = i;
        break;
      }
    }
  }

  var TargetForm = document.forms[target];
    
  for (i=0; i<TargetForm.length; i++) {
    if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) {
      TargetForm.elements[i].focus();

      if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) {
        TargetForm.elements[i].select();
      }

      break;
    }
  }
}

function RemoveFormatString(TargetElement, FormatString) {
  if (TargetElement.value == FormatString) {
    TargetElement.value = "";
  }

  TargetElement.select();
}

function CheckDateRange(from, to) {
  if (Date.parse(from.value) <= Date.parse(to.value)) {
    return true;
  } else {
    return false;
  }
}

function IsValidDate(DateToCheck, FormatString) {
  var strDateToCheck;
  var strDateToCheckArray;
  var strFormatArray;
  var strFormatString;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var intDateSeparatorIdx = -1;
  var intFormatSeparatorIdx = -1;
  var strSeparatorArray = new Array("-"," ","/",".");
  var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
  var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  strDateToCheck = DateToCheck.toLowerCase();
  strFormatString = FormatString.toLowerCase();
  
  if (strDateToCheck.length != strFormatString.length) {
    return false;
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strFormatString.indexOf(strSeparatorArray[i]) != -1) {
      intFormatSeparatorIdx = i;
      break;
    }
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) {
      intDateSeparatorIdx = i;
      break;
    }
  }

  if (intDateSeparatorIdx != intFormatSeparatorIdx) {
    return false;
  }

  if (intDateSeparatorIdx != -1) {
    strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
    if (strFormatArray.length != 3) {
      return false;
    }

    strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
    if (strDateToCheckArray.length != 3) {
      return false;
    }

    for (i=0; i<strFormatArray.length; i++) {
      if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') {
        strMonth = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'dd') {
        strDay = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'yyyy') {
        strYear = strDateToCheckArray[i];
      }
    }
  } else {
    if (FormatString.length > 7) {
      if (strFormatString.indexOf('mmm') == -1) {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
      } else {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
      }

      strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
      strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
    } else {
      return false;
    }
  }

  if (strYear.length != 4) {
    return false;
  }

  intday = parseInt(strDay, 10);
  if (isNaN(intday)) {
    return false;
  }
  if (intday < 1) {
    return false;
  }

  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) {
    for (i=0; i<strMonthArray.length; i++) {
      if (strMonth == strMonthArray[i]) {
        intMonth = i+1;
        break;
      }
    }
    if (isNaN(intMonth)) {
      return false;
    }
  }
  if (intMonth > 12 || intMonth < 1) {
    return false;
  }

  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) {
    return false;
  }
  if (IsLeapYear(intYear) == true) {
    intDaysArray[1] = 29;
  }

  if (intday > intDaysArray[intMonth - 1]) {
    return false;
  }
  
  return true;
}

function IsLeapYear(intYear) {
  if (intYear % 100 == 0) {
    if (intYear % 400 == 0) {
      return true;
    }
  } else {
    if ((intYear % 4) == 0) {
      return true;
    }
  }

  return false;
}

function submitParentForm(obj){
//alert(obj.tagName + ' -- ' + obj.name)
if (obj.tagName=='FORM'){  
  eval('document.forms["'+obj.name+'"].submit()'); 
  }
else{ 
  submitParentForm(obj.parentNode);
} 
}

function submitParentForm1(obj,isOnSubmit,myParams){
//alert(obj.tagName + ' -- ' + obj.name)
var myForm;
var myRet;
  if (obj.tagName=='FORM'){
  //alert(obj.id)
    myForm=obj;
    //alert(obj.method)
    myForm.action+=myParams
    //alert("action= "+myForm.action)    
    if(isOnSubmit=='true'){
      myRet=myForm.onsubmit();
      if(myRet==true)
        myForm.submit(); 
    }
    else{
      myForm.submit();
    } 
  }
  else{
    submitParentForm1(obj.parentNode,isOnSubmit,myParams);
  } 
}


function getBusyOverlay(parent,overlay,busy) {
  if(typeof(parent)==='object' && document.getElementsByTagName) {
    function parseWidth(val) {return (isNaN(parseInt(val,10))?0:parseInt(val,10));}
    var isIE,isVL,isCV,isWK,isGE,i,b,o,lt,rt,lb,rb,cz,cs,size,inner,outer,string,canvas,context,ctrl,opacity,color,text,styles,waiting=true;
    if(parent.currentStyle){cs=parent.currentStyle;}else if(document.defaultView&&document.defaultView.getComputedStyle){cs=document.defaultView.getComputedStyle(parent,"");}else{cs=parent.style;}
    while(cs.display.search(/block|inline-block|table|inline-table|list-item/i)<0) {parent=parent.parentNode; if(parent.currentStyle){cs=parent.currentStyle;}else if(document.defaultView&&document.defaultView.getComputedStyle){cs=document.defaultView.getComputedStyle(parent,"");}else{cs=parent.style;} if(parent.tagName.toUpperCase()==='BODY') {parent="";}}
    if(typeof(parent)==='object') {
      if(!overlay) {overlay=new Object(); overlay['opacity']=0;} if(!busy) {busy=new Object(); busy['size']=32;}
      opacity=Math.max(0.0,Math.min(1.0,(typeof overlay['opacity']==='number'?overlay['opacity']:0)||0)); color=(typeof overlay['color']==='string'?overlay['color']:'white');
      text=(typeof overlay['text']==='string'?overlay['text']:''); styles=(typeof overlay['style']==='string'?overlay['style']:'');
      canvas=document.createElement("canvas"); isCV=canvas.getContext?1:0; 
      isWK=navigator.userAgent.indexOf('WebKit')>-1?1:0; isGE=navigator.userAgent.indexOf('Gecko')>-1&&window.updateCommands?1:0;
      isIE=navigator.appName=='Microsoft Internet Explorer'&&window.navigator.systemLanguage&&!window.opera?1:0;
      isVL=document.all&&document.namespaces?1:0; outer=document.createElement('div'); 
      parent.style.position=(cs.position=='static'?'relative':cs.position);
      cz=parent.style.zIndex>=0?(parent.style.zIndex-0+2):2;
      if(isIE && !cs.hasLayout) {parent.style.zoom=1;}
      outer.style.position='absolute'; outer.style.overflow='hidden';
      outer.style.display='block'; outer.style.zIndex=cz; 
      outer.style.left=0+'px'; outer.style.top=0+'px';
      outer.style.width='100%'; outer.style.height='100%';
      if(isIE) {outer.className='buzy_ele'; outer.style.zoom=1; outer.style.margin='0px'; outer.style.padding='0px'; outer.style.height=(parent.offsetHeight-parseWidth(cs.borderBottomWidth)-parseWidth(cs.borderTopWidth)); outer.style.width=(parent.offsetWidth-parseWidth(cs.borderLeftWidth)-parseWidth(cs.borderRightWidth));}
      if(typeof(cs.borderRadius)=="undefined"){
        if(typeof(cs.MozBorderRadius)!="undefined"){
          lt=parseFloat(cs.MozBorderRadiusTopleft)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
          rt=parseFloat(cs.MozBorderRadiusTopright)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
          lb=parseFloat(cs.MozBorderRadiusBottomleft)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
          rb=parseFloat(cs.MozBorderRadiusBottomright)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
          outer.style.MozBorderRadiusTopleft=lt+"px"; outer.style.MozBorderRadiusTopright=rt+"px"; outer.style.MozBorderRadiusBottomleft=lb+"px"; outer.style.MozBorderRadiusBottomright=rb+"px";
        }else if(typeof(cs.WebkitBorderRadius)!="undefined"){
          lt=parseFloat(cs.WebkitBorderTopLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
          rt=parseFloat(cs.WebkitBorderTopRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
          lb=parseFloat(cs.WebkitBorderBottomLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
          rb=parseFloat(cs.WebkitBorderBottomRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
          outer.style.WebkitBorderTopLeftRadius=lt+"px"; outer.style.WebkitBorderTopRightRadius=rt+"px"; outer.style.WebkitBorderBottomLeftRadius=lb+"px"; outer.style.WebkitBorderBottomRightRadius=rb+"px";
        }
      }else {
        lt=parseFloat(cs.borderTopLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
        rt=parseFloat(cs.borderTopRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
        lb=parseFloat(cs.borderBottomLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
        rb=parseFloat(cs.borderBottomRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
        outer.style.borderTopLeftRadius=lt+"px"; outer.style.borderTopRightRadius=rt+"px"; outer.style.borderBottomLeftRadius=lb+"px"; outer.style.borderBottomRightRadius=rb+"px";
      }
      parent.appendChild(outer);
      inner=document.createElement('div');
      inner.style.position='absolute'; inner.style.cursor='progress';
      inner.style.display='block'; inner.style.zIndex=(cz-1);
      inner.style.left=0+'px'; inner.style.top=0+'px';
      inner.style.width=100+'%'; inner.style.height=100+'%';
      inner.style.backgroundColor=color;
      if(isIE) {inner.style.zoom=1; inner.style.margin='0px'; inner.style.padding='0px'; inner.style.height=outer.style.height; inner.style.width=outer.style.width; }
      if(typeof(cs.borderRadius)=="undefined"){
        if(typeof(cs.MozBorderRadius)!="undefined"){
          inner.style.MozBorderRadiusTopleft=lt+"px"; inner.style.MozBorderRadiusTopright=rt+"px"; inner.style.MozBorderRadiusBottomleft=lb+"px"; inner.style.MozBorderRadiusBottomright=rb+"px";
        }else if(typeof(cs.WebkitBorderRadius)!="undefined"){
          inner.style.WebkitBorderTopLeftRadius=lt+"px"; inner.style.WebkitBorderTopRightRadius=rt+"px"; inner.style.WebkitBorderBottomLeftRadius=lb+"px"; inner.style.WebkitBorderBottomRightRadius=rb+"px";
        }
      }else {
        inner.style.borderTopLeftRadius=lt+"px"; inner.style.borderTopRightRadius=rt+"px"; inner.style.borderBottomLeftRadius=lb+"px"; inner.style.borderBottomRightRadius=rb+"px";
      }
      if(isIE) {inner.style.filter="alpha(opacity="+parseInt(opacity*100)+")";}else {inner.style.opacity=opacity;}
      outer.appendChild(inner); 
      size=Math.max(16,Math.min(512,(typeof busy['size']==='number'?(busy['size']==0?32:busy['size']):32)));
      if(isVL){if(document.namespaces['v']==null) {var stl = document.createStyleSheet(); stl.addRule("v\\:*", "behavior: url(#default#VML);"); document.namespaces.add("v", "urn:schemas-microsoft-com:vml");}}
      if(!isCV){canvas=document.createElement("div");}
      canvas.style.position='absolute'; 
      canvas.style.cursor='progress'; canvas.style.zIndex=(cz-0+1);
      canvas.style.top='50%'; canvas.style.left='50%';
      canvas.style.marginTop='-'+(size/2)+'px';
      canvas.style.marginLeft='-'+(size/2)+'px';
      canvas.width=size; canvas.height=size;
      canvas.style.width=size+"px"; canvas.style.height=size+"px";
      outer.appendChild(canvas);
      if(typeof(text)!=""){
        string=document.createElement('div');
        string.style.position='absolute'; string.style.overflow='hidden'; 
        string.style.cursor='progress'; string.style.zIndex=(cz-0+1);
        string.style.top='50%'; string.style.left='0px';
        string.style.marginTop=2+(size/2)+'px'; string.style.textAlign='center'; 
        string.style.width=100+'%'; string.style.height='auto';
        if(typeof(styles)!=""){
          string.innerHTML='<span '+(styles.match(/:/i)?'style':'class')+'="'+styles+'">'+text+'</span>';
        }else {
          string.innerHTML='<span>'+text+'</span>';
        } outer.appendChild(string);
      }
      if(isGE){
        outer.style.MozUserSelect="none"; inner.style.MozUserSelect="none"; canvas.style.MozUserSelect="none";
      }else if(isWK){
        outer.style.KhtmlUserSelect="none"; inner.style.KhtmlUserSelect="none"; canvas.style.KhtmlUserSelect="none";
      }else if(isIE){
        outer.style.unselectable="on"; inner.style.unselectable="on"; canvas.style.unselectable="on";
      }
      if(isVL){
        ctrl=getBusyVL(canvas,busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();
      }else if(isCV){
        ctrl=getBusyCV(canvas.getContext("2d"),busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();
      }else {
        ctrl=getBusy(canvas,busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();
      }
      if(isIE) { //parent.onresize = onIEWinResize; 
      }
      return {remove: function (){if(waiting){waiting=false; ctrl.stop(); delete ctrl; parent.removeChild(outer);} } };
    }
  }
}
function getBusy(obj,cl,sz,tp,ir,w,ct,sp,mo) {
  function getHEX(v){
    var col=v||'#000000';
    if(!col.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
      if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {col='#'+v.substr(1,1)+v.substr(1,1)+v.substr(2,1)+v.substr(2,1)+v.substr(3,1)+v.substr(3,1);}
    }return col;
  }
  var running=false,i=0,os=0,al=0,f=100,c,h,p,t,x,y,v,hp,ph,sh,ele=new Array();;
  c=getHEX(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
  ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
  sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
  w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
  al=360/ct; hp=(Math.PI/2)*-1; ph=Math.PI/180; w=(t!='c'?parseInt((w/2)*3):w); v=parseInt((sz/2)-(w/2));    
  for(i=0;i<ct;i++) {
    sh=document.createElement('div');
    x=Math.round(v+v*Math.cos(hp+(i+1)*al*ph)); 
    y=Math.round(v+v*Math.sin(hp+(i+1)*al*ph));
    sh.style.position='absolute'; sh.style.margin='0px';
    sh.style.width=w+'px'; sh.style.height=w+'px';
    sh.style.lineHeight='1px'; sh.style.fontSize='0px';
    sh.style.top=y+'px'; sh.style.left=x+'px'; sh.style.backgroundColor=c;
    if(document.all&&!window.opera) {sh.style.filter="alpha(opacity="+parseInt(Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))*100)+")";
    }else {sh.style.opacity=Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1)))); }
    obj.appendChild(sh); ele[i]=sh;
  }
  function nextLoop(){
    if(!running) {return;} os=(os+1)%ct; 
    if(document.all&&!window.opera) {
      for(i=0;i<ct;i++){al=((os+i)%ct); ele[al].style.filter="alpha(opacity="+parseInt(Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))*100)+")";}
    }else {
      for(i=0;i<ct;i++){al=((os+i)%ct); ele[al].style.opacity=Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))));}
    } setTimeout(nextLoop,sp);
  }
  nextLoop(0);
  return {
    start: function (){if(!running){running=true; nextLoop(0);}},
    stop: function (){running=false; for(i=0;i<ct;i++) {if(document.all&&!window.opera) {ele[i].style.filter="alpha(opacity=0)";}else {ele[i].setAttribute('opacity',0);}}},
    pause: function (){running=false; }
  };
}
function getBusyVL(obj,cl,sz,tp,ir,w,ct,sp,mo) {
  function getHEX(v){
    var col=v||'#000000';
    if(!col.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
      if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {col='#'+v.substr(1,1)+v.substr(1,1)+v.substr(2,1)+v.substr(2,1)+v.substr(3,1)+v.substr(3,1);}
    }return col;
  }
  var running=false,os=0,al=0,f=100,c,i,h,p,t,x,y,hs,qs,hw,qw,rp,sh,fl,ele=new Array();;
  c=getHEX(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
  ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
  sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
  w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
  h=(sz/2)-ir; x=sz/2; y=x; al=360/ct; hs=parseInt((sz/2)*f); qs=parseInt(hs/2); 
  hw=parseInt((w/2)*f); qw=parseInt(hw/2); rp=hs-parseInt(ir*f); 
  switch(t) {
    case "c": p='m '+hs+','+(rp-hw)+' ar '+(hs-hw)+','+(rp-hw-hw)+','+(hs+hw)+','+rp+','+(hs-hw)+','+(rp-hw-hw)+','+(hs-hw)+','+(rp-hw-hw)+' e'; break;
    case "p": p='m '+(hs-qw)+',0 l '+(hs-hw)+','+rp+','+(hs+hw)+','+rp+','+(hs+qw)+',0 x e'; break;
    case "o": p='m '+hs+','+(rp-qs)+' ar '+(hs-hw)+',0,'+(hs+hw)+','+rp+','+(hs-hw)+',0,'+(hs-hw)+',0 e'; break;
    case "t": p='m '+(hs-hw)+','+rp+' l '+(hs-hw)+','+hw+' qy '+hs+',0 qx '+(hs+hw)+','+hw+' l '+(hs+hw)+','+rp+' x e'; break;
    default: p='m '+(hs-hw)+',0 l '+(hs-hw)+','+rp+','+(hs+hw)+','+rp+','+(hs+hw)+',0 x e'; break;
  } 
  for(i=0;i<ct;i++) {
    sh=document.createElement('v:shape');
    sh.setAttribute('filled','t');
    sh.setAttribute('stroked','f');
    sh.setAttribute('coordorigin','0,0');
    sh.setAttribute('coordsize',(sz*f)+','+(sz*f));
    sh.setAttribute('path',p);
    sh.style.rotation=(i*al);
    sh.style.position='absolute'; sh.style.margin='0px';
    sh.style.width=sz+'px'; sh.style.height=sz+'px';
    sh.style.top='-1px'; sh.style.left='-1px';
    obj.appendChild(sh);
    fl=document.createElement('v:fill');
    fl.setAttribute('color',c);
    fl.setAttribute('opacity',Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1)))));
    sh.appendChild(fl);
    ele[i]=fl;
  }
  function nextLoop(){
    if(!running) {return;}
    os=(os+1)%ct; 
    for(i=0;i<ct;i++){ al=((os+i)%ct);
      ele[al].setAttribute('opacity',Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1)))));
    }setTimeout(nextLoop,sp);
  }
  nextLoop(0);
  return {
    start: function (){if(!running){running=true; nextLoop(0);}},
    stop: function (){running=false; for(i=0;i<ct;i++) {ele[i].setAttribute('opacity',0);}},
    pause: function (){running=false; }
  };
}
function getBusyCV(ctx,cl,sz,tp,ir,w,ct,sp,mo) {
  function getRGB(v){
    function hex2dec(h){return(Math.max(0,Math.min(parseInt(h,16),255)));}
    var r=0,g=0,b=0; v = v||'#000'; if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {
      r=hex2dec(v.substr(1,1)+v.substr(1,1)),g=hex2dec(v.substr(2,1)+v.substr(2,1)),b=hex2dec(v.substr(3,1)+v.substr(3,1));
    }else if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
      r=hex2dec(v.substr(1,2)),g=hex2dec(v.substr(3,2)),b=hex2dec(v.substr(5,2));
    } return r+','+g+','+b;
  }
  function drawOval(ctx,w,h){ctx.beginPath(); ctx.moveTo(-w/2,h/2); ctx.quadraticCurveTo(-w/2,0,0,0); ctx.quadraticCurveTo(w/2,0,w/2,h/2); ctx.quadraticCurveTo(w/2,h,0,h); ctx.quadraticCurveTo(-w/2,h,-w/2,h/2); ctx.fill();}
  function drawTube(ctx,w,h){ctx.beginPath(); ctx.moveTo(w/2,0); ctx.lineTo(-w/2,0); ctx.lineTo(-w/2,h-(w/2)); ctx.quadraticCurveTo(-w/2,h,0,h); ctx.quadraticCurveTo(w/2,h,w/2,h-(w/2)); ctx.fill();}
  function drawPoly(ctx,w,h){ctx.beginPath(); ctx.moveTo(w/2,0); ctx.lineTo(-w/2,0); ctx.lineTo(-w/4,h); ctx.lineTo(w/4,h); ctx.fill();}
  function drawCirc(ctx,r,z){ctx.beginPath(); ctx.arc(r,r,r,0,Math.PI*2,false); ctx.fill();}  
  var running=false,os=0,al=0,c,i,h,t,x,y;
  c=getRGB(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
  ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
  sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
  w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
  h=(sz/2)-ir; x=sz/2; y=x;
  function nextLoop(){
    if(!running) {return;}
    os=(os+1)%ct; ctx.clearRect(0,0,sz,sz); ctx.save(); ctx.translate(x,y);
    for(i=0;i<ct;i++){ al=2*((os+i)%ct)*Math.PI/ct; 
      ctx.save(); ctx.translate(ir*Math.sin(-al),ir*Math.cos(-al)); ctx.rotate(al);
      ctx.fillStyle='rgba('+c+','+Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))+')';
      switch(t) {case "c": drawCirc(ctx,w/2,h); break; case "o": drawOval(ctx,w,h); break; case "p": drawPoly(ctx,w,h); break; case "t": drawTube(ctx,w,h); break; default: ctx.fillRect(-w/2,0,w,h); break;} ctx.restore();
    } ctx.restore();
    setTimeout(nextLoop,sp);
  }
  nextLoop(0);
  return {
    start: function (){if(!running){running=true; nextLoop(0);}},
    stop: function (){running=false; ctx.clearRect(0,0,sz,sz); },
    pause: function (){running=false; }
  };
}

function showO(loc,tmp){
  document.getElementById(loc).style.display='block';
 getObject(loc).innerHTML = tmp;
 var ctrl = getBusyOverlay(document.getElementById(loc));
}

