/********** JQUERY EXTENSION **********/
jQuery.fn.convertTo = function(tn) {
	return this.each(function() {
		  var e = jQuery(this);
		  var n = jQuery("<"+tn+"></"+tn+">")
			.attr("title",e.attr("title"))
			.attr("class",e.attr("class"))
			.html(e.html());
		    e.parent().empty().append(n);
	});
};
/********** JQUERY EXTENSION **********/
jQuery.extend({
    fontDefSize: 62.5,
    fontQueryId: 'fsid',
    fontImageSufix: '_h',
	resizeFont : function(elm) {
		var data = jQuery(jQuery(elm).parents('li')[0])
		            .data(jQuery.fontQueryId);
		if (data) {
			$.cookie("fontSize", data, {expires: 0, path: "/"});
			jQuery("body").css('font-size', data+'%');
		}
		jQuery('.font_size span').convertTo('a');
		jQuery('.font_size a').attr('href', '#');
		jQuery(elm).convertTo('span');
		jQuery('.font_size a').unbind()
			.click(function(){
				jQuery.resizeFont(this)
				return false;
			});
		var img = jQuery('.font_size span').find('img')[0];
		if (img){
		    img = jQuery(img);
		    img.attr("src", img.attr("src").replace('.gif',jQuery.fontImageSufix+".gif"));
		}
		img = jQuery('.font_size a').find('img');
		if (img.length > 0) img.each(function(i, obj){
		    var i = jQuery(obj);
		    i.attr("src", i.attr("src").replace(jQuery.fontImageSufix+".",'.'));
		});
	},
	parceUrl: function(u){
		var res = new Object();
		if (u.indexOf("?") > -1){
		    var arr = u.split("?")[1].replace("&amp;", "&").split("&");
		    for(var i = 0; i < arr.length; i++){
			    var ta = arr[i].split("=");
			    res[ta[0]] = ta[1];
		    }
		}
		return res;
	},
	initStepsFontResizer: function(){
		jQuery('.font_size li').each(function(i, obj){
			var href = jQuery(obj).find('a').attr('href');
			var val = $.cookie("fontSize");
			if (!val) val = jQuery.fontDefSize;
			if (href && href.length > 0){
				val = jQuery.parceUrl(href)[jQuery.fontQueryId];
			}
			jQuery(obj).data(jQuery.fontQueryId, val);
		});
		jQuery('.font_size a').unbind()
							  .click(function(){
									jQuery.resizeFont(this);
									return false;
							   }).attr('href', '#');

	}
});
/********** JQUERY EXTENSION **********/
jQuery.extend({
    /* Font Resizer */
    initSimpleFontResizer: function() {
        $.minFontSize += $.fontSizeStep;
        $.maxFontSize -= $.fontSizeStep;
        var getFontSize = function() {
            var size = $.cookie("fontSize");
            if (!size) size = $.defFontSize;
            return size;
        };
        var setFontSize = function(size) {
            $("body").css("font-size", size + "%");
            $.cookie("fontSize", size, { expires: 0, path: "/" });
        };
        var spanClick = function(elm) {
            var e = $(elm);
            if (e[0] && e[0].tagName && e[0].tagName.toLowerCase() == "span") {
                if (e.hasClass("first")) {
                    alert($.maxFontSizeMess);
                } else if (e.hasClass("last")) {
                    alert($.minFontSizeMess);
                }
            }
            return false;
        };
        var linkClick = function(elm) {
            var e = $(elm);
            if (e[0] && e[0].tagName && e[0].tagName.toLowerCase() == "a") {
                var box = $("ul.font_size");
                var carVal = parseFloat(getFontSize());
                switch (e.attr("class")) {
                    case "first": carVal = parseFloat(carVal + $.fontSizeStep); break;
                    case "middle": carVal = parseFloat($.defFontSize); break;
                    case "last": carVal = parseFloat(carVal - $.fontSizeStep); break;
                }
                if (carVal < $.minFontSize) {
                    box.find("a.last").convertTo("span");
                    box.find("span.last").unbind().bind("click", function() { return spanClick(this); })
                       .attr("title", $.minFontSizeMess);
                }
                else if (carVal > $.maxFontSize) {
                    box.find("a.first").convertTo("span");
                    box.find("span.first").unbind().bind("click", function() { return spanClick(this); })
                       .attr("title", $.maxFontSizeMess);
                } else {
                    box.find("span.first").convertTo("a");
                    box.find("a.first").attr("href", "#")
                       .unbind().attr("title", $.moreFontSize)
                       .bind("click", function() { return linkClick(this); });
                    box.find("span.last").convertTo("a");
                    box.find("a.last").attr("href", "#")
                       .unbind().attr("title", $.fewerFontSize)
                       .bind("click", function() { return linkClick(this); });
                }
                setFontSize(carVal);
            }
            return false;
        };
        jQuery('ul.font_size a')
            .unbind()
			.click(function() { return linkClick(this); })
			.attr('href', '#');
        jQuery('ul.font_size span')
            .unbind()
			.click(function() { return spanClick(this); });
    }
});
