/* Compiled by XC 1.07 on 02Apr09 */
var http_request=false;function asyncSaveProject(isQuiet){var pJson=getProjectAsJson();var callback=isQuiet?doNothing:displayServerResponseToSaveCmd;var keyProj=getProjectKey(pJson);var postStr="k="+keyProj+"&c="+encodeURI(pJson);makePOSTRequest('save.php',postStr,callback);}function asyncStitchProject(isQuiet){var pJson=getProjectAsJson();var keyProj=getProjectKey(pJson);var callback=isQuiet?doNothing:displayServerResponseToStitchCmd;var normedProjectJson=getNormalizedProjectAsJson();var postStr="k="+keyProj+"&c="+encodeURI(normedProjectJson);makePOSTRequest('stitch.php',postStr,callback);}function asyncSubmitProject(isQuiet){var e;var callback=isQuiet?doNothing:displayServerResponseToSubmitCmd;var submitter=(e=document.getElementById('subSubmitterTxt'))==null?"":encodeURI(e.value);var title=(e=document.getElementById('subTitleTxt'))==null?"":encodeURI(e.value);var comment=(e=document.getElementById('subCommentTxt'))==null?"":encodeURI(e.value);var keyProj=(e=document.getElementById('keyProj'))==null?"":encodeURI(e.value);var postStr="s="+submitter+"&t="+title+"&c="+comment+"&k="+keyProj;makePOSTRequest('submissionSave.php',postStr,callback);}function displayServerResponseToSaveCmd(){if(http_request.readyState==4){if(http_request.status==200){var keyProj=http_request.responseText;var message="Your project has been saved at:<br/><b>http://carnatic-composer.com/index.php?k="+keyProj+"</b><br/>"+"You can bookmark the above URL for later, or share it with your friends.<br/>"+"We have saved it permanently!";fadeInMsg('topStatus',message);}else{alert('Project save request failed. We will look into this. Sorry!');}}}function displayServerResponseToStitchCmd(){if(http_request.readyState==4){if(http_request.status==200){var resp=http_request.responseText.replace(/[\r\n\s]/g,"");processStitchResponse(resp);}else{alert('Project stitch request failed. We will look into this. Sorry!');}}}function displayServerResponseToSubmitCmd(){if(http_request.readyState==4){if(http_request.status==200){var resp=http_request.responseText.replace(/[\r\n\s]/g,"");eval(resp);clearKeyProjFromCookie(_resp.keyProj);var msg="Thank you for submitting. You can see your entry at:<br>"+"<a href='submissions.php'>http://carnatic-composer.com/submissons.php</a>";opener.fadeInMsg('topStatus',msg);}else{alert('Mp3 submit request failed.  Sorry.  We will look into this.');}self.close();}}function processStitchResponse(resp){eval(resp);var keyProj=_resp.keyProj;var linkUrl="mp3.php?k="+keyProj;var dispUrl="http://carnatic-composer.com/mp3.php?k="+keyProj;if(_resp.status=="empty"){fadeInMsg('topStatus',"Sorry! There's nuttin to stitch<br/>in an empty project or selection");}else if(_resp.status=="exists"){var msg="Your project has been stitched into a nice MP3<br/>"+"You can download it from the following URL:<br/>"+"<b><a href='"+linkUrl+"'>"+dispUrl+"</a></b>";if(_resp.isSubmittable&&isOwn(keyProj)){var onSubmitFunc="popupSubmissionForm('"+keyProj+"');";msg+="<br/><br/><strong>Consider <a href='#' onClick="+onSubmitFunc+">submitting</a> it</strong>";}fadeInMsg('topStatus',msg);}else if(_resp.status=="error"){fadeInMsg('topStatus',"Sorry! There's was an internal Er%#@r!<br/>Rest assured we're lookin into it!");}else if(_resp.status=="failed"){fadeInMsg('topStatus',"Sorry! For some reason this stitch failed<br/>We'll look into it.");}else if(_resp.status=="pending"){msg="Your job's current position in the queue is "+_resp.pos+".<br/>"+"When it ready, you can get it at:<br/>"+"<b><a href='"+linkUrl+"'>"+dispUrl+"</a></b>";fadeInMsg('topStatus',msg);}else if(_resp.status=="enqueued"){var msg="Your project has been submitted for stitching.<br/>"+"It's current queue position is "+_resp.pos+".<br/>"+"When it is ready, you can get it at:<br/>"+"<b><a href='"+linkUrl+"'>"+dispUrl+"</a></b>";if(isOwn(keyProj)){msg+="<br/><br/><strong>Consider <a href='#' onClick="+onSubmitFunc+">submitting</a> it</strong>";}fadeInMsg('topStatus',msg);setOwnership(keyProj);}}function getProjectAsJson(){var e;var e=document.getElementById("tracks");if(e==null)return e;var ragaNum=document.getElementById("mela").selectedIndex;var beatLen=document.getElementById("beatLenText").value;var pJson='{"raga":'+ragaNum+','+'"beatLen":'+beatLen+',';pJson+='"tracks":[';var s="";for(e=e.firstChild;e!=null;e=e.nextSibling){if(e.id==null)continue;var txtId=e.id.replace("t_","n_");var voiceMenuId=e.id.replace("t_","v_");var textArea=document.getElementById(txtId);var voiceMenu=document.getElementById(voiceMenuId);if(textArea==null||voiceMenu==null)continue;var notes=textArea.value;var voice=voiceMenu.selectedIndex;var track=textArea.value.replace(/'/g,"\\'").replace(/"/g,'\\"');var voice=voiceMenu.options[voiceMenu.selectedIndex].value;s+='{"voice":"'+voice+'",'+'"track":"'+track+'"}';if(e.nextSibling!=null)s+=',';}if(s=="")alert("Well I'm going to save it for you anyway, but you got nothing here! Nothing!");pJson+=s+"]}";return pJson;}function getNormalizedProjectAsJson(){processAllTracks();var ragaNum=document.getElementById("mela").selectedIndex;var beatLen=document.getElementById("beatLenText").value;var normedProjectJson='{"raga":'+ragaNum+','+'"beatLen":'+beatLen+',';normedProjectJson+='"tracks":[';var s="";for(var i=0;i<NotesByTrack.length;i++){var track=NotesByTrack[i];s+='"'+track.join(' ')+'"';if(i<NotesByTrack.length-1)s+=',';}if(s=="")alert("Well I'm going to save it for you anyway, but you got nothing here! Nothing!");normedProjectJson+=s+"]}";return normedProjectJson;}function popupSubmissionForm(keyProj){var windowOpts="width=400,height=150,scrollbars=no,toolbar=no,resizeable=no,status=no,menubar=no,locationbar=no";windowOpts+="left=900,top=200,screenX=900,screenY=200";var url="submissionForm.php?k="+keyProj;window.open(url,"submitWin",windowOpts);asyncSaveProject(false);}function makePOSTRequest(url,params,onResponse){http_request=false;if(window.XMLHttpRequest){http_request=new XMLHttpRequest();if(http_request.overrideMimeType)http_request.overrideMimeType('text/html');}else if(window.ActiveXObject){try{http_request=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{http_request=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}}if(!http_request){alert('Cannot start async comm channel with server');return false;}http_request.onreadystatechange=onResponse;http_request.open('POST',url,true);http_request.setRequestHeader("Content-type","application/x-www-form-urlencoded");http_request.setRequestHeader("Content-length",params.length);http_request.setRequestHeader("Connection","close");http_request.send(params);}function getProjectKey(pJson){return md5(pJson.toLowerCase().replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[ \t]+/g," "));}function isOwn(keyProj){var ownProjCsv=getCookie('cc_projects');if(ownProjCsv==null||ownProjCsv=="")return false;var ownProjArr=ownProjCsv.split(",");for(var i=0;i<ownProjArr.length;i++){if(ownProjArr[i]==keyProj)return true;}return false;}function setOwnership(keyProj){var ownProjCsv=getCookie('cc_projects');if(ownProjCsv==null)ownProjCsv="";var ownProjArr=ownProjCsv.split(",");for(var i=0;i<ownProjArr.length;i++){if(ownProjArr[i]==keyProj)return;}ownProjArr.push(keyProj);ownProjCsv=ownProjArr.join(',');setCookie('cc_projects',ownProjCsv,365);}function clearKeyProjFromCookie(keyProj){var newProjArr=new Array();var ownProjCsv=getCookie('cc_projects');if(ownProjCsv==null)ownProjCsv="";var ownProjArr=ownProjCsv.split(",");for(var i=0;i<ownProjArr.length;i++){if(ownProjArr[i]!=keyProj)newProjArr.push(ownProjArr[i]);}newProjCsv=newProjArr.join(',');setCookie('cc_projects',newProjCsv,365);}function doNothing(){}var NowPlaying=false;var StopPlaying=false;var MinOctave=2;var MaxOctave=5;var DefaultMiddleOctave=3;function PlayButton(id,classNormal,classHover,text){this.id=id;this.classNormal=classNormal;this.classHover=classHover;this.text=text;}var PlayButtons=new Array();PlayButtons['playAllBtn']=new PlayButton('playAllBtn','playAllBtn','playAllBtnHover','Play All Tracks');function Voice(name,isEnabled){this.name=name;this.isEnabled=isEnabled;}var Voices=new Array(new Voice("Violin",true),new Voice("Flute",true),new Voice("Horn",true),new Voice("Organ",false),new Voice("Bassoon",false),new Voice("Bell",false));var NotesByTrack=[];var Ragas=new Array("Kanakangi","Ratnangi","Ganamurthi","Vanaspathi","Manavathi","Tanarupi","Senavathi","Hanumathodi","Dhenuka","Natakapriya","Kokilapriya","Rupavati","Gayakapriya","Vakulabharanam","Mayamalavagowla","Chakravakam","Suryakantam","Hatakambari","Jhankaradhvani","Nathabhairavi","Kiravani","Kharaharapriya","Gaurimanohari","Varunapriya","Mararanjani","Charukesi","Sarasangi","Harikhamboji","Dhirashankarabaranam","Naganandini","Yagapriya","Ragavardhani","Gangeyabushani","Vagadhisvari","Sulini","Chalanata","Salagam","Jalarnavam","Dhavalambari","Jhalavaiali","Navanitam","Pavani","Raghupriya","Gavambodhi","Bhavapriya","Subhapantuvarali","Shadvidhamargini","Suvarnangi","Divyamani","Namanarayani","Kamavardhani","Ramapriya","Gamanasrama","Visvambhari","Syamalangi","Shanmukapriya","Simhendramadhyamam","Hemavathi","Dharmavathi","Nitimati","Kantamani","Rishabapriya","Latangi","Vachaspathi","Mechakalyani","Chitrambari","Sucharitra","Jyotisvarupini","Dhatuvardhani","Nasikabhushani","Kosalam","Rasikapriya");function setScale(ragaNum){q=Math.floor(ragaNum/6)%6;r=ragaNum%6;var sa="C";var pa="G";var ma=(ragaNum<36?"F":"F#");var ri=(q==5?"D#":(q<3?"C#":"D"));var da=(r==5?"A#":(r<3?"G#":"A"));var ga=(q==0?"D":(q==1||q==3)?"D#":"E");var ni=(r==0?"A":(r==1||r==3)?"A#":"B");var pianoKeys=new Array(sa,ri,ga,ma,pa,da,ni);if(document.getElementById("pianoKeys"))document.getElementById("pianoKeys").innerHTML=pianoKeys;var menu=document.getElementById("mela");menu.options[ragaNum].selected=true;}function translateToPianoKey(svaraAndRaga){var sr=svaraAndRaga.split(/:/);if(sr.length<=1)return svaraAndRaga;var svara=sr[0];var ragaNum=sr[1];document.getElementById("mela").options[ragaNum].selected=true;q=Math.floor(ragaNum/6)%6;r=ragaNum%6;if(svara=='S')return"C";if(svara=='P')return"G";if(svara=='M')return(ragaNum<36?"F":"F#");if(svara=='R')return(q==5?"D#":(q<3?"C#":"D"));if(svara=='D')return(r==5?"A#":(r<3?"G#":"A"));if(svara=='G')return(q==0?"D":(q==1||q==3)?"D#":"E");if(svara=='N')return(r==0?"A":(r==1||r==3)?"A#":"B");if(svara=='-'||svara=='.')return"-";return svara;}function endPlay(){NowPlaying=false;clearDiv('topStatus');restoreBtnPlayAll();}function playNextNoteInTrack(n){var key,oct,voice,len;var note;if(StopPlaying)NotesByTrack=[];if(NotesByTrack.length==0||(note=NotesByTrack[n].shift())==null){endPlay();return;}var millisPerBeatPct;var millisPerBeat=200;var e=document.getElementById("beatLenText");if(e!=null&&(millisPerBeatPct=e.value))millisPerBeat=millisPerBeatPct*20;if(millisPerBeat<10||millisPerBeat>2000)millisPerBeat=200;var a=note.split(/_/);if(a.length>=4){dur=a[1]*millisPerBeat;oct=a[2];voice=a[3];var pianoKey=translateToPianoKey(a[0]);}else{alert("Don't know how to play the note: "+note);return;}if(oct<MinOctave||oct>MaxOctave){alert('Octave out of range. Gotta stop, sorry!');endPlay();return;}var soundId=pianoKey=="-"?"-":pianoKey.replace("#","S")+"_"+oct+"_"+voice;soundManager.play(soundId);if(a.length==5&&a[4]=="!"){var stopFunc="soundManager.stop('"+soundId+"')";setTimeout(stopFunc,dur);}var nextCall="playNextNoteInTrack("+n+")";setTimeout(nextCall,dur);}function processAllTracks(){var e=document.getElementById("tracks");if(e==null)return;NotesByTrack=[];for(e=e.firstChild;e!=null;e=e.nextSibling){processTrackByDomElement(e);}}function processTrackByDomElement(e){if(e==null||e.id==null)return;var inComment=false;var isOn=true;var newPhrase=true;var octave=DefaultMiddleOctave;var trackId=e.id;var nId=trackId.replace("t_","n_");var vId=trackId.replace("t_","v_");var voiceMenu=document.getElementById(vId);var textArea=document.getElementById(nId);var voice=voiceMenu.options[voiceMenu.selectedIndex].value;var s="";val=textArea.value;var sel=getSelection(textArea);if(sel==null||sel.start==sel.end){s=val;}else{s="- (ON=0) "+val.substring(0,sel.start)+" (ON=1) "+val.substring(sel.start,sel.end)+" (ON=0) "+val.substring(sel.end,val.length);}s=s.toUpperCase().replace(/([-<>])/g,"  $1 ").replace(/([SRGMPDN,])\s+,/g,"$1,").replace(/([SRGMPDN,])\s+,/g,"$1,").replace(/;/g," ; ").replace(/[\s\n\r]*$/g,"");var toks=s.split(/[\s\n\r]+/);var ragaNum=document.getElementById("mela").selectedIndex;NotesByTrack.push(new Array());var prevNote="";var prevOctave=-1;for(var i=0;i<toks.length;i++){var tok=toks[i];if(toks.length==0)continue;if(inComment){if(tok=='*/')inComment=false;continue;}if(!inComment&&tok=='/*'){inComment=true;continue;}var firstChar=tok.substr(0,1);var lastChar=tok.substr(tok.length-1,1);if(tok.substr(0,6)=="?RAGA="||tok.substr(0,6)=="(RAGA:"){var ragaSpec=tok.substr(6).replace(")","");var n=getRagaNumFromDirective(ragaSpec);if(n>0){setScale(n);ragaNum=n;}else{alert("Ignoring unknown raga specification: "+ragaSpec);}continue;}if(tok.substr(0,8)=="?LENGTH="||tok.substr(0,8)=="(LENGTH:"){var beatLen=tok.substr(8).replace(")","");if(beatLen>=5&&beatLen<=100){document.getElementById('beatLenSlider').style.left=beatLen+"px";document.getElementById('beatLenText').value=beatLen;}else{alert("Ignoring unknown note length specification: "+tok);}continue;}if(tok=="(ON=0)"){isOn=false;continue;}if(tok=="(ON=1)"){isOn=true;continue;}if(firstChar=="<"){octave-=tok.length;if(octave<MinOctave){alert("Octave out of bounds when processing "+tok);return;}continue;}if(firstChar==">"){if(tok.length>1&&tok.match(/^>[0-9]$/))octave=parseInt(tok.substr(1));else octave+=tok.length;if(octave<MinOctave||octave>MaxOctave){alert("Octave out of bounds when processing "+tok);return;}continue;}if(tok.substr(0,8)=="?OCTAVE="||tok.substr(0,8)=="(OCTAVE:"){var octStr=tok.substr(8).replace("(","");var oct=parseInt(octStr);if(oct!=null&&oct>=MinOctave&&oct<=MaxOctave){octave=oct;}else{alert("Ignoring illegal octave specification: "+tok);}continue;}if(firstChar==";"){newPhrase=true;octave=DefaultMiddleOctave;prevNote="";continue;}var dampener="";if(lastChar=="!"){dampener="_!";tok=tok.substr(0,tok.length-1);}if(!newPhrase&&prevNote!=""&&prevOctave>0&&octave==prevOctave){if((prevNote=='D'||prevNote=='N')&&(firstChar=='S'||firstChar=='R'))octave=prevOctave+1;if((prevNote=='S'||prevNote=='R')&&(firstChar=='N'||firstChar=='D'))octave=prevOctave-1;}newPhrase=false;prevOctave=octave;prevNote=firstChar;if(!isOn)continue;var f=(firstChar==':')?tok.substr(1)+"_"+octave+"_"+voice+dampener:firstChar+":"+ragaNum+"_"+tok.length+"_"+octave+"_"+voice+dampener;NotesByTrack[NotesByTrack.length-1].push(f);}}function getContentsAllTracks(){var e=document.getElementById("tracks");var contentsAllTracks=new Array();for(e=e.firstChild;e!=null;e=e.nextSibling){if(e.id==null)continue;var txtId=e.id.replace("t_","n_");var voiceMenuId=e.id.replace("t_","v_");var textArea=document.getElementById(txtId);var voiceMenu=document.getElementById(voiceMenuId);if(textArea==null||voiceMenu==null)continue;var notes=textArea.value;var voice=voiceMenu.selectedIndex;contentsAllTracks.push({"voice":voice,"notes":notes});}return contentsAllTracks;}function restoreContentsAllTracks(contentsAllTracks){var e=document.getElementById("tracks");if(contentsAllTracks==null||!contentsAllTracks.length||e==null)return;for(e=e.firstChild;e!=null;e=e.nextSibling){if(e.id==null)continue;var txtId=e.id.replace("t_","n_");var voiceMenuId=e.id.replace("t_","v_");var textArea=document.getElementById(txtId);var voiceMenu=document.getElementById(voiceMenuId);if(textArea==null||voiceMenu==null)continue;var obj=contentsAllTracks.shift();if(obj==null)continue;textArea.value=obj.notes;voiceMenu.selectedIndex=obj.voice;}}function getRagaNumFromDirective(ragaSpec){var ragaNum=-1;if(ragaSpec.match(/^[0-9]/)){ragaNum=parseInt(ragaSpec.substr(0))-1;}else{for(var i=0;i<Ragas.length;i++){if(ragaSpec==Ragas[i].substr(0,ragaSpec.length).toUpperCase())ragaNum=i;}}return ragaNum;}function setRaga(){var menu=document.getElementById("mela");var ndx=menu.selectedIndex;var s=menu.options[ndx].value;setScale(ndx);}function onMouseOverBtn(btnId){var e=document.getElementById(btnId);if(e==null)return;if(PlayButtons[btnId]==null)return;e.className=PlayButtons[btnId].classHover;e.innerHTML=PlayButtons[btnId].text;}function onMouseOutBtn(btnId){var e=document.getElementById(btnId);if(e==null)return;if(PlayButtons[btnId]==null)return;e.className=PlayButtons[btnId].classNormal;e.innerHTML=PlayButtons[btnId].text;}function switchBtnPlayAllToStopAll(){PlayButtons['playAllBtn']=new PlayButton('playAllBtn','stopBtn','stopBtnHover','Stop Playing');onMouseOutBtn('playAllBtn');}function restoreBtnPlayAll(){PlayButtons['playAllBtn']=new PlayButton('playAllBtn','playAllBtn','playAllBtnHover','Play All Tracks');var btn=document.getElementById('playAllBtn');onMouseOutBtn('playAllBtn');}function onClickPlayAllBtn(){if(NowPlaying){StopPlaying=true;return;}NotesByTrack=[];processAllTracks();switchBtnPlayAllToStopAll();NowPlaying=true;StopPlaying=false;for(var n=0;n<NotesByTrack.length;n++){var playFunc="playNextNoteInTrack("+n+");";setTimeout(playFunc,10);}}function onClickPlayTrackBtn(trackId){var e=document.getElementById(trackId);if(!e)return;if(NowPlaying){fadeInMsg('topStatus',"A tune is currently playing (perhaps it's playing a pause?)<br/>Wait for it to finish");return;}NotesByTrack=[];Timers=[];processTrackByDomElement(e);switchBtnPlayAllToStopAll();NowPlaying=true;StopPlaying=false;setTimeout("playNextNoteInTrack(0)",0);}function addTrack(){var e=document.getElementById("tracks");var tm=new Date().getTime();var rand=Math.floor(100*Math.random());var suffix=tm+"_"+rand;var btnId="b_"+suffix;var suffixQuoted="'"+suffix+"'";var btnIdQuoted="'"+btnId+"'";var trackIdQuoted="'t_"+suffix+"'";var voiceIdQuoted="'v_"+suffix+"'";var textIdQuoted="'n_"+suffix+"'";if(!e)return null;var contentsAllTracks=getContentsAllTracks();var addStr='<a href="#" onClick="addTrack();">+ Add another track</a>';var remStr='<a href="#" onClick="removeTrackById('+trackIdQuoted+');">- Remove this track</a>';PlayButtons[btnId]=new PlayButton(btnId,'playTrkBtn','playTrkBtnHover','Play Track');var s='<div id='+trackIdQuoted+' style="border:1px solid red; width:748px;">'+'<table>'+'<tr>'+'<td style="text-align:left;"> Instrument: '+getVoiceSelectionMenuHtml(voiceIdQuoted)+'</td>'+'<td style="text-align:right;">'+'<button class="playTrkBtn" type="button" id='+btnIdQuoted+'onClick="onClickPlayTrackBtn('+trackIdQuoted+');"'+' onMouseOver="onMouseOverBtn('+btnIdQuoted+');" onMouseOut="onMouseOutBtn('+btnIdQuoted+');">Play Track</button>'+'</td>'+'</tr> '+'<tr>'+'<td colspan=2> <textarea id='+textIdQuoted+' class="notes" rows="12" wrap="on" onMouseUp="onMouseUpTextArea('+suffixQuoted+');"></textarea></td>'+'</tr>'+'<tr>'+'<td style="text-align:left; font-size:75%; color:black;">'+addStr+'</td>'+'<td style="text-align:right; font-size:75%; color:black;">'+remStr+'</td>'+'</tr>'+'</table>'+'</div>';e.innerHTML+=s;restoreContentsAllTracks(contentsAllTracks);return suffix;}function onMouseUpTextArea(suffix){var btnId="b_"+suffix;var txt=document.getElementById("n_"+suffix);var stitchE=document.getElementById("stitchLink");if(txt==null)return;var sel=getSelection(txt);if(sel==null||sel.start==sel.end){PlayButtons[btnId]=new PlayButton(btnId,'playTrkBtn','playTrkBtnHover','Play Track');if(stitchE!=null){stitchE.innerHTML="Stitch Project";stitchE.style.color="";}}else{PlayButtons[btnId]=new PlayButton(btnId,'playSelBtn','playSelBtnHover','Play Selection');if(stitchE!=null){stitchE.innerHTML="Stitch Selection";stitchE.style.color="gold";}}onMouseOutBtn(btnId);}function getVoiceSelectionMenuHtml(voiceId){var s='<select class="dropDown" id='+voiceId+' size="1">';for(var i=0;i<Voices.length;i++){if(Voices[i].isEnabled)s+='<option value="'+Voices[i].name+'">'+Voices[i].name+'</option>';}s+='</select>';return s;}function getRagaSelectionMenuHtml(){var s='<select class="dropDown" id="mela" size="1" onChange="setRaga();">';for(var i=0;i<Ragas.length;i++){s+='<option>'+Ragas[i]+'</option>';}s+='</select>';return s;}function removeTrackById(trackId){var e=document.getElementById("tracks");var btnId=trackId.replace("t_","b_");PlayButtons[btnId]=null;var trackDiv=document.getElementById(trackId);if(trackDiv)e.removeChild(trackDiv);}function removeAllTracks(){var tracksDiv=document.getElementById("tracks");if(tracksDiv!=null){for(var e=tracksDiv.firstChild;e!=null;e=tracksDiv.firstChild){tracksDiv.removeChild(e);if(e.id==null)continue;var btnId=e.id.replace("t_","b_");PlayButtons[btnId]=null;}}addTrack();}function restoreProject(){if(ProjectJson==null)return;setScale(ProjectJson.raga);var beatLen=(ProjectJson.beatLen?ProjectJson.beatLen:10);document.getElementById('beatLenSlider').style.left=beatLen+"px";document.getElementById('beatLenText').value=beatLen;for(var i=0;i<ProjectJson.tracks.length;i++){if(ProjectJson.tracks[i].track==null)continue;if(ProjectJson.tracks[i].voice==null)continue;var track=ProjectJson.tracks[i].track;var voice=ProjectJson.tracks[i].voice;var suffix=addTrack();var trackId="t_"+suffix;var txtId="n_"+suffix;var voiceId="v_"+suffix;var e=document.getElementById(trackId);if(e==null)continue;var textArea=document.getElementById(txtId);var voiceMenu=document.getElementById(voiceId);if(textArea==null||voiceMenu==null)continue;textArea.value=track;var voiceNum=getVoiceNumberFromName(voiceMenu,voice);voiceMenu.options[voiceNum].selected=true;}}function getVoiceNumberFromName(voiceMenu,voiceName){for(var i=0;i<voiceMenu.options.length;i++){if(voiceName==voiceMenu.options[i].value)return i;}return 0;}function debugMsg(s){e=document.getElementById("debug");if(e!=null)e.innerHTML=s+'<br/>'+e.innerHTML;}function d2h(d){var x=d.toString(16);return x.length%2==0?x:("0"+""+x);}function clearDiv(divId){var e=document.getElementById(divId);if(e)e.innerHTML="";}function fadeInMsg(divId,text,bg,fg){var e=document.getElementById(divId);if(bg==null||fg==null){e.innerHTML=text;bg=0;fg=255;}if(bg<=250||fg>=5){if(bg<=250)bg+=5;if(fg>=5)fg-=2;var e=document.getElementById(divId);if(!e)return;var newbg="#"+d2h(bg)+""+d2h(bg)+""+d2h(bg);var newfg="#"+d2h(fg)+""+d2h(fg)+""+d2h(fg);e.style.background=newbg;e.style.color=newfg;var nextCall="fadeInMsg('"+divId+"','',"+bg+","+fg+")";setTimeout(nextCall,10);}else{e.style.color='green';}}function onBodyLoad(){enableTooltips();enableSliders();var e=document.getElementById('darkBgLayer');if(e&&navigator.userAgent.match(/MSIE/i))e.style.filter='alpha(opacity = 70)';}function Selection(start,end){this.start=start;this.end=end;}function getSelection(e){e.focus();if(e.selectionStart!=null&&e.selectionEnd!=null)return new Selection(e.selectionStart,e.selectionEnd);var range=document.selection.createRange().duplicate();if(range.parentElement()!=e)return null;var beforeRange=document.body.createTextRange();beforeRange.moveToElementText(e);beforeRange.setEndPoint("EndToStart",range);var afterRange=document.body.createTextRange();afterRange.moveToElementText(e);afterRange.setEndPoint("StartToEnd",range);var before_finished=false,selection_finished=false,after_finished=false;var before_text,untrimmed_before_text,selection_text,untrimmed_selection_text,after_text,untrimmed_after_text;before_text=untrimmed_before_text=beforeRange.text;selection_text=untrimmed_selection_text=range.text;after_text=untrimmed_after_text=afterRange.text;while(!before_finished||!selection_finished||!after_finished){if(!before_finished){if(beforeRange.compareEndPoints("StartToEnd",beforeRange)==0){before_finished=true;}else{beforeRange.moveEnd("character",-1);if(beforeRange.text==before_text){untrimmed_before_text+="\r\n";}else{before_finished=true;}}}if(!selection_finished){if(range.compareEndPoints("StartToEnd",range)==0){selection_finished=true;}else{range.moveEnd("character",-1);if(range.text==selection_text){untrimmed_selection_text+="\r\n";}else{selection_finished=true;}}}if(!after_finished){if(afterRange.compareEndPoints("StartToEnd",afterRange)==0){after_finished=true;}else{afterRange.moveEnd("character",-1);if(afterRange.text==after_text){untrimmed_after_text+="\r\n";}else{after_finished=true;}}}}var startSel=untrimmed_before_text.length;var endSel=untrimmed_before_text.length+untrimmed_selection_text.length;return new Selection(startSel,endSel);}function md5(str){var RotateLeft=function(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits));};var AddUnsigned=function(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4){return(lResult^0x80000000^lX8^lY8);}if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8);}else{return(lResult^0x40000000^lX8^lY8);}}else{return(lResult^lX8^lY8);}};var F=function(x,y,z){return(x&y)|((~x)&z);};var G=function(x,y,z){return(x&z)|(y&(~z));};var H=function(x,y,z){return(x^y^z);};var I=function(x,y,z){return(y^(x|(~z)));};var FF=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);};var GG=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);};var HH=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);};var II=function(a,b,c,d,x,s,ac){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));return AddUnsigned(RotateLeft(a,s),b);};var ConvertToWordArray=function(str){var lWordCount;var lMessageLength=str.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount<lMessageLength){lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=(lWordArray[lWordCount]|(str.charCodeAt(lByteCount)<<lBytePosition));lByteCount++;}lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=lWordArray[lWordCount]|(0x80<<lBytePosition);lWordArray[lNumberOfWords-2]=lMessageLength<<3;lWordArray[lNumberOfWords-1]=lMessageLength>>>29;return lWordArray;};var WordToHex=function(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);}return WordToHexValue;};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7,S12=12,S13=17,S14=22;var S21=5,S22=9,S23=14,S24=20;var S31=4,S32=11,S33=16,S34=23;var S41=6,S42=10,S43=15,S44=21;str=utf8_encode(str);x=ConvertToWordArray(str);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;xl=x.length;for(k=0;k<xl;k+=16){AA=a;BB=b;CC=c;DD=d;a=FF(a,b,c,d,x[k+0],S11,0xD76AA478);d=FF(d,a,b,c,x[k+1],S12,0xE8C7B756);c=FF(c,d,a,b,x[k+2],S13,0x242070DB);b=FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);a=FF(a,b,c,d,x[k+4],S11,0xF57C0FAF);d=FF(d,a,b,c,x[k+5],S12,0x4787C62A);c=FF(c,d,a,b,x[k+6],S13,0xA8304613);b=FF(b,c,d,a,x[k+7],S14,0xFD469501);a=FF(a,b,c,d,x[k+8],S11,0x698098D8);d=FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=FF(a,b,c,d,x[k+12],S11,0x6B901122);d=FF(d,a,b,c,x[k+13],S12,0xFD987193);c=FF(c,d,a,b,x[k+14],S13,0xA679438E);b=FF(b,c,d,a,x[k+15],S14,0x49B40821);a=GG(a,b,c,d,x[k+1],S21,0xF61E2562);d=GG(d,a,b,c,x[k+6],S22,0xC040B340);c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);a=GG(a,b,c,d,x[k+5],S21,0xD62F105D);d=GG(d,a,b,c,x[k+10],S22,0x2441453);c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=GG(b,c,d,a,x[k+4],S24,0xE7D3FBC8);a=GG(a,b,c,d,x[k+9],S21,0x21E1CDE6);d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=GG(c,d,a,b,x[k+3],S23,0xF4D50D87);b=GG(b,c,d,a,x[k+8],S24,0x455A14ED);a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);d=GG(d,a,b,c,x[k+2],S22,0xFCEFA3F8);c=GG(c,d,a,b,x[k+7],S23,0x676F02D9);b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=HH(a,b,c,d,x[k+5],S31,0xFFFA3942);d=HH(d,a,b,c,x[k+8],S32,0x8771F681);c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=HH(a,b,c,d,x[k+1],S31,0xA4BEEA44);d=HH(d,a,b,c,x[k+4],S32,0x4BDECFA9);c=HH(c,d,a,b,x[k+7],S33,0xF6BB4B60);b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);d=HH(d,a,b,c,x[k+0],S32,0xEAA127FA);c=HH(c,d,a,b,x[k+3],S33,0xD4EF3085);b=HH(b,c,d,a,x[k+6],S34,0x4881D05);a=HH(a,b,c,d,x[k+9],S31,0xD9D4D039);d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=HH(b,c,d,a,x[k+2],S34,0xC4AC5665);a=II(a,b,c,d,x[k+0],S41,0xF4292244);d=II(d,a,b,c,x[k+7],S42,0x432AFF97);c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=II(b,c,d,a,x[k+5],S44,0xFC93A039);a=II(a,b,c,d,x[k+12],S41,0x655B59C3);d=II(d,a,b,c,x[k+3],S42,0x8F0CCC92);c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=II(b,c,d,a,x[k+1],S44,0x85845DD1);a=II(a,b,c,d,x[k+8],S41,0x6FA87E4F);d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=II(c,d,a,b,x[k+6],S43,0xA3014314);b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=II(a,b,c,d,x[k+4],S41,0xF7537E82);d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=II(c,d,a,b,x[k+2],S43,0x2AD7D2BB);b=II(b,c,d,a,x[k+9],S44,0xEB86D391);a=AddUnsigned(a,AA);b=AddUnsigned(b,BB);c=AddUnsigned(c,CC);d=AddUnsigned(d,DD);}var temp=WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);return temp.toLowerCase();}function utf8_encode(string){string=(string+'').replace(/\r\n/g,"\n").replace(/\r/g,"\n");var utftext="";var start,end;var stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if((c1>127)&&(c1<2048)){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!=null){if(end>start){utftext+=string.substring(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.substring(start,string.length);}return utftext;}function getCookie(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1)c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}return"";}function setCookie(c_name,value,expiredays){var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString());}function subsFilterProc(){var e;e=document.getElementById("subsFilterTxt");if(e==null)return;var filterTxt=e.value.toLowerCase();e=document.getElementById("subsTbl");for(var row=e.firstChild;row!=null;row=row.nextSibling){if(row.nodeType==3)continue;if(row.className=="tblHdr")continue;row.style.display='none';for(var cell=row.firstChild;cell!=null;cell=cell.nextSibling){if(cell.nodeType==3)continue;var c=cell.className;if(c=="subsDateCol"||c=="subsSubmitterCol"||c=="subsTitleCol"||c=="subsCommentCol"){if(cell.innerHTML.toLowerCase().match(filterTxt)){row.style.display='';break;}}}}e=document.getElementById("subsTbl");var i=0;for(var row=e.firstChild;row!=null;row=row.nextSibling){if(row.nodeType==3)continue;if(row.className=="tblHdr")continue;if(row.style.display!="none"){row.className=(i++%2==0)?"tblEvenRow":"tblOddRow";}}}function streamMp3(keyProj){var e=document.getElementById('streamer');if(e!=null&&typeof(e.stop)=='function')e.stop();document.getElementById("streamerDiv").innerHTML="<embed id='streamer' hidden='false' type='audio/mpeg' width='1024px' height='40px'"+"src=http://carnatic-composer.com/m3u.php?k="+keyProj+"></embed>";}
