/**
 * JavaScript behaviors for content elements.
 *
 * @copyright  Copyright (c) 2005-2010 Found Line, Inc. (http://www.foundline.com/)
 * @version    $Id: content.js 1601 2011-12-13 19:08:48Z bradley.holt $
 */

var emailText = "enter email address";

var youTubePlayer;
var youTubePlayerEventTracker;
var eventLabel;

function onYouTubePlayerReady(playerid) {
    youTubePlayer = $("#youtubeplayer")[0];
    youTubePlayer.addEventListener(
        "onStateChange",
        "onYouTubePlayerStateChange"
    );
    if (youTubePlayerEventTracker) {
        youTubePlayerEventTracker._trackEvent("player ready", eventLabel);
    }
}

function onYouTubePlayerStateChange(newState) {
    if (youTubePlayerEventTracker) {
        switch (newState) {
            case -1:
                youTubePlayerEventTracker._trackEvent("unstarted", eventLabel); 
                break;
            case 0:
                youTubePlayerEventTracker._trackEvent(
                    "ended",
                    eventLabel,
                    parseInt(youTubePlayer.getCurrentTime())
                );
                break;
            case 1:
                youTubePlayerEventTracker._trackEvent("playing", eventLabel); 
                break;
            case 2:
                youTubePlayerEventTracker._trackEvent("paused", eventLabel); 
                break;
            case 3:
                youTubePlayerEventTracker._trackEvent("buffering", eventLabel); 
                break;
            case 5:
                youTubePlayerEventTracker._trackEvent("video cued", eventLabel); 
                break;
        }
    }
}

function onPlayerError(errorCode) {
    if (youTubePlayerEventTracker) {
        alert('error: ' + errorCode + ' ' + eventLabel);
        youTubePlayerEventTracker._trackEvent("error: " + errorCode, eventLabel);
    }
} 

