﻿
/* Reference to the function to call after login */
/* If null, runs defaultLoginAction */
var postLoginFunction = null;

/* Reference to the function to call after a failed login */
var postFailedLoginFunction = null;

var onSuccess = null;

/* Domain to use in Ajax calls */
var hostname = null;

var userFirstName = null;

var authenticatedPageReturnURL = null;

var ipsosTrackingUrl = null;
if (checkPage('/OurStory') == true) {
    var mdetector = new lol_mdetect();
    ipsosTrackingUrl = "http://sensor2.suitesmart.com/sensor4.js?GID=17355";
} else {
    ipsosTrackingUrl = "http://sensor2.suitesmart.com/sensor4.js?GID=17342";
}


var yt_resume = 0;  //Variable used to prevent tracking video 'plays' that are just unpausing
/* added 11-08-11 */
var _gaq = _gaq || [];
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			   string: navigator.userAgent,
			   subString: "iPad",
			   identity: "iPad"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

var mobile = false;

if (typeof mdetector != 'undefined') {
    if (mdetector.isIphone == true) {
        mobile = true;
    }
    if (mdetector.isAndroidPhone == true) {
        mobile = true;
    }
    if (mdetector.isTierIphone == true) {
        mobile = true;
    }
    if (mdetector.isTierTablet == true) {
        mobile = true;
    }
    if (mdetector.isTierGenericMobile == true) {
        mobile = true;
    }
}
/* above added 11-08-11 */

//var mobile = window.mobile;

if (window.location.href.match('/print(?!/)')) {

    

    $('.subnav').removeAttr('style');
    $('.column').each(function () { $(this).addClass('nobreak') });
    $('link').each(function () {

        if ($(this).attr('media') == 'screen') {
            this.disabled = true;
        }
        else if ($(this).attr('media') == 'print') {
            $(this).attr('media', 'print,screen');
        }
    });
}

function checkPage(page) {
    if (window.document.location.pathname.toLowerCase().lastIndexOf(page.toLowerCase(), 0) === 0) {
        return true;
    }
}

function appendScript(src) {
    var tag = document.createElement('script');
    tag.type = 'text/javascript';
    tag.src = src;
    var scripttag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}


function fancyboxLoadComplete(links, index) {
    var self = $(links[index])[0];

    var hashUrl = self.hash.replace("#", "");
    var id = self.id;

    var trackingUrl = "/lightbox/" + hashUrl;

    googleVirtualPageview(trackingUrl);
}

function embedPlayer() {
    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/e/6n1ix3Po2qU?enablejsapi=1&playerapiid=ytplayer&rel=0",
                       "ytapiplayer", "640", "388", "8", null, null, params, atts);

    setTimeout(playVideo, 1200);
}

function playVideo() {
    try {
        var ytplayer = document.getElementById("myytplayer");
        ytplayer.playVideo();
    } catch (err)
    { }
}

function getCookie(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}


$(document).ready(function () {
    // Track pdf downloads
    $("a[href$='.pdf']").click(trackClick);

    // Track outbound links
    $("body").delegate("a#ok_btn", "click", function () {
        googleReportEvent('exit', 'link', $(this).attr('href'));
        setTimeout(doTimeout, 100);
    });

    $("body").delegate("a#share-twitter", "click", function () {
        googleReportSocial('twitter', 'share', window.location.pathname);
        setTimeout(doTimeout, 100);
    });

    $("body").delegate("a#share-facebook", "click", function () {
        googleReportSocial('facebook', 'share', window.location.pathname);
        setTimeout(doTimeout, 100);
    });

    //set lightboxes for margarine sticks product page (can't add .js to the content module itself :(
    $('a[href=#margarineVideoOverlay]').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 472, height: 388, autoDimensions: false, autoScale: false });
    $('a[href=#cookieVideoOverlay]').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 472, height: 388, autoDimensions: false, autoScale: false });
    $('a[href=#farmToFamCommercialOverlay]').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 740, height: 494, autoDimensions: false, autoScale: false, titleShow: false, onComplete: embedPlayer });




    // Add class to recipe links in blog entries
    // Any link found in the #contentInner area that has the full URL needs to get the externalLink icon image
    $('body#test_kitchen article.recipe a[href^="/recipe/"]').
        add('body#test_kitchen article.recipe a[href^="http://' + window.location.host + '/recipe/"]').
    	addClass('testkitchen_recipe');



    /* Category/Collection Key Ingredients hover states */
    $('article.recipe').add('#collection .featureElement').hover(function () {
        var base = $(this).find('.previewImageHolder img');
        $(base).closest('.featureElement').find('.keyIngredients').slideDown('fast');

        $(base).closest('.featureElement').find('.descriptionContainer').addClass('keyIngredientsHover');
        $(base).parents('.featureElement').addClass('recipePreviewHover');
        $(base).parents('article.recipe').addClass('recipePreviewHover');
        $(base).addClass('recipeImagePreviewHover');

    }, function () {
        var base = $(this).find('.previewImageHolder img');
        $(base).closest('.featureElement').find('.keyIngredients').slideUp('fast');

        $(base).closest('.featureElement').find('.descriptionContainer').removeClass('keyIngredientsHover');
        $(base).parents('.featureElement').removeClass('recipePreviewHover');
        $(base).parents('article.recipe').removeClass('recipePreviewHover');
        $(base).removeClass('recipeImagePreviewHover');

    });




    /* Domain to use in Ajax calls */
    hostname = this.domain;

    $('a[href="#ask_becky"]').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 720, height: 720, autoDimensions: false,
        scrolling: 'no', autoScale: false, onComplete: fancyboxLoadComplete
    });
    $('a[href="#ask_becky"]').click(partial(clearForm, $('#ask_becky')));

    /* Set up the fancybox calls and the initial screens within fancybox */
    $('a[href="#signin_screen"]').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 440, height: 400, autoDimensions: false,
        scrolling: 'no', autoScale: false, onComplete: fancyboxLoadComplete
    });
    $('a[href="#signin_screen"]').click(initLoginDialog);

    /* Used for formatting print pages */
    if (window.location.href.match('/print(?!/)')) {

        if (window.location.href.match('generatePdf=true')) {
            $('#print_buttons').css('display', 'none');
            $('#recipeDirections').css('width', '800px');
            $('div').css('letter-spacing', '0.1em');
            $('span').css('letter-spacing', '0.1em');
            //$('#recipeDirections').css('font', 'bold 14px Helvetica,Arial,Sans-serif');
        }

        //recipe printing page gets different styling
        if (window.location.href.match('/recipe/')) {
            $('div#logo').addClass('recipe_print');
        }

        $('#print_buttons').css('display', 'block');
        $('#footer_print,.ingredient,h2,p').addClass('nobreak');
        $('div#logo').css('width', '159px');
        $('#logo img').css('width', '159px');

        var preload = new Image().src = '/assets/images/image_toggle_on.png';

        $('#print_buttons #image_toggle a').click(function () {
            if ($('#print_buttons #image_toggle input').val() == 'off') {
                $('#print_buttons #image_toggle input').val('on');
                $('#print_buttons #image_toggle').css('background-image', 'url(/assets/images/image_toggle_on.png)');
                $('#recipeImage').css('display', 'none');
                $('#recipeOverview').css('margin-left', '0');
                $('#recipeOverview .yield').addClass('placeholder').removeClass('yield');
            } else {
                $('#print_buttons #image_toggle input').val('off');
                $('#print_buttons #image_toggle').css('background-image', 'url(/assets/images/image_toggle_off.png)');
                $('#recipeOverview .placeholder').addClass('yield');
                $('#recipeOverview').css('margin-left', '317px');
                $('#recipeImage').css('display', 'block');
            }
        });
    }

    userCheckLoginStatus();

    $('a[href="#simplerewards_more_info"]').click(function (e) {
        e.preventDefault();
        if (isLoggedIn) {
            window.location = "/SimpleRewards/";
        }
        else {

            var elementReturnUrl = $(this).data('authenticatedPageReturnURL');

            if (elementReturnUrl != null && elementReturnUrl != "")
                authenticatedPageReturnURL = elementReturnUrl;

            $(this).unbind('click');

            $(this).fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 720, height: 450,
                autoDimensions: false, scrolling: 'no', autoScale: false, onComplete: fancyboxLoadComplete
            });

            // Initialize the jquery carousel if it's not already
            if ($('.pager_dots').children().length == 0) {
                $('.slideshow_modal').cycle({
                    fx: 'scrollHorz',
                    pager: '.pager_dots',
                    next: '#next',
                    prev: '#prev',
                    pause: 1,
                    speed:500,
                    pauseOnPagerHover: 1,
                    timeout: 5000
                });
            }

            $(this).trigger('click');
        }
    });



    $('a#newsletter_detail_link').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 720, height: 450,
        autoDimensions: false, autoScale: false, onComplete: fancyboxLoadComplete
    });
    $('a#newsletter_detail_link').click(initNewsletterDetail);


    $('a#showForgotPass').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 420, height: 380,
        autoDimensions: false, autoScale: false, onComplete: fancyboxLoadComplete
    });
    $('a#showMoreInfoScreen').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 720, height: 500,
        autoDimensions: false, scrolling: 'no', autoScale: false, onComplete: fancyboxLoadComplete
    });
    $('a#showResetSuccessScreen').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: 420, height: 380,
        autoDimensions: false, autoScale: false, onComplete: fancyboxLoadComplete
    });

    /* Handle the sign-in WS call */
    $('#SignInButton').click(doLogin);
    $('#LoginPasswordTextBox').keypress(function (e) {
        if (e.which == 13) {
            e.preventDefault();
            $('#SignInButton').focus().click();
        }
    });



    /* Hand the signout WS call */
    $('a#signout').click(doLogout);

    /* Handle the signup WS call */
    $('#signup_button').click(doSignup);

    /* Handle the cancel click on the signup page */
    $('.close_fancybox').click(closeFancybox);

    /* Handle the reset password WS call */
    $('#forgot_pass_screen #ForgotPasswordButton').click(doResetPassword);

    /* Show the signup screen */
    $('.showSignupDialog').click(showSignupScreen);

    /* Show the signup screen */
    $('#go_back_to_signup').click(showSignupScreen);

    /* Show the forgot password screen */
    $('.forgot_pass').click(function (e) { showForgotPassDialog(); e.preventDefault(); });

    addLoginStateFunction(rewriteLinks);
    addLoginStateFunction(configureHeader);
    addLoginStateFunction(toggleAuthenticatedContent);

    /* login page sign in */
    $('#loginForm #page_signin').click(doPageLogin);
    $('#loginForm input[id$=PasswordTextBox]').keypress(function (e) {
        if (e.which == 13) {
            e.preventDefault();
            $('#loginForm #page_signin').focus().click();
        }
    });


    //redirect all simple rewards links through login


    // Check if a modal window is to be opened on load
    var loadModal = getUrlVars()["loadModal"];
    if (loadModal != null && loadModal != "") {
        $("a[href=#" + loadModal + "]").trigger('click');

    }

});

