/* Alterhit javascript - written by dave shanley < dave dot shanley at codecircus dot co dot uk> 
 * Now listen up kids - other than that tens of thousands of lines of Java EE that powers this system, this Javascript
 * adds the juicy flashy bits and validation etc. Please don't steal this without at least telling me, hundreds of hours and bottles of
 * whiskey went in to creating this code.
 *
 */
/* swap over navigation */
function swapNavOn(name) {
    var image = document.getElementById(name);
    image.src = "/resources/gfx/site/" + name + "-on.gif";
}
function swapNavOff(name) {
    var image = document.getElementById(name);
    image.src = "/resources/gfx/site/" + name + "-off.gif";
}
var loginBoxVisible = false;
/* fade in the login box */
function fadeLoginBox(){
    if(!loginBoxVisible) {
        loginBoxVisible = true;
        Effect.Appear('loginContainer'); 
    } else {
        loginBoxVisible = false;
        Effect.Fade('loginContainer'); 
    }
    
}

function loadArtistTracks(divId, artistId, trackId) {
	window.open('/pages/musicPlayer.jsp?artist=' + artistId + '&track=' + trackId,'musicPlayer','resizable=1,scrollbars=0,width=516,height=384');

}

function loadFriendTracks(divId, friendId, trackId) {
    window.open('/pages/musicPlayerMelee.jsp?meleeTracks=' + friendId  + '&track=' + trackId,'musicPlayer','resizable=1,scrollbars=0,width=516,height=384');
}

function loadLabelTracks(divId, labelId) {
    window.open('/pages/musicPlayerMelee.jsp?label=' + labelId ,'musicPlayer','resizable=1,scrollbars=0,width=516,height=384');
}
function loadAlbumTracks(divId, albumId, trackId) {
    window.open('/pages/musicPlayerAlbum.jsp?album=' + albumId + '&track=' + trackId,'musicPlayer','resizable=1,scrollbars=0,width=516,height=384');
}

/* AJAX play list loader */
function loadMusicPlayerAjax(typeName, typeId, playerContainerId) {
    new Ajax.Request('/serv/tools/generatePlaylist', {
        method: 'get',
        parameters: typeName + "=" + typeId,
        onCreate: function(transport) {
            var playerContainer = document.getElementById(playerContainerId);
            playerContainer.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" />";
        },
        onSuccess: function(transport) {
            var playListData = transport.responseText;
            // Remove control characters
            playListData = playListData.replace('/[\n\r\t]/g', '');
            playListData = Base64.encode(playListData);
            var player = new SWFObject("/resources/flash/budplayer_test.swf", "ahplayer", "500", "370", "7");
            player.addParam("allowfullscreen","false");
            player.addParam("swLiveConnect", "true");
            player.addVariable("file", 'budplayer_test.fla');
            player.addVariable("playListData", 'local');
            player.addVariable("shownavigation","false");
            player.addVariable("showicons","false");
            player.addVariable("backcolor","0x000000");
            player.addVariable("frontcolor","0x999999");
            player.addVariable("lightcolor","0x333333");
            player.addVariable('shuffle','false');
            player.addVariable('repeat','false');
            player.addVariable('xspf', playListData);
            player.write(playerContainerId);
            //var playerObj = document.getElementById("ahplayer");
            //playerObj.StopPlay();
            //playerObj.SetVariable(":xspf", playListData);
            //playerObj.Rewind();
            //playerObj.TCallFrame("/", 0);
            //playerObj.Play();
        }
    });
}

/* highlights the link when the user moves over the genres */

function highlight(which,colorCode){
if (document.all||document.getElementById){
which.style.backgroundColor=colorCode;
which.style.color="black";

}
} 

/* Roll Back the text color when the user moves out the genres */

function BackToSameColor(which,colorCode){
if (document.all||document.getElementById){
which.style.backgroundColor="transparent";
which.style.color=colorCode;

}
} 

