/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Vic Phillips | http://www.vicsjavascripts.org.uk */
// The math and aliase techniques learnt from a script by
// Cameron Cooke and Tim Hutchison - http://www.curvycorners.net

function dcwCorners(){
 var dcwdivs=document.getElementsByTagName('BODY')[0].getElementsByTagName('DIV');
 var dcwary=[];
 for (var dcw0=0;dcw0<dcwdivs.length;dcw0++){
  if (dcwdivs[dcw0].className.match('dcw')){ dcwary.push(dcwdivs[dcw0]); }
 }
 for (var dcw1=0;dcw1<dcwary.length;dcw1++){
  dcwCornersMake(dcwary[dcw1]);
 }
}

function dcwCornersMake(dcwobj){
 var dcwstyle=dcwStyleAry(dcwobj);
 dcwOptions(dcwobj);
 var dcwopts=dcwOptions(dcwobj);
 var dcwrary=[dcwopts[0]*1];
 if (dcwopts[1]&&dcwopts[2]){ dcwrary.push(dcwopts[0]+dcwopts[1]); }
 else if (dcwstyle[5]){
  if (dcwstyle[5].match('#')){ dcwrary.push(dcwopts[0]+parseInt(dcwstyle[5].split(' ')[1])); dcwopts[2]='#'+dcwstyle[5].split('#')[1].split(' ')[0]; }
  else { dcwrary.push(dcwopts[0]+parseInt(dcwstyle[5].split('px')[0]));  dcwopts[2]='rgb'+(dcwstyle[5].split('rgb')[1].split(')')[0])+')'; }
 }
 var dcww=parseInt(dcwstyle[1]);
 var dcwh=parseInt(dcwstyle[2])||dcwobj.offsetHeight;
 if (!dcww){ return; }
 dcwS(dcwobj,{position:(dcwstyle[0]=='static'||!dcwstyle[0])?'relative':dcwstyle[0],borderTop:'0px',borderLeft:'0px', borderRight:'0px', borderBottom:'0px'});
 var dcwbwh=dcwrary[0]+(dcwrary[1])?dcwrary[1]:0;
 if (dcwopts[4]){
  var dcwp=dcwS('DIV',{position:dcwobj.style.position,left:dcwobj.style.left,top:dcwobj.style.top,width:(dcww+dcwbwh*2)+'px',height:(dcwh+dcwbwh*2)+'px'});
  dcwobj.parentNode.replaceChild(dcwp,dcwobj);
  dcwp.appendChild(dcwobj);
  dcwS(dcwobj,{left:dcwbwh+'px',top:dcwbwh+'px'});
 }
 for (var dcw0=0;dcw0<dcwrary.length;dcw0++){
  var dcwcary=[];
  var dcwclone=dcwS(dcwobj.cloneNode(false),{position:'absolute',overflow:'hidden',zIndex:1+dcw0+'',width:'0px',height:'0px',left:'0px',top:'0px',backgroundColor:(dcw0==0)?dcwstyle[3]:dcwopts[2]},dcwobj);
  dcwcary[0]=dcwS('DIV',{position:'absolute',zIndex:1-dcw0+'',width:dcwrary[dcw0]+'px',height:dcwrary[dcw0]+'px',left:dcww+'px',top:dcwh+'px',border:'solid black 0px'},dcwobj);
  for (var dcw1=0;dcw1<dcwrary[dcw0];dcw1++){
   var dcwht=Math.floor(Math.sqrt(Math.pow(dcwrary[dcw0],2)-Math.pow((dcw1+1),2))-1);
   dcwS(dcwclone.cloneNode(false),{left:dcw1+'px',top:'0px',width:'1px',height:(dcwht+1)+'px'},dcwcary[0]);
   for(var dcw1a=(dcwht+1);dcw1a<Math.ceil(Math.sqrt(Math.pow(dcwrary[dcw0],2)-Math.pow(dcw1,2)));dcw1a++){
    dcwS(dcwclone.cloneNode(false),{left:dcw1+'px',top:dcw1a+'px',width:'1px',height:dcwAntiAliase(dcw1,dcw1a,dcwrary)+'px'},dcwcary[0]);
   }
  }
  var dcwmary=['BR','BL','TL','TR'];
  for (var dcw2=1;dcw2<4;dcw2++){
   dcwcary[dcw2]=dcwcary[0].cloneNode(true);
   dcwS(dcwcary[dcw2],{left:((dcw2<3)?-dcwrary[dcw0]:dcww)+'px',top:((dcw2<2)?dcwh:-dcwrary[dcw0])+'px'},dcwobj);
   var dcwclds=dcwcary[dcw2].childNodes;
   if (dcwopts[3].match(dcwmary[dcw2])){
    for (var dcw2a=0;dcw2a<dcwclds.length;dcw2a++){
     var dcwtop=parseInt(dcwclds[dcw2a].style.top);
     var dcwlft=parseInt(dcwclds[dcw2a].style.left);
     var dcwhte=parseInt(dcwclds[dcw2a].style.height);
     dcwS(dcwclds[dcw2a],{left:((dcw2<3)?(dcwrary[dcw0]-dcwlft-1):(dcwlft))+'px',top:((dcw2<2)?dcwtop:(dcwrary[dcw0]-dcwhte-dcwtop))+'px'});
    }
   }
  }
  for (var dcw3=0;dcw3<dcwmary.length;dcw3++){
   if (!dcwopts[3].match(dcwmary[dcw3])){ dcwS(dcwcary[dcw3].firstChild,{left:'0px',top:'0px',width:dcwrary[dcw0]+'px',height:dcwrary[dcw0]+'px'}); }
  }
  var dcwwh=(dcw0<1)?dcwrary[dcw0]:dcwrary[1]-dcwrary[0];
  for (var dcw4=0;dcw4<4;dcw4++){
   dcwS(dcwclone.cloneNode(false),{left:((dcw4<2)?0:(dcw4<3)?-dcwrary[dcw0]:(dcw0<1)?dcww:dcww+dcwrary[0])+'px',top:((dcw4<1)?(dcw0<1)?dcwh:dcwh+dcwrary[0]:(dcw4>1)?0:-dcwrary[dcw0])+'px',width:((dcw4<2)?dcww:dcwwh)+'px',height:((dcw4<2)?dcwwh:dcwh)+'px'},dcwobj);
  }
 }
 if (dcwopts[4]){ dcwOpacity(dcwp,dcwopts[4]); }
}