function trackClick(sender) {
    if (sender.currentTarget.pathname != null) {
        //alert("assets/pdf/" + sender.currentTarget.pathname);
        googleVirtualPageview(sender.currentTarget.pathname);
        //_gat._getTrackerByName()._trackEvent('PDF Download', sender.currentTarget.pathname);
        setTimeout(doTimeout, 750);
        return true;
    }
}

//extract youtube vid id from url
function getYtId(url) {
    if (url === null) { return ""; }
    var vid;
    var results;
    var regex = /[\?&]v=([a-z0-9\-\_]+)\&?/i;
    results = url.match(regex);
    vid = (results === null) ? url : results[1];
    return vid;
}

// track youtube player state changes in GA
function youtubeEvent(state, url) {
    //alert("youtube event: State: " + state + " url: " + url);
    if (url  === null) { return ""; }
    var vid;
    vid = getYtId(url);
    switch(state) {
        case 1:
            //alert("Tracking play: " + vid);
            if (yt_resume == 0) {
                _gaq.push(['_trackEvent', 'video', 'play', vid]);
                yt_resume = 1;
            }
            break;
        case 2:
            //alert("Tracking pause: " + vid);
            _gaq.push(['_trackEvent', 'video', 'paused', vid]);
            break;
        case 0:
            //alert("Tracking finished: " + vid);
            _gaq.push(['_trackEvent', 'video', 'finished', vid, 0, true]);
            break;
    }
    return;
}


var ytplayer;


//function called by each player when it is fully loaded, passes refrence to player back
function onYouTubePlayerReady(playerid) { 
    //alert('player ready ' + playerid); //to trace out video id
    ytplayer = document.getElementById('myytplayer'); //gets object refence to player
    ytplayer.addEventListener('onStateChange', 'function(e){var url = ytplayer.getVideoUrl();youtubeEvent(e,url)}');
}

//empty function for setTimeout calls that do nothing.
function doTimeout() { }

var loginStateFunctions = new Array();

function addLoginStateFunction(func) {
    loginStateFunctions.push(func);
}

function loginStateChange() {
    for (var i = 0; i < loginStateFunctions.length; i++) {
        loginStateFunctions[i]();
    }
}

function configureHeader() {
    if (isLoggedIn) {
        showLoggedInHeader();
    } else {
        showLoggedOutHeader();
    }

    return;
}

function toggleAuthenticatedContent() {
    if (isLoggedIn) {
        $('.loggedOutContent').css('display', 'none');
        $('.loggedInContent').css('display', 'block');
    } else {
        $('.loggedInContent').css('display', 'none');
        $('.loggedOutContent').css('display', 'block');
    }

    return;
}

function handleAuthenticatedLink(e) {

    if (!isLoggedIn)
         $(this).attr('href', "/SimpleRewards/Login.aspx?target=" + escape($(this).attr('href')));

    // Using a $(location).attr(target) redirect messes up the encoding of the target GET parameter so simulate a link click
    //$(this).unbind('click'); 
    //$(this).trigger('click');
    return true;
}

function rewriteLinks() {

    $('a[href^="/SimpleRewards"]').not('a[href="/SimpleRewards/Login.aspx"]').click(handleAuthenticatedLink);

    /*
    if (!isLoggedIn) //set by backend in header
    {
        $('a').each(function (index, elem) {

            if ($(this).attr('href') != null && $(this).attr('href').match(/\/SimpleRewards\//i) && !$(this).attr('href').match(/\/SimpleRewards\/Login.aspx/i)) {

                var newtarget = "/SimpleRewards/Login.aspx?target=" + escape($(this).attr('href'));
                $(this).attr('href', newtarget);
            }

        });
    }
    */
}

function confirmationPopup(popupContentId, width, height) {
    confirmationPopupCloseAction(popupContentId, width, height, null);
}

function confirmationPopupCloseAction(popupContentId, width, height, closeFunction) {

    var linkId = '#' + popupContentId;
    
    if (closeFunction != null )
        $('a[href=' + linkId + ']').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: width, height: height,
                                               autoDimensions: false, scrolling: 'no', autoScale: false, onClosed: closeFunction, onComplete: fancyboxLoadComplete });
    else
        $('a[href=' + linkId + ']').fancybox({ overlayColor: '#553e3f', overlayOpacity: 0.9, padding: 0, width: width, height: height,
                                               autoDimensions: false, scrolling: 'no', autoScale: false, onComplete: fancyboxLoadComplete });
    
    $('a[href=' + linkId + ']').trigger('click');

    if (width == "")
        width = null;

    if (height == "")
        height = null;
}

