/* written by Pachollini http://seky.nahory.net/ */

function make_corners() { var $i; var $elements=find_class(document.body,"rounded"); if(!(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.indexOf("5.5")>-1)) for($i in $elements) rounded_corners($elements[$i]); }

function rounded_corners($element) { var $rc_radius=10, $rc_left=true, $rc_right=true, $rc_top=true, $rc_bottom=true, $rc_self_color, $rc_parent_color, $rc_antialiased,$rc_antialiased_cf=0.33,$rc_compact,$rc_auto_margin,$rc_method="margin",$rc_border,$border_color; var $property,$container,$el_container,$el_inner,$j,$i,$ang,$ang_last,$bw,$width,ee,$err_alert; var $classes=$element.className.split(" "); $rc_self_color=get_current_style($element,"background-color","(transparent)|(rgba)"); $rc_parent_color=get_current_style($element.parentNode,"background-color","(transparent)|(rgba)"); $border_color=get_current_style($element,"border-top-color"); for ($i in $classes) { $property=$classes[$i].split("-"); if($property[0]=="rc") switch ($property[1]) { case "radius": $rc_radius=$property[2]; break; case "top": $rc_top=$property[2]!="0"?true:false; break; case "left": $rc_left=$property[2]!="0"?true:false; break; case "right": $rc_right=$property[2]!="0"?true:false; break; case "bottom":
  $rc_bottom=$property[2]!="0"?true:false; break; case "selfcolor": $rc_self_color="#"+$property[2]; break; case "parentcolor": $rc_parent_color=$property[2]=="transparent"?"transparent":"#"+$property[2]; break; case "inheritstylecolors": $rc_parent_color=$property[2]!="0"?false:true; $rc_self_color=$property[2]!="0"?false:true; break; case "antialiased": $rc_antialiased=$property[2]!="0"?true:false; break; case "antialiasedcf": $rc_antialiased_cf=parseFloat($property[2]); break; case "compact": $rc_compact=$property[2]!="0"?true:false; break; case "automargin": $rc_auto_margin=$property[2]!="0"?true:false; break; case "method": $rc_method=$property[2]; break; case "border": $rc_method="margin"; $rc_border=true; $element.style.border="none"; break; } } if($rc_antialiased && $rc_method=="margin") { var $arr_self_color=color2array($rc_self_color); var $arr_parent_color=$rc_border?color2array($border_color):color2array($rc_parent_color);
  if($arr_self_color!=false && $arr_parent_color!=false) var $rc_antialiased_color="rgb("+Math.round(($arr_parent_color[0]-$arr_self_color[0])*$rc_antialiased_cf+$arr_self_color[0])+","+Math.round(($arr_parent_color[1]-$arr_self_color[1])*$rc_antialiased_cf+$arr_self_color[1])+","+Math.round(($arr_parent_color[2]-$arr_self_color[2])*$rc_antialiased_cf+$arr_self_color[2])+")"; else $rc_antialiased=false; } var $containers=new Array(); if($rc_top)$containers[0]="top"; if($rc_bottom)$containers[$containers.length]="bottom"; if(!$rc_parent_color)$rc_parent_color=get_current_style(document.body,"background-color"); for($j in $containers) { $container=$containers[$j]; $el_container=document.createElement("div"); $el_container.className="rc-container-"+$container; if($rc_parent_color && $rc_method=="margin") { try { $el_container.style.backgroundColor=$rc_parent_color; } catch(ee){self.status="Chyba nastaveni pozadi."} } $el_container.style.height=$rc_radius+"px"; for($i=0;$i<$rc_radius;$i++) {
  $el_inner=document.createElement("span"); if($rc_self_color && $rc_method=="margin")$el_inner.style.backgroundColor=$rc_self_color; $el_inner.style.display="block"; $el_inner.className="rc-inner rc-level-"+$i; $ang=Math.asin($i/$rc_radius); $el_inner.style.height="1px"; $el_inner.style.overflow="hidden"; $width=($rc_radius-Math.round($rc_radius*Math.cos($ang))); if($rc_method=="margin") { $el_inner.style.margin="0 "+($rc_right?$width:"0")+"px 0 "+($rc_left?$width:"0")+"px"; if($rc_antialiased || $rc_border) { $bw=Math.ceil($rc_radius*Math.cos(Math.asin(($i-1)/$rc_radius))-$rc_radius*Math.cos($ang)); if($bw==0)$bw=1; $el_inner.style.borderWidth="0 "+($rc_right?$bw:"0")+"px 0 "+($rc_left?$bw:"0")+"px"; if(!$rc_border) { try{$el_inner.style.borderColor=$rc_antialiased_color;} catch($ee){if(!$err_alert)alert("There's probably a wrong CSS declaration of color used (use '#000000' instead of 'black' or '#000'.");$err_alert=true;} } else {
  $el_inner.style.borderColor=($rc_antialiased && $width) ? $rc_antialiased_color : $border_color; if($i==$rc_radius-1) { $el_inner.style.backgroundColor=$border_color; } } $el_inner.style.borderStyle="solid"; } } else { if($rc_parent_color)$el_inner.style.borderColor=$rc_parent_color; $el_inner.style.borderStyle="solid"; $el_inner.style.borderWidth="0 "+($rc_right?$width:"0")+"px 0 "+($rc_left?$width:"0")+"px"; } if($container=="top" && $el_container.firstChild)$el_container.insertBefore($el_inner.cloneNode(true),$el_container.firstChild); else $el_container.appendChild($el_inner.cloneNode(true)); delete $el_inner; } if($rc_compact) { if($container=="top") $el_container.style.marginBottom="-"+$rc_radius+"px"; else $el_container.style.marginTop="-"+$rc_radius+"px"; } if($rc_auto_margin) { $el_container.style.marginLeft="-"+get_current_style($element,"padding-left"); $el_container.style.marginRight="-"+get_current_style($element,"padding-right");
  if($container=="top") $el_container.style.marginTop="-"+get_current_style($element,"padding-top"); else $el_container.style.marginBottom="-"+get_current_style($element,"padding-bottom"); } if($container=="top" && $element.firstChild)$element.insertBefore($el_container.cloneNode(true),$element.firstChild); else $element.appendChild($el_container.cloneNode(true)); delete $container; } }

