


(function() {
		  
	var $ = $j = jQuery,
    site = window.site = {};
    
    if(typeof console === "undefined"){
        window.console = {};
        window.console.log = window.console.dir = function(){};
    }


    /*
    	Page Specific Functionality 
    */

    // The base Page class. Common functions for pages should go in its prototype.
    site.Page = function(customMembers) {
        $.extend(this, customMembers);
    };

    site.Page.prototype = {
        prepNav: function() {

        },

        submit: function() {
            return $("#aspnetForm").submit();
        },

        inputStyles: function() {
            $("*:input").each(function() {
                var $input = $(this);
                if ($input.is("textarea")) $input.addClass("input-textarea");
                else if ($input.is("select")) $input.addClass("input-select");
                else {
                    $input.addClass("input-" + $input.attr("type"));
                }
            });
        }
    };

    //Declare the unique and prominent pages of the site and their members
    site.pages = {

        common: new site.Page({
            init: function(){
                var P = this;
                P.prepNav();                 
				P.inputStyles();
				$("input:text[placeholder]").placeholderText();
               
            }
        }),
		
		home: new site.Page({
			init: function(){
				var P = this;
			     $("#nav-home").addClass("active");            
				P.createBanner();
               
			},
			createBanner:function(){
				var div = $("div.features-banner"),
					ulBanners = div.children("ul.banners"),
					ulControls = div.children("ul.controls");
				
				var sequence = new esf.widget.DisplaySequence({
					ul: ulBanners,
					displayTime: 3000
				});
				
				var controlBar = new esf.widget.DisplaySequenceControlBar({
					sequence: sequence,
					ul: ulControls,
					btnPlay: ulControls.children("li.item-play").addClass(this.activeClass),
					btnPause: ulControls.children("li.item-pause")
				});
			}
		})

    };

	
	// Initialize any pages with the same name as one of the class names on the <body/> tag.
    $(document).ready(function(){
    	site.pages["common"].init();
    	
    	$.each( $.trim(document.body.className).split(/\s+/), function(i, className){
        	if(className.length && typeof site.pages[className] === "object" &&  $.isFunction(site.pages[className].init)){
        		site.pages[className].init();
        	}
        });
    });

    
    window.popup=function(url, id, options){
        var opts = $.extend({
                height:null,
                width:null,
                location:null,
                fullscreen:0
            }, options),
            win = window.open(url, id||window.location.host, (function(){ var str="";for(var optName in opts) str+=optName+"="+opts[optName]+","; return str;})());
        return win;
    }

    window.printHtml=function(htmlStr, opts){
        var win = window.popup(null, "print", $.extend({height:500,width:800}, opts));        
        win.document.writeln(htmlStr);
        win.print();     
        return win;
    }

















    /*
        CUSTOM JQUERY PLUGINS
    */




    /**
        @method placeholderText
        @description Uses the "placeholder" attribute on a text input to overlay a label or message while the field is not in focus. This is supposed to mimic the HTML5 input's placeholder attribute.
        @author Stephen Rushing, eSiteful
    */
    $.fn.placeholderText = function(opts){
        if (!!("placeholder" in $('<input>')[0])) return;

        var I = this,
            options = I.options = $.extend({
                spanHtml: "<span class='input-placeholder'></span>",
                position:"left"
            }, opts);

        I.each(function(i, input){
            var $input = $(input),
                phText = $input.attr("placeholder");
            
            if(phText!==null && phText.length){
                var placeholder = $(options.spanHtml).insertAfter(input).html(phText).css("display", "none");
                
                $input.data("placeholderText", placeholder);

                $input.blur(function(evt){
                    
                    if($.trim($input.val()).length) return true;

                    var pos = $input.position();
                    if(options.position === "right"){
                        pos.left += $input.width() - placeholder.width();
                    }else if(options.position === "center"){
                        pos.left += ($input.width() - placeholder.width()) / 2;
                    }
                
                    placeholder.css({display:"", position:"absolute", left:pos.left, top:pos.top});
                    
                }).blur();

                $input.focus(function(evt){
                    placeholder.css({display:"none"});
                });

                placeholder.click(function(evt){
                    $input.focus();
                });

            }
        });

        
        return I;
    };



})();