/* Handle signup WS call */
function doSignup() {
    clearFormErrors($('#signup'));
    
    var requestData = {
                        username: $('#signup input[id$=SignupEmailTextBox]').val(),
                        usernameConfirm: $('#signup input[id$=ConfirmEmailTextBox]').val(),
                        password: $('#signup input[id$=SignupPasswordTextBox]').val(),
                        passwordConfirm: $('#signup input[id$=ConfirmPasswordTextBox]').val(),
                        firstName: $('#signup input[id$=FirstnameTextBox]').val(),
                        lastName: $('#signup input[id$=LastnameTextBox]').val(),
                        zip: $('#signup input[id$=ZipTextBox]').val(),
                        ageVerificationCheckbox: $('#signup input[id*=ageVerificationCheckbox]:checked').val(),
                        isNewsletterSubscriber: $('#signup input[name*=IsNewsletterSubscriberRadio]:checked').val()
                      };

    //googleReportEvent('QAevent_track', 'signup', 'submit', 4);  //Report user's attempt to signup
    doAjaxCall("/WebServices/CreateUserInfo.aspx", requestData, handleCreateUserReply);
    return false;
}

/* Handle the cancel click on the signup page */
function closeFancybox(e) {
    $.fancybox.close();
    e.preventDefault();
}

/* Handle login WS call and run post-login functions */
function doLogin() {
    
    // Reference to the JS to call if login fails
    postFailedLoginFunction = failedModalLogin;
    
    // Hide any previous login-related error messages
    $('.login_overlay .error_message').css('display', 'none');


    var requestData = {
                        username: $('.login_overlay input[id$=LoginEmailTextBox]').val(),
                        password: $('.login_overlay input[id$=LoginPasswordTextBox]').val(),
                        keepLoggedIn: $('.login_overlay input[id$=KeepLoggedInCheckBox]:checked').val(),
                        rememberEmail: $('.login_overlay input[id$=RememberEmailCheckBox]:checked').val()
                      };
    
    doAjaxCall("/WebServices/UserLogin.aspx", requestData, handleLoginReply);
    return false;
}

/* Handle signout WS call and run post-login functions */
function doLogout() {
    doAjaxCall("/WebServices/UserLogout.aspx", null, handleLogoutReply);
    return false;
}

/* Handle reset password WS call */
function doResetPassword() {

    var requestData = { username: $('input[id$=ForgotPassEmailTextBox]').val() }
    doAjaxCall("/WebServices/ResetPasswordRequest.aspx", requestData, resetRequestSuccess);
    return false;
}

/* Handle signup WS reply */
/* Show errors or forward user to member area */
function handleCreateUserReply(reply) {
    if (reply.Success == "false") {
        $('.formError').removeClass('formError');
        displayErrors(reply.Errors, $('#signup'));
        $('#signup #errorDescription').css('display', 'block');
        $.fancybox.resize();
    } else {
        
        googleReportEvent('account', 'signup', window.location.href);
        
        if (authenticatedPageReturnURL == null || authenticatedPageReturnURL == "")
            $(location).attr('href', "/SimpleRewards/");
        else
            $(location).attr('href', authenticatedPageReturnURL);
    }
}

/* Handle password reset WS reply */
function resetRequestSuccess(reply) {
    if (reply.Success == "true") {
        confirmationPopup('reset_pass_confirm_screen', 400, 200);
        /* Hide all other sections 
        $('#fancybox-inner, #fancybox-wrap').css('height', '190px');
        $('.login_overlay section').css('display', 'none');
        $('.login_overlay #password_reset_screen').css('display', 'block');
        */
    } else {
        displayErrors(reply.Errors, $('#forgot_pass_screen'));
        /* Reset password call failed */
    }
}

/* Handle login WS reply */
/* Forward user to member area or display failed login screen */
function handleLoginReply(reply) {
    if (!IsAuthError(reply)) {

        googleReportCustomVar(1, "member", "yes", 1);
        if (reply.Age != "None") {
            googleReportCustomVar(2, "age", reply.Age, 1);
        }
        googleReportEvent('account', 'login', window.location.href);
 
        setTimeout(doPostLoginAction(postLoginFunction, reply.FirstName), 50);
    }
    else
        displayErrors(reply.Errors, null);
        //doPostFailedLoginAction(postFailedLoginFunction);
}

/* Handle logout WS reply */
function handleLogoutReply(reply) {
    if (reply.Success == "true") {
        isLoggedIn = false;

        /* If they're in Simple Rewards move them to a non-auth area */
        if (location.pathname.substr(0, 15) == "/SimpleRewards/") {
            $(location).attr('href', "/");
        }  else {
            location.reload();
        }

        loginStateChange();
    }
}

/* Handle recipe bookmark WS reply */
function handleRecipeBookmarkReply(reply) {
    if (reply.Success != "true") {

        if (IsAuthError(reply)) {
            /* Webservice said they weren't logged-in, prompt to login */
            $('a#login').trigger('click');
            postLoginFunction = saveRecipeBookmark;
        } else {
            /* Failed for non-auth reasons */
            alert("Call Failed (Non-Auth)");
        }

    } else {
        /* Hide the bookmark recipe button and show the 'already bookmarked' copy */
        showRecipeBookmarkedLinks();
    }
}

/* This function is called after a successful login (via the fancybox popup) */
/* Hides the fancybox popup and calls function referenced by postLoginFunction */
function doPostLoginAction(action, userFirstName) {

    
    
    isLoggedIn = true;

    /* Close the login dialog */
    $.fancybox.close()

    /* See if a post-login function has been provided */
    if (action == null)
        action = defaultLoginAction;

    /* Run post-login function */
    action();

    /* Reset the post-login event reference */
    postLoginFunction = null;

    loginStateChange();
}

function doPostFailedLoginAction(action) {

    if (action != null)
        action();

    postFailedLoginFunction = null;
}

function failedPageLogin() {
    $('#loginForm .failedLogin').css('display', 'block');
}

/* Runs after a failed modal login attempt */
function failedModalLogin() {
    $('.login_overlay .failedLogin').css('display', 'block');
}

/* Default function called after successful signin if no action is provided */
function defaultLoginAction() {
    if (authenticatedPageReturnURL != null && authenticatedPageReturnURL != "")
        $(location).attr('href', authenticatedPageReturnURL);   
    else 
        $(location).attr('href', "/SimpleRewards/");
}

/* Show signup screen */
function showSignupScreen() {
    //alert("clicked");
    clearFormErrors($('#signup'));
    $('#showMoreInfoScreen').trigger('click');

    return false;
}

function showForgotPassDialog() {
    $("a#showForgotPass").trigger("click");
}

/* Check webservice reply to determine if login failed */
function IsAuthError(reply) {

    /* Loop through the errors to check for an auth error */
    var isAuthError = false;
    $.each(reply.Errors, function (index, error) {
        if (error.Field == "Authentication" && error.Error == "Not Authenticated")
            isAuthError = true;
    });

    return isAuthError;
}


function displayErrors(Errors, section) {
    if (section != null)
        $(section).find('.errorDescription').css('display', 'block');
    else
        $('.errorDescription').css('display', 'block');
    $('#signin_copy').css('display', 'none');
    $.each(Errors,
        function (index, error) {
            return addErrors(index, error, section);
        }
    );
}

function addErrors(index, error, section) {
    // Add error class to form fields and their associated labels
    $(section).find('input, textarea, select').filter('[id*=' + error.Field + ']').addClass('formError');
    $(section).find('input, textarea, select').filter('div.formField [id*=' + error.Field + ']').parents('div.formField').children('label').addClass('formError');
    $(section).find('label').filter('[for=' + error.Field + ']').addClass('formError');

    if ( error.Error != '' )
        $(section).find('.errorList').append('<li><span class="' + error.Field +  '" >' + error.Error.toUpperCase() + '</span></li>');
    
    //$.fancybox.resize();
}

function clearForm(element) {
    clearFormErrors(element);
    clearFormValues(element);
}

function clearFormErrors(element) {
    $(element).find('*').removeClass('formError');
    $(element).find('.errorDescription').css('display', 'none');
    $(element).find('ul.errorList').html("");
}

