var googleSearch = null;
var androidGuyTimer = null;
var gpsTimer = null;



google.setOnLoadCallback(function(){
    jQuery(function(){
        setTime();
        googleSearch = new GoogleSearchApi();

        // search field
        jQuery("#search-field").bind("focus", function(evt){
            var field = jQuery(this);
            jQuery(".search").addClass("focused");
            jQuery(".search-placeholder").removeClass("hint");
        }).bind("blur", function(evt){
            var field = jQuery(this);
            jQuery(".search").removeClass("focused");
            if (field.val() === "") {
                jQuery(".search-placeholder").addClass("hint");
            }
        }).bind("keyup", function(e){
            var evt = e == null ? event : e;
            if (evt == null) {
                return;
            }
            var code = evt.keyCode ? evt.keyCode : evt.charCode;
            if (code == 13) {
                jQuery("#search-button").click();
            }
        }).bind("dblclick", function(){
            jQuery(this).val("");
        }).focus();

        // search button
        jQuery("#search-button").click(function(){
            googleSearch.search(jQuery("#search-field").val());
        });

        // search results close button
        jQuery("#search-widget-results-close").click(function(){
            jQuery("#search-widget-results").addClass("hidden");
        });

        // follow me button
        jQuery("#follow-me").click(function(){
            window.open("http://twitter.com/abryanconrad", "_blank");
        });

        jQuery(window).resize(function(){
            var actualHeight = jQuery(document).height();
            var eleTop = jQuery(".content-area").offset().top;
            var size = (actualHeight - eleTop - 30) + "px";
            jQuery(".content-area").height(size);

        }).resize();

        var timeTimer = setInterval(function(){
            setTime();
        }, 1000);


        AndroidGuy.show(AndroidGuy.getRandomPosition());

        Network.startStrength();
        Network.startTransmission();

        gpsTimer = setTimeout(gpsOn, 2 * 1000);
    });
});

var gpsOff = function(){
    jQuery("#gps").removeClass("on");
    clearTimeout(gpsTimer);
    gpsTimer = setTimeout(gpsOn, 2 * 1000);
};

var gpsOn = function(){
    clearTimeout(gpsTimer);
    jQuery("#gps").addClass("on");
    gpsTimer = setTimeout(gpsOff, 5 * 1000);
};

var setTime = function(){
    var now = new Date();
    var hour = now.getHours();
    var min = now.getMinutes();
    var ap = hour >= 12 ? "PM" : "AM";
    var zero = function(num){
        return num < 10 ? "0" : ""
    };
    var shour = hour > 12 ? hour - 12 : hour;
    var time = shour + ":" + zero(min) + min + " " + ap;

    jQuery("#time").empty().append(time);

		var months = ["January","Febuary","March","April","May","June","July","August","September","October","November","December"];
		var date = months[now.getMonth()] + " " + now.getDate() + ", " + now.getFullYear();
		jQuery("#date").empty().append(date);
};

var Network = {
    strength: {
        bars0: 0,
        bars1: 1,
        bars2: 2,
        bars3: 3,
        bars4: 4
    },
    transmissions: {
        none: 0,
        up: 1,
        down: 2,
        both: 3
    },
    transmissionTimer: null,
    strengthTimer: null,
    getStrength: function(){
        return Math.floor(Math.random() * 4)+1;
    },
    getTransmission: function(){
        return Math.floor(Math.random() * 4);
    },
    startStrength: function(){
				Network._setStrength();
        Network.strengthTimer = setInterval(Network._setStrength, 90 * 1000);
    },
    startTransmission: function(){
				Network._setTransmission();
        Network.transmissionTimer = setInterval(Network._setTransmission, 3 * 1000);
    },
    stopTransmission: function(){
        clearInterval(Network.transmissionTimer);
    },
    stopStrength: function(){
        clearInterval(Network.strengthTimer);
    },
		_setStrength: function ( ) {
			 var strength = Network.getStrength();
            jQuery("#cell-bars")
							.removeClass("network-strength0")
							.removeClass("network-strength1")
							.removeClass("network-strength2")
							.removeClass("network-strength3")
							.removeClass("network-strength4")
							.addClass("network-strength" + strength.toString());
		},
		_setTransmission : function(){
        var trans = Network.getTransmission();
				transName = "none";
				switch ( trans ) {
					case Network.transmissions.up:
						transName = "up";
						break;
					case Network.transmissions.down:
						transName = "down";
						break;
					case Network.transmissions.both:
						transName = "both";
						break;
					default:
						transName: "none";
						break;
				}
        jQuery("#cell-network")
					.removeClass("network-trans-none")
					.removeClass("network-trans-up")
					.removeClass("network-trans-down")
					.removeClass("network-trans-both")
					.addClass("network-trans-" + transName.toString());
		}

};