/* AJAX Association of Genres and SubDivisons search on click of genres*/
var category='';
function displayInGettingGenres(which,colorCode){
document.getElementById("gettingGenres").innerHTML=which.id;
document.getElementById("gettingGenres").style.backgroundColor="transparent";
document.getElementById("gettingGenres").style.color=colorCode;
document.getElementById("gettingGenres").style.fontSize="10px";
document.getElementById("gettingGenres").style.fontWeight="bold";
document.getElementById("typeForSingles").style.color=colorCode;
document.getElementById("typeForAlbums").style.color=colorCode;
document.getElementById("typeForArtists").style.color=colorCode;
document.getElementById("subDivision").style.color=colorCode;
if((document.getElementById("gettingGenresSubDivisions").innerHTML=="")&&(document.getElementById("typeForArtists").value=="artist")){
document.getElementById("gettingGenresSubDivisions").innerHTML="ARTISTS";
document.getElementById("gettingGenresSubDivisions").style.fontSize="10px";
document.getElementById("gettingGenresSubDivisions").style.fontWeight="bold";
document.getElementById("gettingGenresSubDivisions").style.color=colorCode;
}
else{
      document.getElementById("gettingGenresSubDivisions").style.color=colorCode;
}
      category=which.id; 
 //   var urlFullResults = "/serv/genres?allartists=" + category;
    var fullResultsDiv = document.getElementById('genreFullResults');
    fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating genres...Hold On</span></div>";
    var searchType = $RF('genreSearchType');
    var url = "/serv/genres?genre=" + category + "&type=" + searchType;
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            fullResultsDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            fullResultsDiv.innerHTML = genresFailed;
            
        }			
    });    
}

/* AJAX Association of Genres and SubDivisons  search on change of subdivsions*/
function diplayIngettingGenresSubDivisions(which){
var subDivisionsColor=which.style.color;
var subDivisions=which.value;
var fullResultsDiv = document.getElementById('genreFullResults');
     
if(subDivisions=="track"){
document.getElementById("gettingGenresSubDivisions").innerHTML="SINGLES";
fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Singles...Hold On</span></div>";
    
}
if(subDivisions=="album"){
document.getElementById("gettingGenresSubDivisions").innerHTML="ALBUMS";
fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Albums...Hold On</span></div>";
}
if(subDivisions=="artist"){
document.getElementById("gettingGenresSubDivisions").innerHTML="ARTISTS";
fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Artists...Hold On</span></div>";
}
document.getElementById("gettingGenresSubDivisions").style.backgroundColor="transparent";
document.getElementById("gettingGenresSubDivisions").style.color=subDivisionsColor;
document.getElementById("gettingGenresSubDivisions").style.fontSize="10px";
document.getElementById("gettingGenresSubDivisions").style.fontWeight="bold";
/* work out what radio group is selected */
    var searchType = $RF('genreSearchType');
    var url = "/serv/genres?genre=" + category + "&type=" + searchType;
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            fullResultsDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            fullResultsDiv.innerHTML = genresFailed;
            
        }			
    });


}

/* load default genres*/
function loadDefaultGenres(){
var fullResultsDiv = document.getElementById('genreFullResults');
    fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating genres...Hold On</span></div>";
     var url = "/serv/genres?allartists=0" ;
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            fullResultsDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            fullResultsDiv.innerHTML = genresFailed;
            
        }			
    });
}

function changePageDefaultForGenres(pageNo)
{
    var searchType = $RF('genreSearchType');
    var genreData = document.getElementById('genreFullResults');
    genreData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Genres... Hold On!</span></div>";
    new Ajax.Request('/serv/genres?genre=' + category + '&type=' + searchType + '&pageNo=' + pageNo, {
        method: 'get',
        onSuccess: function(transport) {
            genreData.innerHTML = transport.responseText;
            
        }			
    });
}
/* submit login form */
function submitLoginForm(e) {
    if(checkReturnChar(e)) {
        var form = document.getElementById('authenticateForm');
        form.submit();
    }
}
/* submit login form */
function submitLoginFormClick() {
    if(document.getElementById('emailAddress').value!=""&&document.getElementById('password').value!="") {
        var form = document.getElementById('authenticateForm');
        form.submit();
    } else {
        alert("Enter your credentials first you crazy kat!");
    }
}
/* submit search form that is found on most pages */
function submitSearchForm(e) {
    if(checkReturnChar(e)) {
        var form = document.getElementById('searchForm');
        form.submit();
    }
}

/* submit search form that is found on most pages */
function submitSearchFormClick() {
    var form = document.getElementById('searchForm');
    form.submit();
    
}

/* submit general form with validation */
function submitGeneralForm(e, form, errorblock, err) {
    if(checkReturnChar(e)) {
        if(validateForm(form, errorblock, err)) {
            var myform = document.getElementById(form);
            myform.submit();
        }
    }
}
/* submit general form with validation */
function submitGeneralFormClick(form, errorblock, err) {
    if(validateForm(form, errorblock, err)) {
        var myForm = document.getElementById(form);
        myForm.submit();
    }
}

/* submit general form with validation */
function signupForm(form, errorblock, err) {
    var accountTypeValue = document.getElementById('accountType').value;
    var accountTypeName = "";
    if(accountTypeValue=="1") {
        accountTypeName ="ARTIST";
    }
    if(accountTypeValue=="2") {
        accountTypeName ="LABEL";
    }
    if(accountTypeValue=="3") {
        accountTypeName ="FRIEND";
    }
    var answer = confirm("Can you confirm?\n\nYou are about to sign up for a \"" + accountTypeName + "\" account? is this correct?");
    if(answer) {
        if(validateForm(form, errorblock, err)) {
        	return true;
        } else {
        	alert(err);
        	return false;
        }
    } else {
    	return false;
    }
}