function clearFormValues(element) {
    $(element).find('input[type=text]').each(function () { $(this).val(''); });
    $(element).find('textarea').each(function () { $(this).val(''); });
    $(element).find('input[type=checkbox]').each(function () { $(this).removeAttr('checked'); });
    $(element).find('select').attr('selectedIndex', 0);
    $(element).find('.clearContents').each(function () { $(this).html(''); });
}

/* Ensure sure the correct screen is displayed on login click */
function initLoginDialog(e) {

    var elementReturnUrl = $(this).data('authenticatedPageReturnURL');

    if (elementReturnUrl != null && elementReturnUrl != "") 
        authenticatedPageReturnURL = elementReturnUrl;

    /* Hide any previous error messages */
    $('.login_overlay input[type=text]').each(function () { $(this).val(''); });
    $('.login_overlay input[type=checkbox]').each(function () { $(this).removeAttr('checked'); });
    $('.login_overlay .error_message').css('display', 'none');
    $('.errorDescription').css('display', 'none');
    $('#signin_copy').css('display', 'block');
    $('.login_overlay input').removeClass('formError');

    var storedUsername = getCookie('storedUsername');
    if (storedUsername != null && storedUsername != "") {
        $('.login_overlay #LoginEmailTextBox').val(storedUsername);
        $('.login_overlay #RememberEmailCheckBox').attr('checked', 'true');
    }


    /* Hide all sections but the sign-in section */
    //$('.login_overlay section#password_reset_screen').css('display', 'none');
    //$('.login_overlay #signin_screen').css('display', 'block');
}

/* Ensure sure the correct screen is displayed on signup click */
function initSignupDialog() {
    /* Hide any previous error messages */
    $('.login_overlay input[type=text]').each(function () { $(this).val(''); });
    $('.login_overlay input[type=checkbox]').each(function () { $(this).removeAttr('checked'); });
    $('.signup_overlay .error_message').css('display', 'none');
    $('.signup_overlay input').removeClass('formError');

    /* Hide all sections but the sign-in section */
    $('.signup_overlay section').css('display', 'none');
    $('.signup_overlay #simplerewards_more_info').css('display', 'block');
    $('.signup_overlay #newsletter_detail').css('display', 'none');

    $.fancybox.resize();
}

/* Ensure sure the correct screen is displayed on signup click */
function initNewsletterDetail() {
    /* Hide any previous error messages */
    $('.login_overlay input[type=text]').each(function () { $(this).val(''); });
    $('.login_overlay input[type=checkbox]').each(function () { $(this).removeAttr('checked'); });
    $('.signup_overlay .error_message').css('display', 'none');
    $('.signup_overlay input').removeClass('formError');

    /* Hide all sections but the sign-in section */
    $('.signup_overlay section').css('display', 'none');
    $('.signup_overlay #simplerewards_more_info').css('display', 'none');
    $('.signup_overlay #newsletter_detail').css('display', 'block');

    $.fancybox.resize();
}

function userCheckLoginStatus() {
    AjaxCall(null, false);
}

function userCheckLoginStatusReply(reply) {
    //alert(reply.Success);
    //alert(reply.FormResultObject);

    var prevState = isLoggedIn;

    if (reply != null && reply.FormResultObject != null && reply.Success == "true") {
        isLoggedIn = true;
        userFirstName = reply.FormResultObject;
    } else {
        isLoggedIn = false;
    }

    if (prevState == null || prevState != isLoggedIn)
        loginStateChange();
}

function showLoggedInHeader() {
    if (userFirstName != null && userFirstName != '')
        $('#logged_in_actions #name').text(userFirstName);

    if ( $('#logged_out_actions').is(':visible') ) {
        $('#logged_out_actions').fadeOut(500, function () {
            $('#logged_in_actions').fadeIn(500);
        });
    } else {
        $('#logged_in_actions').fadeIn(500);
    }

    $('#header_top .simple_rewards_page').attr('href', '/SimpleRewards/');
}

function showLoggedOutHeader() {
    if ( $('#logged_in_actions').is(':visible') )
    {
        $('#logged_in_actions').fadeOut(500, function () {
            $('#logged_out_actions').fadeIn(500);
        });
    } else {
        $('#logged_out_actions').fadeIn(500);
    }

    $('#header_top .simple_rewards_page').attr('href', '#simplerewards_more_info');
}


/* Pop-up to display if user clicks external link */
function externalLinkDialog() {

}

function addRecipeBookmark(bookmarkRecipeID) {
    var requestData = { recipeID: bookmarkRecipeID };
    doAjaxCall("/WebServices/CreateBookmark.aspx", requestData, handleRecipeBookmarkReply);
}

function doAjaxCall(url, requestData, successFunction, secure) {

    if (secure == null || secure != false)
        baseUrl = "https://" + window.location.host;
    else
        baseUrl = "http://" + window.location.host;

    $.ajax({
        type: "GET",
        url: baseUrl + url,
        data: requestData,
        dataType: "jsonp",
        success: successFunction
    });
}

function doDeleteRecipeBookmarks() {
    var clickedLink = this.id;
    var recipeID = clickedLink.replace('delete_recipe_', '');
    requestData = { recipeIds: recipeID };

    onSuccess = partial(RecipeBookmarksDeleteSuccess, clickedLink);
    DeleteRecipeBookmarks(requestData);

    return false;
}

function DeleteRecipeBookmarks(requestData) {
    AjaxCall(requestData);
}

function AjaxCall(requestData, secure) {
    var callingFunctionName = getFunctionName(arguments.callee.caller);
    var url = "/WebServices/" + callingFunctionName + ".aspx";
    
    var callingFunctionRef = eval(callingFunctionName);
    var replyFunctionRef = eval(callingFunctionName + "Reply");

    if (secure == null || secure != false)
        baseUrl = "https://" + window.location.host;
    else
        baseUrl = "http://" + window.location.host;

    $.ajax({
        type: "GET",
        url: baseUrl + url,
        data: requestData,
        dataType: "jsonp",
        success: function (reply) { replyFunctionRef(reply, requestData, callingFunctionRef); }
    });
}

function getFunctionName(callingFunc)
{
    var name = callingFunc.toString();
    name = name.substr('function '.length);
    return name.substr(0, name.indexOf('('));
}

/* Handle deleteBookmarks reply */
function DeleteRecipeBookmarksReply(reply, requestData, callingFunction) {
    if (reply.Success != "true") {

        if (IsAuthError(reply)) {
            $('a#login').trigger('click');
            postLoginFunction = partial(callingFunction, requestData);
        }

    } else {

        if (onSuccess != null) {
            onSuccess();
            onSuccess = null;
        }
    }
}

/* Remove item and re-apply middle class to new middle items */
function RecipeBookmarksDeleteSuccess(clickedLink) {
    $('#' + clickedLink).parent().parent().remove();

    $($('.group_result')[0]).parent().find('.group_result').each(function (index, value) {
        $(this).removeClass('middle');

        if (index % 3 == 1)
            $(this).addClass('middle');
    });
}

function partial(func /*, 0..n args */) {
    var args = Array.prototype.slice.call(arguments, 1);
    return function () {
        var allArguments = args.concat(Array.prototype.slice.call(arguments));
        return func.apply(this, allArguments);
    };
}

function doPageLogin(e) {
    e.preventDefault();

    $('#loginForm .failedLogin').css('display', 'none');

    postFailedLoginFunction = failedPageLogin;

    var requestData = {
        username: $('#loginForm input[name$=EmailTextBox]').val(),
        password: $('#loginForm input[name$=PasswordTextBox]').val()
    };

    doAjaxCall("/WebServices/UserLogin.aspx", requestData, handleLoginReply);


    return false;
}

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

function setupComments() {
    if (isLoggedIn == true)
        $('#createComment .anonymousFields').css('display', 'none');
}

function googleVirtualPageviewTest(url) {
   alert("['_trackPageview', " + url + "]");
}

function googleVirtualPageview(url) {
   _gaq.push(['_trackPageview', url]);
}

function googleReportSocial(network, action, opt_target, opt_path) {
    _gaq.push(['_trackSocial', network, action, opt_target, opt_path]);    
}

