/**
 * $Id: rjj.js 2008-12-02 $
 *
 * @author [Monika Piotrowicz]
 * @copyright Copyright (c) 2008, Trapeze, All rights reserved.
 *
 * Requirements:
 *      jQuery 1.2.6 (http://www.jquery.com),
        jquery.galleria
        jquery.swapimage
        sifr.js
        swfobject.js
        jcarousel
 */

if (typeof trapeze == "undefined") var trapeze = new Object();
trapeze.rjj = {	
	//Preload Function
    preload_images : function() {
        var a = (typeof arguments[0] == 'object')? arguments[0] : arguments;
        for(var i = a.length -1; i > 0; i--) {
            $("<img />").attr("src", a[i]);
        }
    },
    
    rssPopUp : function() {
        $("#rss-dialog").hide();
        $("#rss-dialog-open").click(function(event){
            event.preventDefault();
            $("#rss-dialog").show();
        });
    
        $("#rss-dialog-close").click(function(event){
            event.preventDefault();
            $("#rss-dialog").hide();
        });
    },
    init_html : function() {
    	$("html").addClass("has-js");
    },
    
    pop_up : function() {
    /*
    ratings are contained in a collapsable div called "dialog" that's opened when the dialog-open link is clicked
    there are multiple forms on each page, active forms are given the id ActiveForm and are then manipulated via this 
    script
    each time a dialog is opened, the ActiveForm id is reset
    */
        $(".dialog").hide();
        $(".ratings > a").click(function(event){
        event.preventDefault();
        if ( $("#ActiveForm").length >0 ) {
            $("#ActiveForm").parents(".dialog").hide();
            $("#ActiveForm").removeAttr("id");
        }
        var myRating = $(this).parents(".ratings");
        myForm = myRating.find("form");
        myForm.attr("id", "ActiveForm");
        myRating.find(".dialog").show();
        $("#ActiveForm").css("display","block");          
            
            $(function(){
                var selected = $("#ActiveForm select").val();
                var j = 0;
                $(this).find("#ActiveForm select option").each(function(i, elem){
                    if ($(elem).val()){
	                           $("<li><a>" + $(elem).val() + "</a></li>")
    
                            .mouseover(function(){
                    	       var j = 0;
                    	       $('#ActiveForm li a').removeClass('active');
                    	       currentRating = $(elem).val();
                    	       $('#ActiveForm li a').each(function(){
                    	           if (j++ < currentRating) $(this).addClass('active');
	                           });
                            })   

                            .click(function(e){
                                $("<input type=\"hidden\" value=\"" + currentRating + "\" id=\"id_value\" name=\"value\" />")
                                .appendTo("#ActiveForm").end();
                                $("#ActiveForm").trigger('submit');
                            })
                        .appendTo("#ActiveForm").end();
	                   }
	               });
                $("#ActiveForm select").add("#ActiveForm :submit").remove().end();
                });
        });
        
        $(".close-dialog").click(function(event){
            event.preventDefault();
            $("#ActiveForm").removeAttr("id");
            $(".dialog").hide();
            
        });
    },

    //Flash Functions
    init_shownav : function() {
        if ($("#MainNav").size() > 0) {
            $("#RegularContent").hide();
			var so = new SWFObject(this.media_path + "flash/MainNav.swf", "MainNavObject", "1000", "180", "8", "#FFFFF",{selClass:"1"});
			so.addParam("allowScriptAccess", "sameDomain");
			so.addParam("scale", "noscale");
			so.addParam("wmode", "transparent");
			so.addVariable("xmlPath", "/main-nav/");
			so.write("MainNavBox");
		}
		
		if ($("#MainNavObject").length > 0) {
            $("#MainNavBox").addClass("main-nav-embed");
        }
	},

    init_showband : function() {
        if ($("#MeetBand").size() > 0) {
            var so = new SWFObject(this.media_path + "flash/meetTheBand.swf", "BandObject", "910", "400", "8", "#FFFFF");
                so.addParam("scale", "noScale");
                so.addParam("allowScriptAccess", "sameDomain");
                so.addParam("quality", "high");
                so.addParam("salign", "t");
                so.addParam("wmode", "transparent");
                so.addVariable("xmlPath", "/meet-band/");
                so.addVariable("locale", "en");
                so.write("flashcontent");
        }
    },
	
    init_showhome : function() {
        if ($("#HomeContent").size() > 0) {          	
        var so = new SWFObject(this.media_path + "flash/HomepageAnimation/homepage.swf", "flash", "999", "365", "9", "#FFFFFF");
        
        		// flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "medium");
        		so.addParam("salign", "t");
                so.addParam("wmode", "transparent");
                            
        		// flashvar substitute
        		so.addVariable("basePath", this.media_path + "flash/HomepageAnimation/");
                so.addVariable("xmlPath", "/home-xml/");
                
        		so.addVariable("locale", "en");

        
        		so.write("flashcontent");
        }
    },

    init_showgames : function() {
        if ($("#GamesMenu").size() > 0) {
            var so = new SWFObject(this.media_path + "flash/GamesLandingPage.swf", "GamesObject", "970", "365", "8", "#FFFFF");
                so.addParam("scale", "noScale");
                so.addParam("allowScriptAccess", "sameDomain");
                so.addParam("quality", "high");
                so.addParam("salign", "t");
                so.addParam("wmode", "transparent");
                so.addVariable("xmlPath", "/games-menu/");
                so.addVariable("locale", "en");
                so.write("flashcontent");
        }
    },	
	   		
    init_Sifr :function(){
        $("#PageTitleWrap").css("visibility", "hidden"); 
        titleWidthIE = $(".content-subheading").width();
        $("#PageTitleRight").css("display", "none"); 
        ceilingIE = Math.ceil(titleWidthIE/14);
        ceilingIE = (ceilingIE * 14-7);
        $(window).load(function () {
                var titleWidth = $("#PageTitleSifr").width();
                var ceiling = Math.ceil(titleWidth/14);
                ceiling = (ceiling * 14-7);
                
                $("#PageTitleSifr").css("width",ceiling);
                $("h1.sIFR-replaced").css("width",ceiling);
                $("#PageTitleRight").css("display", "inline"); 
                $("#PageTitleWrap").css("visibility", "visible"); 
            });
  
        if(typeof sIFR == "function"){
            sIFR.replaceElement(named({sSelector:"h1.marquis", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#4a3930",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                                       
                                        sFlashVars:"textalign=left"}));
    
            sIFR.replaceElement(named({sSelector:"h2.instrument-label", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#4a3930",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                                       
                                        sFlashVars:"textalign=left"}));

            sIFR.replaceElement(named({sSelector:".tags-title", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sWmode: "transparent", sLinkColor:"#C62E36",                                                      
                                        sFlashVars:"textalign=left"})); 
    
            sIFR.replaceElement(named({sSelector:".season-title", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sWmode: "transparent", sLinkColor:"#C62E36",                                                    
                                        sFlashVars:"textalign=left"})); 
    
            sIFR.replaceElement(named({sSelector:".more-label", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#4a3930",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                                       
                                        sFlashVars:"textalign=left"})); 

            sIFR.replaceElement(named({sSelector:".related-label", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#C62E36", sWmode: "transparent",                                                       
                                        sFlashVars:"textalign=left"})); 
            
            sIFR.replaceElement(named({sSelector:".content-subheading", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sWmode: "transparent",                                                       
                                        sFlashVars:"textalign=left"})); 

            sIFR.replaceElement(named({sSelector:".navlink", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#4a3930",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                  
                                        sFlashVars:"textalign=left"})); 

            sIFR.replaceElement(named({sSelector:".navlinkSelected", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#C62E36", sLinkColor:"#C62E36",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                   
                                        sFlashVars:"textalign=left"})); 
                                        
            sIFR.replaceElement(named({sSelector:"#PageTitleBlank", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sLinkColor:"#4a3930",
                                        sHoverColor:"#C62E36", sWmode: "transparent",                                  
                                        sFlashVars:"textalign=left"})); 
            
            sIFR.replaceElement(named({sSelector:".store-item h2", sFlashSrc:this.media_path + "flash/sifr.swf",
                                        sColor:"#4a3930", sWmode: "transparent",                                  
                                        sFlashVars:"textalign=left"})); 
        };
    },	   		
	   		
    init_showWhoIsIt :function(){	
        if ($("#GameContainer").size() > 0) { 		
            var so = new SWFObject(this.media_path +"flash/WhoIsIt/razzjazz_WhoIsIt.swf", "razzjazz_whoisit", "980", "598", "9", "#FFFFFF");

                // flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode","transparent");
                so.addVariable("basePath", this.media_path +"flash/WhoIsIt/");
        
        		so.write("flashcontent");
        }
    },

    init_showKeepTheBeat :function(){	
        if ($("#GameContainer").size() > 0) { 		
	   		var so = new SWFObject(this.media_path +"flash/KeepTheBeat/razzjazz_keepthebeat.swf", "razzjazz_keepbeat", "980", "595", "9", "#FFFFFF");

                // flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode","transparent");
                so.addVariable("basePath", this.media_path +"flash/KeepTheBeat/");
        
        		so.write("flashcontent");
		}
    },

    init_showMissingKeys :function(){	
        if ($("#GameContainer").size() > 0) { 		
            var so = new SWFObject(this.media_path +"flash/MissingKeys/razzjazz_missingKeys.swf", "razzjazz_missingkeys", "980", "595", "9", "#FFFFFF");

                // flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode","transparent");
                so.addVariable("basePath", this.media_path +"flash/MissingKeys/");
        
        		so.write("flashcontent");
		}
    },
    
    init_showJazzImprov :function(){	
        if ($("#GameContainer").size() > 0) { 		
            var so = new SWFObject(this.media_path +"flash/JazzImprov/razzjazz_JazzImprov.swf", "razzjazz_jazzimprov", "980", "595", "9", "#FFFFFF");

                // flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode","transparent");
                so.addVariable("basePath", this.media_path +"flash/JazzImprov/");
        
        		so.write("flashcontent");
		}
    },
    
    init_showLostNotes :function(){	
        if ($("#GameContainer").size() > 0) { 		
            var so = new SWFObject(this.media_path +"flash/LostNotes/LostNotes.swf", "razzjazz_lastnotes", "980", "595", "9", "#FFFFFF");

                // flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode","transparent");
                so.addVariable("basePath", this.media_path +"flash/LostNotes/");
        
        		so.write("flashcontent");
		}
    },

    init_showsound : function(character) {
        if ($("#CharacterMore").size() > 0) {
            var so = new SWFObject(this.media_path + "flash/CharacterSounds.swf", "CharacterSoundObject", "237", "382", "9", "#FFFFF",{selClass:character});
                so.addParam("allowScriptAccess", "always");
                so.addParam("scale", "noscale");
                so.addParam("quality", "high");
                so.addParam("salign", "t");
                so.addParam("wmode", "transparent");
                so.addVariable("characterID", character);
                so.addVariable("xmlPath", "/character-sounds/");
                so.write("CharacterRollover");
            }
        },

    init_coloring : function() {
        $('#ColoringSelection').addClass('gallery_enabled'); // adds new class name to maintain degradability
        $('ul#ColoringSheetList').galleria({
                history   : false, // deactivates the history object for bookmarking, back-button etc.
                clickNext : false, // helper for making the image clickable. Let's not have that in this example.
                insert    : ".big-color-sheet", // the containing selector for our main image. 
                	   // If not found or undefined (like here), galleria will create a container 
                	   // before the ul with the class .galleria_container (see CSS)
                onImage   : function(image,caption,thumb) { 
                            $("#select-msg").css('display','none');
                            colourPage = thumb.attr('title');
                            }
            });
        $("#PdfLink").add("#PrintLink").css("visibility","visible");
        $("#PdfLink").click(function(event){
                event.preventDefault();
                pdfWindow = "";
                pdfWindow = window.open(colourPage,'saveWindow','width=600,height=800');
            });
        $("#PrintLink").click(function(event){
                    event.preventDefault();
                    var printWindow = "";
                    printWindow = window.open(colourPage, 'printWindow','width=600,height=800');
                    /* printWindow.close(); */
                    printWindow.print();
            });
        },
    
    init_downloads : function() {
        $(".download-list > li").hover(function() {
            $(this).css("position", "relative").find("ul").css("display", "block");
            }, function() {
                $(this).css("position", "static").find("ul").css("display", "none");
                });
    },
        
    validateForm : function() {  
        $('.error').hide(); 
        var flag =false; 
        $(".clear-button").click(function() {  
            $('form :input').val("");
        });
            
        $(".submit-button").click(function() {  
            $('.error').hide();  
            flag =false;
            var message = $("textarea#id_message").val();  
            if (message == "") {  
                $("label#message_error").css("display", "block");  
                $("label#message_error").show();  
                $("input#id_message").focus();  
                flag = true;
                } 
            var subject = $("input#id_subject").val();  
            if (subject == "") {  
                $("label#subject_error").css("display", "block");  
                $("label#subject_error").show();  
                $("input#id_subject").focus(); 
                flag = true; 
                }
            var email = $("input#id_email").val();  
            var emailFilter=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            if (!(emailFilter.test(email))) {  
                $("label#email_error").css("display", "block");  
                $("label#email_error").show();  
                $("input#id_email").focus();  
                flag = true; 
                } 
            var name = $("input#id_full_name").val();  
            if (name == "") {  
                $("label#name_error").css("display", "block"); 
                $("label#name_error").show();  
                $("input#id_full_name").focus(); 
                flag = true;  
                } 
            var broadcaster = $("select#id_broadcaster").val();  
            if (broadcaster == "") {  
                $("label#broadcaster_error").css("display", "block");  
                $("label#broadcaster_error").show();  
                $("input#broadcaster").focus();  
                flag = true;
                }
   
            if (flag) {
                return false; 
                }
            else {
                this.submit();
                }  
                
        }); 
        flag=false;  
    },  
        
    emailSetUp : function() {
        $("#EmailSignUpForm #id_email").attr("value","your email address").addClass("new");
        $("#EmailSignUpForm #id_email.new").click(function(){
        $("#EmailSignUpForm #id_email.new").attr("value","").removeClass("new");
        });
    },
        
    playVideo :function(videoPlaylist) {
        if ($("#VideoPlayer").size() > 0) {
            var so = new SWFObject(this.media_path + "flash/videoPlayer.swf", "flash", "545", "352", "9", "#FFFFFF");

        		// flash specific paramaters
        		so.addParam("scale", "noScale");
        		so.addParam("allowScriptAccess", "always");
        		so.addParam("quality", "high");
        		so.addParam("salign", "t");
        		so.addParam("wmode", "transparent");
        
        		// flashvar substitute
        		so.addVariable("xmlPath", videoPlaylist);
        		so.addVariable("locale", "en");
        		so.write("VideoPlayer");
        }
    },
        
    printLink : function() {
        $("#PrintLink").click(function(event){
            event.preventDefault();
            //printLyrics = $("#SongLyrics p").html();
            //var printWindow = "";
            //var printWindow = window.open(printLyrics, 'printWindow','width=600,height=800');
            window.print();
            //http://www.nabble.com/Printer-Friendly-help-td16038822s27240.html
    });
},
   
    AJAXForm : function(){
    //uses AJAX forms to submit form and process response using AJAX
        $("#EmailSignUpForm").submit(function(){
            return false;
        });
        $("#EmailSubmitButton").click(function(){
            var options = { 
                url: '/signup/', 
                dataType:  'html', 
                success:   processHTML 
            };
            $('#EmailSignUpForm').ajaxForm(options);
        });
    
        function processHTML(response){
            if (response) {
                $("#EmailSignUp").html(response);
            } //todo : else
        }
    },
   
   init : function() {
        var page = $('body').attr('class');
        page = (page.indexOf(' ') > 0) ? page.slice(0,page.indexOf(' ')) : page;
        switch(page) {
            case 'home-page':
                this.init_showhome();
                break;
            case 'band-page':
                this.init_showband();
                break;
            case 'game-page':
                this.init_showgames();
                break;
            case 'character-detail-page':
                this.init_showsound(character);
                this.playVideo(videoPlaylist);
                break;
            case 'character-content-page':
                this.init_showsound(character);
                this.playVideo(videoPlaylist);
                this.pop_up();
                break;
            case 'character-interview-page':
                this.init_showsound(character);
                break;
            case 'character-list-page':
                $(function() {
                    $.swapImage(".swapImage");
                 });
                break;
            case 'song-list-page':
                this.pop_up();
                break;
            case 'song-detail-page':
                this.pop_up();
                this.printLink();
                break;
            case 'showtimes-page':
                this.validateForm();
                break;
            case 'coloring-page':
                this.init_coloring();
                break;
            case 'character-related-content-page':
                this.init_showsound(character);
                this.pop_up();
                this.init_downloads();
                break;
            case 'episode-detail-page':
                this.pop_up();
                this.playVideo(videoPlaylist);
            case 'icon-page':
                this.init_downloads();
                break;
            case 'wallpaper-page':
                this.init_downloads();
                break;                
            case 'character-contact-page':
                this.init_showsound(character);
                this.validateForm();
                break;
            case 'who-is-it':
                this.init_showWhoIsIt();
                break;
            case 'keep-the-beat':
                this.init_showKeepTheBeat();
                break;
            case 'missing-keys':                
                this.init_showMissingKeys();
                break;
            case 'jazz-improv':                
                this.init_showJazzImprov();
                break;
            case 'lost-notes':                
                this.init_showLostNotes();
                break;
            case 'blog-list-page':
                this.rssPopUp();
                break;
            case 'contact-page':
                this.rssPopUp();
                break;
            case 'curriculum-detail-page':
                this.pop_up();
                break;
            case 'activity-detail-page':
                this.pop_up();
                break;
            case 'activity-list-page':
                this.pop_up();
                break;
            default:
        }

        this.init_shownav();
        this.init_Sifr();
        this.emailSetUp();
        this.AJAXForm();
        this.init_html();
    }

};


$(function() {
   // Code to execute when the DOM is ready
	trapeze.rjj.init();
});


//todo - where should this go, along with ajax fx
insertAudio = function(songPath, songDiv){
        var so = new SWFObject(trapeze.rjj.media_path + "flash/audioPlayer.swf", "flash", "435", "62", "9", "#FFFFFF");
    
    		// flash specific paramaters
    		so.addParam("scale", "noScale");
    		so.addParam("allowScriptAccess", "always");
    		so.addParam("quality", "high");
    		so.addParam("salign", "t");
            so.addParam("wmode", "transparent");
    		// flashvar substitute
    		so.addVariable("filePath", songPath);
    		so.addVariable("locale", "en");
    
    		so.write(songDiv);
}
