/* -- Java Script file */਀ 
// Attach load event਀砀䄀琀琀愀挀栀䔀瘀攀渀琀伀渀䰀漀愀搀⠀∀氀漀愀搀∀Ⰰ 挀漀爀渀攀爀䤀渀琀⤀㬀 
਀昀甀渀挀琀椀漀渀 挀漀爀渀攀爀䤀渀琀⠀⤀笀 
  // Get all DIV elements਀  瘀愀爀 搀椀瘀䔀氀攀洀攀渀琀猀 㴀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀猀䈀礀吀愀最一愀洀攀⠀∀䐀䤀嘀∀⤀㬀 
  var divCount = divElements.length;਀  瘀愀爀 琀 㴀 　㬀 
  objsArray = new Array();਀ 
  // Loop through all DIVs਀  昀漀爀⠀瘀愀爀 椀 㴀 　㬀 椀 㰀 搀椀瘀䌀漀甀渀琀㬀 椀⬀⬀⤀笀 
    var currentDiv = divElements[i];਀    椀昀⠀爀愀搀椀甀猀 㴀 挀甀爀爀攀渀琀䐀椀瘀⸀最攀琀䄀琀琀爀椀戀甀琀攀⠀∀爀愀搀椀甀猀∀⤀⤀笀 
      if(!(corners = currentDiv.getAttribute("corners")))਀        挀漀爀渀攀爀猀 㴀 ∀吀刀Ⰰ吀䰀Ⰰ䈀刀Ⰰ䈀䰀∀㬀 
      var newObj = new curvyCorners(currentDiv, radius, corners);਀      漀戀樀猀䄀爀爀愀礀嬀琀崀 㴀 渀攀眀伀戀樀㬀 
      t++;਀    紀 
  }਀ 
  //alert(objsArray);਀  瘀愀爀 愀爀爀愀礀䰀攀渀最琀栀 㴀 漀戀樀猀䄀爀爀愀礀⸀氀攀渀最琀栀㬀 
  for(var x = 0; x < arrayLength; x++){਀      漀戀樀猀䄀爀爀愀礀嬀砀崀⸀搀漀䌀漀爀渀攀爀猀⠀⤀㬀 
  }਀紀 
਀⼀⼀ ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ 挀甀爀瘀礀䌀漀爀渀攀爀猀 伀䈀䨀䔀䌀吀 
਀昀甀渀挀琀椀漀渀 挀甀爀瘀礀䌀漀爀渀攀爀猀⠀戀漀砀伀戀樀Ⰰ 爀愀搀椀甀猀䤀渀琀Ⰰ 挀漀爀渀攀爀猀䌀匀嘀匀琀爀⤀ 笀 
  // Set objects properties਀  琀栀椀猀⸀戀漀砀      㴀 戀漀砀伀戀樀㬀 
  this.radius   = (Math.round(parseInt(radiusInt)/2))*2;਀  琀栀椀猀⸀挀漀爀渀攀爀猀  㴀 挀漀爀渀攀爀猀䌀匀嘀匀琀爀⸀猀瀀氀椀琀⠀∀Ⰰ∀⤀㬀 ⼀⼀ 䄀爀爀愀礀 
਀  ⼀⼀ 匀攀琀甀瀀 最氀漀戀愀氀 瘀愀爀椀愀戀氀攀猀 
  this.masterCorner     = null;਀  琀栀椀猀⸀洀愀猀琀攀爀䌀漀爀渀攀爀吀礀瀀攀 㴀 渀甀氀氀㬀 
  this.cornersAvailable = new Array("TR", "TL", "BR", "BL");਀ 
  // Get box formatting details and set properties਀  琀栀椀猀⸀戀漀砀䠀攀椀最栀琀    㴀 瀀愀爀猀攀䤀渀琀⠀⠀⠀琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀栀攀椀最栀琀 ℀㴀 ∀∀⤀㼀 琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀栀攀椀最栀琀⸀猀甀戀猀琀爀椀渀最⠀　Ⰰ 琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀栀攀椀最栀琀⸀椀渀搀攀砀伀昀⠀∀瀀砀∀⤀⤀ 㨀 琀栀椀猀⸀戀漀砀⸀猀挀爀漀氀氀䠀攀椀最栀琀⤀⤀㬀 
  this.boxWidth     = parseInt(((this.box.style.width != "")? this.box.style.width.substring(0, this.box.style.width.indexOf("px")) : this.box.scrollWidth));਀  琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀  㴀 瀀愀爀猀攀䤀渀琀⠀⠀⠀琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀圀椀搀琀栀 ℀㴀 ∀∀⤀㼀 琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀圀椀搀琀栀⸀猀氀椀挀攀⠀　Ⰰ 琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀圀椀搀琀栀⸀椀渀搀攀砀伀昀⠀∀瀀砀∀⤀⤀ 㨀 　⤀⤀㬀 
  this.boxColour    = ((this.box.style.backgroundColor.substr(0, 3) == "rgb")? rgb2Hex(this.box.style.backgroundColor) : this.box.style.backgroundColor);਀  琀栀椀猀⸀戀漀爀搀攀爀䌀漀氀漀甀爀 㴀 ⠀⠀琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䌀漀氀漀爀 ℀㴀 ∀∀ ☀☀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀 㸀 　⤀㼀 ⠀⠀琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䌀漀氀漀爀⸀猀甀戀猀琀爀⠀　Ⰰ ㌀⤀ 㴀㴀 ∀爀最戀∀⤀㼀 爀最戀㈀䠀攀砀⠀琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䌀漀氀漀爀⤀ 㨀 琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䌀漀氀漀爀⤀ 㨀 琀栀椀猀⸀戀漀砀䌀漀氀漀甀爀⤀㬀 
  this.borderRadius = parseInt(this.radius - this.borderWidth);਀  琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最 㴀 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀 ⬀ ∀瀀砀∀ ⬀ ∀ 猀漀氀椀搀 ∀ ⬀ 琀栀椀猀⸀戀漀爀搀攀爀䌀漀氀漀甀爀㬀 
  this.posStart = (0 - this.radius);਀  琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 㴀 ⠀䴀愀琀栀⸀昀氀漀漀爀⠀䴀愀琀栀⸀猀焀爀琀⠀䴀愀琀栀⸀瀀漀眀⠀⠀琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀⤀Ⰰ㈀⤀⼀㈀⤀⤀⤀㬀 
