/****************************************************************************

Project Name:		mediaweb - audio-musical version
File Name:			
Project Manager:	Lisa Decker
Author:				Chris Schneider
Date:				02/22/06
Revision:			1.0
Dependencies:



Notes:

	Developed at Hunter College of the City University of New York.

****************************************************************************/

function getObj(name)
{
	
  if (document.getElementById)
  {
        this.obj = document.getElementById(name);
        this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
        this.obj = document.all[name];
        this.style = document.all[name].style;
  }
  else if (document.layers)
  {
        this.obj = document.layers[name];
        this.style = document.layers[name];
  }
}

function setFieldVisible(flag, e)
{

        var x = new getObj(e);
        x.style.visibility = (flag) ? 'hidden' : 'visible';
}

function showSubType(type){

	var t = type.options[type.selectedIndex].value;
	if(t == "Sub0"){
	
		document.location.reload();
		
	}

	for(var i = 0; i < 3; i++){
	
		var d = new getObj("Sub" + i);
		if(d.obj.name == t){
		
			setFieldVisible(false, t);
			
			resetSubForm("upload/blank.php");
			
		}else{
		
			setFieldVisible(true, d.obj.name);
		
		}
	}
}

function resetSubForm(b){

	var f = new getObj('SubFormFrame');
	f.obj.src=b;

}

function goToForm(form){

	var f = new getObj('SubFormFrame');
    var v = form.options[form.selectedIndex].value;
	f.obj.src=v;
    return false;

}

function loadForm(form){

	var f = new getObj('SubFormFrame');
	f.obj.src=form;
	return false;

}

/* this is the audio-music form check */

function checkAudioMusicalForm(data){

	if(data.gid.value && data.cid.value && data.title.value && data.uploadfile.value){
		return true;
	}else{

		alert("All fields except \"Additional Information\" must be completed");
		return false;
	}

}

function checkCreatePlaylistForm(data){

	var n, a;
	var msg = "The following errors where found\n\n";	
	n = a = false;
	
	if(data.name.value){
	
		n = true;
		
	}else{
	
		msg += "You must enter a name for this playlist\n";
		
	}
	
	if(data.active.value){
	
		a = true;
		
	}else{
	
		msg += "You must make this playlist active or not active\n";
		
	}
	
	if(!n || !a){
	
		alert(msg);

		return false;

	}else{

		return true;
		
	}

}


function checkCompMngrForm(data){

	var n = false;
	var g = false;
	var msg = "The following errors were found:\n\n";

	// check the names
	if(data.fname.value && data.lname.value){
	
		n = true;
		
	}else{
	
		msg += "You must enter a first and last name\n";
		
	}


	// check that a genre has been choosen
	
	if(data.gRadio[0].checked && data.gid[data.gid.selectedIndex].value != "false"){
		g = true;
	}else if(data.gRadio[1].checked && data.genre.value){
		g = true;
	}else{
		
		msg += "You must select a genre or create a new one\n";
	}
	
	
	
	if(!n || !g){
	
		alert(msg);
		return false;

	}else{
	
		return true;
	}

} // end checkCompMngrForm()

function checkForm(form, name){

	if(name == 'audio-musical'){
	
		return checkAudioMusicalForm(form);

	}else if(name == 'audio-narrative'){
	
		return checkAudioNarrativeForm(form);
		
	}else if(name == 'comp-mngr'){
	
		return checkCompMngrForm(form);
		
	}else if(name == 'create-playlist'){
	
		return checkCreatePlaylistForm(form);

	}else{
	
		return false;
		
	}

}

function selectComposer(title, feed_id, cid_sec, semester, year){

	var ga = new getObj("feed_title");

	var fi = new getObj("feed_id");
	var gb = new getObj("cid_sec");
	var ca = new getObj("semester");
	var cb = new getObj("year");

	ga.obj.value = title;
	fi.obj.value = feed_id;
	gb.obj.value = cid_sec;
	ca.obj.value = semester;
	cb.obj.value = year;

	return 0;
	
}

