/*
 * Pixastic Lib - Desaturation filter - v0.1.1
 * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
 * License: [http://www.pixastic.com/lib/license.txt]
 */

Pixastic.Actions.desaturate =
    {
        process : function(params)
            {
                var useAverage = !!(params.options.average && params.options.average != "false");

                if(Pixastic.Client.hasCanvasImageData())
                    {
                        var data = Pixastic.prepareData(params);
                        var rect = params.options.rect;
                        var w = rect.width;
                        var h = rect.height;

                        var p = w*h;
                        var pix = p*4, pix1, pix2;

                        if(useAverage)
                            {
                                while(p--)
                                    data[pix-=4] = data[pix1=pix+1] = data[pix2=pix+2] = (data[pix]+data[pix1]+data[pix2])/3
                            }
                            else
                                {
                                    while(p--)
                                        data[pix-=4] = data[pix1=pix+1] = data[pix2=pix+2] = (data[pix]*0.15 + data[pix1]*0.60 + data[pix2]*0.25);
                                }

                        return true;
                    }
                    else if(Pixastic.Client.isIE())
                        {
                            params.image.style.filter += " gray";
                            return true;
                        }
            },

            checkSupport : function()
                {
                    return (Pixastic.Client.hasCanvasImageData() || Pixastic.Client.isIE());
                }
    }

    function desat(arg)
        {
    	   Pixastic.process(document.getElementById(arg), "desaturate");
        }

    function desRevert(arg)
        {
        	Pixastic.revert(document.getElementById(arg));
        }
