/*================================================== JAVASCRIPT */
/*
Javascript Document for SAS
Build: Oliver Long on behalf of SAS - 06/07/2009
*/
//Apply the Javascript-enabled styles (hidding expandable boxes for instance)
$('html').addClass('js');


//////// Global variables
// Blog starting items
var ajaxBlogPostUrl = "/home/BlogListRaw.aspx";
var qs = '';
var leftId = 11;
var rightId = 12;
var postCounter = 0;
var yearFilter = '';
var postFilterBy = '';
var tagLinkToggle = '0';
// Jump link page follower
var anchor_top_default = 270;
// Border fading
var overBgColor = "#AC9E89";
var offBgColor = "#EEEBD9";
//Flash nav handler
var flashHideNavRequestDuration = 50;
var flashShowNavRequestDuration = 450;


//////// What we do image carousel

function slideSwitch(containerId) {
    var $active = $('#' + containerId + ' a img.active');

    if ($active.length == 0) $active = $('#' + containerId + ' a img:last');

    var $next = $active.next().length ? $active.next()
        : $('#' + containerId + ' a img:first');

    $active.addClass('last-active');

    $next.css({ opacity: 0.0 })
        .addClass('active')
        .animate({ opacity: 1.0 }, 1000, function() {
            $active.removeClass('active last-active');
        });
}


///////////////// Begin document ready functions

