// YAHOO.widget.Logger.enableBrowserConsole();
// if you want to enable this, you need to include the YUI logger.js file via the header first...

var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

function updateSliders( sl1_on, sl1_val, sl2_on, sl2_val, sl3_on, sl3_val, sl4_on, sl4_val, sl5_on, sl5_val, sl6_on, sl6_val, sl7_on, sl7_val ) {
		document.getElementById('sa_search').s1_on.value = sl1_on;
		document.getElementById('sa_search').s1_val.value = sl1_val;
		document.getElementById('sa_search').s2_on.value = sl2_on;
		document.getElementById('sa_search').s2_val.value = sl2_val;
		document.getElementById('sa_search').s3_on.value = sl3_on;
		document.getElementById('sa_search').s3_val.value = sl3_val;
		document.getElementById('sa_search').s4_on.value = sl4_on;
		document.getElementById('sa_search').s4_val.value = sl4_val;
		document.getElementById('sa_search').s5_on.value = sl5_on;
		document.getElementById('sa_search').s5_val.value = sl5_val;
		document.getElementById('sa_search').s6_on.value = sl6_on;
		document.getElementById('sa_search').s6_val.value = sl6_val;
		document.getElementById('sa_search').s7_on.value = sl7_on;
		document.getElementById('sa_search').s7_val.value = sl7_val;
}

function replace_load(){
	document.getElementById("right").innerHTML='<h1>...</h1><p style="text-align:center"><img src="img/loading_bar.gif" alt="Data base search is running" /></p>';
}

var pool = {
	
    // not in use so far!!!
    
	// variables
	
    // if added=xy
    
	init:function(){		
         var myListTab = document.getElementById("nav_mylist");
         YAHOO.util.Dom.setStyle(newDiv, 'position', 'relative');
         
         var newDiv = document.createElement('div');
         newDiv.id = 'addedToPool';
         YAHOO.util.Dom.setStyle(newDiv, 'position', 'absolute');
         YAHOO.util.Dom.setStyle(newDiv, 'bottom', '4px');
         YAHOO.util.Dom.setStyle(newDiv, 'margin-left', '20px');
         YAHOO.util.Dom.setStyle(newDiv, 'border', 'solid 1px #aaa');
         YAHOO.util.Dom.setStyle(newDiv, 'padding', '8px');
         YAHOO.util.Dom.setStyle(newDiv, 'z-index', '100'); 
         newDiv.innerHTML = "ADded to list!";
         myListTab.appendChild(newDiv); 
	}
	
	
}


var general = {
	
	// variables
	
	init:function(){
        if (document.getElementById("email") != undefined){
		    document.getElementById("email").select();	
        }
        var textSearchInput = document.getElementById("textsearch_input");
        YAHOO.util.Event.addListener(textSearchInput, "click", general.clearTextSearchImput);                        
	},
    clearTextSearchImput:function(){
        if (this.value == document.getElementById("textsearch_input").title){
            this.value = "";
        }
    },
    highlightTrack:function(track_id){
        var trackTr = document.getElementById('track_'+track_id);
        var trackTrB = document.getElementById('track_'+track_id+'_b');
        
        if (trackTr != null){
            
            // first restore styling of last played track.
            if (general.trackLastPlayed != null ){
                // alert(general.trackLastPlayed);
                document.getElementById('track_'+general.trackLastPlayed).className = general.trackPrevClassName;
                document.getElementById('track_'+general.trackLastPlayed+'_b').className = general.trackPrevClassName;                
            }
             
            // store prev class and ID
            general.trackPrevClassName = trackTr.className;
            general.trackLastPlayed = track_id;    
            
            // change styling of new ones (has to come after storing old stuff)
            trackTr.className = 'playing';
            trackTrB.className = 'playing';


        }        
    } 
}

