/**************************************************************************************************
	Predefined Variables
***************************************************************************************************/				
	var http_requests = new Array();
	if (window.XMLHttpRequest) var http_request = new XMLHttpRequest();  else var http_request=false;
	var loading_graphic = "<img src='./images/loading_blue_small.gif' width='16' height='16' border='0'>&nbsp;";
	
/**************************************************************************************************
	Set ScrollBox Heights
***************************************************************************************************/				
//** FUNCTION: Set SrollBox Height Based on Element Input Array
	function checkPage(scrollBox,el_array) {
		var adjustOffset = 0;
		if (eval(el_array)) {
			for (i=0; i< el_array.length; i++) {
				if (eval(document.getElementById(el_array[i])) && !isNaN(document.getElementById(el_array[i]).offsetHeight)) { 
					adjustOffset = adjustOffset + document.getElementById(el_array[i]).offsetHeight;
				}
			}
		}				
		var height = document.body.clientHeight - adjustOffset;
        document.getElementById(scrollBox).style.height=height+'px';
	}
/**************************************************************************************************
	AJAX Server Requests
***************************************************************************************************/				
	function build_HttpRequest() {
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			var request = new XMLHttpRequest();
			if (request.overrideMimeType) { request.overrideMimeType('text/xml');}
		} else if (window.ActiveXObject) { // IE
			try {var request = new ActiveXObject("Msxml2.XMLHTTP");} 
			catch (e) {
				try {var request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}
			}
		}
		if (!request) { alert('Cannot create an XMLHTTP instance');return false;}
		return request;
	}
//** FUNCTION: Make Request to Server passing GET variables
	function makeRequest(url, do_function, arg) {
		http_request = build_HttpRequest();
		var time = new Date();				
		if (url.indexOf('?')>0){ url = url + '&time='+time.getTime(); } else { url = url + '?time='+time.getTime();}
		http_request.onreadystatechange = function() { do_function(arg); }
		http_request.open('GET', url, true);
		http_request.send(null);
	}	