/* some various error messages */
var general = "Looks like you missed something, can you check and try again? everything you missed is highlighted.";
var invalidEmail = "That email address looks a bit wonky? can you check it please.";
var authFailed = "Your email address or password appear to be wrong? can you try again.";
var accountExists = "Someone has already registered an account with that email address.";
var descritionFailed = "Can't get a description at the moment, can you try later?";
var noTermsAgreement = "Agree to terms please.";
var musicServiceFailed = "Music information service failed, sorry!";
var commentsFailed = "Comment engine has failed! oh dear";
var selectMusic ="You have to select either an album or a single first!";
var selectCertificateRecipient = "Please select one of your affiliates or scenes first!";
var gigCommentsFailed = "Gig comments failed.  KAPUT!";
var genresFailed = "Genres failed... bugger!";
var address = "Please smash forehead on keyboard to proceed - or else fill all boxes marked * This makes our little update button clickable";
var empty = "";

/* used by form submission to check for the correct return char */
function checkReturnChar(e){ 
    var characterCode;
    if(window.ActiveXObject) { // IE
        characterCode = e.which
    } else {
        if (window.event) characterCode  = window.event.keyCode;
        else if (e)characterCode  = e.which;
        else return true;
    }
    if(characterCode == 13){ 	  // return
        if(window.ActiveXObject) {
            return true;
        } else {
            /* safari issue, the farking form is submitted unless we can cancel the default action */
            if(window.event) { event.preventDefault(); }
            return true;
        }    
    } else {
        return false 
    }
    
}
/* homegrown javascript validation elements */
var validateElements = new Array();
function addValidationField(element, type, validStyle, invalidStyle, form) {
    var amazingWhiskey = new Array();
    amazingWhiskey['element'] = element;
    amazingWhiskey['type'] = type;
    amazingWhiskey['validStyle'] = validStyle;
    amazingWhiskey['invalidStyle'] = invalidStyle;
    if(!validateElements[form]) {
        validateElements[form] = new Array();
        validateElements[form][0] = amazingWhiskey;
        
    } else {
        var size = validateElements[form].length++;
        validateElements[form][size] = amazingWhiskey;
        
    }
}
/* validate a form, check everything is how it should be */
function validateForm(form, errorblock, err) {
    var alertString = "elements are: ";
    var formError = false;
    var validatorUsed = false;
    for(x = 0; x < validateElements[form].length; x++) {
        /* lets do the magic validator -- go go whiskey */
        if(validateElements[form][x]['type'] != "text") {
            validatorUsed = true;
            /* email validations */
            if(validateElements[form][x]['type']=="email") {
                if(!validateEmail(document.getElementById(validateElements[form][x]['element']).value)) {
                    document.getElementById(validateElements[form][x]['element']).className = validateElements[form][x]['invalidStyle'];
                    formError = true;
                    err = invalidEmail;
                } else {
                    document.getElementById(validateElements[form][x]['element']).className = validateElements[form][x]['validStyle'];
                }
            }
            if(validateElements[form][x]['type']=="terms") {
                if(!document.getElementById(validateElements[form][x]['element']).checked) {
                    document.getElementById("termsMessage").innerHTML = "<p><strong>Sorry! you gotta agree to our terms and conditions! ain't no way we can let you in otherwise!</strong></p>";
                    document.getElementById("termsMessage").style.display = "block";
                    formError = true;
                    err = noTermsAgreement;
                } else {
                    document.getElementById("termsMessage").style.display = "none";
                    document.getElementById("termsMessage").innerHTML = "";
                }
            }
        } else {
            /* look for empty form fields! */
            if(document.getElementById(validateElements[form][x]['element']).value == "" && validateElements[form][x]['type'] != "terms") {
                document.getElementById(validateElements[form][x]['element']).className = validateElements[form][x]['invalidStyle'];
                formError = true; 
            } else {
                document.getElementById(validateElements[form][x]['element']).className = validateElements[form][x]['validStyle'];
            }
        }
    }
    
    if(formError && !validatorUsed) {
        try {
        document.getElementById(errorblock).style.display = "block";
        document.getElementById(errorblock).innerHTML = err;
        } catch (e) {}
        return false;
    } else if(formError && validatorUsed) {
//        document.getElementById(errorblock).style.display = "block";
//        document.getElementById(errorblock).innerHTML = err;
        return false;	
    } else {
 //       document.getElementById(errorblock).style.display = "none";
 //       document.getElementById(errorblock).innerHTML = "";
        return true;	
    }
}

