﻿        var setGradient = (function() {

            //private variables;
            var p_dCanvas = document.createElement('canvas');
            var p_useCanvas = !!(typeof (p_dCanvas.getContext) == 'function');
            var p_dCtx = p_useCanvas ? p_dCanvas.getContext('2d') : null;
            var p_isIE = /*@cc_on!@*/false;


            //test if toDataURL() is supported by Canvas since Safari may not support it

            try { p_dCtx.canvas.toDataURL() } catch (err) {
                p_useCanvas = false;
            };

            if (p_useCanvas) {

                return function(dEl, sColor1, sColor2, bRepeatY) {

                    if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
                    if (!dEl) return false;
                    var nW = dEl.offsetWidth;
                    var nH = dEl.offsetHeight;
                    p_dCanvas.width = nW;
                    p_dCanvas.height = nH;


                    var dGradient;
                    var sRepeat;
                    // Create gradients
                    if (bRepeatY) {
                        dGradient = p_dCtx.createLinearGradient(0, 0, nW, 0);
                        sRepeat = 'repeat-y';
                    } else {
                        dGradient = p_dCtx.createLinearGradient(0, 0, 0, nH);
                        sRepeat = 'repeat-x';
                    }

                    dGradient.addColorStop(0, sColor1);
                    dGradient.addColorStop(1, sColor2);

                    p_dCtx.fillStyle = dGradient;
                    p_dCtx.fillRect(0, 0, nW, nH);
                    var sDataUrl = p_dCtx.canvas.toDataURL('image/png');

                    with (dEl.style) {
                        backgroundRepeat = sRepeat;
                        backgroundImage = 'url(' + sDataUrl + ')';
                        backgroundColor = sColor2;
                    };
                }
            } else if (p_isIE) {

                p_dCanvas = p_useCanvas = p_dCtx = null;
                return function(dEl, sColor1, sColor2, bRepeatY) {
                    if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
                    if (!dEl) return false;
                    dEl.style.zoom = 1;
                    var sF = dEl.currentStyle.filter;
                    dEl.style.filter += ' ' + ['progid:DXImageTransform.Microsoft.gradient( GradientType=', +(!!bRepeatY), ',enabled=true,startColorstr=', sColor1, ', endColorstr=', sColor2, ')'].join('');

                };

            } else {

                p_dCanvas = p_useCanvas = p_dCtx = null;
                return function(dEl, sColor1, sColor2) {

                    if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
                    if (!dEl) return false;
                    with (dEl.style) {
                        backgroundColor = sColor2;
                    };
                    //alert('your browser does not support gradient effet');
                }
            }
        })();