function find_class($element,$classnames,$result,$first) { if(!$first)$first=$element; if(!$result)$result=new Array(); if ($element.nodeType==1) { var $test_exp=new RegExp("(^| )("+$classnames+")( |$)"); if($test_exp.test($element.className)) $result[$result.length]=$element; } if ($element.hasChildNodes()) $result=find_class($element.firstChild,$classnames,$result,$first); if ($element.nextSibling && $element!=$first) $result=find_class($element.nextSibling,$classnames,$result,$first); return $result; }
function get_current_style($element,$property,$not_accepted) { var ee,$i,$val,$apr; var $na=new RegExp($not_accepted); try { var $cs=document.defaultView.getComputedStyle($element,''); $val=$cs.getPropertyValue($property); } catch(ee) { if($element.currentStyle) { $apr=$property.split("-"); for($i=1;$i<$apr.length;$i++) $apr[$i]=$apr[$i].toUpperCase(); $apr=$apr.join(""); $val=$element.currentStyle.getAttribute($apr); } } if($not_accepted && $na.test($val) && $element.parentNode) $val=get_current_style($element.parentNode,$property,$not_accepted); return $val; }
function color2array($value) { if($value.substr(0,1)=="#")return hex2array($value); else if($value.indexOf("rgb")>-1) return rgb2array($value); else return false; }
function rgb2array($value) { var $i; var $regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/; var $array=$regexp.exec($value); $array.shift(); for($i=0;$i<3;$i++)$array[$i]=parseInt($array[$i]); return($array); }
function hex2array($value) { return new Array(parseInt($value.substr(1,2),16),parseInt($value.substr(3,2),16),parseInt($value.substr(5,2),16)); }