਀  ⼀⼀ 䴀愀欀攀 戀漀砀 爀攀氀愀琀椀瘀攀 椀昀 渀漀琀 愀氀爀攀愀搀礀 愀戀猀漀氀甀琀攀 
  if(this.box.style.position != "absolute") this.box.style.position = "relative";਀ 
  // Builds the corners਀  琀栀椀猀⸀搀漀䌀漀爀渀攀爀猀 㴀 昀甀渀挀琀椀漀渀⠀⤀ 
  {਀    ⼀⼀ 䰀漀漀瀀 漀渀挀攀 昀漀爀 攀愀挀栀 挀漀爀渀攀爀 猀瀀攀挀昀椀攀搀 
    for(var i in this.cornersAvailable)਀    笀 
      // Get current corner type from array਀      瘀愀爀 挀甀爀爀攀渀琀䌀漀爀渀攀爀 㴀 琀栀椀猀⸀挀漀爀渀攀爀猀䄀瘀愀椀氀愀戀氀攀嬀椀崀㬀 
਀      椀昀⠀椀渀䄀爀爀愀礀⠀琀栀椀猀⸀挀漀爀渀攀爀猀Ⰰ 挀甀爀爀攀渀琀䌀漀爀渀攀爀⤀ 㴀㴀㴀 昀愀氀猀攀⤀ 
      {਀        ⼀⼀ 一漀 挀漀爀渀攀爀 椀猀 琀漀 戀攀 爀漀甀渀搀攀搀 猀漀 眀攀 最攀渀攀爀愀琀攀搀 愀 猀焀甀愀爀攀 琀漀 昀椀氀氀 琀栀攀 最愀瀀 
        var newCorner = document.createElement("DIV");਀ 
        // Setup corners properties਀        渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀栀攀椀最栀琀   㴀 琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀 ⬀ ∀瀀砀∀㬀 
        newCorner.style.width    = this.radius - this.borderWidth + "px";਀        渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀瀀漀猀椀琀椀漀渀 㴀 ∀愀戀猀漀氀甀琀攀∀㬀 
        newCorner.style.fontSize = "1px";਀        渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀漀瘀攀爀昀氀漀眀 㴀 ∀栀椀搀搀攀渀∀㬀 
        newCorner.style.backgroundColor = this.boxColour;਀ 
        switch(currentCorner)਀        笀 
          case "TL":਀            渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䰀攀昀琀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
            newCorner.style.borderTop  = this.borderString;਀            戀爀攀愀欀㬀 
          case "TR":਀            渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀刀椀最栀琀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
            newCorner.style.borderTop   = this.borderString;਀            戀爀攀愀欀㬀 
          case "BL":਀            渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䰀攀昀琀   㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
            newCorner.style.borderBottom = this.borderString;਀            戀爀攀愀欀㬀 
          case "BR":਀            渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀刀椀最栀琀  㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
            newCorner.style.borderBottom = this.borderString;਀            戀爀攀愀欀㬀 
        }਀      紀 
      else{਀        ⼀⨀ 
        To increase performace we only ever generate one corner.਀        吀栀椀猀 挀漀爀渀攀爀 椀猀 琀栀攀 戀漀琀琀漀洀 爀椀最栀琀 挀漀爀渀攀爀⸀ 䤀昀 洀漀爀攀 琀栀愀琀 漀渀攀 挀漀爀渀攀爀 椀猀 爀攀焀甀攀猀琀攀搀 
        then the other corners will be a cloned version of the first corner.਀        ⨀⼀ 
        if(this.masterCorner != null)਀        笀 
          // Create clone of the master corner਀          瘀愀爀 渀攀眀䌀漀爀渀攀爀 㴀 琀栀椀猀⸀洀愀猀琀攀爀䌀漀爀渀攀爀⸀挀氀漀渀攀一漀搀攀⠀琀爀甀攀⤀㬀 
        }਀        攀氀猀攀 
        {਀          ⼀⼀ 䘀椀爀猀琀 琀椀洀攀 爀漀甀渀搀 猀漀 最攀渀攀爀愀琀攀 琀栀攀 洀愀猀琀攀爀 挀漀爀渀攀爀 
          var newCorner = document.createElement("DIV");਀ 
          // Setup corners properties਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀栀攀椀最栀琀   㴀 琀栀椀猀⸀爀愀搀椀甀猀 ⬀ ∀瀀砀∀㬀 
          newCorner.style.width    = this.radius + "px";਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀瀀漀猀椀琀椀漀渀 㴀 ∀愀戀猀漀氀甀琀攀∀㬀 
          newCorner.style.fontSize = "1px";਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀漀瘀攀爀昀氀漀眀 㴀 ∀栀椀搀搀攀渀∀㬀 
਀          ⼀⼀ 䌀礀挀氀攀 琀栀攀 砀ⴀ愀砀椀猀 
          for(var intx = 0; intx < this.radius; intx++)਀          笀 
            // Calculate the value of y1 which identifies the pixels inside the border਀            椀昀⠀⠀椀渀琀砀 ⬀㄀⤀ 㸀㴀 琀栀椀猀⸀戀漀爀搀攀爀刀愀搀椀甀猀⤀ 
              var y1 = -1;਀            攀氀猀攀 
              var y1 = (Math.floor(Math.sqrt(Math.pow(this.borderRadius, 2) - Math.pow((intx+1), 2))) - 1);਀ 
            // Only calculate y2 and y3 if there is a border defined਀            椀昀⠀琀栀椀猀⸀戀漀爀搀攀爀刀愀搀椀甀猀 ℀㴀 琀栀椀猀⸀爀愀搀椀甀猀⤀ 
            {਀               椀昀⠀⠀椀渀琀砀⤀ 㸀㴀 琀栀椀猀⸀戀漀爀搀攀爀刀愀搀椀甀猀⤀ 
                 var y2 = -1;਀               攀氀猀攀 
                 var y2 = Math.ceil(Math.sqrt(Math.pow(this.borderRadius,2) - Math.pow(intx, 2)));਀               椀昀⠀⠀椀渀琀砀⬀㄀⤀ 㸀㴀 琀栀椀猀⸀爀愀搀椀甀猀⤀ 
                 var y3 = -1;਀               攀氀猀攀 
                 var y3 = (Math.floor(Math.sqrt(Math.pow(this.radius,2) - Math.pow((intx+1), 2))) - 1);਀            紀 
਀            ⼀⼀ 䌀愀氀挀甀氀愀琀攀 礀㐀 
            if((intx) >= this.radius)਀              瘀愀爀 礀㐀 㴀 ⴀ㄀㬀 
            else਀              瘀愀爀 礀㐀 㴀 䴀愀琀栀⸀挀攀椀氀⠀䴀愀琀栀⸀猀焀爀琀⠀䴀愀琀栀⸀瀀漀眀⠀琀栀椀猀⸀爀愀搀椀甀猀Ⰰ㈀⤀ ⴀ 䴀愀琀栀⸀瀀漀眀⠀椀渀琀砀Ⰰ ㈀⤀⤀⤀㬀 
਀            ⼀⼀ 䐀爀愀眀 戀愀爀 漀渀 椀渀猀椀搀攀 漀昀 琀栀攀 戀漀爀搀攀爀 眀椀琀栀 昀漀爀攀最爀漀甀渀搀 挀漀氀漀甀爀 
            if(y1 > -1) this.drawPixel(intx, 0, this.boxColour, 100, (y1+1), newCorner);਀ 
            // Only draw border/foreground antialiased pixels and border if there is a border defined਀            椀昀⠀琀栀椀猀⸀戀漀爀搀攀爀刀愀搀椀甀猀 ℀㴀 琀栀椀猀⸀爀愀搀椀甀猀⤀ 
            {਀                ⼀⼀ 䌀礀挀氀攀 琀栀攀 礀ⴀ愀砀椀猀 
                for(var inty = (y1 + 1); inty < y2; inty++)਀                笀 
                  // For each of the pixels that need anti aliasing between the foreground and border colour draw single pixel divs਀                  瘀愀爀 瀀椀砀攀氀挀漀氀漀甀爀 㴀 䈀氀攀渀搀䌀漀氀漀甀爀⠀琀栀椀猀⸀戀漀砀䌀漀氀漀甀爀Ⰰ 琀栀椀猀⸀戀漀爀搀攀爀䌀漀氀漀甀爀Ⰰ 瀀椀砀攀氀䘀爀愀挀琀椀漀渀⠀椀渀琀砀Ⰰ 椀渀琀礀Ⰰ 琀栀椀猀⸀戀漀爀搀攀爀刀愀搀椀甀猀⤀⤀㬀 
                  this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner);਀                紀 
਀                ⼀⼀ 䐀爀愀眀 戀愀爀 昀漀爀 琀栀攀 戀漀爀搀攀爀 
                if(y3 >= y2)਀                笀 
                  if (y1 == -1)਀                    礀㄀ 㴀 　㬀 
                  this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner);਀                紀 
਀                ⼀⼀ 匀攀琀 琀栀攀 挀漀氀漀甀爀 昀漀爀 琀栀攀 漀甀琀猀椀搀攀 挀甀爀瘀攀 
                var outsideColour = this.borderColour;਀              紀 
              else਀              笀 
                // Set the coour for the outside curve਀                瘀愀爀 漀甀琀猀椀搀攀䌀漀氀漀甀爀 㴀 琀栀椀猀⸀戀漀砀䌀漀氀漀甀爀㬀 
                var y3 = y1;਀              紀 
਀              ⼀⼀ 䌀礀挀氀攀 琀栀攀 礀ⴀ愀砀椀猀 愀渀搀 搀爀愀眀 琀栀攀 愀渀琀椀 愀氀椀愀猀攀搀 瀀椀砀攀氀猀 漀渀 琀栀攀 漀甀琀猀椀搀攀 漀昀 琀栀攀 挀甀爀瘀攀 
              for(var inty = (y3 + 1); inty < y4; inty++)਀              笀 
                // For each of the pixels that need anti aliasing between the foreground/border colour & background draw single pixel divs਀                琀栀椀猀⸀搀爀愀眀倀椀砀攀氀⠀椀渀琀砀Ⰰ 椀渀琀礀Ⰰ 漀甀琀猀椀搀攀䌀漀氀漀甀爀Ⰰ ⠀瀀椀砀攀氀䘀爀愀挀琀椀漀渀⠀椀渀琀砀Ⰰ 椀渀琀礀 Ⰰ琀栀椀猀⸀爀愀搀椀甀猀⤀ ⨀ ㄀　　⤀Ⰰ ㄀Ⰰ 渀攀眀䌀漀爀渀攀爀⤀㬀 
              }਀            紀 
            // Store corner as master corner਀            琀栀椀猀⸀洀愀猀琀攀爀䌀漀爀渀攀爀 㴀 渀攀眀䌀漀爀渀攀爀⸀挀氀漀渀攀一漀搀攀⠀琀爀甀攀⤀㬀 
            this.masterCornerType = "BR";਀        紀 
      }਀ 
      /*਀      一漀眀 眀攀 栀愀瘀攀 愀 渀攀眀 挀漀爀渀攀爀 眀攀 渀攀攀搀 琀漀 爀攀瀀漀猀椀琀椀漀渀 愀氀氀 琀栀攀 瀀椀砀攀氀猀 甀渀氀攀猀猀 
      the current corner is the bottom right/਀      ⨀⼀ 
      if(currentCorner != "BR")਀      笀 
        // Loop through all children (pixel bars)਀        瘀愀爀 瀀椀砀攀氀䌀漀甀渀琀 㴀 渀攀眀䌀漀爀渀攀爀⸀挀栀椀氀搀一漀搀攀猀⸀氀攀渀最琀栀㬀 
        for(var t = 0; t < pixelCount; t++)਀        笀 
          // Get current pixel bar਀          瘀愀爀 瀀椀砀攀氀䈀愀爀 㴀 渀攀眀䌀漀爀渀攀爀⸀挀栀椀氀搀一漀搀攀猀嬀琀崀㬀 
਀          ⼀⼀ 䜀攀琀 挀甀爀爀攀渀琀 琀漀瀀 愀渀搀 氀攀昀琀 瀀爀漀瀀攀爀琀椀攀猀 
          var pixelBarTop    = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px")));਀          瘀愀爀 瀀椀砀攀氀䈀愀爀䰀攀昀琀   㴀 瀀愀爀猀攀䤀渀琀⠀瀀椀砀攀氀䈀愀爀⸀猀琀礀氀攀⸀氀攀昀琀⸀猀甀戀猀琀爀椀渀最⠀　Ⰰ 瀀椀砀攀氀䈀愀爀⸀猀琀礀氀攀⸀氀攀昀琀⸀椀渀搀攀砀伀昀⠀∀瀀砀∀⤀⤀⤀㬀 
          var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px")));਀ 
          // Reposition pixels਀          椀昀⠀挀甀爀爀攀渀琀䌀漀爀渀攀爀 㴀㴀 ∀吀䰀∀ 簀簀 挀甀爀爀攀渀琀䌀漀爀渀攀爀 㴀㴀 ∀䈀䰀∀⤀笀 
              pixelBar.style.left = this.radius -pixelBarLeft -1 + "px"; // Left਀          紀 
          if(currentCorner == "TR" || currentCorner == "TL"){਀              瀀椀砀攀氀䈀愀爀⸀猀琀礀氀攀⸀琀漀瀀 㴀  琀栀椀猀⸀爀愀搀椀甀猀 ⴀ瀀椀砀攀氀䈀愀爀䠀攀椀最栀琀 ⴀ瀀椀砀攀氀䈀愀爀吀漀瀀 ⬀ ∀瀀砀∀㬀 ⼀⼀ 吀漀瀀 
          }਀        紀 
      }਀ 
      // Position the container਀      猀眀椀琀挀栀⠀挀甀爀爀攀渀琀䌀漀爀渀攀爀⤀ 
      {਀        挀愀猀攀 ∀吀䰀∀㨀 
          newCorner.style.top  = (this.posStart + this.posAdjust) + "px";਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀氀攀昀琀 㴀 ⠀琀栀椀猀⸀瀀漀猀匀琀愀爀琀 ⬀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀ ⬀ ∀瀀砀∀㬀 
          break;਀ 
        case "TR":਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀琀漀瀀  㴀 ⠀琀栀椀猀⸀瀀漀猀匀琀愀爀琀 ⬀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀ ⬀ ∀瀀砀∀㬀 
          newCorner.style.left = (this.boxWidth - this.posAdjust) + "px";਀          戀爀攀愀欀㬀 
਀        挀愀猀攀 ∀䈀䰀∀㨀 
          newCorner.style.top = (this.boxHeight - this.posAdjust) + "px";਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀氀攀昀琀 㴀 ⠀琀栀椀猀⸀瀀漀猀匀琀愀爀琀 ⬀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀ ⬀ ∀瀀砀∀㬀 
          break;਀ 
        case "BR":਀          渀攀眀䌀漀爀渀攀爀⸀猀琀礀氀攀⸀琀漀瀀 㴀 ⠀琀栀椀猀⸀戀漀砀䠀攀椀最栀琀 ⴀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀⬀ ∀瀀砀∀㬀 
          newCorner.style.left = (this.boxWidth - this.posAdjust)+ "px";਀          戀爀攀愀欀㬀 
      }਀ 
      // Append new corner਀      琀栀椀猀⸀戀漀砀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀渀攀眀䌀漀爀渀攀爀⤀㬀 
਀      ⼀⨀ 
      We have now drawn all the corner required so we now need to਀      瀀甀琀 漀渀 琀栀攀 昀椀渀椀猀栀椀渀最 琀漀甀挀栀攀猀⸀ 
      */਀ 
      // Draw bars ----------------------------------------------਀ 
      // Turn off current borders਀      琀栀椀猀⸀戀漀砀⸀猀琀礀氀攀⸀戀漀爀搀攀爀圀椀搀琀栀 㴀 ∀　瀀砀∀㬀 
