﻿
function Language(langName, langIcon, langID, category)
{
	this.name = langName;
	this.icon = langIcon;
	this.languageID = langID;
	this.categoryName = category;
}

function LanguageCategory(name, src, langArr)
{
	this.name = name;
	this.titleSrc = src;
	this.languages = langArr;
}

var langImageFolder = "common/images/languages/";

var languages = new Array();

var langEnglish = new Array();
var langFrench = new Array();
var langSpanish = new Array();
var langBilingual = new Array();

langEnglish.push(new Language("American (US)", "american.png", 4, "English"));
langEnglish.push(new Language("Australian", "australian.png", 3, "English"));
langEnglish.push(new Language("British", "british.png", 2, "English"));
langEnglish.push(new Language("Canadian", "canadian.png", 11, "English"));
//langEnglish.push(new Language("Irish", "irish.png", 6, "English"));

langFrench.push(new Language("Canadian", "canadian.png", 12, "French"));
//langFrench.push(new Language("European", "european.png", 8, "French"));

//langBilingual.push(new Language("English/French (CA)", "canadian.png", 10, "Bilingual"));
//langBilingual.push(new Language("English/French (EU)", "european.png", 9, "Bilingual"));
langBilingual.push(new Language("English/Spanish", "spanish.png", 1, "Bilingual"));

languages.push(new LanguageCategory("English", "lang_english.png", langEnglish));
languages.push(new LanguageCategory("French", "lang_french.png", langFrench));
languages.push(new LanguageCategory("Spanish", "lang_spanish.png", langSpanish));
languages.push(new LanguageCategory("Bilingual", "lang_bilingual.png", langBilingual));

var maleVoices;
var femaleVoices;

var currentLanguage = 0;
var currentLanguageID = 0;
var prevLanguageID = 0;
var currentLanguageName = "";
var prevLanguage;

var languageHolder;
var voiceHolder;

var selectedVoiceID = 0;

var currentCategoryName = "";


function startVoiceMusic()
{
	maleVoices = new SampleHolder();
    femaleVoices = new SampleHolder();
    
    //first get voice language selection
    
    /*
    var packet = getPacket("VoiceTalents", "GetLanguages");
    
    com(packet, onLanguages);
    */
    
    renderLanguages();

}

function displayVoice(voiceName, css)
{
    
   
    
    var packet = getPacket("Productions", "UpdateVoice");
    
    var param = new Object();
    param.ProductionID = production.ProductionID;
    param.VoiceTalentID = Number(production.Voice.VoiceTalentID);
    
    packet.Param = param;
    
    com(packet, onSaveVoice);
    

}



function onSaveVoice(data)
{
    
    //default does nothing

}


function displayMusic(music)
{
    
    var packet = getPacket("Productions", "UpdateMusic");
    
    var param = new Object();
    param.ProductionID = production.ProductionID;
    param.MusicName = clean(production.MusicTrack.MusicName);
    
    packet.Param = param;
    
    com(packet, onMusicSave);
    
    //$(".musicName").html(production.MusicTrack.GetName());
    

}

function onMusicSave(data)
{
    //default does nothing
    
}


function renderLanguages()
{


	currentPlayID = "";
	$(languageHolder).empty();
	


	for(var i=0; i < languages.length; i++)
	{
		//render the language category
		var category = languages[i];
		
		if (category.languages.length > 0)
		{
		
		var str = "";
		var langBox = document.createElement("div");
		langBox.className = "languageBox";
		
			var langBoxTitle = document.createElement("div");
			langBoxTitle.className = "languageBoxTitle";
			
			$(langBoxTitle).html("<img src='"+langImageFolder+category.titleSrc+"' />");
			
		langBox.appendChild(langBoxTitle);
		
		var langHolder = document.createElement("div");
		langHolder.className = "languageRowHolder";
		
		for(var k=0; k < category.languages.length; k++)
		{
			var lang = category.languages[k];
			
			var langRow = document.createElement("div");
			langRow.className = "languageRow";
			
				var langImgHolder = document.createElement("div");
				langImgHolder.className = "languageImgHolder";
				
					var langImg = new Image();
					langImg.src = langImageFolder+lang.icon;
					
				langImgHolder.appendChild(langImg);
			langRow.appendChild(langImgHolder);
			
				var langTitleHolder = document.createElement("div");
				langTitleHolder.className = "languageTitleHolder";
				
				$(langTitleHolder).html("<a id='language_"+lang.languageID+"' class='languageOut' href='javascript:selectLanguage("+lang.languageID+", \""+lang.name+"\", \""+lang.categoryName+"\");'>"+lang.name+"</a>");
				//str += lang.languageID+", ";
			langRow.appendChild(langTitleHolder);
			
			langHolder.appendChild(langRow);	

		}
		
		//alert(str);
		langBox.appendChild(langHolder);	
		

		$(languageHolder).append(langBox);
		

		}
		
		
	}
	

	
	selectLanguage(langEnglish[0].languageID, langEnglish[0].name, langEnglish[0].categoryName);
	

}