function showTabDiv(tabName){
	
	var c = new getObj('CurrentTab');

	if(c.obj.value == tabName){
		return false;

	}else{
	

		var old = new getObj(c.obj.value);
		old.style.visibility = "hidden";
		var cur = new getObj(tabName);
		cur.style.visibility = "visible";
		c.obj.value = tabName;
		return false
		
	} // end if/else
	
} // end showTab()

// checks the status of a popup window in order to simulate modal
// windows

var pop = null;	// this is the var representing the popup

function checkModal(){

	if(pop != null && pop.closed == false){
	
		pop.focus();
		return false;

	}else{
		return true;
	}

} // end checkModal()

function openModal(f){

	pop = window.open(f,'','status=1,width=700,height=610,scrollbars=0');

}

function closeMe(){

	self.close();
	pop = null;
	
}

function refreshOpenerAndClose(){

	closeMe();
	window.opener.location.reload();
	
}

var DHTML = (document.getElementById || document.all || document.layers);

function setFieldVisible(flag, e)
{
        if (!DHTML) return;
        var x = new getObj(e);
        x.style.visibility = (flag) ? 'hidden' : 'visible';
}

function sortPlaylist(){

	var alpha = new getObj('alphaMenuSelected');
	var sorter = new getObj('SubFormFrame');
	var url = "playlist-sort-form.php?alpha=" + alpha.obj.value;
	sorter.obj.src=url;
	
}

function showPodcast(g){

	var pid = g.options[g.selectedIndex].value;
	var temp = new getObj('alphaGenreSelected');
	temp.obj.value = pid;
	alert("New GID: " + temp.obj.value);

	// now, load the reload the iframe
	
	sortSongs();

	return true;

}

function sortSongs(){

	var g = new getObj('alphaGenreSelected');
	var alpha = new getObj('alphaMenuSelected');
	var sorter = new getObj('SubFormFrame');
	var url = "download-sort-form.php?pid=" + g.obj.value + "&alpha=" + alpha.obj.value;
	alert(url);
	sorter.obj.src=url;
	return;
	
}

function setPlayerSrc(f){

	var p = new getObj('player1');
	p.obj.SetURL(f);
	p.obj.Rewind();
	p.obj.Play();
	
}


function editPlaylist(pid){

	var s = new parent.getObj('SubFormFrame');
	s.obj.src = "playlistadmin-edit.php?pid=" + pid;

}

function editSubscribers(pid){

	var s = new parent.getObj('SubFormFrame');
	s.obj.src = "useradmin-edit.php?pid=" + pid;

}

function openPlaylist(pid){

	var s = new parent.getObj('SubFormFrame');
	
	s.obj.src = "playlist-songs.php?pid=" + pid;

}

function getBaseUrl(url){

	var temp = url.split('?');
	return temp[0];

}

function sortCompList(s){

	var url = getBaseUrl(window.location.href);
	window.location.href = url + "?sort=" + s;

}
	
function getTitles(url){

	var u = null;
	var cid = document.forms[0].cid.value;
	
	if(cid == 'false'){

		alert("You must select a composer first in order to search for titles");

	}else{
	
		var u = url + "?cid=" + cid;

	}

	var title = document.forms[0].title.value;
	
	if(title){
	
		u += "&title=" + title;
		
	}
	
	var rwin = new getObj('RightContentItem');
	rwin.obj.src=u;
	
}

function sortDownloadList(s){

	var alpha, gid;
	alpha = new parent.getObj('alphaMenuSelected');
	gid = new parent.getObj('alphaGenreSelected');
	var url = getBaseUrl(window.location.href);

	window.location.href = url + "?sort=" + s + "&alpha=" + alpha.obj.value + "&gid=" + gid.obj.value
	return false;

}

function sortPlaylistSongs(s, p){

	var url = getBaseUrl(window.location.href);

	window.location.href = url + "?sort=" + s + "&pid=" + p;
	return false;

}

function deletePlaylist(pid, plist){

	if(confirm("Are you sure you wish to delete the playlist \"" + plist + "\"?")){

		var url = getBaseUrl(window.location.href);
		window.location.href = url + "?delete=1&pid=" + pid;
			
		}
		
	return false;

}