਀      昀漀爀⠀瘀愀爀 猀 㴀 　㬀 猀 㰀 㐀㬀 猀⬀⬀⤀ 
      {਀        ⼀⼀ 䌀爀攀愀琀攀 戀愀爀 
        var bar = document.createElement("DIV");਀ 
        // Set the bars properties਀        戀愀爀⸀猀琀礀氀攀⸀栀攀椀最栀琀   㴀 琀栀椀猀⸀戀漀砀䠀攀椀最栀琀 ⬀ ∀瀀砀∀㬀 
        bar.style.width    = this.boxWidth + "px";਀        戀愀爀⸀猀琀礀氀攀⸀瀀漀猀椀琀椀漀渀 㴀 ∀愀戀猀漀氀甀琀攀∀㬀 
        bar.style.fontSize = "1px";਀        戀愀爀⸀猀琀礀氀攀⸀漀瘀攀爀昀氀漀眀 㴀 ∀栀椀搀搀攀渀∀㬀 
        bar.style.backgroundColor = this.boxColour;਀        ⼀⼀戀愀爀⸀猀琀礀氀攀⸀戀愀挀欀最爀漀甀渀搀䌀漀氀漀爀 㴀 ∀⌀㘀㘀㌀㌀㈀㈀∀㬀 
਀        猀眀椀琀挀栀⠀猀⤀ 
        {਀            ⼀⼀ 䰀攀昀琀 
            case 0:਀              戀愀爀⸀猀琀礀氀攀⸀琀漀瀀 㴀 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⬀ ∀瀀砀∀㬀 
              bar.style.left = (this.posStart + this.posAdjust) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀眀椀搀琀栀 㴀 ⠀琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.height = (this.boxHeight - (2 * this.posAdjust)) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䰀攀昀琀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
              break;਀            ⼀⼀ 刀椀最栀琀 
            case 1:਀              戀愀爀⸀猀琀礀氀攀⸀琀漀瀀 㴀 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⬀ ∀瀀砀∀㬀 
              bar.style.right = (this.posStart + this.posAdjust) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀眀椀搀琀栀 㴀 ⠀琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.height = (this.boxHeight - (2 * this.posAdjust)) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀刀椀最栀琀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
              break;਀            ⼀⼀ 吀漀瀀 
            case 2:਀              戀愀爀⸀猀琀礀氀攀⸀琀漀瀀 㴀 ⠀琀栀椀猀⸀瀀漀猀匀琀愀爀琀 ⬀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.left = this.posAdjust + "px";਀              戀愀爀⸀猀琀礀氀攀⸀栀攀椀最栀琀 㴀 ⠀琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.width = (this.boxWidth - (2 * this.posAdjust)) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀吀漀瀀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
              break;਀            ⼀⼀ 䈀漀琀琀漀洀 
            case 3:਀              戀愀爀⸀猀琀礀氀攀⸀戀漀琀琀漀洀 㴀 ⠀琀栀椀猀⸀瀀漀猀匀琀愀爀琀 ⬀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.left = this.posAdjust + "px";਀              戀愀爀⸀猀琀礀氀攀⸀栀攀椀最栀琀 㴀 ⠀琀栀椀猀⸀爀愀搀椀甀猀 ⴀ 琀栀椀猀⸀瀀漀猀䄀搀樀甀猀琀 ⴀ 琀栀椀猀⸀戀漀爀搀攀爀圀椀搀琀栀⤀ ⬀ ∀瀀砀∀㬀 
              bar.style.width = (this.boxWidth - (2 * this.posAdjust)) + "px";਀              戀愀爀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䈀漀琀琀漀洀 㴀 琀栀椀猀⸀戀漀爀搀攀爀匀琀爀椀渀最㬀 
              break;਀        紀 
        // Append bar਀          琀栀椀猀⸀戀漀砀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀戀愀爀⤀㬀 
      }਀    紀 
  }਀ 
  this.drawPixel = function(intx, inty, colour, transAmount, height, newCorner) {਀    ⼀⼀ 䌀爀攀愀琀攀 瀀椀砀攀氀 
    var pixel = document.createElement("DIV");਀    瀀椀砀攀氀⸀猀琀礀氀攀⸀栀攀椀最栀琀   㴀 栀攀椀最栀琀 ⬀ ∀瀀砀∀㬀 
    pixel.style.width    = "1px";਀    瀀椀砀攀氀⸀猀琀礀氀攀⸀瀀漀猀椀琀椀漀渀 㴀 ∀愀戀猀漀氀甀琀攀∀㬀 
    pixel.style.fontSize = "1px";਀    瀀椀砀攀氀⸀猀琀礀氀攀⸀漀瘀攀爀昀氀漀眀 㴀 ∀栀椀搀搀攀渀∀㬀 
    pixel.style.backgroundColor = colour;਀ 
    // Set opacity if the transparency is anything other than 100਀    椀昀 ⠀琀爀愀渀猀䄀洀漀甀渀琀 ℀㴀 ㄀　　⤀ 
      setOpacity(pixel, transAmount);਀ 
    // Set the pixels position਀    瀀椀砀攀氀⸀猀琀礀氀攀⸀琀漀瀀 㴀 椀渀琀礀 ⬀ ∀瀀砀∀㬀 
    pixel.style.left = intx + "px";਀    渀攀眀䌀漀爀渀攀爀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀瀀椀砀攀氀⤀㬀 
  }਀紀 