var 	login = {
	
	// variables
	
	init: function(){
		
		if(document.getElementById("confirm") != null && document.getElementById("new_user") != null){ 			
			login.hidePass();
			
			// in case the form has been submitted already but there was an error...
			if (document.getElementById("new_user").checked == true) login.show2Pass();
			if (document.getElementById("existing_user").checked == true) login.show1Pass();			
			
			YAHOO.util.Event.addListener(document.getElementById("existing_user"), "click", login.show1Pass);
			YAHOO.util.Event.addListener(document.getElementById("new_user"), "click", login.show2Pass);
		}
		
	},
	
	show1Pass: function(){
		
		login.hidePass();
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'overflow', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'overflow', 'visible');		
		
		
	},
	
	show2Pass: function(){
		
		login.hidePass();
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'overflow', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("pass2div"), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("pass2div"), 'overflow', 'auto');	
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'overflow', 'visible');		
		
		
	},
	
	
	hidePass: function(){
		
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'height', '0');
		YAHOO.util.Dom.setStyle(document.getElementById("pass1div"), 'overflow', 'hidden');
		YAHOO.util.Dom.setStyle(document.getElementById("pass2div"), 'height', '0');
		YAHOO.util.Dom.setStyle(document.getElementById("pass2div"), 'overflow', 'hidden');		
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'height', '0');
		YAHOO.util.Dom.setStyle(document.getElementById("submit"), 'overflow', 'hidden');		
		

			
	}
	
	
	
}

var license = {
	// variablen
	// allOptionElements:'',
	// set how many main license options (categories) there are at the moment - could be automated so the PHP sets this!
	howManyLicenses:5,
	init: function(){
		if(document.getElementById("license") != null){ 
            // define default license cat to show if now other lic category has been selected
            var licToShow = 'cat_1';                           
			license.hideLicenses();
			
			// add listeners for license main options
			for (i = 1; i<=license.howManyLicenses; i++){                
				if (document.getElementById("cat_"+i).checked == true){    
                    // define license to show. don't actually show it yet, because this messes up the script...
					licToShow = "cat_"+i;                    
				}
				YAHOO.util.Event.addListener(document.getElementById("cat_"+i), "click", license.showThisLicense);
                
                // if one button has been selected, enable all licenses for this category			
				YAHOO.util.Event.addListener(document.getElementById("cat_"+i), "click", license.disableEnableAllRadioButtons);		
			}
            // now show appropriate license.
            license.showThisLicense(licToShow);
		
        // first disable or enable all lower radio buttons and dropdowns
        license.disableEnableAllRadioButtons();
        
        
        if (license.currentMinSeconds >= 0){
            license.changeMinimumSeconds(license.currentMinSeconds);
        } 
        // else it has been set because one license option was checked already.
        else {
            license.currentMinSeconds = 0; // not set
        }
        // add listener to form to check on submit.
        YAHOO.util.Event.addListener("get_price", "submit", license.checkSeconds);
        
        }
	},
	
    disableEnableAllRadioButtons: function (){
        
        var i;  
        var disableEnable = true;
        var lowerRadioButtons = YAHOO.util.Dom.getElementsByClassName("licenceType");
        var topRadioButtons = document.getElementsByName("license_category");
        // first check if any radiobutton in first table is already activated?
        for  (var i=0; i < topRadioButtons.length; i++){
            
            if (topRadioButtons[i].checked == true){
                disableEnable = false;                
            }            
        }                
        
        for  (i = 0; i < lowerRadioButtons.length; i++){ 
            lowerRadioButtons[i].disabled = disableEnable;   
            // while we're at it, also attach listener to it to enable the copies think
            // - inclomplete... // 
            // YAHOO.util.Event.addListener(lowerRadioButtons[i],'click',license.changeMinimumSeconds);
        }
        
        // make whole div look more inactive
        if (disableEnable == true) {
            if (IE6)
                YAHOO.util.Dom.setStyle(YAHOO.util.Dom.getElementsByClassName("div_cat", "div", "get_price"), "background", "#f7f7f7");
            else
                YAHOO.util.Dom.setStyle(YAHOO.util.Dom.getElementsByClassName("div_cat", "div", "get_price"), "opacity", 0.4);
        }
        else {
            if (IE6)
                YAHOO.util.Dom.setStyle(YAHOO.util.Dom.getElementsByClassName("div_cat", "div", "get_price"), "background", "#ffffff");
            else
                YAHOO.util.Dom.setStyle(YAHOO.util.Dom.getElementsByClassName("div_cat", "div", "get_price"), "opacity", 1);
        }
            
    },
    
    changeMinimumSeconds: function(minSeconds){
        /*
        YAHOO.util.Dom.setStyle(document.getElementById("length_seconds_label"), "visibility", "visible");
        document.getElementById("length_seconds_display").innerHTML = ''+minSeconds+'s.';
        license.currentMinSeconds = minSeconds; // store last selected minSeconds!
        */
    },
    
    checkSeconds: function(e){
        var enteredLength = Number(document.getElementById("length_seconds").value);
        if (license.currentMinSeconds == 0){
            alert (selectLicenseModel);
            YAHOO.util.Event.preventDefault(e);
            return false;
        }
        if (document.getElementById("length_seconds").value >= Number(license.currentMinSeconds)){
            return true;
        }
        else {

            alert(document.getElementById("length_seconds_label").innerHTML + license.currentMinSeconds +'s.');
            YAHOO.util.Event.preventDefault(e);
            return false;
        }    
    },    
    
	showThisLicense: function(cat){
        
        license.hideLicenses();
        // (edler mit ner reg ex...)
        if (cat == 'cat_1' || cat == 'cat_2' || cat == 'cat_3' || cat == 'cat_4' || cat == 'cat_5' || cat == 'cat_6' || cat == 'cat_7' || cat == 'cat_8' || cat == 'cat_9' || cat == 'cat_10'){
            // do nothing 
            // alert(cat);
        }
        else {
	
		// if no cat has been handed to the function and if there hasn't been a cat assigned by clicking then revert to cat 1. 
        if (this.id == undefined) {
				cat = 'cat_1';
			}
			else cat = this.id;
		}
        //alert(cat);
		// if not, just leave the cat id that's been handed to the function
		// if not called by click (but by init function) then it will display the first category
		
		// current category
		YAHOO.util.Dom.setStyle(document.getElementById("div_"+cat), 'height', 'auto');
		YAHOO.util.Dom.setStyle(document.getElementById("div_"+cat), 'overflow', 'auto');		
	},
	hideLicenses: function(){
        
		// hide all licenses first
		for (i = 1; i<=license.howManyLicenses; i++){			
			YAHOO.util.Dom.setStyle(document.getElementById("div_cat_"+i), 'height', '0');
			YAHOO.util.Dom.setStyle(document.getElementById("div_cat_"+i), 'overflow', 'hidden');
			// leave this out for search engine reasons... switch on if problems with some browsers
			// YAHOO.util.Dom.setStyle(document.getElementById("div_cat_1"), 'display', 'none');
		}
        
	}
}