$(document).ready(function() {

    $(document).pngFix();

    $(function() {
        setInterval("slideSwitch('Brand')", 5000);
        setInterval("slideSwitch('Employee')", 5000);
        setInterval("slideSwitch('Corporate')", 5000);
        setInterval("slideSwitch('Digital')", 5000);
        setInterval("slideSwitch('sector_hero')", 5000);
    });

    //////// Blog system
    var currentBlogFilter;
    // Load initial posts
//    
//    if (!jQuery.browser.safari)
//    {
        loadBlogPosts(qs);
//    };   
    

    // Find current year
    $('select#archive').change(function() {
        var selected = $("#archive option:selected");
        if (selected.val() != '') {
            if (selected.val() == 'clear') {
                yearFilter = '';
                qs = postFilterBy;
            } else {
                yearFilter = selected.text();
                qs = postFilterBy + '&year=' + yearFilter;
            }

            $('#blog_list_home').fadeOut('fast', function() {
                $(this).html("<div id='more_content'></div><div class='clearer'></div><p id='older_posts'></p>");
                loadBlogPosts(qs);
            });
        }
    });

    // Switch categories for blog
    if ($('body').attr('id') == "home") {
        $('#categories li a').click(function() {
            var rawLink = $(this).attr("href");

            /* Highlight correct item */
            $('a.highlight').removeClass('highlight');
            $(this).addClass('highlight');

            /* Find filter and replace whitespace */
            postFilterBy = (getURLParamDirect('tag', rawLink)).replace(' ', '%20');

            if (yearFilter.length > 0) {
                qs = postFilterBy + '&year=' + yearFilter;
            }
            else { qs = postFilterBy };

            if (currentBlogFilter != qs) {
                currentBlogFilter = qs;
                $('#blog_list_home').fadeOut('fast');
                window.setTimeout(function() {
                    $('#blog_list_home').html("<div id='more_content'></div>");
                    loadBlogPosts(qs);
                }, 200);
            }
            return false;
        })
    };

    // Load subsequent posts on button click
    $('#btn_loadmore').live('click', function() {
        $('#older_posts').html('');
        var loadUrl = ajaxBlogPostUrl + "?tag=" + qs +
            " #" + (leftId += 2) + ",#" + (rightId += 2) + 
            ",#" + (leftId += 2) + ",#" + (rightId += 2) + 
            ",#" + (leftId += 2) + ",#" + (rightId += 2) + 
            ",#" + (leftId += 2) + ",#" + (rightId += 2) +
            ",#" + (leftId += 2) + ",#" + (rightId += 2) + 
            ",#" + (leftId += 2) + ",#" + (rightId += 2);
        $("#more_content").load(loadUrl, {}, function() {            
            checkPostCount(rightId);
        }).fadeIn('medium', function() {
            if (jQuery.browser.msie)
                this.style.removeAttribute('filter');
        }).removeAttr('id').show().after("<div class='clearer'></div><div id='more_content'></div>");

    });

    // Homepage blog post loading system
    function loadBlogPosts(qs) {
        if ($('body').attr('id') == "home") {
            $('#blog_list').remove();

            // Check if page is opened from a blog post tag
            var tagFilter = getURLParam('tag');
            if (tagFilter.length > 0 && tagLinkToggle != 1) {
                /* Toggle loop off when re-filtering page, 
                stops the querystring overriding new filters */
                tagLinkToggle = 1;
                qs = tagFilter;
            }

            // Load initial set of posts
            var loadUrlPrimary = ajaxBlogPostUrl + "?tag=" + qs + " #counter,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12";

            $("#more_content").load(loadUrlPrimary, function() {
                postCounter = $("#counter").html();             
                checkPostCount(12);
            });
            
            $('#blog_list_home').fadeIn('fast', function() {
                    if (jQuery.browser.msie)
                        this.style.removeAttribute('filter');
            })
            
            $("#more_content").removeAttr('id').after("<div class='clearer'></div><div id='more_content'></div><p id='older_posts'></p>").show();            

//            window.setTimeout(function() {
//                checkPostCount(12);
//            }, 2000);
        }
    };

    // Check whether to show 'Load more' button
    function checkPostCount(currentCount) {
        //console.log("checkPostCount: " + postCounter);
        if (postCounter > currentCount) {
            $('#older_posts').html("<a id='btn_loadmore'><span>Older posts</span></a>",
                function() {
                    $('#btn_loadmore').fadeIn('medium');                    
                }
            )
        }
    };

    // Insight photo insertion
    if ($('body').attr('id') == "blog_post") {
        if ($('#insight_profile').length) {
            $('p:first').prepend("<div id='insight_profile'>" + $('#insight_profile').html() + "</div>");
            $('#insight_profile').show();
        };
    };
    
     // Adjust RH column for Our Work detail pages to align with first image
    if ($('#col_right').attr('class') == "ourwork_detail") {
       window.setTimeout(function() {
       var imgPosition = $('.large_images').position();
       var paddingAdjustment = imgPosition.top - 45;
       //console.log(imgPosition.top);
       $('#rh_content').css('padding-top', paddingAdjustment + 'px').show();
       
       }, 250);     
    };

    //////// Our work loading system
    // Load initial grid
//    var currentWorkFilter;

//    if ($('body').attr('id') == "ourwork") {
//        loadWorkProjects(qs);
//    };

//    // Switch categories for our work
//    $('#ourwork #categories li a').click(function() {
//        var rawLink = $(this).attr("href");

//        /* Highlight correct item */
//        $('a.highlight').removeClass('highlight');
//        $(this).addClass('highlight');

//        /* Find filter and replace whitespace */
//        var qs = getURLParamDirect('tag', rawLink);
//        qs = (qs).replace(' ', '%20');

//        /* Check if clicked link is current page */
//        if (currentWorkFilter != qs) {
//            currentWorkFilter = qs;
//            $('#grid_wrapper_ourwork').fadeOut('medium');
//            window.setTimeout(function() {
//                $('#grid_wrapper_ourwork').html('');
//                loadWorkProjects(qs);
//            }, 400);
//        }
//        return false;
//    });

    // Homepage blog post loading system
    function loadWorkProjects(qs) {
        $('#grid_toggle').remove();
        // Load initial set of posts
        var loadUrl = "/our-work/OurWorkRaw.aspx?tag=" + qs;
        $("#grid_wrapper_ourwork").load(loadUrl).fadeIn('medium', function() {
            if (jQuery.browser.msie)
                this.style.removeAttribute('filter');
        });
    };

    //////// Pull search input box above illustration
    $('#form_search input').focus(function() {
        $(this).addClass('active');
    });

    $('#form_search input').blur(function() {
        $(this).removeClass('active');
    });


    //////// Blog comment toggle
    var commentListHeight = $("ol.commentlist").outerHeight();
    var commentFormHeight = $("#comments_wrapper form").outerHeight();

    $("#comments_toggle").click(function() {
        if ($("#comments_toggle").text() == 'Show comments') {
            //show comments
            $("#comments_toggle").text('Hide comments');
            $("ol.commentlist").stop().animate({ height: commentListHeight });
            return false;
        }
        else {
            //show comments
            $("#comments_toggle").text('Show comments');
            $("ol.commentlist").stop().animate({ height: 0 },
                function() {
                    $("ol.commentlist").hide();
                });
        }
    });


    //////// Keyline border fading

    $('.keyline').live("mouseover", function() {
        SwitchBorder($(this), overBgColor, false);
    });

    $('.keyline').live("mouseout", function() {
        SwitchBorder($(this), offBgColor, false);
    });
    
    

    //////// Anchor smooth scroll
    if ($('body').attr('id') != "home") {
        $('#page').localScroll();
    };

    //////// Anchor navigation position
    PositionAnchorNav();

    $(window).resize(function() {
        PositionAnchorNav();
    });

    $(window).scroll(function() {
        PositionAnchorNav();
    });


    //////// Client module content loading
    $("#grid_wrapper_clients div").click(function() {
        $("#grid_wrapper_clients div").each(function(n) {
            //$(this).find('a img').removeClass('active');
            SwitchBorder($(this), offBgColor, true);
        });
        SwitchBorder($(this), overBgColor);

        //$("#tooltip").fadeOut('medium');
        $("#grid_wrapper_clients div").removeClass('active');
        $(this).addClass('active');
        $("#rh_content").load($(this).find('a').attr('rel'));
        return false;
    });


    //////// Utilities
    // Fix IE6 background image caching problem
    if (jQuery.browser.msie) {
        try {
            document.execCommand("BackgroundImageCache", false, true);
        } catch (err) { }
    }

    //Landing modules      
    $('div.module_landing div.module_copy_holder').click(function() {
        if ($(this).parent().find('a').length > 0) {
            document.location = $(this).parent().find('a').attr('href');
        }
    });

    // Forms               
    InitInputDefaultValue("#form_search .form_search_container .input_text", ".button_search", "Search");
    InitInputDefaultValue("#form_search_again .input_text", ".button_search_again", "Search again");

});