/*
function onLanguages(data)
{
	currentPlayID = "";
    languages = data;
    $(languageHolder).empty();
    for(var i=0; i < languages.length; i++)
    {
        $(languageHolder).append(renderLanguage(languages[i].LanguageID, languages[i].Name, i));
    }
    
    if (languages.length > 0)
    {
        //document.getElementById("language_"+currentLanguage).className = "languageOver";
        //get the first list of voice talents from
        //the first language
        
        getVoices();
        
        
    }

}
*/

/*
function setVoice(voiceID, voiceName)
{
    
    changed = true;
    production.Voice = new VoiceTalent();
    production.Voice.VoiceName = voiceName;
    production.Voice.VoiceTalentID = Number(voiceID);
    
    displayVoice(voiceName, "name");
    
    popupClose();

}

function selectMusic()
{
    popup("app/musicBox.html", "Select_Snap_Music", 521, 412, false, false);

}

function setMusic(musicName)
{
    changed = true;
    production.MusicTrack = new Music();
    production.MusicTrack.MusicName = musicName;
    
    //$(".musicName").html(production.MusicTrack.GetName());
    displayMusic(production.MusicTrack.GetName(), "name");
    
    popupClose();

}
*/
//done by flash
function SelectMusic(musicName, code)
{

	changed = true;
	production.MusicTrack = new Music();
	production.MusicTrack.MusicName = undoFlashEscape(musicName);
  
	//$(".musicName").html(production.MusicTrack.GetName());
	

	//$(".saveMusic").css("display", "inline");
	
	displayMusic(production.MusicTrack.GetName(), "name");
	
	closeContent();

}

function cleanup()
{
	$("#musicPlayer").remove();
}

function cancelMusic()
{
	closeContent();
}

function openMusic()
{
	var holder = create("div");
	var soundBox = create("div");
	soundBox.id = "soundBox";
	
	holder.appendChild(soundBox);
	
	var commands = create("div", "commands");
	$(commands).css("width", 500);
			var comStart = create("a", "musicCommand");
			comStart.href = "javascript:cancelMusic();";
			comStart.innerHTML = "<img src='app/content/images/cancel.png' />";
		commands.appendChild(comStart);
	holder.appendChild(commands);
	
	var so = new SWFObject("common/media/ic_player_main11_vmpro.swf", "musicPlayer", "511", "410", "7", "#ffffff", "", "", "Snap.aspx?page=Flash"); // this line is optional, but this example uses the variable and displays this text inside the flash movie
	so.addVariable("pathPrefix", "http://"+location.hostname+"/audioSamples2653/");
	so.addVariable("serverScript", "http://www.ivescreative.com/library/getData.aspx");
	
	so.addParam("scale", "noscale");
	so.addParam("salign", "lt");
	
	popupContent(holder, "Music Library", 20, getMusicSettings());
	
	so.write("soundBox");

}

function selectTalent()
{
	var vtID = "";
	var vtName = "";
    var radios = $("[name=voicetalent]");
    for(var i=0; i < radios.length; i++)
    {
        if ($(radios[i]).attr("checked"))
        {
            vtID = $(radios[i]).next().val();
            vtName = $(radios[i]).next().next().val();
        }
    }
    
    if (vtID == "")
    {
		alert("Please choose a voice talent.");
    }
    else
    {
		changed = true;
		production.Voice = new VoiceTalent();
		production.Voice.VoiceName = vtName;
		production.Voice.VoiceTalentID = Number(vtID);

		displayVoice(vtName, "name");
		
		closeContent();
		
    }

}
function selectVoice()
{
   
    
    var holder = create("div");
    
    var vt = create("div", "voices");
		voiceHolder = create("div", "voicesHolder");
	
	vt.appendChild(voiceHolder);
		
		var commands = create("div", "commands");
			var comStart = create("a");
			comStart.href = "javascript:selectTalent();";
			comStart.innerHTML = "<img src='app/content/images/save.png' />";
		commands.appendChild(comStart);
	vt.appendChild(commands);
	
	holder.appendChild(vt);
	
		var vtLang = create("div", "vtLanguage");
			var langTitle = create("div", "languageTitle");
			langTitle.innerHTML = "<img src='app/content/images/voice/language.png' />";
		vtLang.appendChild(langTitle);

			var dots = create("div", "dots");
			dots.innerHTML = "<img src='app/content/images/voice/language_dots.png' />";
		vtLang.appendChild(dots);

			languageHolder = create("div", "languageSelect");
		vtLang.appendChild(languageHolder);
	holder.appendChild(vtLang);
    
    if (production.Voice != null)
    {
		selectedVoiceID = production.Voice.VoiceTalentID;
	}
    
   
	
	
	popupContent(holder, "Voice Talent Library", 20, getVoicesSettings());
	
	 startVoiceMusic();
    
}