਀⼀⼀ ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ 唀吀䤀䰀䤀吀夀 䘀唀一䌀吀䤀伀一匀 
਀⼀⨀ 
Blends the two colours by the fraction਀爀攀琀甀爀渀猀 琀栀攀 爀攀猀甀氀琀椀渀最 挀漀氀漀甀爀 愀猀 愀 猀琀爀椀渀最 椀渀 琀栀攀 昀漀爀洀愀琀 ∀⌀䘀䘀䘀䘀䘀䘀∀ 
*/਀昀甀渀挀琀椀漀渀 䈀氀攀渀搀䌀漀氀漀甀爀⠀䌀漀氀㄀Ⰰ 䌀漀氀㈀Ⰰ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀ 笀 
  var red1 = parseInt(Col1.substr(1,2),16);਀  瘀愀爀 最爀攀攀渀㄀ 㴀 瀀愀爀猀攀䤀渀琀⠀䌀漀氀㄀⸀猀甀戀猀琀爀⠀㌀Ⰰ㈀⤀Ⰰ㄀㘀⤀㬀 
  var blue1 = parseInt(Col1.substr(5,2),16);਀  瘀愀爀 爀攀搀㈀ 㴀 瀀愀爀猀攀䤀渀琀⠀䌀漀氀㈀⸀猀甀戀猀琀爀⠀㄀Ⰰ㈀⤀Ⰰ㄀㘀⤀㬀 
  var green2 = parseInt(Col2.substr(3,2),16);਀  瘀愀爀 戀氀甀攀㈀ 㴀 瀀愀爀猀攀䤀渀琀⠀䌀漀氀㈀⸀猀甀戀猀琀爀⠀㔀Ⰰ㈀⤀Ⰰ㄀㘀⤀㬀 
