(function($) {
    $.fn.toggleVal=function(theOptions){if(!theOptions||typeof(theOptions)=="object"){theOptions=$.extend({focusClass:"tv-focused",changedClass:"tv-changed",populateFrom:"default",text:null,removeLabels:false},theOptions)}else if(typeof(theOptions)=="string"&&theOptions.toLowerCase()=="destroy"){var destroy=true}return this.each(function(){if(destroy){$(this).unbind("focus.toggleval").unbind("blur.toggleval").removeData("defText");return false}var defText="";switch(theOptions.populateFrom){case"alt":defText=$(this).attr("alt");$(this).val(defText);break;case"label":defText=$("label[for='"+$(this).attr("id")+"']").text();$(this).val(defText);break;case"custom":defText=theOptions.text;$(this).val(defText);break;default:defText=$(this).val()}$(this).addClass("toggleval").data("defText",defText);if(theOptions.removeLabels==true){$("label[for='"+$(this).attr("id")+"']").remove()}$(this).bind("focus.toggleval",function(){if($(this).val()==$(this).data("defText")){$(this).val("")}$(this).addClass(theOptions.focusClass).removeClass(theOptions.changedClass)}).bind("blur.toggleval",function(){if($(this).val()==""){$(this).val($(this).data("defText"))}$(this).removeClass(theOptions.focusClass);if($(this).val()!=$(this).data("defText")){$(this).addClass(theOptions.changedClass)}else{$(this).removeClass(theOptions.changedClass)}})})};
    $.fn.SelectCustomizer=function(){return this.each(function(){var obj=$(this);var name=obj.attr('id');var id_slc_options=name+'_options';var id_icn_select=name+'_iconselect';var id_holder=name+'_holder';var custom_select=name+'_customselect';var default_value=$('#'+name+' :selected').val();var default_text=$('#'+name+' :selected').text();obj.after("<div id=\""+id_slc_options+"\" class=\"optionswrapper\"> </div>");obj.find('option').each(function(i){$("#"+id_slc_options).append("<div title=\""+$(this).attr("value")+"\" class=\"selectitems"+($(this).attr("value")==default_value?' selectedclass':'')+"\"><span>"+$(this).html()+"</span></div>");});obj.before("<input type=\"hidden\" value =\""+default_value+"\" name=\""+this.name+"\" id=\""+custom_select+"\"/><div id=\""+id_icn_select+"\" class=\"iconselect\">"+this.title+"</div><div id=\""+id_holder+"\" class=\"selectwrapper\"> </div>").remove();$("#"+id_icn_select).html(default_text);$("#"+id_icn_select).click(function(a){if($("#"+id_holder).css('display')=='none'){$("#"+id_holder).fadeIn(200);$("#"+id_holder).focus();a.stopPropagation();$(document).keypress(function(e){if(!e)var e=window.event;e.cancelBubble=true;e.returnValue=false;if(e.stopPropagation){e.stopPropagation();e.preventDefault();}});$(document).keyup(function(e){if(e.which==40){var lastSelected=$("#"+id_holder+" .selectedclass");if(lastSelected.size()==0){var nextSelected=$("#"+id_slc_options+" div:first:");}else{var nextSelected=lastSelected.next(".selectitems");}if(nextSelected.size()==1){lastSelected.removeClass("selectedclass");nextSelected.addClass("selectedclass");$("#"+custom_select).val(nextSelected.title);$("#"+id_icn_select).html(nextSelected.html());var rowOffset=(nextSelected.offset().top-$("#"+id_holder).offset().top);if(rowOffset>130){$("#"+id_slc_options).scrollTo(($("#"+id_slc_options).scrollTop()+27)+"px");}}}else if(e.which==38){var lastSelected=$("#"+id_holder+" .selectedclass");var nextSelected=lastSelected.prev(".selectitems");if(nextSelected.size()==1){lastSelected.removeClass("selectedclass");nextSelected.addClass("selectedclass");$("#"+custom_select).val(nextSelected.title);$("#"+id_icn_select).html(nextSelected.html());var rowOffset=(nextSelected.offset().top-$("#"+id_holder).offset().top);if(rowOffset>0){$("#"+id_slc_options).scrollTo(($("#"+id_slc_options).scrollTop()-27)+"px");}}}else if(e.which==13){$("#"+id_holder).fadeOut(250);$(document).unbind('keyup');$(document).unbind('keypress');$('body').unbind('click');}});$('body').click(function(){$("#"+id_holder).fadeOut(200);$('body').unbind('click');$(document).unbind('keyup');$(document).unbind('keypress');});}else{$("#"+id_holder).fadeOut(200);$('body').unbind('click');$(document).unbind('keyup');$(document).unbind('keypress');}});$("#"+id_holder).append($("#"+id_slc_options)[0]);$("#"+id_holder).append("<div class=\"selectfooter\"></div>");$("#"+id_slc_options+" > div:last").addClass("last");$("#"+id_holder+" .selectitems").mouseover(function(){$(this).addClass("hoverclass");});$("#"+id_holder+" .selectitems").mouseout(function(){$(this).removeClass("hoverclass");});$("#"+id_holder+" .selectitems").click(function(){$("#"+id_holder+" .selectedclass").removeClass("selectedclass");$(this).addClass("selectedclass");var thisselection=$(this).html();$("#"+custom_select).val(this.title);$("#"+id_icn_select).html(thisselection);$("#"+id_holder).fadeOut(250);$(document).unbind('keyup');$(document).unbind('keypress');$('body').unbind('click');});});}

    $.fn.checkboxStyler = function(options) {
        var settings = {
            checkedClass   : 'checkbox-checked',
            uncheckedClass : 'checkbox-unchecked',
            hiddenClass    : 'hddn'
        };
        if(options) {
            $.extend(settings, options);
        };
        toggleCheckboxLabel = function ()
        {
            var label = findLabel($(this).attr('id'));

            if (label.hasClass(settings.checkedClass)) {
                label.removeClass().addClass(settings.uncheckedClass);
            } else {
                label.removeClass().addClass(settings.checkedClass);
            }
        };
        toggleRadioLabel = function() {} // TODO
        findLabel = function(id)
        {
            return $('label[for="' + id + '"]');
        }
        return this.each(function() {
            var checkbox = $(this);
            var label    = findLabel(checkbox.attr('id'));
            checkbox.bind('click', toggleCheckboxLabel);
            checkbox.addClass(settings.hiddenClass);
            if (checkbox.attr('checked')) {
                label.addClass(settings.checkedClass);
            } else {
                label.addClass(settings.uncheckedClass);
            }
		});
    };

    $.fn.filestyle = function(options) {
        /* TODO: This should not override CSS. */
        var settings = {
            width : 250
        };
        if(options) {
            $.extend(settings, options);
        };
        return this.each(function() {
            var self = this;
            var wrapper = $("<div>")
                            .css({
                                "width": settings.imagewidth + "px",
                                "height": settings.imageheight + "px",
                                "background": "url(" + settings.image + ") 0 0 no-repeat",
                                "background-position": "right",
                                "display": "inline",
                                "position": "absolute",
                                "overflow": "hidden"
                            });

            var filename = $('<input class="file" readonly="readonly">')
                             .addClass($(self).attr("class"))
                             .css({
                                 "display": "inline",
                                 "width": settings.width + "px"
                             });

            $(self).before(filename);
            $(self).wrap(wrapper);

            $(self).css({
                        "position": "relative",
                        "height": settings.imageheight + "px",
                        "width": settings.width + "px",
                        "display": "inline",
                        "cursor": "pointer",
                        "opacity": "0.0"
                    });

            if ($.browser.mozilla) {
                if (/Win/.test(navigator.platform)) {
                    $(self).css("margin-left", "-142px");
                } else {
                    $(self).css("margin-left", "-168px");
                };
            } else {
                $(self).css("margin-left", settings.imagewidth - settings.width + "px");
            };

            $(self).bind("change", function() {
                filename.val($(self).val());
            });

        });
    };

    $.fn.portfolio_slider = function() {
		return this.each(function() {
			obj = $(this);
			var s = $("li", obj).length;
			var w = obj.width();
			var h = obj.height();
			var ts = s-1;
			var t = 0;
			$("ul", obj).css('width',s*w);
			$("a","#nextBtn").click(function(){
				animate("next");
			});
			$("a","#prevBtn").click(function(){
				animate("prev");
			});
			function animate(dir){
				if(dir == "next"){
                    t = (t>ts) ? ts : (t == ts ? t = 0 : t = t + 1);
				} else {
                    t = (t<0) ? 0 : (t == 0 ? t = ts : t = t - 1);
				};
                p = (t*w*-1);
                $("ul", obj).animate({marginLeft: p}, 800);
                $('#project-details ul:visible').fadeOut(600, function(){
                    var rel = $($("ul", obj).find('li:eq(' + t + ') a')).attr('rel');
                    $('#project-details ul#details-' + rel).fadeIn(600);
                });

			};
		});
	};
})(jQuery);



$(function(){
    $('#login-password,#login-username').toggleVal({
        populateFrom: "label",
        removeLabels: true
    });
});

function rgbToHex(rgbString)
{
    var parts = rgbString.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    delete (parts[0]);
    for (var i = 1; i <= 3; ++i) {
        parts[i] = parseInt(parts[i]).toString(16);
        if (parts[i].length == 1) parts[i] = '0' + parts[i];
    }
    return parts.join('');
}