function getVoices()
{
    maleVoices.clear();
    femaleVoices.clear();

    $(voiceHolder).empty();
    $(voiceHolder).css("height", 400);
    
  
    var mpacket = getPacket("VoiceTalents", "GetVoices");
    
    var mp = new Object();
    mp.LanguageID = currentLanguageID;
    mp.Gender = "F";
    mpacket.Param = mp;
    
    com(mpacket, onFemaleVoices);
    
    
   

}

function renderMaleVoices()
{
	currentPlayID = "";
	$(voiceHolder).empty();
	$(voiceHolder).append(renderVTHolder(maleVoices, currentLanguageName, true));
    maleVoices.writeSample();
}

function renderFemaleVoices()
{
	currentPlayID = "";
	$(voiceHolder).empty();
	$(voiceHolder).append(renderVTHolder(femaleVoices, currentLanguageName, false));
    femaleVoices.writeSample();
}

function onMaleVoices(data)
{
	
    //$(voiceHolder).css("height", "inherit");
     //get female voices
   
    
    
    for(var i=0; i < data.length; i++)
    {
        var s = new Sample(Number(data[i].VoiceTalentID), data[i].VoiceName, data[i].File, (Number(data[i].VoiceTalentID) == Number(selectedVoiceID)));
        maleVoices.addSample(s);
    }   
    
    //renderMaleVoices();
    
}

function onFemaleVoices(data)
{
	 var fpacket = getPacket("VoiceTalents", "GetVoices");
    
    var fp = new Object();
    
    fp.LanguageID = currentLanguageID;
    fp.Gender = "M";
    fpacket.Param = fp;
    
    com(fpacket, onMaleVoices);
    
    for(var i=0; i < data.length; i++)
    {
        var s = new Sample(data[i].VoiceTalentID, data[i].VoiceName, data[i].File, (data[i].VoiceTalentID == selectedVoiceID));
        femaleVoices.addSample(s);
    }   
    
    renderFemaleVoices();
    
}


function selectLanguage(langID, name, category)
{
    
    //prevLanguage = currentLanguage;
    //currentLanguage = index;
    prevLanguageID = currentLanguageID;
    currentLanguageID = langID;
    currentLanguageName = name;
    currentCategoryName = "";
    getVoices();
    
    if (prevLanguageID > 0)
    {
        document.getElementById("language_"+prevLanguageID).className = "languageOut";

    }
   
    document.getElementById("language_"+currentLanguageID).className = "languageOver";

}

function renderLanguage(id, name, index)
{

	var css = "languageOut";
	if (index == 0)
	{
		css = "languageOver";
	}
    var lang = create("div", "language");
        var link = create("a", css);
        link.href = "javascript:selectLanguage("+index+");";
        link.id = "language_"+index;
        link.innerHTML = name;
    lang.appendChild(link);
    
    return lang;    
    
                    

}

function renderVTHolder(sHolder, title, male)
{
   
   var genderAppend = "male";
   if (!male)
   {
	genderAppend = "female";
   }
   
    var vtHolder = create("div", "vtHolder");
        var vtHeader = create("div", "vtHeader_"+genderAppend);
            var vtTitle = create("div", "vtTitle");
				var vtTitleMale = create("div", "vtTitleMale");
					
					//these have been switched somehow
					//male is female and female is male
						var maleLink = create("a");
						
						if (!male)
						{
							
							maleLink.className = "maleActive";
						}
						else 
						{
							maleLink.className = "maleInactive";
						}
						maleLink.innerHTML = title+" "+currentCategoryName+" <span>(female)</span>";
						maleLink.href = "javascript:renderFemaleVoices();";
					vtTitleMale.appendChild(maleLink);
			
			vtTitle.appendChild(vtTitleMale);
				var vtTitleFemale = create("div", "vtTitleFemale");
				
					var femaleLink = create("a");
					if (!male)
					{
						
						femaleLink.className = "femaleInactive";
						
					}
					else 
					{
						
						femaleLink.className = "femaleActive";
					
					}
					femaleLink.innerHTML = title+" "+currentCategoryName+" <span>(male)</span>";
					femaleLink.href = "javascript:renderMaleVoices();";
				vtTitleFemale.appendChild(femaleLink);
			vtTitle.appendChild(vtTitleFemale);
        vtHeader.appendChild(vtTitle);
    vtHolder.appendChild(vtHeader);
        
        var vtBodyBG = create("div", "vtBodyBG");
            var vtBody = create("div", "vtBody");
                var vtBodyOuter = create("div", "vtBodyOuter");
                    var vtBodyInner = create("div", "vtBodyInner");
                        var vtCol = create("div", "vtCol");
                        
                           var vtLeft = create("div", "vtLeft");
                           var vtRight = create("div", "vtRight");
                           
                           sHolder.renderCols(vtLeft, vtRight);
                           
                           
                        vtCol.appendChild(vtLeft);
                        vtCol.appendChild(vtRight);
                    vtBodyInner.appendChild(vtCol);
                vtBodyOuter.appendChild(vtBodyInner);
            vtBody.appendChild(vtBodyOuter);
        vtBodyBG.appendChild(vtBody);
    vtHolder.appendChild(vtBodyBG);
                
    return vtHolder;
}