var sa = {
	
	/* variablen */
	instrFoldedOut:0,
	previousSearch:0,
	cat:"cat_1",
	categories:"",
	idToShow:"cat_1",
	highlightColor:"#C4F23A",
	
	/* funktionen */
	init: function (){
		if(    document.getElementById("tracks") != null 
            || document.getElementById("track_details") != null
            ){ 			
            
            YAHOO.util.Dom.setStyle(document.getElementById("genre_listings"), 'overflow', 'visible');
            YAHOO.util.Dom.setStyle(document.getElementById("genre_listings"), 'height', 'auto');
                
            // depending on prev search decide which whether to show genre list or cat_all
            if (sa.showAllCat == false){
                sa.showGenreList();
            }
            else{
                sa.allCategories();
            }
            sa.categories = YAHOO.util.Dom.getElementsByClassName("cat","li","cat_list_ul");
            
			for (var i = 0;i < sa.categories.length; i++){
				YAHOO.util.Event.addListener(document.getElementById(sa.categories[i].id), "click", sa.showGenreList);	
			}
            
			YAHOO.util.Event.addListener(document.getElementById("cat_all"), "click", sa.allCategories);
			YAHOO.util.Event.addListener(document.getElementById("instruments"), "click", sa.showHideInstruments);	
			
            // run this in case there was a search for an instrument. if there was one, it will unfold the instruments..
            if (sa.instrFoldedOut == true){
                sa.showHideInstruments(true);
            }
            
            document.getElementById("fold_out_instr").src = "img/fold_out.gif";	
		}
		
	},
		
	showHideInstruments: function(initialUnfold){		
        // get top button to show or hide
        var button_top = document.getElementById("bt_search_now_top");
        var button_bottom = document.getElementById("bt_search_now_bottom");
		if (initialUnfold == true || document.getElementById("instruments_list").style.height == "0pt" || document.getElementById("instruments_list").style.height == "0px" || document.getElementById("instruments_list").style.height == 0){
                                			            
            var instrumentsAnim = new YAHOO.util.Anim('instruments_list', { 
				height: { from:0, to: 620 }  
			}, 0.7, YAHOO.util.Easing.easeOut); 
			         
            $("#instruments_list").fadeIn("quick");
            
            instrumentsAnim.animate();   
            if (initialUnfold != true ) window.scrollBy(0,580);
            document.getElementById("fold_out_instr").src = "img/fold.gif";		
            // hide top search button            
            YAHOO.util.Dom.setStyle(button_top, 'display', 'none');
            YAHOO.util.Dom.setStyle(button_bottom, 'display', 'block');		
        }
        else{
            if (document.getElementById('all_instruments_check').checked == true ||  confirm("Do you want to reset the instrument selection to \"all instruments\"?")){                                
                document.getElementById('all_instruments_check').checked = true;
                YAHOO.util.Dom.setStyle(document.getElementById("instruments_list"), 'height', '0');
                YAHOO.util.Dom.setStyle(document.getElementById("instruments_list"), 'overflow', 'hidden');
                YAHOO.util.Dom.setStyle(document.getElementById("instruments_list"), 'display', 'none');
                document.getElementById("fold_out_instr").src = "img/fold_out.gif";
                YAHOO.util.Dom.setStyle(button_top, 'display', 'block'); 
                window.scrollBy(0,-550);
            }
        }
	},
	
	showGenreList: function (e){	        
		if(this.id != undefined){
            sa.idToShow = this.id;
        }
        else if(sa.cat != undefined) {
            sa.idToShow = sa.cat;
        }
        
		allGenreLists = YAHOO.util.Dom.getElementsByClassName("genre_list","div","genre_wrap");		
		for (i = 0;i < allGenreLists.length; i++){
			YAHOO.util.Dom.setStyle(allGenreLists[i], 'display', 'none');
		}
		for (i = 0;i < sa.categories.length; i++){
			sa.categories[i].firstChild.style.background = ""; 
            sa.categories[i].style.backgroundImage = "";  
		}
		YAHOO.util.Dom.setStyle('genre_wrap', 'display','block');
		
		YAHOO.util.Dom.setStyle('genre_list_'+sa.idToShow, 'display', 'block');
		        
        // alert(document.getElementById(sa.idToShow).firstChild);
        // if (sa.idToShow.firstChild != undefined){
            document.getElementById(sa.idToShow).firstChild.style.backgroundColor = sa.highlightColor;
            document.getElementById(sa.idToShow).style.backgroundImage = "url(img/stroke_left.png)";
        //}
        
        // "Bug" 47
        if (document.getElementById(sa.idToShow).innerHTML.search(/World/) != -1){
            document.getElementById('check_all_label').innerHTML = All_regions;
        }
        
        else if (document.getElementById(sa.idToShow).innerHTML.search(/Classic/) != -1){
            document.getElementById('check_all_label').innerHTML = All_epochs;
        }  
        
        else if (document.getElementById(sa.idToShow).innerHTML.search(/Corporate/) != -1){
            document.getElementById('check_all_label').innerHTML = All_themes;
        }
        
        else {
            document.getElementById('check_all_label').innerHTML = All_genres;
        }        
        
        
        // YAHOO.util.Dom.setStyle(sa.idToShow, 'background', sa.highlightColor);
		YAHOO.util.Dom.setStyle('cat_all', 'background','none');
		YAHOO.util.Dom.setStyle('cat_list_ul', 'border', 'solid 2px white');
				
		checkBoxes.unTickAllCheckBoxes();
		
		
        // only check all if there hasnt been a user selection from a previous search!
        // if (previousSearch == false)
        
        if (sa.previousSearch == true)
        checkBoxes.checkPrevSelected();        		
		
        //alert(document.getElementById('tracks'));
        // if via click OR if on home page then tick all.
        if (e != undefined || document.getElementById('tracks') == null){
            // alert(document.getElementById('tracks'));
            checkBoxes.tickAllCheckBox();
                   
        }
        checkBoxes.unCheckAll(); 
        if (sa.previousSearch == true && e == undefined)
        checkBoxes.checkPrevSelected();        
        checkBoxes.testUnChecked();
	},
    
	allCategories: function (){
		YAHOO.util.Dom.setStyle('cat_all', 'background',sa.highlightColor);
		checkBoxes.unTickAllCheckBoxes();
		for (i = 0;i < sa.categories.length; i++){
			// YAHOO.util.Dom.setStyle(sa.categories[i], 'background', sa.highlightColor);
			sa.categories[i].firstChild.style.background = ""; 
            sa.categories[i].style.backgroundImage = ""; 
		}
		//YAHOO.util.Dom.setStyle('cat_list_ul', 'background', sa.highlightColor);	
		YAHOO.util.Dom.setStyle('cat_list_ul', 'border', 'solid 2px ' + sa.highlightColor);			
		YAHOO.util.Dom.setStyle('genre_list', 'display','none');
		YAHOO.util.Dom.setStyle('genre_wrap', 'display','none');
	}

}


