/*
 * BLUCARROS
 * Aragao - 1/9/2010
 * Corrigido problema cm expressao regular na funcao "doStyleSelect"
 */

$(function(){

    $.fn.jqSForm = function(o) {
        var opts = $.extend({
            prefClassFrm:  ""
        }, o);

        return this.each(function(){
            if ( $(this).is(":text") ) { doStyleInput(this); }
            else if ( $(this).is("select") ) { doStyleSelect(this); }
            else if ( $(this).is("textarea") ) { doStyleTextarea(this); }
            else if ( $(this).is(":submit, button, :button") ) { doStyleButton(this); }
            else {
                // procura todos os selects, inputs e textareas
                $(this).find("input, select, textarea").each(function(){
                    if ( $(this).is(":text") ) doStyleInput(this);
                    if ( $(this).is("select") ) doStyleSelect(this);
                    if ( $(this).is("textarea") ) doStyleTextarea(this);
                    if ( $(this).is(":submit, button, :button") ) doStyleButton(this);
                });
            }
        });
    
        function doStyleInput(obj) {
            // adiciona HTML ao redor do objeto
            $(obj).wrap("<div class=\"" + opts.prefClassFrm + "SFInputContainer\" />").wrap("<div class=\"" + opts.prefClassFrm + "SFInputRight\" />").wrap("<div />");
            // ajusta largura
            //$(obj).parents("." + opts.prefClassFrm + "SFInputContainer").width( $(obj).width() );
        }

        function doStyleSelect(obj) {
            // adiciona HTML ao redor do objeto
            $(obj).wrap("<div class=\"" + opts.prefClassFrm + "SFSelectContainer\" />").wrap("<div class=\"" + opts.prefClassFrm + "SFSelectRight\" />").wrap("<div />").before("<span class=\"" + opts.prefClassFrm + "SFSelectLabel\">" + $(obj).find("option:first").html() + "</span>");
            // adiciona eventos
            $(obj).change(function(){
                //$(this).siblings(".SFSelectLabel").text();
                objSelText = $(this).find("option:selected").text();
                $(this).siblings("." + opts.prefClassFrm + "SFSelectLabel").each(function(){
                    $(this).text( objSelText );
                });
            });
            
            // verifica se ha dependencia
            var attrRel = $(obj).attr("rel");
            if ( attrRel != undefined ) {
                reTest = new RegExp(/\s/);
                sels = ( !attrRel.match(reTest) ) ? [attrRel] : attrRel.split(/\s/);
                if ( sels.length > 0 ) {
                    $( sels ).each(function(i,itSel){
                        // reset selecao atual
                        $("#" + itSel).change(function(){
                            $(obj).siblings("span").text("");
                        });
                    });
                }
            }
            
            // ajusta largura
            //$(obj).parents("." + opts.prefClassFrm + "SFSelectContainer").width( $(obj).width() ).css( {"margin":$(obj).css("margin"),"margin-left":$(obj).css("margin-left")} );
            $(obj).parents("." + opts.prefClassFrm + "SFSelectContainer").width( $(obj).width() ).css( 'margin-left',$(obj).css("margin-left") );

            $(obj).siblings("span").width( $(obj).width()-50 );
        }

        function doStyleTextarea(obj) {
            //$(obj).replaceWith('<table cellspacing="0" cellpadding="0" border="0" class="jqTransformTextarea"><tbody><tr><td id="jqTransformTextarea-tl"></td><td id="jqTransformTextarea-tm"></td><td id="jqTransformTextarea-tr"></td></tr><tr><td id="jqTransformTextarea-ml">&nbsp;</td><td id="jqTransformTextarea-mm"><div><textarea rows="10" cols="15" id="mensagem" name="mensagem" class="jqtransformdone"></textarea></div></td><td id="jqTransformTextarea-mr">&nbsp;</td></tr><tr><td id="jqTransformTextarea-bl"></td><td id="jqTransformTextarea-bm"></td><td id="jqTransformTextarea-br"></td></tr></tbody></table>');
            /*$(obj).addClass("jqtransformdone");
            $(obj).replaceWith('<table cellspacing="0" cellpadding="0" border="0" class="jqTransformTextarea"><tbody><tr><td id="jqTransformTextarea-tl"></td><td id="jqTransformTextarea-tm"></td><td id="jqTransformTextarea-tr"></td></tr><tr><td id="jqTransformTextarea-ml">&nbsp;</td><td id="jqTransformTextarea-mm"><div>' + $(obj).clone() + '</div></td><td id="jqTransformTextarea-mr">&nbsp;</td></tr><tr><td id="jqTransformTextarea-bl"></td><td id="jqTransformTextarea-bm"></td><td id="jqTransformTextarea-br"></td></tr></tbody></table>');*/

			var textarea = $(obj);
			if(textarea.hasClass('jqtransformdone')) {return;}
			textarea.addClass('jqtransformdone');

			/*oLabel = jqTransformGetLabel(textarea);
			oLabel && oLabel.click(function(){textarea.focus();});*/

			var strTable = '<table cellspacing="0" cellpadding="0" border="0" class="' + opts.prefClassFrm + 'SFTextarea">';
			strTable +='<tr><td id="' + opts.prefClassFrm + 'SFTextarea-tl"></td><td id="' + opts.prefClassFrm + 'SFTextarea-tm"></td><td id="' + opts.prefClassFrm + 'SFTextarea-tr"></td></tr>';
			strTable +='<tr><td id="' + opts.prefClassFrm + 'SFTextarea-ml">&nbsp;</td><td id="' + opts.prefClassFrm + 'SFTextarea-mm"><div></div></td><td id="' + opts.prefClassFrm + 'SFTextarea-mr">&nbsp;</td></tr>';
			strTable +='<tr><td id="' + opts.prefClassFrm + 'SFTextarea-bl"></td><td id="' + opts.prefClassFrm + 'SFTextarea-bm"></td><td id="' + opts.prefClassFrm + 'SFTextarea-br"></td></tr>';
			strTable +='</table>';
			var oTable = $(strTable)
					.insertAfter(textarea);

			textarea
				.appendTo($('#' + opts.prefClassFrm + 'SFTextarea-mm div',oTable))
			;
			this.oTable = oTable;
			if($.browser.safari){
				$('#' + opts.prefClassFrm + 'SFTextarea-mm',oTable)
					.addClass(opts.prefClassFrm + 'SFSafariTextarea')
					.find('div')
						.css('height',textarea.height()+16)
						.css('width',textarea.width())
				;
			}
        }

        function doStyleButton(obj) {
			var newBtn = $('<button id="'+ $(obj).attr("id") +'" name="'+ $(obj).attr("name") +'" type="'+ $(obj).attr("type") +'" class="'+ $(obj).attr("class") + ' ' + opts.prefClassFrm + 'SFButton"><span><span>'+ $(obj).attr('value') +'</span></span>')
				/*.hover(function(){newBtn.addClass(opts.prefClassFrm + 'SFButton_hover');},function(){newBtn.removeClass(opts.prefClassFrm + 'SFButton_hover')})
				.mousedown(function(){newBtn.addClass(opts.prefClassFrm + 'SFButton_click')})
				.mouseup(function(){newBtn.removeClass(opts.prefClassFrm + 'SFButton_click')})*/
			;
			$(obj).replaceWith(newBtn);

        }
    }
    
    
});