function removeSong(fid, pid, title){

	if(confirm("Are you sure you wish to remove the song \"" + title + "\" from this playlist?")){

		var url = getBaseUrl(window.location.href);
		window.location.href = url + "?deleteSong=1&pid=" + pid + "&fid=" + fid;
			
		}
		
	return false;

}


function addToPlaylist(fid, pid){

		window.location.href = "playlistadmin-edit.php?addSong=1&pid=" + pid + "&fid=" + fid;
		
}

function startCheckPlayer(){
        
	window.setTimeout("checkPlayer()",2500);
    window.setInterval("checkPlayerStatus()",1000);
}
	
function checkPlayerStatus() {

	
	var player = new getObj('player1');
	getparseint = parseInt(document.player1.GetTime())
	tscale = document.player1.GetTimeScale();

	var seconds = Math.floor(getparseint/tscale)
	var minutes = 0;
	
	if(seconds > 59){
		
		minutes = Math.floor(seconds / 60); 	// converts the result to a string!
		seconds = Math.floor(seconds%60);			// converts the result to a string!
			
	}
	
	if(seconds < 10){
	
		seconds += '';
		seconds = '0' + seconds;
		
	}

		minutes += '';
		seconds += '';


        document.formular2.clipPosition.value = minutes + ":" + seconds

}

function checkPlayerOld() {

	//document.formular2.clipLaenge.value = parseInt(document.movie1.GetDuration());

}

var http_request = false;


function playSong(){
    
	if (http_request.readyState == 4) {
	    if (http_request.status == 200) {
                
			alert(http_request.responseText);
    		document.getElementById('playerDiv').innerHTML=http_request.responseText;
                
        } else {
 			alert('There was a problem with the request. Please refresh the page and try again.');
		}
    }    
}


function callServer(url, func, args) {

	http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	    http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
    		http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
	
	} else if (window.ActiveXObject) { // IE
    	try {
    		http_request = new ActiveXObject("Msxml2.XMLHTTP");
    	} catch (e) {
        	try {
            	http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

    if (!http_request) {
    	alert('Giving up :( Cannot create an XMLHTTP instance');
    	return false;
	}


	var GETArgPrefix = "arg";
	var GETArgs = false;
		
	var GETArgs = "?" + GETArgPrefix + "1=" + escape(args);

	url += GETArgs;
		
    http_request.onreadystatechange = eval(func);
    
    http_request.open('GET', url, true);
    http_request.send(null);

}



function callServerPost(handler, func, data){
                        
        http_request = false;
                        
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
                 
        } else if (window.ActiveXObject) { // IE
        try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
                try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                }
        }
                
    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
        }       
 
         
    http_request.onreadystatechange = eval(func);
//    http_request.open('POST', serverUrl + handler, true);
    http_request.open('POST',handler, true);
    http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    http_request.send(data);
        
} // end callServer()


function checkThisDudesBrowserToMakeSureItWorksWithThisApplication(){

	var btype = navigator.appName;
	var bversion = parseInt(navigator.appVersion);
	var msg = "Your broswer is not fully supported.\n";
	msg += "You may not be able to fully use this application as a result.\n";
	msg += "This application currently supports the following browsers:\n\n";
	msg += "MSIE ver 6 or greater\n";
	msg += "Mozilla ver 4 or greater\n";
	msg += "Safari ver 2 or greater\n";

	if(btype == 'Internet Explorer' && bversion < 6){
		
		alert(msg);
		
	}else if((btype == 'Mozilla' || btype == 'Netscape')  && bversion < 5){
	
		alert(msg);

	}
	
}

function loadPageSelect(){

	var temp = document.getElementById('pageSelect');
	var area = temp[temp.selectedIndex].value;
	var base = getBaseUrl(document.location.href);
	var parts = base.split('/');
	parts.pop();
	document.location.href= parts.join('/') + "/" + area;
	
} // end loadPage
	

// these next three are used to control the dynamic list elements
// ie. episode list and podcast list

var openItem = null;
var openButtonText =	"<img title='Click to Open' src='/images/close.gif' height=15 width=15>";
var closeButtonText =	"<img title='Click to Close' src='/images/open.gif' height=15 width=15>";