/* validate an email address */
function validateEmail(email) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if(reg.test(email) == false) {
        return false;
    } else {
        return true;
    }
}

function getElementsByClassName(classname,tag) {
    if(!tag) tag = "*";
    var anchs =  document.getElementsByTagName(tag);
    var total_anchs = anchs.length;
    var regexp = new RegExp('\\b' + classname + '\\b');
    var class_items = new Array()
    
    for(i=0 ; i<total_anchs; i++) { 
        var this_item = anchs[i];
        if(regexp.test(this_item.className)) {
            class_items.push(this_item);
        }
    }
    return class_items;
}


/* lets use some AJAX to get a description of something and return the correct XML */
function populateDescription(caller, nameOfGroupToClean, populateDiv,descriptionRequest) {
    var url = "/serv/tools/descriptions?whatis=" + descriptionRequest;
    var descriptionDiv = document.getElementById(populateDiv);
    descriptionDiv.innerHTML = "Looking....";
    descriptionDiv.style.display = "block";
    /* turn the rest off */
    
    var group = getElementsByClassName(nameOfGroupToClean);
    for(x = 0; x < group.length; x++ ) {
        var obj = group[x];
        obj.className = "sectionButtonOff";	
    }
    
    /* set the on button states */
    caller.className = nameOfGroupToClean;
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            descriptionDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            descriptionDiv.innerHTML = descriptionFailed;
            
        }			
    });
    
}

/* sign up for stuff */
function createAccountType(type) {
    document.getElementById('mainSignupForm').style.display = "block";
    document.getElementById('accountType').value = type;
}
function hideSignupForm() {
    document.getElementById('mainSignupForm').style.display = "none";
}
/* lets use some AJAX to get a description of something and return the correct XML */
function populateDescriptionSmall(caller, nameOfGroupToClean, populateDiv,descriptionRequest) {
    var url = "/serv/tools/descriptions?whatis=" + descriptionRequest;
    var descriptionDiv = document.getElementById(populateDiv);
    descriptionDiv.innerHTML = "Looking....";
    descriptionDiv.style.display = "block";
    /* turn the rest off */
    
    var group = getElementsByClassName(nameOfGroupToClean);
    for(x = 0; x < group.length; x++ ) {
        var obj = group[x];
        obj.className = "sectionButtonOffSmall";	
    }
    
    /* set the on button states */
    caller.className = nameOfGroupToClean;
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            descriptionDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            descriptionDiv.innerHTML = descriptionFailed;
            
        }			
    });
    
}

/* lets use some AJAX to get a description of something and return the correct XML */
function populateDescriptionSimple(populateDiv,descriptionRequest) {
    var url = "/serv/tools/descriptions?whatis=" + descriptionRequest;
    var descriptionDiv = document.getElementById(populateDiv);
    descriptionDiv.innerHTML = "<div style=\"text-align: middle\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Searching for available music....</span></div>";
    descriptionDiv.style.display = "block";
    
    /* turn the rest off */
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            descriptionDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            descriptionDiv.innerHTML = descriptionFailed;
            
        }			
    });
    
}

/* expand and collapse things */
function expandCollapse(divid,controlImage) {
    if(document.getElementById(divid).style.display == 'none'){
        //document.getElementById(divid).style.display = 'block';
        document.getElementById(controlImage).src='/resources/gfx/app/large-collapse.gif';
        Effect.toggle(divid,'slide');
    } else {
        //document.getElementById(divid).style.display = 'none';  
        document.getElementById(controlImage).src='/resources/gfx/app/large-expand.gif';
        Effect.toggle(divid,'slide'); 
    }
}