਀  椀昀⠀䌀漀氀㄀䘀爀愀挀琀椀漀渀 㸀 ㄀ 簀簀 䌀漀氀㄀䘀爀愀挀琀椀漀渀 㰀 　⤀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀 㴀 ㄀㬀 
਀  瘀愀爀 攀渀搀刀攀搀 㴀 䴀愀琀栀⸀爀漀甀渀搀⠀⠀爀攀搀㄀ ⨀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀ ⬀ ⠀爀攀搀㈀ ⨀ ⠀㄀ ⴀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀⤀⤀㬀 
  if(endRed > 255) endRed = 255;਀  椀昀⠀攀渀搀刀攀搀 㰀 　⤀ 攀渀搀刀攀搀 㴀 　㬀 
਀  瘀愀爀 攀渀搀䜀爀攀攀渀 㴀 䴀愀琀栀⸀爀漀甀渀搀⠀⠀最爀攀攀渀㄀ ⨀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀ ⬀ ⠀最爀攀攀渀㈀ ⨀ ⠀㄀ ⴀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀⤀⤀㬀 
  if(endGreen > 255) endGreen = 255;਀  椀昀⠀攀渀搀䜀爀攀攀渀 㰀 　⤀ 攀渀搀䜀爀攀攀渀 㴀 　㬀 