// Wrapper for Google analytics event reporting
function googleReportEvent(category, action, opt_label, opt_value, custom_var) {
    //alert("gre");
    if ((typeof opt_label == "undefined") && (typeof opt_value == "undefined")) { 
        _gaq.push(['_trackEvent',category,action]);
    } else if ((typeof opt_label != "undefined") && (typeof opt_value == "undefined")) {
        _gaq.push(['_trackEvent',category, action, opt_label]);
        //alert("_gaq.push(" + category + ", " + action + ", " + opt_label);
    } else {
        _gaq.push(['_trackEvent', category, action, opt_label, opt_value]);
        //alert("_gaq.push(" + category + ", " + action + ", " + opt_label + ", " + opt_value);
    }
}

function googleReportCustomVar(slotIndex, category, value, scope) {
    //alert("set custom var: " + slotIndex + "  " + category + "  " + value + "  " + scope);
    _gaq.push(['_setCustomVar', slotIndex, category, value, scope]);
}

// Wrapper for Google analytics event reporting **CURRENTLY reports to test account**
function googleReportEventTest(category, action, opt_label, opt_value) {
    alert("event test");
    googleReportEvent('_setAccount', 'UA-21000945-2');
    googleReportEvent(category, action, opt_label, opt_value);
}







// BUTTER SCROLLING STORY

window.currentSlideIndex = 0;

var scaler = 120; // 120 or 240
var playing = "";
var quickScroll = false;
function updateSideNav(ct) {
    window.currentSlideIndex = ct;
    clearTimeout(window.scrollTrack);
    $("#sidenav_ul li a").removeClass('active');
    $("#sidenav_ul li:eq(" + ct + ") a").addClass('active');
    $(".active_frame").text(ct + 1);
    window.scrollTrack = setTimeout(function () {
        //console.log($(".page_anchor:eq("+ct+")").attr('name'));
        _gaq.push(['_trackEvent', 'scrollingstory', 'cellview', $(".page_anchor:eq(" + ct + ")").attr('name') + ".1", 0, true]);
    }, 2000);
}


   