/* change the flash player */
function loadAlbum(divId, albumId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerAlbum.swf","playlist","560","214","7");
    player.addVariable("file","/serv/tools/generatePlaylist?album=" + albumId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable("displayheight","126");
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* change the flash player (track) */
function loadTrack(divId, albumId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerWide.swf","playlist","801","112","7");
    player.addParam("allowfullscreen","false");
    player.addVariable("shownavigation","false");
    player.addVariable("showicons","false");
    player.addVariable("file","/serv/tools/generatePlaylist?track=" + albumId);
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0x999999");
    player.addVariable("lightcolor","0x333333");
    player.addVariable('shuffle','false');
    player.addVariable('repeat','list');
    player.write(divId);
}

/* change the flash player to load a profile track */
function loadProfileTrackPlayer(divId, trackId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerBasic.swf","playlist","226","257","7");
    player.addVariable("file","/serv/tools/generatePlaylist?track=" + trackId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* change the flash player to load a profile track (certificate based) */
function loadProfileTrackPlayerCertificate(divId, certId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerBasic.swf","playlist","226","257","7");
    player.addVariable("file","/serv/tools/generatePlaylist?certificate=" + certId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* change the flash player to load a profile track (certificate based) (large) */
function loadProfileTrackPlayerCertificateLarge(divId, certId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerAlbum.swf","playlist","560","214","7");
    player.addVariable("file","/serv/tools/generatePlaylist?certificate=" + certId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable("displayheight","126");
    player.addVariable('repeat','list');		
    player.write(divId);
}


/* change the flash player to load a profile album */
function loadProfileAlbumPlayer(divId, albumId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerBasicAlbum.swf","playlist","226","323","7");
    player.addVariable("file","/serv/tools/generatePlaylist?album=" + albumId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable("displayheight","190");    
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* change the flash player to load a profile album (certificate based) */
function loadProfileAlbumPlayerCertificate(divId, certId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerBasicAlbum.swf","playlist","226","323","7");
    player.addVariable("file","/serv/tools/generatePlaylist?certificate=" + certId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable("displayheight","190");    
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* change the flash player to load a profile album (certificate based) (large) */
function loadProfileAlbumPlayerCertificateLarge(divId, certId) {
    var player = new SWFObject("/resources/flash/alterhitPlayerAlbum.swf","playlist","560","214","7");
    player.addVariable("file","/serv/tools/generatePlaylist?certificate=" + certId);
    player.addParam("allowfullscreen","false");
    player.addVariable("enablejs","true");
    player.addVariable("javascriptid","player");
    player.addVariable("backcolor","0x000000");
    player.addVariable("frontcolor","0xF2F1E9");
    player.addVariable("lightcolor","0xF2F1E9");	
    player.addVariable('shuffle','false');
    player.addVariable("displayheight","126");
    player.addVariable('repeat','list');		
    player.write(divId);
}

/* AJAX Gig comments service */
function gigCommentsService(populate, gigId) {
    var url = "/serv/tools/gigCommentsService?gig=" + gigId;
    var commentsDiv = document.getElementById(populate);
    commentsDiv.innerHTML = "<div style=\"text-align: middle\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Searching for Gig Comments....</span></div>";
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            commentsDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            musicDiv.innerHTML = gigCommentsFailed;
            
        }			
    });
}

function profileMusicServiceforArtist(populate,type,typeId, type1, type1Id) {
    var url = "/serv/tools/profileMusicService?" + type + "=" + typeId + "&"+type1 + "=" + type1Id;
    var musicDiv = document.getElementById(populate);
    musicDiv.innerHTML = "<div style=\"text-align: middle\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Searching for available music....</span></div>";
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            musicDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            musicDiv.innerHTML = musicServiceFailed;
            
        }			
    });
    
}
var showingMusicService = false;
/* AJAX profile music service */
function profileMusicService(populate,type,typeId) {
    if(showingMusicService == true && type == "artist") {
        return;
    }
    var url = "/serv/tools/profileMusicService?" + type + "=" + typeId;
    var musicDiv = document.getElementById(populate);
    musicDiv.innerHTML = "<div style=\"text-align: middle\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Searching for available music....</span></div>";
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            musicDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            musicDiv.innerHTML = musicServiceFailed;
            
        }			
    });
    
}
/* scene shop music navigator */
function loadSceneShopArtistCertificates(scene, artist) {
    var url = "/serv/tools/profileMusicService?scene=" + scene + "&artist=" + artist;
    var musicDiv = document.getElementById('sceneShopArtistMusic');
    musicDiv.style.display = "block";
    musicDiv.innerHTML = "<div style=\"text-align: middle\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><br/><span class=\"darkGreyBoldLarge\">Searching for available music....</span></div>";
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            musicDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            musicDiv.innerHTML = musicServiceFailed;
            
        }			
    });
}        

/* certificate management code */
var started = false;
var startedCert = false;
function doThatNiftySlideThing(divup, divdown) {
    if(started == true) {
        Effect.SlideUp(divup, {queue: 'front'});
    } else {
        started = true;
    }
    Effect.SlideDown(divdown, {queue: 'end'});
}
function doThatNiftySlideThingCert(divup, divdown) {
    if(startedCert == true) {
        Effect.SlideUp(divup, {queue: 'front'});
    } else {
        startedCert = true;
    }
    Effect.SlideDown(divdown, {queue: 'end'});
}
var singleSelect = false;
var albumSelect = false;

function enableSingle() {
    singleSelect = true;
}
function disableSingle() {
    singleSelect = false;
}
function enableAlbum() {
    albumSelect = true;
}
function disableAlbum() {
    albumSelect = false;
}
function checkForCertificateActivation() {
    if(albumSelect||singleSelect) { 
        document.getElementById('confirmRequestForm').submit();
    } else {
        alert(selectMusic);
    }
}
var affiliateSelect = false;
var sceneSelect = false;