var vid1 = "this is a test<br>this is a test<br>this is a test<br>this is a test<br>this is a test<br>this is a test<br>";

function showDetails(){

  $(openItem+"Content").show();
	//$(openItem + "ToggleButton").innerHTML = closeButtonText;
	$(openItem + "ToggleButton").className = 'dynRowButtonOpen';
	//tempItem = document.getElementById(openItem + "Content");
	//tempItem.show();
	//tempItem.innerHTML = http_request.responseText;
	//var button = document.getElementById(openItem + "ToggleButton");
	//button.innerHTML = closeButtonText;

}

function openDetails(item, vid){

	if(item == openItem){
		closeDetails();
	}else if(openItem != item && openItem == null){
	
		openItem = item;
		showDetails();
		//callServer('getPodcastDetails.php','showDetails',vid);
		
	}else if(openItem != item && openItem != null){
	
		closeDetails();
		openItem = item;
		showDetails();
		//callServer('getPodcastDetails.php','showDetails',vid);
	
	}

}

function editDetails(item, vid){

	if(item == openItem){
		closeDetails();
	}else if(openItem != item && openItem == null){
	
		openItem = item;
		callServer('editPodcastDetails.php','showDetails',vid);
		
	}else if(openItem != item && openItem != null){
	
		closeDetails();

		openItem = item;
		callServer('editPodcastDetails.php','showDetails',vid);
	
	}

}

function closeDetails(){

	if(openItem != null){
	  $(openItem+"Content").hide();
		//tempItem = document.getElementById(openItem + "Content");
		//tempItem.hide();
		//tempItem.innerHTML = null;
		//tempItem = null;
		
		//$(openItem + "ToggleButton").innerHTML = openButtonText;
		$(openItem + "ToggleButton").className = 'dynRowButtonClose';
		//tempItem = document.getElementById(openItem + "ToggleButton");
		//tempItem.innerHTML = openButtonText;
		//tempItem = null;
	
		openItem = null;
	}
}

function saveDetails(form){


	var pid = form.pid.value;
	var active = form.active[form.active.selectedIndex].value;
	var auth = form.auth[form.auth.selectedIndex].value;
	var url = escape(form.url.value);
	var notes = escape(form.notes.value);
	var owner = escape(form.owner.value);
	callServerPost('saveDetails.php','showResponse',"owner=" + owner + "&url=" + url + "&notes=" + notes + "&pid=" + pid + "&active=" + active + "&auth=" + auth);

}

function showResponse(){


	if (http_request.readyState == 4) {
	    if (http_request.status == 200) {
                
			alert(http_request.responseText);
                
        } else {
 			alert('There was a problem with the request. Please refresh the page and try again.');
		}
    }    

}    
	
var curPid; // used to reload the same user list for a given podcast

function addUser(){

	var uname = document.getElementById('uname').value;
	var fname = document.getElementById('fname').value;
	var lname = document.getElementById('lname').value;
	var pid = document.getElementById('pid').value;
	var action = "add";
	
	curPid = pid; // set this so we can reload the same user list after the server calll
	
	var data = "uname=" + uname + "&lname=" + lname + "&fname=" + fname + "&pid=" + pid + "&action=" + action;
	
	callServerPost("modUsers.php",'reloadUserManager',data);
	
}


function deleteUser(pid, uid){

	curPid = pid;
	action = "delete";
	var data = "pid=" + pid + "&uid=" + uid + "&action=" + action;
	callServerPost("modUsers.php",'reloadUserManager',data);

}
	

function reloadUserManager(){

	if (http_request.readyState == 4) {
	    if (http_request.status == 200) {

			editSubscribers(curPid);
			alert(http_request.responseText);
                
        } else {
 			alert('There was a problem with the request. Please refresh the page and try again.<br>');
		}
    } // end if/else
    

}

function navigateTo(selectBox) {
  var tmpIdx = selectBox.selectedIndex
  var url = selectBox[tmpIdx].value
  if (url == 'null') return
  document.location.href=url
}