function dcwOptions(dcwobj){
 var dcwary=dcwobj.className.split('dcw')[1].split(',');
 var dcwopts=[];
 for (var dcw0=0;dcw0<dcwary.length;dcw0++){
  if (dcwary[dcw0].match('Ra')){ dcwopts[0]=parseInt(dcwary[dcw0].replace(/\D/g,'')); }
  else if (dcwary[dcw0].match('Bo')){ dcwopts[1]=parseInt(dcwary[dcw0].split('#')[0].replace(/\D/g,'')); dcwopts[2]='#'+dcwary[dcw0].split('#')[1]; }
  else if (dcwary[dcw0].match('L')||dcwary[dcw0].match('R')){ dcwopts[3]=dcwary[dcw0]; }
  else if (dcwary[dcw0].match('O')){ dcwopts[4]=parseInt(dcwary[dcw0].replace(/\D/g,''));  }
 }
 dcwopts[3]=dcwopts[3]||'BL,BR,TL,TR';
 return dcwopts;
}

function dcwS(dcwele,dcwstyle,dcwp){
 if (typeof(dcwele)=='string'){ dcwele=document.createElement(dcwele); }
 for (key in dcwstyle){ dcwele.style[key]=dcwstyle[key]; }
 if (dcwp){ dcwp.appendChild(dcwele); }
 return dcwele;
}