/* new object: Check Boxes*/

var checkBoxes = {
	
    currentList:"",
    otherCheckboxes:"",
    init: function() {
        if( document.getElementById("tracks") != null || 
            document.getElementById("home") != null ||  
            document.getElementById("track_details") != null){ 
    
            YAHOO.util.Event.addListener(document.getElementById("check_all"), "click", checkBoxes.unCheckAll);
    
            checkBoxes.otherCheckboxes = YAHOO.util.Dom.getElementsByClassName("check", "input" , "genre_wrap"); 
            for (var i=0; i<checkBoxes.otherCheckboxes.length; i++) {
                YAHOO.util.Event.addListener(checkBoxes.otherCheckboxes[i], "click", checkBoxes.testUnChecked);
            }
        }
    },
    
    // ticks the "All" checkbox
    tickAllCheckBox: function() {
        YAHOO.log("tickall called"); 
        document.getElementById("check_all").checked = true;
        YAHOO.log(document.getElementById("check_all").checked);
    },
    
    unTickAllCheckBoxes: function() {
        for (var i=0; i<checkBoxes.otherCheckboxes.length; i++) {
                checkBoxes.otherCheckboxes[i].checked = false;
            }
    },
    
    checkPrevSelected: function(){
        checkBoxes.currentList = document.getElementById("genre_list_"+sa.idToShow).getElementsByTagName("input");
        for (var i=0; i<checkBoxes.currentList.length; i++) {
            checkBoxes.currentList[i].checked = false;
            if (checkBoxes.currentList[i].title == '!')
            checkBoxes.currentList[i].checked = true;
        }       
    },
    
    // checks or unchecks all "genre_list_X" checkboxes
    unCheckAll: function () {
        checkBoxes.currentList = document.getElementById("genre_list_"+sa.idToShow).getElementsByTagName("input");
        for (var i=0; i<checkBoxes.currentList.length; i++) {
            checkBoxes.currentList[i].checked = document.getElementById("check_all").checked;
        }
    },
    
    // makes sure the "All" checkbox is only checked when all other checkboxes are checked as well..
    testUnChecked: function () {
        var checkedCounter = 0, unCheckedCounter = 0;
        for (var i=0; i<checkBoxes.currentList.length;i++) {
            if (checkBoxes.currentList[i].checked == true)
                checkedCounter++;
            else 	unCheckedCounter++;
            if (checkedCounter > 0 && unCheckedCounter == 0)
                document.getElementById('check_all').checked = true;
            else 	document.getElementById('check_all').checked = false;
        }
    }
}

