home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / Chip_2004-11_cd1.bin / zkuste / jalbum / ukazka / res / js / shadow.js < prev    next >
Text File  |  2003-12-01  |  3KB  |  118 lines

  1. function initPageShadow() 
  2. {
  3.     var bg_color = "#FFFFFF";
  4.     var page_bottom_elem;
  5.  
  6.     if (document.getElementById) // IE5+ & Gecko
  7.     {
  8.         var elem = document.getElementById("body");
  9.  
  10.         if (elem.currentStyle) 
  11.             bg_color = elem.currentStyle["backgroundColor"];
  12.         else if (window.getComputedStyle) 
  13.             bg_color = window.getComputedStyle(elem, "").getPropertyValue("background-color");
  14.  
  15.         page_bottom_elem = document.getElementById("page_bottom_shadow");
  16.     }
  17.     
  18.     page_bottom_elem.innerHTML = providePageBottomShadow(bg_color.toString());
  19. }
  20.  
  21. function providePageBottomShadow(bg_color)
  22. {
  23.     var shadow_code = "<TABLE WIDTH=\"100%\" BORDER=0 CELLSPACING=0 CELLPADDING=0>";
  24.     var gradient_colors = extractGradientColors(bg_color);
  25.  
  26.     for( var i=0; i<gradient_colors.length; i++ )
  27.     {
  28.         shadow_code += "<TR>";
  29.         shadow_code += "<TD WIDTH=\"100%\" HEIGHT=1 BGCOLOR=\"#"+gradient_colors[i]+"\"><IMG SRC=\""+emptyIconUrl+"\" ALT=\"\"/></TD>";
  30.         shadow_code += "</TR>";
  31.     }
  32.  
  33.     shadow_code += "</TABLE>";
  34.     return shadow_code;
  35. }
  36.  
  37. // The color format is "rgb(rrr, ggg, bbb)" or "#rrggbb"
  38. function extractRGB(color)
  39. {
  40.     var rgb = new stringArray(3, 0);
  41.     
  42.     if( color.charAt(0)=='#' )
  43.     {
  44.         rgb[0] = parseInt(color.substring(1, 3), 16);
  45.         rgb[1] = parseInt(color.substring(3, 5), 16);
  46.         rgb[2] = parseInt(color.substring(5, 7), 16);
  47.     }
  48.     else
  49.     {
  50.         var first_comma = color.indexOf(",");
  51.         var second_comma = color.substring(first_comma+1).indexOf(",") + first_comma + 1;
  52.  
  53.         rgb[0] = parseInt(color.substring(4, first_comma));
  54.         rgb[1] = parseInt(color.substring(first_comma+1, second_comma));
  55.         rgb[2] = parseInt(color.substring(second_comma+1, color.indexOf(")")));
  56.     }
  57.     return rgb;
  58. }
  59.  
  60. function extractGradientColors(color)
  61. {
  62.     var gradient_colors = new stringArray(7, '000000');
  63.     var rgb = extractRGB(color);
  64.     var max_red = rgb[0];
  65.     var max_green = rgb[1];
  66.     var max_blue = rgb[2];
  67.     var red = 0;
  68.     var green = 0;
  69.     var blue = 0;
  70.  
  71.     red += max_red / 2;
  72.     green += max_green / 2;
  73.     blue += max_blue / 2;
  74.     gradient_colors[1] = toHex(red) + toHex(green) + toHex(blue);
  75.  
  76.     red += max_red / 8;
  77.     green += max_green / 8;
  78.     blue += max_blue / 8;
  79.     gradient_colors[2] = toHex(red) + toHex(green) + toHex(blue);
  80.     
  81.     red += max_red / 8;
  82.     green += max_green / 8;
  83.     blue += max_blue / 8;
  84.     gradient_colors[3] = toHex(red) + toHex(green) + toHex(blue);
  85.  
  86.     red += max_red / 10;
  87.     green += max_green / 10;
  88.     blue += max_blue / 10;
  89.     gradient_colors[4] = toHex(red) + toHex(green) + toHex(blue);
  90.  
  91.     red += max_red / 13;
  92.     green += max_green / 13;
  93.     blue += max_blue / 13;
  94.     gradient_colors[5] = toHex(red) + toHex(green) + toHex(blue);
  95.  
  96.     red += max_red / 19;
  97.     green += max_green / 19;
  98.     blue += max_blue / 19;
  99.     gradient_colors[6] = toHex(red) + toHex(green) + toHex(blue);
  100.  
  101.     return gradient_colors;
  102. }
  103.  
  104. function stringArray(n, init)
  105. {
  106.     this.length = n;
  107.     for( var i=0; i<n; i++ )
  108.         this[i] = init;
  109.     return this;
  110. }
  111.  
  112. var hexchars = '0123456789ABCDEF';
  113.  
  114. function toHex(num)
  115. {
  116.     return hexchars.charAt(num >> 4) + hexchars.charAt(num & 0xF);
  117. }
  118.