(function($) {
    $.fn.formHighlighter = function(elementStyles) {

        var element = this;
        var opts = $.extend({}, $.fn.formHighlighter.defaults, elementStyles);
        $(document).ready(function() {

            /*##############################################*/
            //					INPUT SCANNER
            /*##############################################*/

            /*Scanner alle form elementer og opretter en buffer tag rel="" som vil blive brugt til blur og focus funktionen. */
            $(element).find("input").show(function() {
                /*Henter værdig af VALUE og opretter en buffer tag REF med dens værdig.*/
                var standardValue = $(this).attr("value");
                if ($(this).attr("type") == "text") {
                    $(this).attr("ref", standardValue);

                    if (opts.classBlur != "") {
                        $(this).removeClass(opts.classBlur);
                        $(this).addClass(opts.classBlur);
                    }
                    else {
                        $(this).css("color", opts.fontColorDark);
                        $(this).css("border-color", opts.borderColorLight);
                    }

                }

                /*Efter at funktionen find() har scannet for alle inputs vil den automatisk putte display=block på alle elementer. Der for kører vi denne funktion for at skjule alle hiden inputs.*/
                if ($(this).attr("type") == "hidden") {
                    $(this).hide();
                }

                /*Tilføjet af rpj*/
                if ($(this).hasClass("hide")) { 
                    $(this).hide();
                }


                /*Kører denne funktion når der klikkes på et input felt*/
                $(this).focus(function() {

                    /*Toner teksten hvis VALUE = Standrad value*/
                    if ($(this).val() == $(this).attr("ref")) {

                        if (opts.classFocus != "") {
                            $(this).removeClass(opts.classFocus);
                            $(this).addClass(opts.classFocus);
                        }
                        else {
                            $(this).css("color", opts.fontColorLight);
                        }
                    }

                    if (opts.classKeyDown != "") {
                        $(this).addClass(opts.classKeyDown);
                    }
                    else {
                        $(this).css("border-color", opts.borderColorDark);
                    }

                    /*Når brugeren begynder at skrive i feltet vil standrad value blive fjernet og teksten lavet om til en mørker farve.*/
                    $(this).keydown(function() {

                        if ($(this).val() == $(this).attr("ref")) {

                            $(this).val("");

                            if (opts.classKeyDown != "") {
                                $(this).removeClass(opts.classKeyDown);
                                $(this).addClass(opts.classKeyDown);
                            }
                            else {
                                $(this).css("color", opts.fontColorDark);
                            }
                        }
                    });
                });

                /*Kører denne funktion når der focus fjernes fra inputfelt*/
                $(this).blur(function() {

                    /*Hvis VALUE af feltet er tom, så sætter vi standard value på igen.*/
                    if ($(this).val() == "") {
                        $(this).val($(this).attr("ref"));
                    }

                    if (opts.classBlur != "") {
                        $(this).removeClass(opts.classBlur);
                        $(this).removeClass(opts.classKeyDown);
                        $(this).removeClass(opts.classFocus);
                        $(this).addClass(opts.classBlur);
                    }
                    else {
                        $(this).css("color", opts.fontColorDark);
                        $(this).css("border-color", opts.borderColorLight);
                    }
                });

            });

            /*##############################################*/
            //					TEXTAREA SCANNER
            /*##############################################*/

            /* Scanner all textarea elmenter og opretter en buffer tag rel="" som vil blive brugt til blur og focus funktionen.  */
            $(element).find("textarea").show(function() {

                /*Henter værdig af VALUE og opretter en buffer tag REF med dens værdig.*/
                var standardValue = $(this).val();
                $(this).attr("ref", standardValue);

                if (opts.classBlur != "") {
                    $(this).removeClass(opts.classBlur);
                    $(this).addClass(opts.classBlur);
                }
                else {
                    $(this).css("color", opts.fontColorDark);
                    $(this).css("border-color", opts.borderColorLight);
                }



                /*Kører denne funktion når der klikkes på et input felt*/
                $(this).focus(function() {

                    /*Toner teksten hvis VALUE = Standrad value*/
                    if ($(this).val() == $(this).attr("ref")) {

                        if (opts.classFocus != "") {
                            $(this).removeClass(opts.classFocus);
                            $(this).addClass(opts.classFocus);
                        }
                        else {
                            $(this).css("color", opts.fontColorLight);
                        }
                    }
                    if (opts.classKeyDown != "") {
                        $(this).addClass(opts.classKeyDown);
                    }
                    else {
                        $(this).css("border-color", opts.borderColorDark);
                    }


                    /*Når brugeren begynder at skrive i feltet vil standrad value blive fjernet og teksten lavet om til en mørker farve.*/
                    $(this).keydown(function() {

                        if ($(this).val() == $(this).attr("ref")) {

                            $(this).val("");
                            if (opts.classKeyDown != "") {
                                $(this).removeClass(opts.classKeyDown);
                                $(this).addClass(opts.classKeyDown);
                            }
                            else {
                                $(this).css("color", opts.fontColorDark);
                            }
                        }
                    });
                });

                /*Kører denne funktion når der focus fjernes fra inputfelt*/
                $(this).blur(function() {

                    /*Hvis VALUE af feltet er tom, så sætter vi standard value på igen.*/
                    if ($(this).val() == "") {
                        $(this).val($(this).attr("ref"));
                    }

                    if (opts.classBlur != "") {
                        $(this).removeClass(opts.classBlur);
                        $(this).removeClass(opts.classKeyDown);
                        $(this).removeClass(opts.classFocus);
                        $(this).addClass(opts.classBlur);
                    }
                    else {
                        $(this).css("color", opts.fontColorDark);
                        $(this).css("border-color", opts.borderColorLight);
                    }
                });

            });
        });

    };

    $.fn.formHighlighter.defaults = {
        fontColorLight: '#C9C9C9',
        fontColorDark: '#000000',
        borderColorLight: '#C9C9C9',
        borderColorDark: '#000000',
        classFocus: '',
        classBlur: '',
        classKeyDown: ''
    };


})(jQuery);  