$("document").ready(function() {

    $.timer(5000, function (timer) {
        $(".slideshow").each(function() {
            var slideshowId = $(this).attr("id");
            if ($(this).hasClass("loop")) {
                loopSlideshow(slideshowId);
            }
        });
	});

    $("a[rel='history']").click(function(){
        $(this).each(function (i) {
            hash = this.hash.substr(1);
            if (hash.length > 0) {
                $.history.load(this.hash.substr(1));
            }
        });
        return false;
    });

    if (undefined !== window.pageTracker) {
        youTubePlayerEventTracker = pageTracker._createEventTracker("YouTube Video Player");
    }

    if($("input.email-address").length > 0 && $("input.email-address").val().length == 0) {
        $("input.email-address").val(emailText);
    }
    
    $("input.email-address").focus(function() {
        if($("input.email-address").val() == emailText) {
            $("input.email-address").val("");
        }        
    }).blur(function() {
        if($("input.email-address").val().length == 0) {
            $("input.email-address").val(emailText);
        }    
    });

    $(".video").each(function(i) {
        eventLabel = $(this).find("h4").text();
        if ("" == eventLabel) {
            eventLabel = $(this).parent(".tabbed-content").attr("id");
        }
        var quicktimeVideoUrl = $(this).find("a[rel=quicktime]").attr("href");
        var quicktimeVideoThumbUrl = $(this).find("a[rel=quicktime] img").attr("src");
        var youtubeVideoUrl = $(this).find("a[rel=youtube]").attr("href");
        var youtubeVideoThumbUrl = $(this).find("a[rel=youtube] img").attr("src");
        $(this).empty();
        var playerTargetElement = $(this).append('<span></span>')[0];
        PokkariPlayerOptions.useShowPlayer = true;
        PokkariPlayerOptions.useDocumentWrite = false;
        PokkariPlayerOptions.maxWidth = 560;
        PokkariPlayerOptions.maxHeight = 315;
        PokkariPlayerOptions.forceAspectWidth = true;
        var mimeType;
        var flashPlayerVersion = deconcept.SWFObjectUtil.getPlayerVersion();
        if (flashPlayerVersion.major > 0) {
            var so = new SWFObject(
                    youtubeVideoUrl,
                "youtubeplayer",
                "560",
                "340",
                "1"
            );
            so.addParam("allowScriptAccess", "always");
            so.addParam("id", "youtubeplayer");
            so.addParam("wmode", "transparent");
            so.write(playerTargetElement);
        } else if (undefined != quicktimeVideoUrl) {
            PokkariPlayerOptions.showPlayerOptions = {
                thumb: quicktimeVideoThumbUrl,
                allowm4v: true,
                smallPlayerMode: true
            };
            mimeType = 'video/mp4';
            var player = PokkariPlayer.GetInstanceByMimeType(mimeType);
            if (player instanceof PokkariQuicktimePlayer) {
                // Quicktime player will hold up the whole document if a video not marked for streaming is loaded.
                player.setPrimaryMediaUrl(quicktimeVideoUrl);
                player.setThumbnail(quicktimeVideoThumbUrl);
                player.setAutoPlay(false);
            }
            player.setPlayerTarget(playerTargetElement);
            // By setting the size ridiculously large, we'll trick PokkariPlayer in resizing with aspect.
            player.setWidth(480000);
            player.setHeight(270000);
            player.render();
        }
    });
    
    $("select#delivery_method option[value='']").hide();
    
    $("select#country").change(function() {
        var country = "";
        var delivery_method = "";
        country = $(this).children("option:selected").val();
        if (country == 'US') {
            $("select#delivery_method optgroup#domestic").removeAttr("disabled");
            $("select#delivery_method optgroup#international").attr("disabled","disabled");
            $("select#delivery_method optgroup#international option").removeAttr("selected");
        } else if (country != 'US') {
            $("select#delivery_method optgroup#international").removeAttr("disabled");
            $("select#delivery_method optgroup#domestic").attr("disabled","disabled");
            $("select#delivery_method optgroup#domestic option").removeAttr("selected");
        }
        if (country == 'US' || country == 'CA') {
            $("input#region").addClass("state-province");
            $("input#region").prev("label[for=region]").addClass("required");
        } else {
            $("input#region").removeClass("state-province");
            $("input#region").prev("label[for=region]").removeClass("required");
        }
        delivery_method = $("select#delivery_method optgroup option:selected").val();
        if (country == 'US' && !delivery_method) {
            $("select#delivery_method option[value='U11']").attr("selected","selected");
        } else if (country != 'US' && !delivery_method) {
            $("select#delivery_method option[value='U54']").attr("selected","selected");
        }
        setFreight();
    }).trigger("change");
    
    $("select#delivery_method").change(function() {
        setFreight();
    }).trigger("change");
    
    $("a#shipping-to-billing-copy").click(function () {
        $("ul#shipping-address-form li.fieldset.shipping-address-to-billing-address-copy :input").each(function() {
            var name = $(this).attr("name");
            name = name.replace("shipping_address", "billing_address");
            var value = $(this).val();
             $("dl#address-form li.fieldset :input#" + name).val(value);
        });
        return false;
    });
    
    $(".tabbed-content:first").addClass("current");
    $("#tabbed-content-nav li:first a").addClass("current");
    $("#tabbed-content-nav a").click(function () {
        return false;
    });

    $("#tabbed-content-nav a").removeAttr("href");
    $("#tabbed-content-nav a:not(.current)").each(function() {
        $(this).attr("href", "#" + $(this).attr("class"))
    });

    $.history.init(function (hash) {
        if (hash.length > 0) {
            switch (hash) {
            case 'overview':
            case 'how-does-it-work':
            case 'software':
            case 'technical-specifications':
            case 'getting-started':
                $(".tabbed-content").removeClass("current");
                $(".tabbed-content#" + hash).addClass("current");
                $("#tabbed-content-nav a").removeClass("current").each(function() {
                    $(this).attr("href", "#" + $(this).attr("class"))
                });
                $("#tabbed-content-nav a." + hash).addClass("current").removeAttr("href");
                $(".video embed").each(function() {
                    var embed = $(this).get(0);
                    if (embed.pauseVideo) {
                        embed.pauseVideo();
                    }
                });
                break;
            }
        }
        return false;
    });

    setupSlideshow();
    $(".slideshow a.select-frame").click(function() {
        var slideshowAndFrame = $(this).attr("href").split("#");
        slideshowAndFrame = slideshowAndFrame[1].split("/");
        var slideshowId = slideshowAndFrame[0];
        var newFrame = slideshowAndFrame[1];
        $(this).closest(".slideshow").removeClass("loop");
        transitionToFrameInSlideshow(slideshowId, newFrame);
        return false;
    });

    $("form.delete").submit(function() {
        var entryTitle = $(this).closest(".hentry").find(".entry-title").text();
        if (!confirm("Are you sure you want to delete " + entryTitle + "?")) {
            return false;
        }
    });

});
function setFreight() {
    var delivery_method = $("select#delivery_method").find("option:selected").val();
    var selectedCountryCode = $("select#country").find("option:selected").val();
    if ($("body").hasClass("dealer")) {
        $("#delivery-method-freight.lookup tbody tr").each(function () {
        	if ($(this).children(".country-code").text() == selectedCountryCode) {
	            var shipping_code = $(this).children(".shipping-code").text();
	            if (delivery_method == shipping_code) {
	                var freight = $(this).children(".freight").html();
	                $("input#freight").val(freight);
	            }
        	}
        });
    } else if ($("body").hasClass("checkout")) {
        $("#delivery-method-freight.lookup tbody tr").each(function () {
        	if ($(this).children(".country-code").text() == selectedCountryCode) {
	            var shipping_code = $(this).children(".shipping-code").text();
	            var service_name = $(this).children(".service-name").text();
	            var freight = $(this).children(".freight").text();
	            if ("$0.00" == freight) {
	            	freight = "free";
	            }
	            var serviceNameAndFreight = service_name + " (" + freight + ")";
	            $("select#delivery_method").find("option[value=" + shipping_code + "]").text(serviceNameAndFreight);
        	}
        });
    }
}
function setupSlideshow() {
    $(".slideshow .frame").hide();
    $(".slideshow .frame.current").show();
    $(".slideshow").each(function() {
        if ($(this).find(".frame").length > 1) {
            $(this).addClass("loop");
            var slideshowId = $(this).attr("id");
            var controlsHtml = '<div class="controls">';
            var x = 0;
            $(this).find(".frame").each(function() {
                if ($(this).hasClass("current")) {
                    controlsHtml += '<a href="#' + slideshowId + '/' + x + '" class="select-frame current">' + (x + 1) + '</a>';
                } else {
                    controlsHtml += '<a href="#' + slideshowId + '/' + x + '" class="select-frame">' + (x + 1) + '</a>';
                }
                x++;
            });
            controlsHtml += '</div>';
            $(this).append(controlsHtml);
        }
    });
}
function transitionToFrameInSlideshow(slideshowId, newFrame) {
    if (!($("#" + slideshowId).find(".frame:eq(" + newFrame + ")").hasClass("current"))) {
        $(".slideshow#" + slideshowId).find(".frame").fadeOut(500).removeClass("current").closest(".slideshow").find(".frame:eq(" + newFrame + ")").fadeIn(1000).addClass("current");
        $(".slideshow#" + slideshowId).find("a.select-frame").removeClass("current").closest(".slideshow").find("a.select-frame:eq(" + newFrame + ")").addClass("current");
    }
}
function loopSlideshow(slideshowId) {
    var currentFrame = 0;
    var x = 0;
    $(".slideshow#" + slideshowId).find(".frame").each(function() {
        if ($(this).hasClass("current")) {
            currentFrame = x;
        }
        x++;
    });
    var newFrame = currentFrame + 1;
    var totalFrames = $(".slideshow#" + slideshowId).find(".frame").length;
    if (newFrame >= totalFrames) {
        newFrame = 0;
    }
    transitionToFrameInSlideshow(slideshowId, newFrame);
}