/**************************************************************************************************
	Upload Form Functions
***************************************************************************************************/
    function callback_from_cgi(fn) {
        //alert(fn);
        //photo_to_db(fn);
	var uid = readCookie('bsc_uid');

        document.getElementById("myphoto").src = "../screencasts/"+uid+"/"+fn;
        document.getElementById("update-12").innerHTML = "update my photo";
        document.getElementById("update-14").innerHTML = "";
    }

    function photo_to_db() {
	
	var uid = readCookie('bsc_uid');
        var pn = document.getElementById("photofname").value; 
        var fn = document.getElementById("s_id").value;
	var ext = pn.substring(pn.lastIndexOf(".")+1,pn.length);
        var f = fn+"."+ext;

	var postData = "cmd=1&uid="+uid+"&arg=photo&val=./screencasts/"+uid+"/"+f;
   	var cb = {
                        success : function(o) {
			    //alert(o.responseText);
                        },
                        failure : function(o) {
			    alert(o.responseText);
                        }
        }      
	/*
	try {
	    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	} catch (e) {
	    alert("Permission UniversalBrowserRead denied.");
	}
	*/
        var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/get_login.php", cb, postData);
    }

    function proc_photo(val) {

	    var uid = readCookie('bsc_uid');

	    if (val == 2) {
		var postData = "cmd=1&uid="+uid+"&arg=photo&val=./images/default_thumb.gif";
   		var cb = {
                        success : function(o) {
			    //alert(o.responseText);
                        },
                        failure : function(o) {
			    alert(o.responseText);
                        }
        	}      
        	var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/get_login.php", cb, postData);
	    }

	    if (val == 1) {
	        path = uid;
	        var output = new Array();
	        var d = new Date();
	        var sid = hex_md5(d.toUTCString());
	        output.push("<form id='photoUpload' name='photoUpload' target='uploadPhotoFrame' method='post' enctype='multipart/form-data' action='./cgi-bin/upload_photo.cgi?sid="+sid+"'>");
	        output.push("<input type='hidden' name='path' value='"+path+"'>");
	        output.push("<input type='hidden' name='cmd'  value='3'>");
	        output.push("<input type='hidden' id='s_id'  value='"+sid+"'>");
	        output.push("<input type='file' size='0' id='photofname' name='photofname' onchange='this.form.submit();photo_to_db();'><\/form>");
	        document.getElementById("update-12").innerHTML = output.join('');
	        document.getElementById("update-14").innerHTML = "cancel";
	        var frm = document.getElementById('photoUpload');
	        document.photoUpload.photofname.click();
	        //frm["photofname"].click();
	    }
    }

    function removeFileInput(val) {
	    var e = document.getElementById('row_'+val);
 	    e.parentNode.removeChild(e);

	    if (document.getElementById('row_n_'+val) != null) {
	        e = document.getElementById('row_n_'+val);
		e.parentNode.removeChild(e);
	    }
		for (var i=0;i<uploads.length;i++) {
		   if (uploads[i] == val) {
		      uploads.splice(i,1);
		   }
		}   	  
		if (count > 0)
		    count--;

		if (count == 0) {
		   bg_color = true;
		}

	}

    var thumbs = new Array();

    function show_current_thumb(id) {
	if (thumbs[id] != null)
           document.getElementById("upthumb_"+id).src = thumbs[id];
	else
           document.getElementById("upthumb_"+id).src = "./images/default_thumb.png";
    }

    function show_default_thumb(id) {
        document.getElementById("upthumb_"+id).src = "./images/default_thumb.png";
    }

    function thumb_to_db(f, id, uid, nf) {

	thumbs[id] = "http://bioscreencast.s3.amazonaws.com/"+uid+"/"+f;
        document.getElementById("upthumb_"+id).src = thumbs[id];

	var postData = "cmd=7&uid="+uid+"&file="+nf+"&tn="+f;
   	var cb = {
                        success : function(o) {
			    //alert(o.responseText);
                        },
                        failure : function(o) {
			    alert(o.responseText);
                        }
        }      
        var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
    }

    function upload_thumbnail(id) {
	  var fObj = document.getElementById("thumb_upload_form_"+id);
	  fObj.submit();
    }
		
    function modifyFiles() {
	
	    var f = new Object();  
	    var file_dataset;

	    var uid = readCookie('bsc_uid');
	
    	    var postData = "cmd=4&uid="+uid;

		var cb = {
			success : function(o) {
			   if (o.responseText != "null") {

			      eval("f="+o.responseText);
  			      file_dataset = f['arr'];

			      var output = new Array();
			      for (var i=0;i<file_dataset.length; i++) {
			   
			   	   var ext = file_dataset[i].FILENAME.substring(file_dataset[i].FILENAME.lastIndexOf(".")+1,file_dataset[i].FILENAME.length);

				   var thumb_img;
				   if (file_dataset[i].THUMBNAME == "default_thumb.png") {
				       thumb_img = "./images/default_thumb.png";
				       thumbs[i] = thumb_img;
				   } else {
				       thumb_img = "http://bioscreencast.s3.amazonaws.com/"+uid+"/"+file_dataset[i].THUMBNAME;
				       thumbs[i] = thumb_img;
				   }

				   var status;
				   if (file_dataset[i].REVIEWED == 1) {
				      status="approved.gif";
				   } else {
				      status="pending.gif";
				   }
				
                                   var bg;
                                   if ((i % 2) == 1)
                                        bg = "#eaf4ff;";
                                   else
                                        bg = "#ffffff;";

				   output.push("<div id='row_"+i+"' style='clear:both;position:relative;height:110px;background:"+bg+"'>");
				   output.push("<div style='float:left;height:10px;width:10px;'></div><div style='float:left;margin-top:10px;'><img id='upthumb_"+i+"' src='"+thumb_img+"' style='border:1px solid #999999;' width='100' height='89'></div>");
				   output.push("<div style='float:left;height:10px;width:15px;'></div><div style='float:left;margin-top:10px;height:32px;width:32px;'><img src='./images/icon_"+ext+"_32x32.gif'></div>");
				   output.push("<div style='float:left;width:140px;margin:15px 0px 0px 15px;'>"+file_dataset[i].FILENAME.substring(0,20)+"..</div>");
				   output.push("<div style='float:left;margin:12px 0px 0px 15px;'><img src='./images/blue-divider.gif'></div>");
				   output.push("<div style='float:left;margin:15px 0px 0px 15px;'>"+file_dataset[i].FILESIZE+"</div>");
				   output.push("<div style='float:left;margin:12px 0px 0px 15px;'><img src='./images/blue-divider.gif'></div>");
				   output.push("<div style='float:left;margin:13px 0px 0px 15px;'><img src='./images/"+status+"'></div>");
				   output.push("<div style='clear:both;position:absolute;top:50px;left:120px;border-top:1px dashed #ccc;height:20px;width:450px;'><div style='float:left;margin-top:5px;margin-left:10px;cursor:pointer;'><img onclick='delete_file(\""+file_dataset[i].FILENAME+"\",\""+file_dataset[i].VID+"\");' src='./images/trash.gif'></div><div style='float:left;margin-top:5px;'><img src='./images/blue-divider.gif'></div><div style='float:left;margin-top:5px;cursor:pointer;'><img id='edit_mov_"+i+"' onclick='edit_file(\""+file_dataset[i].FILENAME+"\",\""+file_dataset[i].FILESIZE+"\","+i+");' src='./images/edit.gif'></div></div></div>");
			      }
			      document.getElementById("ScrollBox").innerHTML = output.join('');
			   } else {
			      createFileInput("");
			   }
			   
			},
			failure : function(o) {	
				alert(o.responseText);
			}
		}			
		// Connect to our tag data source and load tag_dataset
 	        document.getElementById('ScrollBox').innerHTML = "<img src='images/loading_blue_small.gif'>";
		var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
	}		
				
     	function show_url_desc() {
	    if (document.getElementById("upload_url").value.length <= 7)
	        document.getElementById("url_desc").style.display = "none";
	    else 
	        document.getElementById("url_desc").style.display = "block";
        }

	function hideOthers() {
	    var val = document.getElementById("upload_only").checked;

	    if (val) 
		document.getElementById("upload_details").style.display = "none";
	     else 
		document.getElementById("upload_details").style.display = "block";
	}

	//** FUNCTION: Create Upload Form
	function createFileInput(path) {

	    document.getElementById("upload_info").innerHTML = "<b>Quick Instructions on File Upload</b><br>" 
        					+ "<div style='border-top:1px dashed #ccc;height:10px;width:185px;'></div>"
        					+ "Currently, we support the following file formats for upload: "
        					+ "<b>flv, swf, mov, wmv, asx, divx, avi, mpeg, mpg, rm, ram</b>"
        					+ "<br><br>"
        					+ "Think we should support another up & coming format too? Contact us!"
        					+ "<br><br>"
        					+ "<div style='border-top:1px dashed #ccc;height:10px;width:185px;'></div>"
        					+ "To upload a screencast, click <b>File Upload</b>, then select the 'Browse' button to select a file from "
        					+ "your disk drive."
        					+ "Once you have selected the file, fill in a few details about your screencast and "
        					+ "press the start upload button."
        					+ "<br><br>"
        					+ "Once the upload is complete, you have the option to 'delete' the screencast "
        					+ "or 'edit' the details for the screencast.<br><br>"
        					+ "By default, you "
        					+ "will also see a 'review pending' status next to your screencast. Once "
        					+ "your screencast is approved, the status will change to 'approved' and "
        					+ "your screencast will be available as part of the bioscreencast library. "
        					+ "Currently, the approval process takes anywhere from 1 to 4 hours."
        					+ "<br>";

	    var uid = readCookie('bsc_uid');
	    var acc = readCookie('bsc_access');

	    if ((count > 0) && (parseInt(acc) > 1)) {
		return;	
	    } 

              var category_list;
              for (var i=0;i<cat_dataset.length;i++) {
                  category_list += "<option>"+cat_dataset[i].NAME+"</option>";
              }

		path = uid;

		var output = new Array();

		var d = new Date();
		var sid = hex_md5(d.toUTCString());

		if (uid == 2) {
		output.push("<form action='https://bioscreencast.s3.amazonaws.com/' method='post' enctype='multipart/form-data'>");
      		output.push("<input type='hidden' name='key' value='${filename}'>");
      		output.push("<input type='hidden' name='AWSAccessKeyId' value='0W98NEMDX19VD5KSV6R2'>"); 
      		output.push("<input type='hidden' name='acl' value='public-read'>"); 
      		output.push("<input type='hidden' name='success_action_redirect' value='http://bioscreencast.com'>");
      		output.push("<input type='hidden' name='policy' value='eyJleHBpcmF0aW9uIjogIjIwMDktMDEtMDFUMDA6MDA6MDBaIiwNCiJjb25kaXRpb25zIjogWw0KeyJidWNrZXQiOiAiYmlvc2NyZWVuY2FzdCJ9LA0KWyJzdGFydHMtd2l0aCIsICIka2V5IiwgIiJdLA0KeyJhY2wiOiAicHVibGljLXJlYWQifSwNCnsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL2Jpb3NjcmVlbmNhc3QuY29tIn0sDQpbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiIl0sDQpbImNvbnRlbnQtbGVuZ3RoLXJhbmdlIiwgMCwgMjA5NzE1MjAwXQ0KXQ0KfQ=='>");
		output.push("<input type='hidden' name='signature' value='YmNf/4TzsOPBpz5bdElB85mUsRA='>");
      		output.push("<input type='hidden' name='Content-Type' value='text/html'>");
      		output.push("<input name='file' type='file'>"); 
      		output.push("<input type='submit' value='Upload File to S3'>"); 
		} else {
		output.push("<form class='xupload' id='frmUpload_"+count+"' target='uploadForm' method='post' enctype='multipart/form-data' action='./cgi-bin/upload.cgi?sid="+sid+"'>");
		output.push("<input type='hidden' name='path' value='"+path+"'>");
		output.push("<input type='hidden' name='s_id' value='"+sid+"'>");
		output.push("<div style='position:relative;'><div class='fileinputs'><input type='file' name='filename'></div></div><\/form>");
		output.push("<div style='position:relative;padding-left:10px;'><input type='checkbox' id='upload_only' onclick='hideOthers();'> Are you just replacing a previously uploaded file?</div><br>");
		output.push("<div style='position:relative;margin-top:10px;padding-left:20px;border-top:1px dashed #aaaaaa;width:300px;height:20px;'></div>");
		output.push("<div style='position:relative;padding-left:10px;'>");
		output.push("Add some tags to help locate the screencast (comma separated for multiple tags)<br>");
		output.push("<textarea rows='2' cols='72' id='upload_tags'></textarea><br><br>");
		output.push("Pick a category<br>");
		output.push("<div style='position:relative;'><select id='upload_category' style='border:1px solid #cccccc;font-size:11px;'>");
		output.push(category_list);
		output.push("</select></div><br><br>");
		output.push("Add any relavant website<br>");
		output.push("<textarea rows='2' cols='72' id='upload_url' onchange='show_url_desc();'>http://</textarea><br><br>");
		output.push("<div id='url_desc' style='display:none;color:green;'>Add a short name to appear as the link for the above website<br>");
		output.push("<textarea rows='2' cols='72' id='upload_url_desc'></textarea><br><br></div>");
		output.push("Add a one line summary about the screencast<br>");
		output.push("<textarea rows='1' cols='72' id='upload_desc'></textarea><br><br>");
		output.push("Add more details about the screencast<br>");
		output.push("<textarea rows='4' cols='72' id='upload_details'></textarea><br><br>");
		output.push("</div>");
		output.push("<div style='position:relative;padding-left:10px;'><img style='cursor:pointer;' onclick='upload();' id='startupload' src='images/start_upload.png'></div><br>");
		}
			
		document.getElementById("ScrollBox").innerHTML = output.join('');
		uploads.push(count);
		if (count != 0 ) {
			var tiggerForm = document.getElementById('frmUpload_'+count);
			//tiggerForm['filename'].click();
			tiggerForm = null;
		}
		//count++;
		initFileUpload();
	}

	//** FUNCTION: Create Upload Form
	function createUrlInput(path) {

	    document.getElementById("upload_info").innerHTML = "<b>Quick Instructions on URL Upload</b><br>" 
        					+ "<div style='border-top:1px dashed #ccc;height:10px;width:185px;'></div>"
        					+ "Just Cut/Paste the URL to the movie (it can either be an html page that "
						+ "embeds the movie or the direct link to the movie file (.swf, .flv etc)"
        					+ "<br><br>"
        					+ "Fill in a few details about your screencast and "
        					+ "press the start upload button."
        					+ "<br><br>"
        					+ "Once the upload is complete, you have the option to 'delete' the screencast "
        					+ "or 'edit' the details for the screencast.<br><br>"
        					+ "By default, you "
        					+ "will also see a 'review pending' status next to your screencast. Once "
        					+ "your screencast is approved, the status will change to 'approved' and "
        					+ "your screencast will be available as part of the bioscreencast library. "
        					+ "Currently, the approval process takes anywhere from 1 to 4 hours."
        					+ "<br>";

	    var uid = readCookie('bsc_uid');
	    var acc = readCookie('bsc_access');

            var category_list;
            for (var i=0;i<cat_dataset.length;i++) {
                 category_list += "<option>"+cat_dataset[i].NAME+"</option>";
            }

	    path = uid;

	    var output = new Array();

	    var d   = new Date();
	    var sid = hex_md5(d.toUTCString());

	    output.push("<input type='hidden' id='uid' value='"+path+"'>");
	    output.push("<input type='hidden' id='s_id' value='"+sid+"'>");
	    output.push("<div style='position:relative;margin:10px;'>Add a link to the screencast web page<br><input type='text' size='76' id='urlname' name='urlname' value='http://'></div>");
	    //output.push("<div style='position:relative;margin:10px;'>Add the source website for this screencast [eg: http://www.youtube.com]<br><input type='text' size='76' id='urlsrc'  name='urlsrc' value='http://'></div>");
	    output.push("<div style='position:relative;margin-top:10px;padding-left:20px;border-top:1px dashed #aaaaaa;width:300px;height:20px;'></div>");
	    output.push("<div style='position:relative;padding-left:10px;'>");
	    output.push("Add some tags to help locate the screencast (comma separated for multiple tags)<br>");
	    output.push("<textarea rows='2' cols='72' id='upload_tags'></textarea><br><br>");
	    output.push("Pick a category<br>");
	    output.push("<div style='position:relative;'><select id='upload_category' style='border:1px solid #cccccc;font-size:11px;'>");
	    output.push(category_list);
	    output.push("</select></div><br><br>");
	    output.push("Add any relavant website<br>");
	    output.push("<textarea rows='2' cols='72' id='upload_url' onchange='show_url_desc();'>http://</textarea><br><br>");
	    output.push("<div id='url_desc' style='display:none;color:green;'>Add a short name to appear as the link for the above website<br>");
	    output.push("<textarea rows='2' cols='72' id='upload_url_desc'></textarea><br><br></div>");
 	    output.push("Add a one line summary about the screencast<br>");
	    output.push("<textarea rows='2' cols='72' id='upload_desc'></textarea><br><br>");
	    output.push("Add more details about the screencast<br>");
	    output.push("<textarea rows='3' cols='72' id='upload_details'></textarea><br><br>");
	    output.push("</div>");
	    output.push("<div style='position:relative;padding-left:10px;'><img style='cursor:pointer;' onclick='url_upload();' id='startupload' src='images/start_upload.png'></div><br>");
	    document.getElementById("ScrollBox").innerHTML = output.join('');
	}

