/**
 * JavaScript behaviors for content elements.
 *
 * @copyright  Copyright (c) 2005-2010 Found Line, Inc. (http://www.foundline.com/)
 * @version    $Id: content.js 1379 2010-07-19 00:13:28Z 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() {

    $("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();
        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 {
            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;
    });

});

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);
        	}
        });
    }
}