function dcwStyleAry(dcwel){
 var dcwsary=['position','width','height','backgroundColor','background-Color','borderTop','borderLeft','borderRight','borderBottom'];
 var dcwcary=[];
 for (var dcwa=0;dcwa<dcwsary.length;dcwa++){
  dcwcary[dcwa]=dcwsary[dcwa];
  if (dcwel.style[dcwsary[dcwa]]){ dcwsary[dcwa]=dcwel.style[dcwsary[dcwa]]; }
  else if (dcwel.currentStyle){ dcwsary[dcwa]=dcwel.currentStyle[dcwsary[dcwa]]; }
  else if (document.getComputedStyle){ dcwsary[dcwa]=document.defaultView.getComputedStyle(dcwel,null).getPropertyValue(dcwsary[dcwa]); }
 }
 for (var dcwb=0;dcwb<dcwsary.length;dcwb++){ if (dcwcary[dcwb]==dcwsary[dcwb]){ dcwsary[dcwb]=null; } }
 dcwsary[3]=dcwsary[3]||dcwsary[4];
 return dcwsary;
}

function dcwAntiAliase(dcwx,dcwy,dcwr){
 var dcwxary=[];
 var dcwyary=[];
 var dcwnu=0;
 var dcwside='';
 var dcwcross=Math.sqrt((Math.pow(dcwr,2)-Math.pow(dcwx,2)));
 if (dcwcross>=dcwy&&dcwcross<dcwy+1){
  dcwside='Left';
  dcwxary[dcwnu]=0;
  dcwyary[dcwnu]=dcwcross-dcwy;
  dcwnu=dcwnu+1;
 }
 var dcwcross=Math.sqrt((Math.pow(dcwr,2)-Math.pow(dcwy+1,2)));
 if (dcwcross>=dcwx&&dcwcross<dcwx+1){
  dcwside=dcwside+'Top';
  dcwxary[dcwnu]=dcwcross-dcwx;
  dcwyary[dcwnu]=1;
  dcwnu=dcwnu+1;
 }
 var dcwcross=Math.sqrt((Math.pow(dcwr,2)-Math.pow(dcwx+1,2)));
 if (dcwcross>=dcwy&&dcwcross<dcwy+1){
  dcwside=dcwside+'Right';
  dcwxary[dcwnu]=1;
  dcwyary[dcwnu]=dcwcross-dcwy;
  dcwnu=dcwnu+1;
 }
 var dcwcross=Math.sqrt((Math.pow(dcwr,2)-Math.pow(dcwy,2)));
 if (dcwcross>=dcwx&&dcwcross<dcwx+1){
  dcwside=dcwside+'Bottom';
  dcwxary[dcwnu]=dcwcross-dcwx;
  dcwyary[dcwnu]=0;
 }
 return (dcwside=='LeftRight')?Math.min(dcwyary[0],dcwyary[1])+((Math.max(dcwyary[0],dcwyary[1])-Math.min(dcwyary[0],dcwyary[1]))/2):(dcwside=='TopRight')?(1-(((1-dcwxary[0])*(1-dcwyary[1]))/2)):(dcwside=='TopBottom')?Math.min(dcwxary[0],dcwxary[1])+((Math.max(dcwxary[0],dcwxary[1])-Math.min(dcwxary[0],dcwxary[1]))/2):(dcwside=='LeftBottom')?(dcwyary[0]*dcwxary[1])/2:1;
}

function dcwOpacity(dcwobj,dcwopc) {
 if (dcwopc<0||dcwopc>100){ return; }
 if (dcwobj.style.MozOpacity!=null){ dcwobj.style.MozOpacity=(dcwopc/100)-.001; }
 else if (dcwobj.style.opacity!=null){ dcwobj.style.opacity=(dcwopc/100)-.001; }
 else if (dcwobj.style.filter!=null){ dcwobj.style.filter = 'alpha(opacity='+dcwopc+')';	}
 else if (dcwobj.KHTMLOpacity!=null){ dcwobj.KHTMLOpacity=(dcwopc/100)-.001; }
}

// Multiple onload function created by: Simon Willison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
  dcwCorners();
});