//** FUNCTION: Check form file Extensions that pose a Security Issue
	function checkFileExtentions(form){
		if(check_file_extentions == false){ return false; }
		var re = /(\.flv)|(\.swf)|(\.mov)|(\.wmv)|(\.asx)|(\.divx)|(\.avi)|(\.mpeg)|(\.mpg)|(\.rm)|(\.ram)$/i;   //Change line 126 in uber_uploader.cgi to match
		if(form['filename'].value != ""){
			if(form['filename'].value.match(re)){
			   return false;
		        } else {
			   var string = form['filename'].value;
			   var num_of_last_slash = string.lastIndexOf("\\");
			   if(num_of_last_slash < 1){ num_of_last_slash = string.lastIndexOf("/"); }
			   var file_name = string.slice(num_of_last_slash + 1, string.length);
			   var file_extention = file_name.slice(file_name.indexOf(".")).toLowerCase(); 
			   alert('Sorry, uploading a file with the extention "' + file_extention + '" is not allowed.');
		 	   return true;
			}
		}
		return false;
	}	
//** FUNCTION: Process Queued Uploads

	function grab_upload_info() {
	   var t = document.getElementById("upload_tags").value; 
	   var c = document.getElementById("upload_category").value; 
	   var u = document.getElementById("upload_url").value; 
	   var ud= document.getElementById("upload_url_desc").value; 
	   var d = document.getElementById("upload_desc").value; 
	   var e = document.getElementById("upload_details").value; 

	   if (document.getElementById("upload_only").checked) {
	       document.getElementById("_uploadOnly").innerHTML = "true";
	       return 0;
	   }

	   if (t.length < 1) {
	      document.getElementById("upload_tags").style.color = "red";
	      document.getElementById("upload_tags").value = "please enter at least one tag so it is easy to find this video";
	      return 1;
	   } else {
	      document.getElementById("_uploadTags").innerHTML = t;
	   }

           document.getElementById("_uploadCategory").innerHTML = c;

	   if (u.length > 7) {
	       document.getElementById("_uploadUrl").innerHTML = u.substring(7,u.length);

	       if (ud.length < 1) {
	           document.getElementById("upload_url_desc").style.color = "red";
	           document.getElementById("upload_url_desc").value = "please add a description for the URL above";
		   return 1;
 	       } else {
	           document.getElementById("_uploadUrlDesc").innerHTML = ud;
	       }
	   } else {
	       document.getElementById("_uploadUrl").innerHTML = "-";
	       document.getElementById("_uploadUrlDesc").innerHTML = "-";
	   }

	   if (d.length < 1) {
	      document.getElementById("upload_desc").style.color = "red";
	      document.getElementById("upload_desc").value = "please enter a one line description for your upload";
	      return 1;
	   } else {
	      document.getElementById("_uploadDesc").innerHTML = d;
	   }

	   if (e.length < 1) {
	      document.getElementById("upload_details").style.color = "red";
	      document.getElementById("upload_details").value = "please enter a short summary about your upload";
	      return 1;
	   } else {
	      document.getElementById("_uploadDetails").innerHTML = e;
	   }
	   
	   return 0;
	}

	/***** UPLOAD URL ******/
	function url_upload() {
	    var uid      = document.getElementById("uid").value;
	    var sid      = document.getElementById("s_id").value;
	    var url_name = document.getElementById("urlname").value;
	    var url_src  = url_name.substring(0,url_name.indexOf("/",7));
	
	    if (url_name.length < 8) {
		document.getElementById("urlname").style.color = "red";
		document.getElementById("urlname").value = "please enter a valid url";
	        return;
	    } else {
		document.getElementById("_uploadUrlName").innerHTML = url_name;
   	    }

	    document.getElementById("_uploadUrlSrc").innerHTML = url_src;

	    if (grab_upload_info()) {
	        return;
	    }

	    document.getElementById("startupload").src = "images/loading_blue_small.gif";
	    upload_to_db(1, uid,"", sid); 
	}

	/***** UPLOAD FILE ******/
	function upload() {				

		if (uploads.length>0) {
			form = document.getElementById('frmUpload_'+uploads[0]);
			if (form["filename"].value == ""){ 
				alert("Please Choose a file to upload.");
			} else {
				if (grab_upload_info()) {
				   return;
				}

				filename = form["filename"].value; 
				if (filename.lastIndexOf("\\")>0) {
					filename = filename.substring(filename.lastIndexOf("\\")+1,filename.length);
				} else if (filename.lastIndexOf("/")>0) {
					filename = filename.substring(filename.lastIndexOf("/")+1,filename.length);
				} 
				if(checkFileExtentions(form)){ return false; }
			        var s_id = form["s_id"].value;
				makeRequest("bsc_upload_progress.php?sid="+s_id+"&filename="+filename, progress, s_id);
				form.submit();
			}
		}
	}	