਀  瘀愀爀 攀渀搀䈀氀甀攀 㴀 䴀愀琀栀⸀爀漀甀渀搀⠀⠀戀氀甀攀㄀ ⨀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀ ⬀ ⠀戀氀甀攀㈀ ⨀ ⠀㄀ ⴀ 䌀漀氀㄀䘀爀愀挀琀椀漀渀⤀⤀⤀㬀 
  if(endBlue > 255) endBlue = 255;਀  椀昀⠀攀渀搀䈀氀甀攀 㰀 　⤀ 攀渀搀䈀氀甀攀 㴀 　㬀 
਀  爀攀琀甀爀渀 ∀⌀∀ ⬀ 䤀渀琀吀漀䠀攀砀⠀攀渀搀刀攀搀⤀⬀ 䤀渀琀吀漀䠀攀砀⠀攀渀搀䜀爀攀攀渀⤀⬀ 䤀渀琀吀漀䠀攀砀⠀攀渀搀䈀氀甀攀⤀㬀 
}਀ 
/*਀䌀漀渀瘀攀爀琀猀 愀 渀甀洀戀攀爀 琀漀 栀攀砀愀搀攀挀椀洀愀氀 昀漀爀洀愀琀 
*/਀昀甀渀挀琀椀漀渀 䤀渀琀吀漀䠀攀砀⠀猀琀爀一甀洀⤀ 笀 
  base = strNum / 16;਀  爀攀洀 㴀 猀琀爀一甀洀 ─ ㄀㘀㬀 
  base = base - (rem / 16);਀  戀愀猀攀匀 㴀 䴀愀欀攀䠀攀砀⠀戀愀猀攀⤀㬀 
  remS = MakeHex(rem);਀  爀攀琀甀爀渀 戀愀猀攀匀 ⬀ ✀✀ ⬀ 爀攀洀匀㬀 
}਀ 
਀⼀⨀ 
gets the hex bits of a number਀⨀⼀ 
function MakeHex(x) {਀  椀昀⠀⠀砀 㸀㴀 　⤀ ☀☀ ⠀砀 㰀㴀 㤀⤀⤀ 
  {਀    爀攀琀甀爀渀 砀㬀 
  }਀  攀氀猀攀 
  {਀    猀眀椀琀挀栀⠀砀⤀ 
    {਀      挀愀猀攀 ㄀　㨀 爀攀琀甀爀渀 ∀䄀∀㬀 
      case 11: return "B";਀      挀愀猀攀 ㄀㈀㨀 爀攀琀甀爀渀 ∀䌀∀㬀 
      case 13: return "D";਀      挀愀猀攀 ㄀㐀㨀 爀攀琀甀爀渀 ∀䔀∀㬀 
      case 15: return "F";਀    紀 
  }਀紀 
਀ 
/*਀䘀漀爀 愀 瀀椀砀攀氀 挀甀琀 戀礀 琀栀攀 氀椀渀攀 搀攀琀攀爀洀椀渀攀猀 琀栀攀 昀爀愀挀琀椀漀渀 漀昀 琀栀攀 瀀椀砀攀氀 漀渀 琀栀攀 ✀椀渀猀椀搀攀✀ 漀昀 琀栀攀 
line.  Returns a number between 0 and 1਀⨀⼀ 
function pixelFraction(x, y, r) {਀  瘀愀爀 瀀椀砀攀氀昀爀愀挀琀椀漀渀 㴀 　㬀 
਀  ⼀⨀ 
  determine the co-ordinates of the two points on the perimeter of the pixel that the਀  挀椀爀挀氀攀 挀爀漀猀猀攀猀 
  */਀  瘀愀爀 砀瘀愀氀甀攀猀 㴀 渀攀眀 䄀爀爀愀礀⠀㄀⤀㬀 
  var yvalues = new Array(1);਀  瘀愀爀 瀀漀椀渀琀 㴀 　㬀 
  var whatsides = "";਀ 
  // x + 0 = Left਀  瘀愀爀 椀渀琀攀爀猀攀挀琀 㴀 䴀愀琀栀⸀猀焀爀琀⠀⠀䴀愀琀栀⸀瀀漀眀⠀爀Ⰰ㈀⤀ ⴀ 䴀愀琀栀⸀瀀漀眀⠀砀Ⰰ㈀⤀⤀⤀㬀 
਀  椀昀 ⠀⠀椀渀琀攀爀猀攀挀琀 㸀㴀 礀⤀ ☀☀ ⠀椀渀琀攀爀猀攀挀琀 㰀 ⠀礀⬀㄀⤀⤀⤀ 笀 
    whatsides = "Left";਀    砀瘀愀氀甀攀猀嬀瀀漀椀渀琀崀 㴀 　㬀 
    yvalues[point] = intersect - y;਀    瀀漀椀渀琀 㴀  瀀漀椀渀琀 ⬀ ㄀㬀 
  }਀  ⼀⼀ 礀 ⬀ ㄀ 㴀 吀漀瀀 
  var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y+1,2)));਀ 
  if ((intersect >= x) && (intersect < (x+1))) {਀    眀栀愀琀猀椀搀攀猀 㴀 眀栀愀琀猀椀搀攀猀 ⬀ ∀吀漀瀀∀㬀 
    xvalues[point] = intersect - x;਀    礀瘀愀氀甀攀猀嬀瀀漀椀渀琀崀 㴀 ㄀㬀 
    point = point + 1;਀  紀 
  // x + 1 = Right਀  瘀愀爀 椀渀琀攀爀猀攀挀琀 㴀 䴀愀琀栀⸀猀焀爀琀⠀⠀䴀愀琀栀⸀瀀漀眀⠀爀Ⰰ㈀⤀ ⴀ 䴀愀琀栀⸀瀀漀眀⠀砀⬀㄀Ⰰ㈀⤀⤀⤀㬀 
਀  椀昀 ⠀⠀椀渀琀攀爀猀攀挀琀 㸀㴀 礀⤀ ☀☀ ⠀椀渀琀攀爀猀攀挀琀 㰀 ⠀礀⬀㄀⤀⤀⤀ 笀 
    whatsides = whatsides + "Right";਀    砀瘀愀氀甀攀猀嬀瀀漀椀渀琀崀 㴀 ㄀㬀 
    yvalues[point] = intersect - y;਀    瀀漀椀渀琀 㴀  瀀漀椀渀琀 ⬀ ㄀㬀 
  }਀  ⼀⼀ 礀 ⬀ 　 㴀 䈀漀琀琀漀洀 
  var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y,2)));਀ 
  if ((intersect >= x) && (intersect < (x+1))) {਀    眀栀愀琀猀椀搀攀猀 㴀 眀栀愀琀猀椀搀攀猀 ⬀ ∀䈀漀琀琀漀洀∀㬀 
    xvalues[point] = intersect - x;਀    礀瘀愀氀甀攀猀嬀瀀漀椀渀琀崀 㴀 　㬀 
  }਀ 
  /*਀  搀攀瀀攀渀搀椀渀最 漀渀 眀栀椀挀栀 猀椀搀攀猀 漀昀 琀栀攀 瀀攀爀椀洀攀琀攀爀 漀昀 琀栀攀 瀀椀砀攀氀 琀栀攀 挀椀爀挀氀攀 挀爀漀猀猀攀猀 挀愀氀挀甀氀愀琀攀 琀栀攀 
  fraction of the pixel inside the circle਀  ⨀⼀ 
  switch (whatsides) {਀    挀愀猀攀 ∀䰀攀昀琀刀椀最栀琀∀㨀 
    pixelfraction = Math.min(yvalues[0],yvalues[1]) + ((Math.max(yvalues[0],yvalues[1]) - Math.min(yvalues[0],yvalues[1]))/2);਀    戀爀攀愀欀㬀 
    case "TopRight":਀    瀀椀砀攀氀昀爀愀挀琀椀漀渀 㴀 ㄀ⴀ⠀⠀⠀㄀ⴀ砀瘀愀氀甀攀猀嬀　崀⤀⨀⠀㄀ⴀ礀瘀愀氀甀攀猀嬀㄀崀⤀⤀⼀㈀⤀㬀 
    break;਀    挀愀猀攀 ∀吀漀瀀䈀漀琀琀漀洀∀㨀 
    pixelfraction = Math.min(xvalues[0],xvalues[1]) + ((Math.max(xvalues[0],xvalues[1]) - Math.min(xvalues[0],xvalues[1]))/2);਀    戀爀攀愀欀㬀 
    case "LeftBottom":਀    瀀椀砀攀氀昀爀愀挀琀椀漀渀 㴀 ⠀礀瘀愀氀甀攀猀嬀　崀⨀砀瘀愀氀甀攀猀嬀㄀崀⤀⼀㈀㬀 
    break;਀    搀攀昀愀甀氀琀㨀 
    pixelfraction = 1;਀  紀 
਀  爀攀琀甀爀渀 瀀椀砀攀氀昀爀愀挀琀椀漀渀㬀 
}਀ 
// This function converts CSS rgb(x, x, x) to hexadecimal਀昀甀渀挀琀椀漀渀 爀最戀㈀䠀攀砀⠀爀最戀䌀漀氀漀甀爀⤀ 笀 
  try{਀    ⼀⼀ 刀攀洀漀瘀攀 爀最戀⠀⤀ 
    var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")"));਀ 
    // Split RGB into array਀    瘀愀爀 爀最戀䄀爀爀愀礀 㴀 爀最戀嘀愀氀甀攀猀⸀猀瀀氀椀琀⠀∀Ⰰ ∀⤀㬀 
਀    ⼀⼀ 䜀攀琀 刀䜀䈀 瘀愀氀甀攀猀 
    var red   = parseInt(rgbArray[0]);਀    瘀愀爀 最爀攀攀渀 㴀 瀀愀爀猀攀䤀渀琀⠀爀最戀䄀爀爀愀礀嬀㄀崀⤀㬀 
    var blue  = parseInt(rgbArray[2]);਀ 
    // Build hex colour code਀    瘀愀爀 栀攀砀䌀漀氀漀甀爀 㴀 ∀⌀∀ ⬀ 䤀渀琀吀漀䠀攀砀⠀爀攀搀⤀ ⬀ 䤀渀琀吀漀䠀攀砀⠀最爀攀攀渀⤀ ⬀ 䤀渀琀吀漀䠀攀砀⠀戀氀甀攀⤀㬀 
  }਀  挀愀琀挀栀⠀攀⤀笀 
    alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");਀  紀 
਀  爀攀琀甀爀渀 栀攀砀䌀漀氀漀甀爀㬀 
}਀ 
// Function by Simon Willison from sitepoint.com਀昀甀渀挀琀椀漀渀 猀攀琀伀瀀愀挀椀琀礀⠀漀戀樀Ⰰ 漀瀀愀挀椀琀礀⤀ 笀 
  opacity = (opacity == 100)?99.999:opacity;਀ 
  // IE/Win਀  漀戀樀⸀猀琀礀氀攀⸀昀椀氀琀攀爀 㴀 ∀愀氀瀀栀愀⠀漀瀀愀挀椀琀礀㨀∀⬀漀瀀愀挀椀琀礀⬀∀⤀∀㬀 
਀  ⼀⼀ 匀愀昀愀爀椀㰀㄀⸀㈀Ⰰ 䬀漀渀焀甀攀爀漀爀 
  obj.style.KHTMLOpacity = opacity/100;਀ 
  // Older Mozilla and Firefox਀  漀戀樀⸀猀琀礀氀攀⸀䴀漀稀伀瀀愀挀椀琀礀 㴀 漀瀀愀挀椀琀礀⼀㄀　　㬀 
਀  ⼀⼀ 匀愀昀愀爀椀 ㄀⸀㈀Ⰰ 渀攀眀攀爀 䘀椀爀攀昀漀砀 愀渀搀 䴀漀稀椀氀氀愀Ⰰ 䌀匀匀㌀ 
  obj.style.opacity = opacity/100;਀紀 
਀⼀⨀ 
Returns index if the passed value is found in the਀愀爀爀愀礀 漀琀栀攀爀眀椀猀攀 爀攀琀甀爀渀猀 昀愀氀猀攀⸀ 
*/਀昀甀渀挀琀椀漀渀 椀渀䄀爀爀愀礀⠀愀爀爀愀礀Ⰰ 瘀愀氀甀攀⤀ 笀 
  for(var i = 0; i < array.length; i++){਀ 
    // Matches identical (===), not just similar (==).਀    椀昀 ⠀愀爀爀愀礀嬀椀崀 㴀㴀㴀 瘀愀氀甀攀⤀ 爀攀琀甀爀渀 椀㬀 
  }਀  爀攀琀甀爀渀 昀愀氀猀攀㬀 
}਀ 
/*਀刀攀琀甀爀渀猀 琀爀甀攀 椀昀 琀栀攀 瀀愀猀猀攀搀 瘀愀氀甀攀 椀猀 昀漀甀渀搀 愀猀 愀 欀攀礀 
in the array otherwise returns false.਀⨀⼀ 
function inArrayKey(array, value) {਀  昀漀爀⠀欀攀礀 椀渀 愀爀爀愀礀⤀笀 
    // Matches identical (===), not just similar (==).਀    椀昀⠀欀攀礀 㴀㴀㴀 瘀愀氀甀攀⤀ 爀攀琀甀爀渀 琀爀甀攀㬀 
  }਀  爀攀琀甀爀渀 昀愀氀猀攀㬀 
}਀ 
// Attaches onload event cross browser਀昀甀渀挀琀椀漀渀 砀䄀琀琀愀挀栀䔀瘀攀渀琀伀渀䰀漀愀搀⠀攀瘀攀渀琀Ⰰ 昀甀渀挀⤀ 笀 
 // Attach event਀  椀昀⠀眀椀渀搀漀眀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⤀ 
    window.addEventListener(event, func, false);਀  攀氀猀攀 椀昀⠀眀椀渀搀漀眀⸀愀琀琀愀挀栀䔀瘀攀渀琀⤀ 
    window.attachEvent("on" + event, func);਀  攀氀猀攀 
    window.onload = func;਀紀 
਀⼀⼀ 刀愀椀渀戀漀眀 䈀甀琀琀漀渀 䘀甀渀挀琀椀漀渀猀 
function switchImage(whichImage,imageNumber){਀   搀漀挀甀洀攀渀琀⸀椀洀愀最攀猀嬀眀栀椀挀栀䤀洀愀最攀崀⸀猀爀挀 㴀 瀀爀攀䰀漀愀搀嬀椀洀愀最攀一甀洀戀攀爀崀⸀猀爀挀 
}਀ 
function doHome(){਀   眀椀渀搀漀眀⸀氀漀挀愀琀椀漀渀㴀✀椀渀搀攀砀⸀栀琀洀氀✀ 
}਀ 
function doCatalog(){਀   眀椀渀搀漀眀⸀氀漀挀愀琀椀漀渀㴀✀挀愀琀愀氀漀最猀⸀栀琀洀氀✀ 
}਀ 
function doCart(){਀   眀椀渀搀漀眀⸀氀漀挀愀琀椀漀渀㴀✀栀琀琀瀀㨀⼀⼀眀眀眀⸀爀愀椀渀戀漀眀欀椀琀猀⸀挀漀洀⼀挀最椀ⴀ戀椀渀⼀猀挀爀椀瀀琀猀⼀挀愀爀琀⸀瀀氀✀ 
}਀ 
function doContact(){਀   眀椀渀搀漀眀⸀氀漀挀愀琀椀漀渀㴀✀挀漀渀琀愀挀琀唀猀⸀栀琀洀氀✀ 
}਀਀