///////////////// Functions
//////// Google map
function googleMap() {
    if (GBrowserIsCompatible()) {

        var body = document.getElementById('sas_map');
        var map = new GMap2(body);

        // geolocation co-ordinates of precise office
        var precise_loc = new GLatLng(51.51307, -0.18868);
        var map_centre = new GLatLng(51.51258, -0.18387)

        map.setCenter(map_centre, 15);


        // custom marker
        var customIcon = new GIcon(G_DEFAULT_ICON);
        customIcon.image = "/images/map_marker.png";
        // Set up our GMarkerOptions object
        markerOptions = { icon: customIcon };
        var marker = new GMarker(precise_loc, markerOptions);

        //var marker = new GMarker(precise_loc);
        map.addOverlay(marker);


        // create balloon information window
        //map.openInfoWindow(precise_loc, "<div id='map_bubble'> <img src=/images/btn_logo.gif title=SAS logo class=logo_map /><p>6 Salem Road, <br />London, <br />W2 4BU, <br />United Kingdom</p><p>+44 (0)20 7243 3232</p><p class='address'><a class=link_launch href=http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&geocode=&q=6+Salem+Road,+London,+W2+4BU&sll=51.513358,-0.190057&sspn=0.009174,0.027874&ie=UTF8&ll=51.514592,-0.18887&spn=0.009174,0.027874&z=16&iwloc=r1 target=blank>View larger map and directions &rsaquo;</a></p></div>");


        // add some simple controls
        map.addControl(new GSmallMapControl());
        //map.addControl(new GMapTypeControl());
    }
};

//////// Jump link page follower
function PositionAnchorNav() {
    var anchor_width = $('#anchor_nav_container').width();
    var anchor_top_distance = anchor_top_default - window.pageYOffset;

    if (jQuery.browser.msie) {
        anchor_top_distance = anchor_top_default - document.documentElement.scrollTop;
    }

    var anchor_top = anchor_top_default;

    if (anchor_top_distance > 10) {
        anchor_top = anchor_top_distance;
    } else {
        anchor_top = 10;
    }
    $('#anchor_nav_container').css('top', anchor_top);
}

//////// Homepage header hiding
function flashHideNavRequest() {
    setTimeout("animateNav('-70px', '150')", flashHideNavRequestDuration);
}

function flashShowNavRequest() {
    setTimeout("animateNav('0px', '250')", flashShowNavRequestDuration);
}

function animateNav(position, speed) {
    $("#header").stop().animate({ marginTop: position }, speed);
}

////////  Border fading functions
function SwitchBorder(target, finalColor, ignoreActive) {
    if ((!ignoreActive && target.attr('class') != 'keyline active') || ignoreActive) {
        target.stop().animate({
                backgroundColor: finalColor
            }, "fast", function(){
                //console.log(finalColor);
                $(this).css('backgroundColor', finalColor);
            });
    }
}

///////////////// Forms
/* initialize the inputs which requires a 'default value' system */
function InitInputDefaultValue(input_class, submit_class, default_value) {
    var input_text = $(input_class);
    
    //Init the input field
    if (input_text.val() == "") {
        input_text.val(default_value);
    }
    
    //Add input field events
    input_text.click(function() {
        if ($(this).val() == default_value)
            $(this).val("");
    }).blur(function() {
        if ($(this).val() == "")
            $(this).val(default_value);
    });
    
    //Add form submit event
    $(submit_class).click(function() {
        if (input_text.val() == default_value) {
            input_text.val("");
        }
    });
}

function selectRedirect(dropdown) {
    if (dropdown.val() != '') {
        document.location.href = dropdown.val();
    }
    return false;
}


function includeScript(scriptUrl) {
    // Change requests to be sent synchronous
    $.ajaxSetup({ async: false });

    // Loads and executes a local JavaScript file
    $.getScript(scriptUrl);

    // Restore requests to be sent asynchronous
    $.ajaxSetup({ async: true });
}


//////// Request query string
function getURLParam(strParamName) {
    var strReturn = "";
    var strHref = window.location.href;

    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return strReturn;
}

function getURLParamDirect(strParamName, directLink) {
    var strReturn = "";
    var strHref = directLink;

    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return strReturn;
}

