﻿/**
 * streamDefault.js 
 * Stream.Default used to manage the home page animations of streamrealty.com
 *
 * Used for development only.  streamDefaultMin.js is used for production.
 *
 * @author Jeremy Burton
 * Developed by SohoPros Inc. for Stream Realty Partners
 * Last update: Tuesday, June 23 2009.
 */

Stream.Default = (function() {
    /***** Private Variables *****/
    var faces = [];
    var faceIDs = new Array(1, 2, 4, 7, 11, 14, 19);
    var currFace = -1;
    var faceCounter = -1;
    
    /***** Prviate Functions *****/
    function animate() {
        $j('#screen1Words').fadeOut(2000);
        setTimeout("SD.callFadeOutScreen2()", 4000);
    }
    
    function fadeOutScreen2() { 
        $j('#screen2Words').animate({
            "opacity": 0
        }, 1000, function() { setTimeout("SD.callZoomFaces()", 1000); });
    }
    
    function getFacesSuccess(result) {
        if (result) {
            // Set faces to the list of faces objects returned
            faces = result;
            
            // Get the random number for the starting spot
            var randomNumber = Math.floor(Math.random() * 24);
            
            var counter = 1;
            for (var i = randomNumber; i < 24; i++) {
                $('faceImg' + counter++).src = 'http://www.streamrealty.com/images/faces/' + result[i].url;
            }
            for (var i = 0; i < randomNumber; i++) {
                $('faceImg' + counter++).src = 'http://www.streamrealty.com/images/faces/' + result[i].url;
            }   
        }
    }
    
    function getFacesFailure(error) {
        // currenlty do nothing on error
    }
    
    function zoomFaces() {
        // First time through
        if (currFace == -1) {
            var imgURL;
            for (var i = 0; i < 24; i++) {
                if (faces[i].id == faceIDs[currFace]) {
                    imgURL = faces[i].url;
                    i = 24;
                }
            }   
            currFace = Math.floor(Math.random() * 8);
            
            $j('#screen2Words').fadeOut(500);
        }
        else {
            $j('#lgFace' + currFace).fadeOut(500);
            $j('#txtFace' + currFace).fadeOut(500);
        }
        
        if (++currFace == 8) currFace = 1;
        
        $j('#lgFace' + currFace).animate({
            "opacity": "toggle",
            "width": "toggle",
            "height": "toggle"
        }, 750, "easeOut");
        $j('#txtFace' + currFace).animate({
            "opacity": "toggle",
            "width": "toggle",
            "height": "toggle"
        }, 750, "easeOut");
        
        setTimeout("SD.callZoomFaces()", 6000);
    }
    
    // Public attributes
    return {
        // Public functions
        /** 
         * function init()
         */
        init: function() {
            wsHome.getFaces(getFacesSuccess, getFacesFailure);
            $j('.txtFace').fadeOut(0);

            function begin() {
                $j('#screen1Words').animate({ 
                    "width":"toggle"
                }, 2000, "easeOut", function() {
                    $('screen2Words').show();
                    $('screenOverlay').show();
                    $j('#screenOverlay').fadeTo(500, 0.70);
                    $('tblFaces').show();
                });
            }

            var imgHome1 = $j( '#imgHome1' );
            ( imgHome1.attr( 'complete' ) ) ? begin() : imgHome1.attr( 'onload', begin );

            setTimeout("SD.callAnimate()", 3500);
        },
        
        // Public helper methods used to call private functions when using setTimeout
        callAnimate: function() {
            animate();
        },
        callFadeOutScreen2: function() {
            fadeOutScreen2();
        },
        callZoomFaces: function() {
            zoomFaces();
        }
        
    };
})();

var SD = Stream.Default;