var artists = {
    currentlyShownBlock:'',
    init: function(){
        var blocks = new Array();
        for(i=0;i<40;i++){
            if (document.getElementById("block"+i) != undefined)
                blocks[i] = document.getElementById("block"+i);
            else 
                break;
        }
        YAHOO.util.Event.addListener(blocks,"click", artists.showBlock)
    },
    showBlock: function(e){

        YAHOO.util.Event.preventDefault(e);
        
        // only change something if the clicked on block and the currentlyShown block are *different*
        if (artists.currentlyShownBlock != this.id){
            
            if (document.getElementById('notice') != undefined)
                document.getElementById('artist_listing').removeChild(document.getElementById('notice'));
            
            YAHOO.util.Dom.removeClass(this.id + '_ul', "hidden");
            YAHOO.util.Dom.addClass(artists.currentlyShownBlock + '_ul', "hidden");
            // now reset currently shown block
            artists.currentlyShownBlock = this.id;
            
            if (document.getElementById(this.id + '_ul') == undefined){
                var notice = document.createElement('p');
                var textNode = document.createTextNode("(-----)"); // could be replaced by artists.notice ! (see artist_directory source code).
                notice.setAttribute('id', 'notice');
                notice.setAttribute('style', 'text-align:center');
                notice.appendChild(textNode);
                
                document.getElementById('artist_listing').appendChild(notice);
            }
        }
    }
}



YAHOO.util.Event.addListener(window, "load", sa.init);
YAHOO.util.Event.addListener(window, "load", checkBoxes.init);
YAHOO.util.Event.addListener(window, "load", license.init);
YAHOO.util.Event.addListener(window, "load", login.init);
YAHOO.util.Event.addListener(window, "load", general.init);
YAHOO.util.Event.addListener(window, "load", artists.init);

// YAHOO.util.Event.addListener(window, "load", pool.init); 