function enableAffiliate() {
    affiliateSelect = true;
}
function disableAffiliate() {
    affiliateSelect = false;
}
function enableScene() {
    sceneSelect = true;
}
function disableScene() {
    sceneSelect = false;
}
function issueCertificateActivation() {
    if((affiliateSelect||sceneSelect)&&(albumSelect||singleSelect)) { 
        document.getElementById('newCertificateForm').submit();
    } else {
        alert(selectCertificateRecipient);
    }
}

/* competition javascript */
function openJoinCompWindow(serviceUrl,compWindowName,compContainerName) {
    //new Effect.Grow('commentWindow', {direction: 'bottom-left', duration: 1.0});
    var compWindow = document.getElementById(compWindowName);
    compWindow.style.display="block";
    var compDiv = document.getElementById(compContainerName);
    compDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Loading.....</span></div>";
    new Ajax.Request(serviceUrl, {
        method: 'get',
        onSuccess: function(transport) {
            compDiv.innerHTML = transport.responseText;
        },
        onError: function(transport) {
            compDiv.innerHTML = transport;
        }			
    });    
}

/* comment javascript */
function openAddCommentWindow(serviceUrl,commentWindowName,commentContainer) {
    //new Effect.Grow('commentWindow', {direction: 'bottom-left', duration: 1.0});
    var commentWindow = document.getElementById(commentWindowName);
    commentWindow.style.display="block";
    var commentDiv = document.getElementById(commentContainer);
    commentDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Loading.....</span></div>";
    /*this stuff is to stop IE from caching in the AJAX result*/
    if(serviceUrl.indexOf('?') != -1) {
        serviceUrl = serviceUrl + '&val=' + Math.random();
    } else {
        serviceUrl = serviceUrl + '?val=' + Math.random();
    }
    new Ajax.Request(serviceUrl, {
        method: 'get',
        onSuccess: function(transport) {
            commentDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            commentDiv.innerHTML = commentsFailed;
            
        }			
    });    
    
    
    
}
/* delete comment */
function openDeleteCommentWindow(serviceUrl,commentWindow,commentContainer) {
    var commentWindow = document.getElementById(commentWindow);
    commentWindow.style.display="block";
    var commentDiv = document.getElementById(commentContainer);
    commentDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Loading.....</span></div>";
    new Ajax.Request(serviceUrl, {
        method: 'get',
        onSuccess: function(transport) {
            commentDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            commentDiv.innerHTML = commentsFailed;
            
        }			
    });    
    
    
    
}
var ajaxRequest;
/* post comment */
function postComment(serviceUrl,action,recordId,val,containerId,windowId) {
    /* grab the comment body data */
    //alert(val.value);
    var url = serviceUrl + "?action=" + action + "&recordId=" + recordId + "&commentBody=" + val.value;
    //alert(url);
    var commentDiv = document.getElementById(containerId);
    commentDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Processing....</span></div>";
    new Ajax.Request(url, {
        method: 'post',
        onSuccess: refreshNewsArticleComments('newsArticleCommentList',recordId,windowId)    
    });    
    
    /*var commentDiv = document.getElementById(containerId);
    commentDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Processing....</span></div>";
    jQuery.post( serviceUrl, {'action':action,'recordId':recordId,'commentBody':val.value}, refreshNewsArticleComments('newsArticleCommentList',recordId,windowId));*/
   
    
}

//parameters: {action: action, recordId: recordId, commentBody:val.value},

/* post comment */
function refreshNewsArticleComments(div,articleId,windowId) {
    /* grab the comment body data */
    setTimeout(function() { updateComments(windowId) }, 1000);
    
}

function updateComments(containerId) {
    var commentWindow = document.getElementById(containerId);
    commentWindow.style.display="none";
    var location = window.location.href;
    if(location.indexOf('openComment') != -1) {
        var newLocation = location.substring(0,location.indexOf('openComment')-1);
        //newLocation+="openComment=nope";
        //newLocation+=location.substring(location.indexOf('openComment')+16);
        //alert(newLocation);
        window.location = newLocation;
        return;
    }
    window.location.reload();
}

