

var setGradient = (function(){
//private variables;
var p_dCanvas = document.createElement('canvas');
var p_useCanvas = (typeof(p_dCanvas.getContext) == 'function');
//如果是IE则为null
var p_dCtx = p_useCanvas?p_dCanvas.getContext('2d'):null;
//cc_on 这个东西加上他两边的东西是有用的，但是不知道是干什么用的
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');
}
}
}
)();