//** FUNCTION: Process Response From Ajax Request
	function progress(s_id) {
		
		switch (http_request.readyState) {
			case 1 : checkCount++; break;
			case 4 :
				if (http_request.status == 200) {
					if (debug) status.innerHTML = checkCount + " - " +http_request.responseText;
					response = http_request.responseText.split('|');
					upload_cell = document.getElementById("ScrollBox");
					switch(response[0]) {
						case "wait":
							var output = new Array();
							var f = response[1].toLowerCase();
							var ext = f.substring(f.lastIndexOf(".")+1,f.length);
							output.push("<div style='position:relative;width:450px;height:110px;'>");
							output.push("<div style='float:left;height:10px;width:10px;'></div><div style='float:left;margin-top:10px;'><img src='./images/icon_"+ext+"_32x32.gif'></div>");
							output.push("<div style='float:left;height:10px;width:15px;'></div><div style='float:left;margin-top:10px;font-size:11px;'>"+f+"</div>");
							output.push("<div style='clear:both;position:absolute;top:32px;left:57px;font-size:10px;color:#aaa;'>Waiting for Download to Start ("+checkCount+")</div>");
							upload_cell.innerHTML = output.join('');
							makeRequest("bsc_upload_progress.php?sid="+s_id,progress,s_id);
							break;

						case "started":
                                                        makeRequest("bsc_upload_progress.php?sid="+s_id,progress,s_id);
							break;

						case "downloading":
							var output = new Array();
							var f = response[1].toLowerCase();                                                        
							var ext = f.substring(f.lastIndexOf(".")+1,f.length);
							output.push("<div style='position:relative;width:450px;height:110px;'>");
							output.push("<div style='float:left;height:10px;width:10px;'></div><div style='float:left;margin-top:10px;'><img src='./images/icon_"+ext+"_32x32.gif'></div>");
							output.push("<div style='float:left;height:10px;width:15px;'></div><div style='float:left;margin-top:10px;font-size:11px;'>"+f+"</div>");
							output.push("<div style='clear:both;position:absolute;top:32px;left:57px;width:450px;height:12px;'><div id='upload_bar'><img src='./images/safari/upload_bar_bg_on.gif' width='"+Math.floor((response[3]/100)*450)+"' height='12'></div></div>");
							output.push("<div style='clear:both;position:absolute;top:48px;left:57px;font-size:10px;color:#aaa;'>"+response[4]+" of "+response[5]+" ("+response[6]+"/s) " +response[2]+"</div>");
							upload_cell.innerHTML = output.join('');
							makeRequest("bsc_upload_progress.php?sid="+s_id,progress,s_id);
							break;

						case "copying":
							var output = new Array();
							var f = response[1].toLowerCase();                                                        
							var ext = f.substring(f.lastIndexOf(".")+1,f.length);
							output.push("<div style='position:relative;width:450px;height:110px;'>");                                                        
							output.push("<div style='float:left;height:10px;width:10px;'></div><div style='float:left;margin-top:10px;'><img src='./images/icon_"+ext+"_32x32.gif'></div>");
                                                        output.push("<div style='float:left;height:10px;width:15px;'></div><div style='float:left;margin-top:10px;font-size:11px;'>"+f+"</div>");
                                                        output.push("<div style='clear:both;position:absolute;top:50px;left:57px;font-size:10px;color:#aaa;'>Copying file to destination directory</div>");
							upload_cell.innerHTML = output.join('');
							makeRequest("bsc_upload_progress.php?sid="+s_id,progress,s_id);
							break;							

						case "Success":
	    						var uid = readCookie('bsc_uid');
							var f = response[1].toLowerCase();                                                        
							add_to_db(uid, f, response[2], response[3], req_id);
							checkCount = 0;
							uploads.splice(0,1);
							break;

						default:
							alert(http_request.responseText);
						
					}
				} else { alert("There was a problem with the request.("+http_request.responseText+")"); }
				break;
		}
	
	}