var AndroidGuy = {

    position: {
        TOP_LEFT: 0,
        TOP_RIGHT: 1,
        LEFT_CENTER: 2,
        TOP_CENTER: 3,
        BOTTOM_LEFT: 4,
        BOTTOM_RIGHT: 5,
        BOTTOM_CENTER: 6
    },
    getRandomPosition: function(){
        return Math.floor(Math.random() * 4);
    },
    show: function(position){
        if (position == null) {
            position = AndroidGuy.getRandomPosition();
        }

        if (androidGuyTimer == null) {
            androidGuyTimer = setTimeout(function(){
                AndroidGuy.hide(position);
            }, 60 * 1000);
        }

        switch (position) {
            case AndroidGuy.position.BOTTOM_CENTER:
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").css("right", "").css("top", "").css("left", "").css("bottom", "-158px").addClass("bottom-center").animate({
                    bottom: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.BOTTOM_CENTER);
                        });
                    }
                });
                break;
            case AndroidGuy.position.LEFT_CENTER:
                jQuery("#android-peek").css("right", "").css("top", "").css("bottom", "").css("left", "-158px").addClass("left-center").animate({
                    left: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.LEFT_CENTER);
                        });
                    }
                });
                break;
            case AndroidGuy.position.TOP_CENTER:
                jQuery("#android-peek").css("right", "").css("bottom", "").css("left", "").css("top", "-98px").addClass("top-center").animate({
                    top: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.TOP_CENTER);
                        });
                    }
                });
                break;
            case AndroidGuy.position.TOP_LEFT:
                jQuery("#android-peek").css("right", "").css("bottom", "").css("top", "-52px").css("left", "-96px").addClass("top-left").animate({
                    left: "+=96px",
                    top: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.TOP_LEFT);
                        });
                    }
                });
                break;
            case AndroidGuy.position.TOP_RIGHT:
                jQuery("#android-peek").css("left", "").css("bottom", "").css("top", "-52px").css("right", "-96px").addClass("top-right").animate({
                    left: "-=96px",
                    top: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.TOP_RIGHT);
                        });
                    }
                });
                break;
            case AndroidGuy.position.BOTTOM_LEFT:
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").css("right", "").css("top", "").css("bottom", "-96px").css("left", "-96px").addClass("bottom-left").animate({
                    left: "+=96px",
                    bottom: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        //jQuery("html,body").css("overflow-y", "auto");
                        jQuery("#android-peek").unbind().mouseenter(function(){
                            jQuery(this).unbind();
                            AndroidGuy.hide(AndroidGuy.position.BOTTOM_LEFT);
                        });
                    }
                });
                break;
            //case AndroidGuy.position.BOTTOM_RIGHT:
            default:
                //console.debug("BOTTOM RIGHT");
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").css("left", "").css("top", "").css("bottom", "-96px").css("right", "-96px").addClass("bottom-right").animate({
                    left: "-=96px",
                    top: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        //jQuery("html,body").css("overflow-y", "auto");
                        jQuery("#android-peek").unbind("mouseover").mouseover(function(){
                            AndroidGuy.hide(AndroidGuy.position.BOTTOM_RIGHT);
                        });
                    }
                });
                break;
        }
    },
    hide: function(position){
        switch (position) {
            case AndroidGuy.position.BOTTOM_CENTER:
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").animate({
                    bottom: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("bottom-center");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());

                    }
                });
                break;
            case AndroidGuy.position.LEFT_CENTER:
                jQuery("#android-peek").animate({
                    left: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("left-center");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
            case AndroidGuy.position.TOP_CENTER:
                jQuery("#android-peek").animate({
                    top: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("top-center");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
            case AndroidGuy.position.TOP_LEFT:
                jQuery("#android-peek").animate({
                    left: "-=96px",
                    top: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("top-left");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
            case AndroidGuy.position.TOP_RIGHT:
                jQuery("#android-peek").animate({
                    left: "+=96px",
                    top: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("top-right");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
            case AndroidGuy.position.BOTTOM_LEFT:
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").animate({
                    left: "-=96px",
                    bottom: "-=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("bottom-left");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
            //case AndroidGuy.position.BOTTOM_RIGHT:
            default:
                //jQuery("html,body").css("overflow-y", "hidden");
                jQuery("#android-peek").animate({
                    left: "+=96px",
                    top: "+=96px"
                }, {
                    duration: "slow",
                    complete: function(){
                        jQuery("#android-peek").removeClass("bottom-right");
                        clearTimeout(androidGuyTimer);
                        androidGuyTimer = null;
                        AndroidGuy.show(AndroidGuy.getRandomPosition());
                    }
                });
                break;
        }
    }
};

// this is for IE, since they still dont support console:
if (typeof console === "undefined") {
	var console = window.console = {
		debug: function ( msg ) {},
		log: function ( msg ) { },
		error: function ( msg ) { },
		warn : function ( msg ) {}

	};
}
