jQuery.fn.sifr = function(prefs){
if(prefs===false) prefs={unsifr: true};
prefs = jQuery.extend({}, arguments.callee.prefs, prefs);
if(prefs.save){
arguments.callee.prefs = jQuery.extend({
absoluteOffsetX: null, aoX: null,
absoluteOffsetY: null, aoY: null,
relativeOffsetX: null, roX: null,
relativeOffsetY: null, roY: null,
path: null,
font: null,
fontSize: null,
color: null,
underline: null,
textTransform: null,
link: null,
hover: null,
backgroundColor: null,
textAlign: null,
content: null,
width: null,
height: null
},
arguments.callee.prefs,
prefs,
{ save: false});}

return this.each(function(){
var o = jQuery(this);
if(o.is('.sifr') || (prefs.unsifr && o.is('.sifr'))){
o.html(jQuery(this.firstChild).html());
o.removeClass('sifr');
}

if(!prefs.unsifr){
var s = jQuery.extend({}, arguments.callee.prefs, prefs);
var hex = function(N){
if(N==null) return "00";
N = parseInt(N);
if(N==0 || isNaN(N)) return "00";
N = Math.max(0, N);
N = Math.min(N, 255);
N = Math.round(N);
return "0123456789ABCDEF".charAt((N - N%16) / 16) + "0123456789ABCDEF".charAt(N%16);
};

var hexed = function(color){
if(!color) { return false;}
if(color.search('rgb') > -1){
color = color.substr(4,color.length-5).split(', ');
color = hex(color[0]) + hex(color[1]) + hex(color[2]);
}
color = color.replace('#','');
if(color.length < 6){
color = color.substr(0, 1) + color.substr(0, 1) + color.substr(1, 1) + color.substr(1, 1) + color.substr(2, 1) + color.substr(2, 1);}
return '#' + color;};


o.addClass('sifr');
s.font = s.font || (/([^\'\",]+)[,]?/.exec(o.css('fontFamily')) || [,] )[1];
s.color = hexed(s.color || o.css('color'));
s.link = hexed(s.link || o.children('a').css('color')) || s.color;
s.hover = hexed(s.hover) || s.link;
s.underline = (s.underline || (o.css('textDecoration')=='underline')) ? true : null;
o.css('backgroundColor', hexed(s.backgroundColor));
s.textAlign = s.textAlign || o.css('textAlign') || 'left';
o.html('<span style="display:inline;margin:0;padding:0;float:none;width:auto;height:auto;font-weight:inherit;">' + o.html() + '</span>');
var oc = jQuery(this.firstChild);
s.ieM = (o.height() - oc.height())/2;
s.ieM = (jQuery.browser.msie) ? 'height:' + (o.height()-s.ieM)+'px;margin:' + s.ieM + 'px 0 0;vertical-align:middle;' : 'vertical-align:middle;';
if (s.fontSize) oc.css('fontSize', s.fontSize);
s.textTransform = s.textTransform || o.css('textTransform');
if (s.textTransform=='uppercase') s.content = oc.html().toUpperCase();
if (s.textTransform=='lowercase') s.content = oc.html().toLowerCase();
if (s.textTransform=='capitalize') {
var c = oc.html().replace(/^\s+|\s+$/g, '').replace(/\>/g, '> ').split(' ');
for (var i = 0; i < c.length; i++) {
c[i] = c[i].charAt(0).toUpperCase() + c[i].substring(1);}
s.content = c.join(' ').replace(/\> /g, '>');}
s.content = s.content || oc.html();
s.width = s.width || oc.width();
s.height = s.height || oc.height();
s.aoX = (s.aoX || 0) + ((s.width / 100) * (s.roX || 0));
s.aoY = (s.aoY || 0) + ((s.height / 100) * (s.roY || 0));
oc.hide();
o.flash({
src: s.path + s.font + '.swf',
flashvars: {
txt: s.content.replace(/^\s+|\s+$/g, ''),
w: s.width,
h: s.height,
offsetLeft: s.aoX,
offsetTop: s.aoY,
textalign: s.textAlign,
textcolor: s.color,
linkColor: s.link,
hoverColor: s.hover,
underline: s.underline}
},{
version: 7,
update: false
},
function(htmlOptions){
htmlOptions.style = s.ieM;
htmlOptions.wmode = 'transparent';
htmlOptions.width = s.width;
htmlOptions.height = s.height;
o.append(jQuery.fn.flash.transform(htmlOptions));
});
}});
};
jQuery.sifr = jQuery(document).sifr;