//** FUNCTION: Cancel Upload
	function cancelUpload(msg) {				
		alert(msg);
	}	



function submit_mov(f,vid,uid) {
	  var vl = document.getElementById("video_length").value;
	  var vd = document.getElementById("video_dimension").value;
	  var ct = document.getElementById("creator_tags").value;
	  var c  = document.getElementById("category").value;
	  var ru = document.getElementById("related_urls").value;
	  var od = document.getElementById("oneline_desc").value;
	  var dd = document.getElementById("detailed_desc").value;
	  
	  var nc;
	  if (document.getElementById("new_cat") != null) {
	      nc = document.getElementById("new_cat").value;
	  }

	  ru = ru.replace(/'|"/g,"");
	  od = od.replace(/'|"/g,"");
	  dd = dd.replace(/'|"/g,"");
	
	  if (ru.lastIndexOf(":") == -1) {
	      ru   = "";
	  } else {
	      document.getElementById("related_urls").style.color = "#666666";
	  }

	  if (document.getElementById("new_cat") != null) {	 
	     if (nc.length > 0) {
	         c = nc;
	     }
	  }

	  var postData = "cmd=6&uid="+uid+"&vid="+vid+"&vl="+vl+"&vd="+vd+"&ct="+ct+"&c="+c+"&ru="+ru+"&od="+od+"&dd="+dd+"&file="+f;
   	  var cb = {
                        success : function(o) {
                           document.getElementById("submit_mov_result").innerHTML = "success: "+o.responseText;
          		   document.getElementById("submit_mov_dialogue").innerHTML = "<img src='./images/save_btn.gif'>";
                        },
                        failure : function(o) {
                           document.getElementById("submit_mov_result").innerHTML = "failure: "+o.responseText;
          		   document.getElementById("submit_mov_dialogue").innerHTML = "<img src='./images/save_btn.gif'>";
                        }
          }      

          document.getElementById("submit_mov_dialogue").innerHTML = "<img src='images/loading_blue_small.gif'>";
          var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
}

function show_new_category() {

      var e = document.getElementById("new_category");
      e.innerHTML = "<input type='text' id='new_cat' size='18'>";

}

function show_upload_new_category() {

      var e = document.getElementById("upload_new_category");
      e.innerHTML = "<input type='text' id='upload_new_cat' size='18'>";
}

function show_mov_dialogue(f,fsz,id) {
   
      var uid = readCookie('bsc_uid');
      var ext = f.substring(f.lastIndexOf(".")+1,f.length);
      
      function makeInvisible() {
          document.getElementById("mov_dialogue_info_bg").style.visibility = "hidden";
	  document.getElementById("mov_dialogue_info").innerHTML        = "";
	  document.getElementById("mov_dialogue_info").style.visibility = "hidden";
	  document.getElementById("mov_dialogue").style.visibility      = "hidden";
      }


      function getForm() {
        document.getElementById("mov_dialogue_info_bg").style.visibility = "visible";
        var postData = "cmd=5&uid="+uid+"&file="+f;
	var cb = {
			success : function(o) {
			   if (o.responseText != "null") {
	    		      var f = new Object();  
	    		      var file_dataset;

			      eval("f="+o.responseText);
  			      file_dataset = f['arr'];
			      showForm(file_dataset);
			   }
			   else {
	    		      var f = new Object();  
	    		      var file_dataset;
			      var str = "{'arr':[{'VIDEO_LENGTH':'','VIDEO_DIMENTION':'','CREATOR_TAGS':'','CATEGORY':'','RELATED_URLS':'','ONELINE_DESC':'','DETAILED_DESC':''}]}";
			      eval("f="+str);
  			      file_dataset = f['arr'];

			      file_dataset[0].VIDEO_LENGTH    = "";
			      file_dataset[0].VIDEO_DIMENSION = "";
			      file_dataset[0].CREATOR_TAGS    = "";
			      file_dataset[0].CATEGORY        = "";
			      file_dataset[0].RELATED_URLS    = "";
			      file_dataset[0].ONELINE_DESC    = "";
			      file_dataset[0].DETAILED_DESC   = "";
			      file_dataset[0].REVIEWED        = "";
			      file_dataset[0].VID             = "0";
			      showForm(file_dataset);
			   }
			},
			failure : function(o) {	
				alert(o.responseText);
			}
	}			
	// Connect to our tag data source and load tag_dataset
	var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
      }


      function showForm(fd) {
	      var category_list;
	      for (var i=0;i<cat_dataset.length;i++) {
		  category_list += "<option>"+cat_dataset[i].NAME+"</option>";
	      }

              var status;
              if (fd[0].REVIEWED == 1) {
                  status="<img src='./images/approved.gif'>";
              } else if (fd[0].REVIEWED == 0) {
                  status="<img src='./images/pending.gif'>";
              } else {
                  status="";
	      }

	      document.getElementById("mov_dialogue_info").innerHTML = "<div width='30' height='40' style='float:left;background-color:#ffffff;border-bottom:1px solid #cccccc;'><img src='./images/icon_"+ext+"_32x32.gif'></div><div style='float:left;width:155px;height:35px;background-color:#ffffff;padding:0px 0px 0px 10px;border-bottom:1px solid #cccccc;'>"+f+"<div>"+fsz+"</div></div><div style='float:left;height:35px;background-color:#ffffff;padding:0px 0px 0px 10px;border-bottom:1px solid #cccccc;'><img src='./images/blue-divider.gif'></div><div style='float:left;height:35px;background-color:#ffffff;padding:0px 0px 0px 10px;border-bottom:1px solid #cccccc;'>"+status+"</div><div style='clear:both;'></div><br>"
		  					+ "<div style='float:left;'>Video Length <b>(mm:ss)</b><br><input id='video_length' name='video_length' type='text' size='19' value='"+fd[0].VIDEO_LENGTH+"' disabled></div><div style='float:left;width:20px;'><img src='./images/blue-divider.gif'></div><div style='float:left;'>Screencast Dimension <b>(WxH)</b><br><input id='video_dimension' name='video_dimension' type='text' size='31' value='"+fd[0].VIDEO_DIMENSION+"' disabled></div><div style='clear:both;'></div><br>"
							+ "Tags (comma separated) <b>(eg: gene, genetic test)</b><br><input id='creator_tags' name='creator_tags' type='text' size='54' value='"+fd[0].CREATOR_TAGS+"'><br><br>"
							+ "Category<br><div style='float:left;'><select id='category' name='category' style='border:1px solid #cccccc;font-size:11px;'><option>"+fd[0].CATEGORY+"</option>"
							+ category_list 
							+"</select></div><div style='float:left;'>&nbsp;&nbsp;&nbsp;&nbsp;OR&nbsp;&nbsp;&nbsp;&nbsp;</div><div style='float:left;cursor:pointer;text-decoration:underline;' id='new_category'><a onclick='show_new_category();'>enter a new category</a></div><br><br>"
							+ "Relevant URLs <b>(eg: cool website:bioscreencast.com, ...)</b><br><textarea id='related_urls' name='related_urls' cols='52' rows='3' style='border:1px solid #cccccc;'>"+fd[0].RELATED_URLS+"</textarea><br>"
							+ "Short Summary<br><textarea id='oneline_desc' name='oneline_desc' cols='52' rows='2'>"+fd[0].ONELINE_DESC+"</textarea><br>"
							+ "Detailed Description<br><textarea id='detailed_desc' name='detailed_desc' cols='52' rows='4' style='border:1px solid #cccccc;'>"+fd[0].DETAILED_DESC+"</textarea><br>"
							+ "<div style='position:relative;'><div style='float:left;' id='submit_mov_dialogue' onclick='submit_mov(\""+f+"\",\""+fd[0].VID+"\","+uid+");' style='cursor:pointer;'><img src='./images/save_btn.gif'></div><div style='float:left;'><img id='exit_mov_dialogue' src='./images/cancel_btn.gif'></div>"
							+"<div style='float:left;position:absolute;top:7px;left:155px;' id='submit_mov_result' style='background-color:#dddddd;color:#333333;'></div></div>";
							

	     procExit();
      }

      function procExit() {
          var attr_md = {
             width:    {from:350, to: 0 },
             height:   {from:430, to: 0 },
             opacity:  {to: 0 }
          }; 

          var anim_md = new YAHOO.util.Motion('mov_dialogue', attr_md, 0.5, YAHOO.util.Easing.backOut);
	  anim_md.onComplete.subscribe(makeInvisible);
          YAHOO.util.Event.on(document.getElementById("exit_mov_dialogue"), 'click', anim_md.animate, anim_md, true);
          YAHOO.util.Event.on(document.getElementById("exit_mov_dialogue1"), 'click', anim_md.animate, anim_md, true);
      }

      function makeVisible() {
	  document.getElementById("mov_dialogue").style.visibility      = "visible";
          document.getElementById("mov_dialogue_info").innerHTML        = "<img src='./images/loading_blue_small.gif'>";
	  document.getElementById("mov_dialogue_info").style.visibility = "visible";
      }

      var attr_md = {
          points:   {from: [YAHOO.util.Dom.getX('edit_mov_'+id)+20,YAHOO.util.Dom.getY('edit_mov_'+id)], to: [YAHOO.util.Dom.getX('edit_mov_'+id)+20,YAHOO.util.Dom.getY('edit_mov_'+id)] }, 
          width:    {from:0, to: 350 },
          height:   {from:0, to: 430 },
          opacity:  {to: 1 }
      }; 

      var anim_md = new YAHOO.util.Motion('mov_dialogue', attr_md, 0.5, YAHOO.util.Easing.backOut);
      anim_md.onStart.subscribe(makeVisible);
      anim_md.onComplete.subscribe(getForm);
      anim_md.animate();	
}

function show_non_mov_dialogue(f, fsz, id) {
      var ext = f.substring(f.lastIndexOf(".")+1,f.length);
      
      function makeInvisible() {
	  document.getElementById("mov_dialogue_info").innerHTML        = "";
	  document.getElementById("mov_dialogue_info").style.visibility = "hidden";
	  document.getElementById("mov_dialogue").style.visibility      = "hidden";
      }

      function showForm() {
	      document.getElementById("mov_dialogue_info").innerHTML = "<div width='30' height='40' style='float:left;background-color:#ffffff;border-bottom:1px solid #cccccc;'><img src='./images/icon_"+ext+"_32x32.gif'></div><div style='float:left;width:290px;height:35px;background-color:#ffffff;padding:0px 0px 0px 10px;border-bottom:1px solid #cccccc;'>"+f+"<div>"+fsz+"</div></div><div style='clear:both;'></div><br>"
							+ "Short Summary<br><textarea id='oneline_desc' name='oneline_desc' cols='52' rows='2'></textarea><br>"
							+ "<div style='position:relative;'><div style='float:left;' onclick='submit_non_mov();' style='cursor:pointer;'><img src='./images/save_btn.gif'></div><div style='float:left;'><img id='exit_mov_dialogue' src='./images/cancel_btn.gif'></div></div>";
							

	     procExit();
      }

      function procExit() {
          var attr_md = {
             width:    {from:350, to: 0 },
             height:   {from:200, to: 0 },
             opacity:  {to: 0 }
          }; 

          var anim_md = new YAHOO.util.Motion('mov_dialogue', attr_md, 0.5, YAHOO.util.Easing.backOut);
	  anim_md.onComplete.subscribe(makeInvisible);
          YAHOO.util.Event.on(document.getElementById("exit_mov_dialogue"), 'click', anim_md.animate, anim_md, true);
          YAHOO.util.Event.on(document.getElementById("exit_mov_dialogue1"), 'click', anim_md.animate, anim_md, true);
      }

      function makeVisible() {
	  document.getElementById("mov_dialogue").style.visibility      = "visible";
	  document.getElementById("mov_dialogue_info").innerHTML        = "";
	  document.getElementById("mov_dialogue_info").style.visibility = "visible";
      }

      var attr_md = {
          points:   {from: [YAHOO.util.Dom.getX('edit_mov_'+id)+20,YAHOO.util.Dom.getY('edit_mov_'+id)], to: [YAHOO.util.Dom.getX('edit_mov_'+id)+20,YAHOO.util.Dom.getY('edit_mov_'+id)] }, 
          width:    {from:0, to: 350 },
          height:   {from:0, to: 200 },
          opacity:  {to: 1 }
      }; 

      var anim_md = new YAHOO.util.Motion('mov_dialogue', attr_md, 0.5, YAHOO.util.Easing.backOut);
      anim_md.onStart.subscribe(makeVisible);
      anim_md.onComplete.subscribe(showForm);
      anim_md.animate();	
}

function show_status(f,v) {
   alert("Your screencast will be reviewed within 24 hours");
}

function edit_file(f,fsz,v) {
   var nf = f;
   
   if (nf.lastIndexOf("=") < 0) {
   } else {
     var a = nf.split(">");
     var b = a[1].split("<");
     nf = b[0];
   }

   show_mov_dialogue(nf,fsz,v);
}

function upload_to_db(cmd, uid, f, vid) {
	  var ct = document.getElementById("_uploadTags").innerHTML;
	  var c  = document.getElementById("_uploadCategory").innerHTML;
	  var u  = document.getElementById("_uploadUrl").innerHTML;
	  var ud = document.getElementById("_uploadUrlDesc").innerHTML;
	  var od = document.getElementById("_uploadDesc").innerHTML;
	  var de = document.getElementById("_uploadDetails").innerHTML;

	  if (cmd == 0) {
              var postData = "cmd=12&uid="+uid+"&vid="+vid+"&ct="+ct+"&c="+c+"&od="+od+"&de="+de+"&ur="+ud+":"+u+"&file="+f;
	  } else {
	      var url      = document.getElementById("_uploadUrlName").innerHTML;
	      var urlsrc   = document.getElementById("_uploadUrlSrc").innerHTML;
              var postData = "cmd=13&uid="+uid+"&vid="+vid+"&ct="+ct+"&c="+c+"&od="+od+"&de="+de+"&ur="+ud+":"+u+"&url="+url+"&urlsrc="+urlsrc;
	  }
          var cb = {
                        success : function(o) {
			    if (cmd == 1)
	    		        document.getElementById("startupload").src = "images/start_upload.png";
			    modifyFiles();
                        },
                        failure : function(o) {
			   alert(o.responseText);
                        }
          }
          var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
}

function add_to_db(uid, f, z, vid, reqid) {
    var postData = "cmd=1&uid="+uid+"&file="+f+"&fsize="+z+"&vid="+vid+"&reqid="+reqid;
	var cb = {
			success : function(o) {
				if (document.getElementById("_uploadOnly").innerHTML == "false")
				    upload_to_db(0, uid, f, vid);
				else 
				    modifyFiles();
			},
			failure : function(o) {	
				alert(o.responseText);
			}
	}			
	// Connect to our tag data source and load tag_dataset
	var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
}

function rename_in_db(uid, f, fo) {
    var postData = "cmd=2&uid="+uid+"&file="+f+"&fold="+fo;

	var cb = {
			success : function(o) {
				//alert(o.responseText);
			},
			failure : function(o) {
				alert(o.responseText);
			}
	}			
	// Connect to our tag data source and load tag_dataset
	var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
}

function delete_from_db(uid, fn, vid) {

    var postData = "cmd=3&uid="+uid+"&file="+fn+"&vid="+vid;
	
    var cb = {
			success : function(o) {
				modifyFiles();
				//alert(o.responseText);
			},
			failure : function(o) {
				alert(o.responseText);
			}
    }			
    // Connect to our tag data source and load tag_dataset
    var conn = YAHOO.util.Connect.asyncRequest("POST", "./php/proc_db.php", cb, postData);
}

function delete_file(fn, vid) {
   var uid = readCookie('bsc_uid');
   init_del_confirm(0, uid, fn, vid);
   YAHOO.example.container.simpledialog1.show();
}

var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUpload() {
	if (!W3CDOM) return;

	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';

        var inpimg = document.createElement('div');
	inpimg.className ='inpimg';
	inpimg.appendChild(document.createElement('input'));

	fakeFileUpload.appendChild(inpimg);

	var fakeimg = document.createElement('div');
	fakeimg.className ='fakeimg';

	var image = document.createElement('img');
	image.src='./images/browse.gif';
	fakeimg.appendChild(image);

	fakeFileUpload.appendChild(fakeimg);

	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].getAttribute('noscript')) continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		if (x[i].value)
			x[i].onchange();
		x[i].onchange = x[i].onmouseout = function () {
			var trim_value;

			if (this.value.length > 32) {
			    trim_value = "..."+this.value.substring(this.value.length-32);
			} else {
			    trim_value = this.value;
			}
			this.relatedElement.value = trim_value;
		}
	}
}