/* AJAX genre search */
function populateGenres(category) {
    
    var url = "/serv/genres?cat=" + category;
    var commentsDiv = document.getElementById('genreSearchData');
    commentsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Looking for genres....</span></div>";
    var urlFullResults = "/serv/genres?allartists=" + category;
    var fullResultsDiv = document.getElementById('genreFullResults');
    fullResultsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Looking for genres....</span></div>";
    
    
    new Ajax.Request(url, {
        method: 'post',
        onSuccess: function(transport) { commentsDiv.innerHTML = transport.responseText  }
    });    
    
    new Ajax.Request(urlFullResults, {
        method: 'post',
        onSuccess: function(transport) { fullResultsDiv.innerHTML = transport.responseText }
    });    
    
    
}
/* radio group prototype stuff */
function $RF(el, radioGroup) {
    if($(el).type == 'radio') {
        var el = $(el).form;
        var radioGroup = $(el).name;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }
    return $F($(el).getInputs('radio', radioGroup).find(
    function(re) {return re.checked;}
    ));
}
/* AJAX genre artist search */
function viewGenreArtists(category) {
    /* work out what radio group is selected */
    var searchType = $RF('genreSearchType');
    var url = "/serv/genres?genre=" + category + "&type=" + searchType;
    var commentsDiv = document.getElementById('genreFullResults');
    commentsDiv.innerHTML = "<div style=\"text-align: center\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Looking for artists</span></div>";
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport) {
            commentsDiv.innerHTML = transport.responseText;
            
        },
        onError: function(transport) {
            musicDiv.innerHTML = genresFailed;
            
        }			
    });
}

function refreshCaptcha() {
    document.images.loginCaptcha.src = "/serv/tools/alterhitCaptcha.jpg?" + Math.round(Math.random(0)*1000)+1;
}
var genreId = 0; // default
var genreCat = 0;
var displayGenres = false;
var filterType = "singles";
var pageNo = 1;

function changeFilterType(type) {
    filterType = type;
    if(displayGenres) {
        if(genreId!=0) {
            loadChart();
        } else {
            loadChartCat();
        }
    } else {
        loadChartCat();
    }
    document.getElementById('singles').style.backgroundPosition="left";
    document.getElementById('singlesales').style.backgroundPosition="left";
    document.getElementById('albums').style.backgroundPosition="left";
    document.getElementById(type).style.backgroundPosition="right";
}