function $_GET(q,s){
	s= s ? s : window.location.search;
	var re= new RegExp('&'+q+'(?:=([^&]*))?(?=&|$)','i');
	return (s=s.replace(/^\?/i,'&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined;
}
function getYtId(url){if(url===null)return"";var vid;var results;var regex=/[\?&]v=([a-z0-9\-\_]+)\&?/i;results=url.match(regex);vid=results===null?url:results[1];return vid}
function ytStateChange(e){
	var state = e.data;
	
	//console.log(e.target);
	if(typeof e.target.getVideoUrl == 'undefined'){
		//console.log('dump');
		return;
	}
		var url = e.target.getVideoUrl();
	//console.log(url);
	if(url===null){
		return"";
	}
	var vid;
	vid=getYtId(url);
	eval("window.yt_player_"+vid+" = e.target");//.pauseVideo();
	//console.log(eval("window.yt_player_"+vid))//$("#myytplayer_"+vid) = e.target;
	//e.target.attr('id') = "myytplayer_"+vid;
	//console.log(vid);
	switch(state)
	{
	    case 1:
	        // console.log('play');
	        _gaq.push(["_trackEvent", "video", "play", vid]);
	        var localTc = document.createElement('script');
	        if ($("#tracking_pix").size() < 1) {
	            $('<img />').addClass('invisible').appendTo('body').attr('id', 'tracking_pix');
	        }
	        localTc.type = 'text/javascript';
	        localTc.async = true;
	        if (vid == 'soQO_tY8eI0') {
	            localTc.src = ("http://as1.suitesmart.com/108043/G17342.js?GID=17343");
	            $("#tracking_pix").attr("src", "http://sensor2.suitesmart.com/sensor4.js?GID=17343");
	            //	$('head').append(localTc);
	        } else if (vid == "6n1ix3Po2qU") {
	            localTc.src = ("http://as1.suitesmart.com/108043/G17342.js?GID=17345");
	            $("#tracking_pix").attr("src", "http://sensor2.suitesmart.com/sensor4.js?GID=17769");
                //trackCount++;
                //console.log('tracked ' + trackCount);
	            //	$('head').append(localTc);

	        } else if (vid == "g8J4HRsVrQs") {
	            localTc.src = ("http://as1.suitesmart.com/108043/G17342.js?GID=17344");
	            $("#tracking_pix").attr("src", "http://sensor2.suitesmart.com/sensor4.js?GID=17344");
	            //	$('head').append(localTc);

	        } else {
	        }

	        break;

	    case 2:
	        //console.log('pause');
	        _gaq.push(["_trackEvent", "video", "paused", vid]);
	        if ($("#tracking_pix").size() > 0) {
	            $("#tracking_pix").remove();
	        }
	        break;

	    case 0:
	        //console.log('finished');
	        if ($("#tracking_pix").size() > 0) {
	            $("#tracking_pix").remove();
	        }
	        _gaq.push(["_trackEvent", "video", "finished", vid, 0, true]);
	        break;

	}
	//console.log(state);
	
	return;
}
												 
    //function called by each player when it is fully loaded, passes refrence to player back
//    function onYouTubePlayerReady(playerid) {
 //       alert('player ready ' + playerid); //to trace out video id
  //      ytplayer = document.getElementById(playerid);//'myytplayer'); //gets object refence to player
        //ytplayer.addEventListener('onStateChange', 'function(e){var url = ytplayer.getVideoUrl();youtubeEvent(e,url)}');
  //  }
/* useless without callback from youtube happening 
    function switchVideo(id, subtext) {
        //_gaq.push(['_trackEvent', 'video', 'load' , id]); // redundant after 'play' action kicked back from yt player
        ytplayer.loadVideoById(id, 0);
        $("#intro_copy").html(subtext);
    }
*/
	function stopAllVids(){
		
		$(".yt").each(function(){
			//return;
			var player;// = document.getElementById('myytplayer_'+$(this).attr('name'));
			player = eval("window.yt_player_"+$(this).attr('name'));
			//console.log(eval("window.yt_player_"+$(this).attr('name')));
			//alert(player.size());
			//if(playing[$(this).attr('name')]==true)
			if(typeof player != 'undefined'){
			if(typeof player.pauseVideo==='function')
				{
					//playing[$(this).attr('name')]=false;
					player.pauseVideo();
				}
			}
		});
		
	}

function changeFrame(dir,speed){
	var currentFrame = $("#sidenav_ul li").index($("#sidenav_ul li a.active").parent());
	var mobile = window.mobile;
	if(dir=='next'){
		if((currentFrame+1) < $("#total_frames").text() ){
			currentFrame++;
			if(mobile==false){
			stopAllVids();
			}
			$(document).scrollTo($("#anchor_"+currentFrame),500);
			updateSideNav(currentFrame);
		}
	} else if(dir=='prev'){
		if(currentFrame > 0){
			currentFrame--;
			if(mobile==false){
			stopAllVids();
			}
			$(document).scrollTo($("#anchor_"+currentFrame),500);
			updateSideNav(currentFrame);
		}
	} else if(dir!=null){
		if(currentFrame != dir && dir > -1 && dir < $("#total_frames").text() ){
			var diff = Math.abs(dir-currentFrame);
			if(mobile==false){
			stopAllVids();
			}
			$(document).scrollTo($("#anchor_"+dir),speed*diff);
			updateSideNav(parseInt(dir));
		}
	
	}
	
}
function getClosestFrame(){
	var txt = "";
	var closest = "";
	var diff = 5000;
	$(".page_anchor").each(function(){
		var winPos = $(window).scrollTop();
		var myPos = $(this).offset();
		var myDiff = Math.abs(winPos-(myPos.top + 25));
		if(myDiff < diff){
			diff = myDiff;
			updateSideNav( $(".page_anchor").index($(this)));
		} else {
	
		}
		
	});
}

$(function(){
	$('a').each(function(){
		if($(this).attr('onclick') != '' && $(this).attr('href') == "#"){
			$(this).click(function(e){
				e.preventDefault();
			});
		}
	});
	var theWindow        = theWindow || $(window);
	
	
	
	$(".solo").each(function(){
		var drop_container = $(".abs_drop",$(this));
		caption_container = $(this).siblings(".project_caption")
			if($(this).hasClass("yt")==false){
				caption = $('.slide_caption', $(this))
			} else {
				caption = null;
				return false;
			}
			if(caption.html()!=null){
				caption_container.css({top:null,left:null,bottom:null,right:null});
				var nTop = caption.css('top') 
				if(!nTop || nTop=='auto'){
				} else {
					caption_container.css({top:nTop});
				}
				var nLeft = caption.css('left');// || '10px';
				if(!nLeft || nLeft=='auto'){
				} else {
					caption_container.css({left:nLeft});
				}
				var nBot = caption.css('bottom') 
				if(!nBot || nBot=='auto'){
					nBot = 'null';
				} else {
					caption_container.css({bottom:nBot});
				}
				var nRight = caption.css('right') 
				if(!nRight || nRight=='auto'){
					nRight = 'null';
				} else {
					caption_container.css({right:nRight});
				}
				var nW = caption.css('width');// || '10px';
				if(!nW || nW=='auto'){
					nW = 'auto';
				} else {
					caption_container.css({width:nW});
				}
				var nH = caption.css('height');// || '10px';
				if(!nH || nH=='auto'){
					nH = 'auto';
				} else {
					caption_container.css({height:nH});
				}
				var nPad = caption.css('padding-left');
				if(!nPad){//!='auto'){
					nPad = "25px";//35px 15px 15px 25px";
				} else {
					caption_container.css({'padding-left':nPad});
				}
				if(caption.hasClass("no_background")){
					caption_container.addClass('no_bg');
				}
				caption_container.html(caption.html())
				
				var myH = caption_container.height();
				caption_container.find('.submarine').css({top:myH+60});
				caption_container.fadeIn('1');
				caption_container.find('.play_vid').each(function(){
					$(this).attr('id',$(this).attr('name'));
				});
				$('.play_commercial').each(function(){
					
				});
				//caption_container.find(".trigger_1").unbind('click').bind('click',function(){
				caption_container.find(".trigger_1").bind('click',function(e){
					e.preventDefault();
					$(document).scrollTo($("#anchor_1"),800);
					//return false;
				});
				
				//caption_container.find(".trigger_next").unbind('click').bind('click',function(){
				caption_container.find(".trigger_next").bind('click',function(e){
					e.preventDefault();
					$(this).parent().siblings('.next').trigger('click');
					return false;
					
				});
				//caption_container.find(".play_vid").unbind('click').bind('click',function(){
				caption_container.find(".play_vid").bind('click',function(e){
					e.preventDefault();
					
					$(this).parent().siblings('.next').trigger('click');
					var vid = $(this).parent().siblings().find(".yt").attr('name');
					if(mobile==false){
					window.playVid = setInterval(function(){
							var player;// = document.getElementById("myytplayer_" + vid);//.hide();//playVideo();
							player = eval("window.yt_player_"+vid);
						if(typeof player != 'undefined'){
							if(typeof player.playVideo != 'undefined'){
								player.playVideo();
								clearInterval(window.playVid);
							}
						}
					},100);
					}
				});
				//$(".play_commercial").unbind('click').bind('click',function(){
				$(".play_commercial").bind('click',function(e){
					e.preventDefault();
					
					$(this).parent().siblings('.next').trigger('click');
					var vid = $(this).parent().siblings().find(".yt").attr('name');
					if(mobile==false){
					window.playVid = setInterval(function(){
							var player;// = document.getElementById("myytplayer_" + vid);//.hide();//playVideo();
							player = eval("window.yt_player_"+vid);
						if(typeof player != 'undefined'){
							if(typeof player.playVideo != 'undefined'){
								player.playVideo();
								clearInterval(window.playVid);
							}
						}
					},100);
					}
				});
			} else {
				// no caption
			}
	});
	$(".cm_slideshow").find(".project_caption").fadeIn('1');
	$(".cm_slideshow .cm_slides").each(function(){
		$(this).children().addClass("slide");
		
		var next = $(".next",$(this).parent());
		var prev = $(".prev",$(this).parent());
		prev.hide();
		$(this).children('.slide').each(function(){
			var offset = $(this).position();
			//$("<span />").html( offset.left ).appendTo($(this));
		});
		$(this).children('.slide:eq(0)').addClass('activeSlide');
		
		//next.unbind('click').bind('click',function(){
		next.bind('click',function(e){
			e.preventDefault();
		
			var slidegroup = $(this).siblings('.cm_slides');
			var slides = $(this).siblings('.cm_slides').children(".slide");
			var activeSlide = $(this).siblings('.cm_slides').children('.activeSlide');
			var currSlide = slides.index(activeSlide);
			var totSlides = slides.size() - 1;
	
			if(currSlide != -1 && currSlide < totSlides){
				var nextSlide = currSlide+1;
				
				var percentage = (nextSlide+1) / (totSlides+1) ;
				var px_bg = $(this).siblings(".px_bg");
				var overage = ( px_bg.width() - 976 );
				var shiftBgBy = -1 * percentage * overage;
				
				//alert(currSlide + ", with "+ totSlides + " total. Next up: "+ nextSlide );//$(this).siblings('.cm_slides').children(".slide").size() + " total.");
				slides.removeClass('activeSlide');
				var ns_el = slidegroup.children(".slide:eq("+ nextSlide +")");
				ns_el.addClass('activeSlide');
				var newPos = (-1*ns_el.position().left)+20+'px';
				slidegroup.animate({left:newPos},700);
				if(mobile==false){
					px_bg.animate({left:shiftBgBy},700);
				}
				if(nextSlide == totSlides-1){
					$(this).fadeOut('1');
				}
				if(nextSlide > 0){
					$(this).siblings('.prev').fadeIn('1');
				}
			} else {
				
			}
		
		});
		
		//prev.unbind('click').bind('click',function(){
		prev.bind('click',function(e){
			e.preventDefault();
			
			var slidegroup = $(this).siblings('.cm_slides');
			var slides = $(this).siblings('.cm_slides').children(".slide");
			var activeSlide = $(this).siblings('.cm_slides').children('.activeSlide');
			var currSlide = slides.index(activeSlide);
			var totSlides = slides.size() - 1;
			
			if(currSlide != -1 && currSlide > 0){
				var nextSlide = currSlide-1;
				
				var percentage = (nextSlide+1) / (totSlides+1) ;
				var px_bg = $(this).siblings(".px_bg");
				var overage = ( px_bg.width() - 976 );
				var shiftBgBy = -1 * percentage * overage;
				
				slides.removeClass('activeSlide');
				var ns_el = slidegroup.children(".slide:eq("+ nextSlide +")");
				ns_el.addClass('activeSlide');
				var newPos = (-1*ns_el.position().left)+20+'px';
				slidegroup.animate({left:newPos},700);
				if(mobile==false){
					px_bg.animate({left:shiftBgBy},700);
				}
				if(nextSlide == 0){
					$(this).fadeOut('1');
				}
				if(nextSlide < totSlides){
					$(this).siblings('.next').fadeIn('1');
				}
			} else {
				
			}
			
		});
		
	});
	

					$(".slideshow ,.cm_slideshow, .viewport").prepend("<a class='page_anchor' />")
					$(".slideshow ,.cm_slideshow, .viewport").each(function(){
						$(this).children('.page_anchor').attr('name',$(this).attr('name'));
						if($(this).find('.tooltip').size() != 0){
							$(this).find('.tooltip').attr('id','tooltip_'+$(".slideshow ,.cm_slideshow, .viewport").index($(this)));
						} else {
							$(this).prepend("<div class='tooltip' id='tooltip_"+$(".slideshow ,.cm_slideshow, .viewport").index($(this))+"'></div>");
						}
						
					});
					$(".page_anchor").each(function(){
						var myInd = $(".page_anchor").index($(this));
						$(this).attr('id',"anchor_"+myInd);
						$("#sidenav_ul").append('<li><span class="flyOver"></span><a class="'+$(this).attr('name')+'" href="#" onclick="return false;"></a></li>');
						
					});
					$("#total_frames").text($(".page_anchor").size());
					updateSideNav(0);
					//$("#arrow_up").unbind('click').bind('click',function(){
					$("#arrow_up").bind('click',function(e){
						e.preventDefault();
						changeFrame('prev');
					});
					//$("#arrow_down").unbind('click').bind('click',function(){
					$("#arrow_down").bind('click',function(e){
						e.preventDefault();
						changeFrame('next');
					});
					$("#sidenav_ul li").each(function(){
						var thisIndex = $("#sidenav_ul li").index($(this));
						$("a",$(this)).attr('id',"sidenav_link_"+thisIndex);
					});
					var hto = "";
					$("#sidenav_ul li a").hover(function(){
						var me = $(this);
						var myInd = $("#sidenav_ul li").index($(this).parent());
						var theFlyOver = $('#tooltip_'+myInd).html();
						hto = setTimeout(function(){
							me.siblings('.flyOver').html(theFlyOver);
							var myH = me.siblings('.flyOver').height();
							me.siblings('.flyOver').css({top:(-.5*myH)+11});
							me.siblings('.flyOver').fadeIn(300);
						},200);
					},function(){
						clearTimeout(hto);	
						$(this).siblings(".flyOver").fadeOut(300);
					});
					//$("#sidenav_ul li a").unbind('click').bind('click',function(){
					$("#sidenav_ul li a").bind('click',function(e){
						e.preventDefault();
						var scrollSpeed = 200;
						if(quickScroll == true){
							window.quickScroll = false;
							scrollSpeed = 1;
						}
						var myId = $(this).attr('id');
						var num = myId.substr(myId.indexOf("link_")+5);
						changeFrame(num,scrollSpeed);
					});

					if(mobile==true){
						$(".slides , .solo").addClass('kill_parallax');
						$(".sidenav").hide();
					//	return false;
					}

					
	theWindow.bind('scroll',function(){
					
						//var mobile=false;
						//mobile = true;
						
						if(mobile==true){
						//	$(".slides , .solo").addClass('kill_parallax');
						//	$(".sidenav").hide();
							return false;
						}
							getClosestFrame();
						
							$(".slides , .solo").each(function(){
								if($(this).hasClass('kill_parallax')){
									//return false;
								} else {
								// un-comment the return false below to enable parallax
								//return false;
								var offset = $(this).parent().offset();
								var oTop = parseInt( offset.top );
								var oHalf = parseInt( $(this).parent().height() / 2 );
								var wTop = parseInt( theWindow.scrollTop() );
								var wH = parseInt ( theWindow.height() );
								var swTop = wTop - oHalf;
								var swBot = wTop + wH + oHalf;
								var swSize = swBot - swTop;
								var scrollPos = ( Math.round( -100 * ( (swTop - (oTop+oHalf) ) / swSize ) ) / 100 );
								
								var bgOffset = ((1*scrollPos*scaler) - (scaler))+"px";
								var bgOppset = ((-1*scrollPos*scaler) - (scaler) + oHalf - (scaler*.5))+"px";
									$(this).css('top',bgOffset);
									$(this).find('.yt').css({'padding-top':bgOppset});
									$(this).parent().css({background:"#000"});//d3e3e7"});
								}
							});
							
						
						
						
	});
	

					
 
                    
					
					/*
					atts = { id: "myytplayer" };
                    swfobject.embedSWF("http://www.youtube.com/e/JQAbh8z5jMY?enablejsapi=1&hd-1&playerapiid=ytplayer",
                       "ytapiplayer", "976", "840", "8", null, null, params, atts);
  					
					atts = { id: "myytplayer_2" };
                    swfobject.embedSWF("http://www.youtube.com/e/n9tRqx0MGt8?enablejsapi=1&hd=1&playerapiid=ytplayer",
                       "ytapiplayer_2", "976", "840", "8", null, null, params, atts);
  					*/
					
					window.onYouTubePlayerAPIReady = function(){
					$(".yt").each(function(){
						
							
							var player;
							var ht = 600;//+scaler//$(this).parent().height();
							var vid = $(this).attr('name');
							//eval ("window.myytplayer_"+vid);
							var playerIndex = $(".yt").index($(this));
							$('div',$(this)).attr("id","ytapiplayer_"+playerIndex);
							var vidDiv = "ytapiplayer_"+playerIndex;//"myytplayer_"+vid;
                    		
							if(typeof ytplayer == 'undefined'){
								var ytplayer;
							}
							if(typeof hamBone == 'undefined'){
								window.onPlayerReady = function(e){
									
									var url = e.target.getVideoUrl();
									//console.log(e.target);
									vid=getYtId(url);
									eval("window.yt_player_"+vid+" = e.target");//.pauseVideo();
									//window.$('.slideshow .next, .slideshow .prev').hide();
									//$('.slideshow .next, .slideshow .prev').show();
									//myYt = document.getElementById(playerid);
									//myYt.hide();
									//myYt.addEventListener("onPlayerStateChange","function(e){var url = myYt.getVideoUrl();ytStateChange(e,url)}");
									//ytStateChange('vdsa');
								}
								window.onStateChange = function(e){
									
								}
								window.hamBone = 'turkey';
							} else {
								
							}
							
							//alert(vid);
							//console.log(YT);
							//eval("window.myytplayer_"+vid+" = new YT.Player(vidDiv,{height:ht,width:'976',videoId:vid,wmode:'transparent',playerVars: {'origin':'collemcvoy.com','enablejsapi':1,'autoplay':0,'autohide':1,'rel':0},events: {'onReady' : onPlayerReady,'onStateChange' : function(e){var url = vid;ytStateChange(e,url)}}});");
							/**/
							var mobile = window.mobile;
							if(mobile==false){
								player = new YT.Player(vidDiv,{
									height:ht,
									width:'976',
									'z-index':'0',
									videoId:vid,
									wmode:"transparent",
									playerVars: {
										origin:'collemcvoy.com',
										enablejsapi:1,
										controls:1,
										autoplay:0,
										autohide:1,
										rel:0,
										wmode:"transparent"
									},
									events: {
										'onReady' : onPlayerReady,
										'onStateChange' : function(e){var url = vid;ytStateChange(e,url)}
									}
								});
							} else {
								player = new YT.Player(vidDiv,{
									height:ht,
									width:'976',
									'z-index':'0',
									videoId:vid,
									wmode:"transparent",
									playerVars: {
										origin:'collemcvoy.com',
										enablejsapi:1,
										controls:0,
										autoplay:0,
										autohide:1,
										rel:0,
										wmode:"transparent"
									},
									events: {
										'onReady' : onPlayerReady,
										'onStateChange' : function(e){var url = vid;ytStateChange(e,url)}
									}
								});
							}
							/**/
							
							
							/* FLASH OPTION */
							/*
						var params = [];
						var atts = [];
					
						params = { allowScriptAccess: "always", wmode: "transparent" };
                    
						var ht = 600;//+scaler//$(this).parent().height();
						var vid = $(this).attr('name');
						var playerIndex = $(".yt").index($(this));
						$('div',$(this)).attr("id","ytapiplayer_"+playerIndex);
						//alert('myytplayer_'+vid);
						atts = { id: "myytplayer_"+vid };
                    	swfobject.embedSWF("http://www.youtube.com/e/"+vid+"?enablejsapi=1&hd=1&modestbranding=1&playerapiid=myytplayer_"+vid+"&rel=0&autohide=1",
                       "ytapiplayer_"+playerIndex, "976", ht, "8", null, null, params, atts);
  						//alert('yo');
						if(typeof ytplayer == 'undefined'){
							var ytplayer;
						}
						if(typeof hamBone == 'undefined'){
							window.onYouTubePlayerReady = function(playerid){
								//console.log(playerid);
								myYt = document.getElementById(playerid);
								//myYt.hide();
								myYt.addEventListener("onStateChange","function(e){var url = myYt.getVideoUrl();ytStateChange(e,url)}");
								//ytStateChange('vdsa');
							}
							window.hamBone = 'turkey';
						} else {
							
						}
							*/
					
					});
					
					}
					
var head = document.getElementsByTagName('head')[0];

					var tag = document.createElement('script');
					tag.type='text/javascript';
					tag.src="http://www.youtube.com/player_api";
					var firstScriptTag = document.getElementsByTagName('script')[0];
					firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
					//head.appendChild(tag);
					
					/*
					cup = GQge_Yn-SLM
					dog = nGeKSiCQkPw
					http://www.youtube.com/watch?v=JQAbh8z5jMY
					
					http://www.youtube.com/watch?v=n9tRqx0MGt8
					
					http://www.youtube.com/watch?v=cgAYJMz2MYs
					
					*/
// tracking code from FactorTG
if ($("#tracking_pix").size() < 1) {
	$('<img />').addClass('invisible').appendTo('body').attr('id', 'tracking_pix');
}

$("#tracking_pix").attr("src", ipsosTrackingUrl);

/* Old Script-style suitesmart tracking */
//tc.async = true;
//tc.src= ( "http://as1.suitesmart.com/108043/G17342.js?GID=17342");
//var head = document.getElementsByTagName('head')[0];
//head.appendChild(tc);
/* End Old Script-style suitesmart tracking */

});
function hashFix() {
    var oldHash = document.location.hash;
    if (oldHash) {
        document.location.hash = '';
        document.location.hash = oldHash;
    }
}


$(window).load(function () {

    //is this Firefox?
    var ua = $.browser;
    if (ua.mozilla) {
        setTimeout(hashFix, 500);
    }
	
 	$(".slideshow .slides").each(function(){
		
		function fade_slide_caption(next, previous)
		{
			stopAllVids();
			
			drop_container = $(this).parent().siblings(".temp").children(".transFade");
			drop_container.fadeOut('1',function(){
				drop_container.parent().remove();
			});
			
			caption_container = $(this).parent().siblings(".project_caption")
			caption_container.fadeOut('1',function(){
				//caption_container.css({top:'10px',left:'10px'});
			});
		}
		
		function update_slide_caption(next, previous)
		{
			
		}	
		
		var next = $(".next",$(this).parent());
		var prev = $(".prev",$(this).parent());
		
		function onAfter(curr, nxt, opts) {
    		var index = opts.currSlide;
    		$(this).parent().siblings('.prev')[index == 0 ? 'hide' : 'show']();
    		$(this).parent().siblings('.next')[index == opts.slideCount - 1 ? 'hide' : 'show']();
    		if (index != 0) {
    		    //console.log(	'_gaq.push(["_trackEvent","scrollingstory","cellview",'+$(".page_anchor:eq("+window.currentSlideIndex+")").attr("name")+'.'+(index+1)+'])' ) ;
    		    _gaq.push(["_trackEvent", "scrollingstory", "cellview", $(".page_anchor:eq(" + window.currentSlideIndex + ")").attr("name") + '.' + (index + 1)]);
    		}
			caption_container = $(this).parent().siblings(".project_caption")
			drop_container = $(".abs_drop",$(this));
			if($(this).hasClass("yt")==false){
				caption = $('.slide_caption', $(this))
			} else {
				caption = null;
				return false;
			}
			if(caption.html()!=null){
				caption_container.css({top:null,left:null,bottom:null,right:null});
				var nTop = caption.css('top') 
				if(!nTop || nTop=='auto'){
					//nTop = '10px';
				} else {
					caption_container.css({top:nTop});
				}
				var nLeft = caption.css('left');// || '10px';
				if(!nLeft || nLeft=='auto'){
					//nLeft = '10px';
				} else {
					caption_container.css({left:nLeft});
				}
				var nBot = caption.css('bottom') 
				if(!nBot || nBot=='auto'){
					nBot = 'null';
				} else {
					caption_container.css({bottom:nBot});
				}
				var nRight = caption.css('right') 
				if(!nRight || nRight=='auto'){
					nRight = 'null';
				} else {
					caption_container.css({right:nRight});
				}
				var nW = caption.css('width');// || '10px';
				if(!nW || nW=='auto'){
					nW = 'auto';
				} else {
					caption_container.css({width:nW});
				}
				var nH = caption.css('height');// || '10px';
				if(!nH || nH=='auto'){
					nH = 'auto';
				} else {
					caption_container.css({height:nH});
				}
				var nPad = caption.css('padding-left');
				if(!nPad){//!='auto'){
					nPad = "25px";//35px 15px 15px 25px";
				} else {
					caption_container.css({'padding-left':nPad});
				}
				if(caption.hasClass("no_background")){
					caption_container.css('background','none');
				}
				caption_container.html(caption.html())
				$("<div />").addClass("temp").html(drop_container.html()).appendTo(caption_container.parent());
				var myH = caption_container.height();
				caption_container.find('.submarine').css({top:myH+60});
				caption_container.fadeIn('1')
				
				caption_container.find('.play_vid').each(function(){
					$(this).attr('id',$(this).attr('name'));
				});
				$('.temp').find('.play_commercial').each(function(){
						$(this).attr('id',$(this).attr('name'));
				});
				//caption_container.find(".trigger_1").unbind('click').bind('click',function(){
				caption_container.find(".trigger_1").bind('click',function(e){
					e.preventDefault();
					$(document).scrollTo($("#anchor_1"),800);
					//return false;
				});
				
				//caption_container.find(".trigger_next").unbind('click').bind('click',function(){
				caption_container.find(".trigger_next").bind('click',function(e){
					e.preventDefault();
					$(this).parent().siblings('.next').trigger('click');
					
				});
				//caption_container.find(".play_vid").unbind('click').bind('click',function(){
				caption_container.find(".play_vid").bind('click',function(e){
					
					e.preventDefault();
					
					$(this).parent().siblings('.next').trigger('click');
					var vid = $(this).parent().siblings().find(".yt").attr('name');
					//console.log(eval("window.yt_player_"+vid));
					if(mobile==false){
					window.playVid = setInterval(function(){
							var player;// = document.getElementById("myytplayer_" + vid);//.hide();//playVideo();
							player = eval("window.yt_player_"+vid);
						if(typeof player != 'undefined'){
							if(typeof player.playVideo != 'undefined'){
								player.playVideo();
								clearInterval(window.playVid);
							}
						}
					},100);
					}
				});
				//$(".play_commercial").unbind('click').bind('click',function(){
				$(".play_commercial").bind('click',function(e){
					
					e.preventDefault();
					
					$(this).parent().parent().siblings('.next').trigger('click');
					var vid = $(this).parent().parent().siblings().find(".yt").attr('name');
					if(mobile==false){
					window.playVid = setInterval(function(){
							var player;// = document.getElementById("myytplayer_" + vid);//.hide();//playVideo();
							player = eval("window.yt_player_"+vid);
						if(typeof player != 'undefined'){
							if(typeof player.playVideo != 'undefined'){
								player.playVideo();
								clearInterval(window.playVid);
							}
						}
					},100);
					}
				});
			} else {
				// no caption
			}
		}
		var slide_nav = ".slide_nav:eq("+ $(".slide_nav").index($(this).siblings(".slide_nav")) +")";
			$(this).cycle({
			fit:true,
			fx: 'scrollHorz', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
			pager:slide_nav,
			next:next,
			prev:prev,
			after:onAfter,
			before:fade_slide_caption,
			timeout:0
			
		});
		
	});
	
	var v1 = $_GET('p');
	var v2 = $_GET('v');
	if(typeof v1 != 'undefined')
	{
		window.quickScroll = true;
		$("."+v1).trigger('click');
	}
	if(typeof v2 != 'undefined'){
		window.quickScroll = true;
		$("."+v2).trigger('click');
		$("#"+v2+"_playvideo").trigger('click');
		
	}
	


	
});