function changeGenre(obj) {
    var n = obj.selectedIndex;
    if(obj[n].value!=genreId) {
        genreId = obj[n].value;
        loadChart();
    }
}
function changeGenreCat(obj) {
    var n = obj.selectedIndex;
    if(obj[n].value!=genreCat) {
        genreCat = obj[n].value;
        if(genreCat==0) {
            if(displayGenres) {
                var filter = document.getElementById('genreFilter');
                filter.style.display = "none";
                displayGenres = false;
            }
        } else {
            displayGenres = true;
            var filter = document.getElementById('genreFilter');
            new Ajax.Request('/serv/charts?getGenres=' + genreCat, {
                method: 'get',
                onSuccess: function(transport) {
                    filter.innerHTML = transport.responseText;
                
            }			
            });   
            filter.style.display = "block";
        }
        loadChartCat();
    }
    
}
function loadChartCat() {
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?filter=' + filterType + '&genreCat=' + genreCat, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}

function loadChart() {
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?filter=' + filterType + '&genre=' + genreId, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}
function changePage(pageNumber)
{
    pageNo = pageNumber;
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?filter=' + filterType + '&genre=' + genreId + '&pageNo=' + pageNo, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });
}
function extractHash() {
    var hash = window.location.hash;
    if(hash != null && hash.length > 0) {
      hash = hash.substr(1);
      var filters = hash.split("&");
      pageNo = filters[0];
      if(filters.length == 2) {
        filterType = filters[1];
      }
    }
    
}

function loadDefaultChart() {
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?filter=' + filterType + '&genreCat=0&pageNo='+ pageNo, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}

function changePageDefault(pageNo)
{
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?filter=' + filterType + '&genreCat=' + genreCat + '&pageNo=' + pageNo, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });
}

function loadCompetitionChart(id) {
    var chartData = document.getElementById('chartData');
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?viewCompetition=' + id, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}

function loadCompetitionChart(id,div_id) {
    var chartData = document.getElementById(div_id);
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?viewCompetition=' + id, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}

/* new competition js, limits competition entries */
function loadCompetitionChartLimited(id,div_id,limit) {
    var chartData = document.getElementById(div_id);
    chartData.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Generating Charts... Hold On!</span></div>";
    new Ajax.Request('/serv/charts?compLimit=' + limit + '&viewCompetition=' + id, {
        method: 'get',
        onSuccess: function(transport) {
            chartData.innerHTML = transport.responseText;
            
        }			
    });    
}


/* submit general form with validation */
function affiliateConfirmation(url) {
    var answer = confirm("Just a word of warning!\n\nCurrently when you affiliate your self with another label/artist, you will be unable to 'un-affiliate'. \n\nThis should change as soon as we have some more money to pay programmers,\nHowever please make sure this is what you want before you go ahead.");
    if(answer) {
        window.location=url;
    }
}


function setUserAlertPreference(emailType,newTracks) {
    if(document.getElementById("doNotShow").checked == true) {
      new Ajax.Request('/serv/manageAccount?emailType=' + emailType + '&newTracks=' + newTracks, {
          method: 'get',
          onSuccess: function(transport) {
          }
      }); 
    }
}

function checkCommentBoxFormValues(url, window, container) {
      var emailBox = document.getElementById("emailAddressCom");
      var valid = true;
      if(emailBox.value.length == 0 || !validateEmail(emailBox.value)) {
          emailBox.className = 'form_invalidtextboxMedium';
          valid = false;
      } else {
          emailBox.className = 'form_textboxMedium';
      }
      var passBox = document.getElementById("passwordCom");
      if(passBox.value.length == 0) {
          passBox.className = 'form_invalidtextboxMedium';
          valid = false;
      } else {
          passBox.className = 'form_textboxMedium';
      }
      if(valid) {
          openAddCommentWindow(url+'&emailAddressCom='+emailBox.value+'&passwordCom='+passBox.value,window,container);
          //openJoinCompWindow(url+'&emailAddressMain='+emailBox.value+'&passwordMain='+passBox.value,'joinWindow','joinContainer')
      }
}
function openMessagingWindow(serviceUrl,msgWindowName,msgContainerName) {
    //new Effect.Grow('commentWindow', {direction: 'bottom-left', duration: 1.0});
    var msgWindow = document.getElementById(msgWindowName);
    msgWindow.style.display="block";
    var msgDiv = document.getElementById(msgContainerName);
    msgDiv.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Loading.....</span></div>";
    new Ajax.Request(serviceUrl+"&garbage="+Math.random(), {
        method: 'get',
        onSuccess: function(transport) {
            if(transport.responseText.indexOf("callMethod()") != -1)
            {
                changePage();
            }else {
                msgDiv.innerHTML = transport.responseText;
            }
        },
        onError: function(transport) {
            msgDiv.innerHTML = transport;
        }			
    });    
}

function checkPopUpLoginBoxFormValues(url, container, window, emailBoxName, passBoxName) {
      var emailBox = document.getElementById(emailBoxName);
      var valid = true;
      if(emailBox.value.length == 0 || !validateEmail(emailBox.value)) {
          emailBox.className = 'form_invalidtextboxMedium';
          valid = false;
      } else {
          emailBox.className = 'form_textboxMedium';
      }
      var passBox = document.getElementById(passBoxName);
      if(passBox.value.length == 0) {
          passBox.className = 'form_invalidtextboxMedium';
          valid = false;
      } else {
          passBox.className = 'form_textboxMedium';
      }
      if(valid) {
          makeAjaxRequest(url+'&'+emailBoxName+'='+emailBox.value+'&'+passBoxName+'='+passBox.value,window,container);
      }
}
function makeAjaxRequest(serviceUrl,windowName,containerName) {
    //new Effect.Grow('commentWindow', {direction: 'bottom-left', duration: 1.0});
    var window = document.getElementById(windowName);
    window.style.display="block";
    var container = document.getElementById(containerName);
    container.innerHTML = "<div style=\"text-align: center; padding: 20px;\"><img src=\"/resources/gfx/app/ajax_medium.gif\" alt=\"loading\" /><br/><span class=\"darkGreyBoldLarge\">Loading.....</span></div>";
    /*this stuff is to stop IE from caching in the AJAX result*/
    if(serviceUrl.indexOf('?') != -1) {
        serviceUrl = serviceUrl + '&garbage=' + Math.random();
    } else {
        serviceUrl = serviceUrl + '?garbage=' + Math.random();
    }
    new Ajax.Request(serviceUrl, {
        method: 'get',
        onSuccess: function(transport) {
            if(transport.responseText.indexOf("callMethod()") != -1)
            {
                //container.innerHTML = transport.responseText;
                changePage();
                //var port = window.location.port;
                //window.location = 'http://'+window.location.hostname+(port == '80'?'':':'+port)+url;
            }else {
                container.innerHTML = transport.responseText;
            }
        },
        onError: function(transport) {
            container.innerHTML = commentsFailed;
            container.innerHTML += "<div class='mediumGreyButton' style='position:absolute;right:20px;bottom:20px;margin-top:10px;line-height:1em;' onclick='document.getElementById(\""+window+"\").style.display='none';>CLOSE</div>";
        }
    });
}
var friendRequestUrl;
function setFriendRequestUrl(url) {
    friendRequestUrl = url;
}
function changePage() {
    window.location = friendRequestUrl;
}
