
/* GENERIC FUNCTIONS */

//Taken from http://www.albionresearch.com/misc/urlencode.phpfunction URLDecode(val){   var HEXCHARS = "0123456789ABCDEFabcdef";    var encoded = val;   var plaintext = "";   var i = 0;   while (i < encoded.length) {       var ch = encoded.charAt(i);	   if (ch == "+") {	       plaintext += " ";		   i++;	   } else if (ch == "%") {			if (i < (encoded.length-2) 					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {				plaintext += unescape( encoded.substr(i,3) );				i += 3;			} else {				alert( 'Bad escape combination near ...' + encoded.substr(i) );				plaintext += "%[ERROR]";				i++;			}		} else {		   plaintext += ch;		   i++;		}	}    return plaintext.replace(/\+/g," ");}


/* MANAGE CATEGORIES STUFF */
/* =============================================== */

//Get sub-categories for a column and place them in
 function grab_category(col,id)
 {
	//Get column data

	if ( id == -1 )
	  getResult("xml_getCategory.php?aid="+aid,'col_'+col);
	else
	  getResult("xml_getCategory.php?id="+id,'col_'+col);

 }


function reset_cols(col)
{
	for(var i = 2; i > col; i--)
	{
		Sel_cat[i] = new Array(-1,-1);
	}

	for(var i = col+1; i < 3; i++)
	{
			document.getElementById('cat_'+i).innerHTML = "";	

	}
}

function add_category(col)
{
   var title = prompt("Please enter the title of the new category.");
   if ( title )
   {
        if ( !title.match(/[^a-zA-Z0-9 .]/) ) {
			var cat;
			if ( col == 0 )
				cat = new Array(-1,-1);
			else
				cat = Sel_cat[col-1];
	
			getResult("proc_addCategory.php?id=" + cat[1] + "&cat=" + escape(title),"setcol_"+col);
        } else {
          alert("Invalid characters.");
        }
   }
}

function edit_category(id,thing)
{
   var title = prompt("Please enter the new title of the category.",thing.innerHTML);
   if ( title )
   {
        if ( !title.match(/[^a-zA-Z0-9 .]/) ) {
		  getResult("proc_editCategory.php?id=" + id + "&cat=" + escape(title),"ignore");
          thing.innerHTML = title;
        } else {
          alert("Invalid characters.");
        }
   }
}

function del_category(id,col)
{
	getResult("proc_delCategory.php?id=" + id,"delcol_" + col);
}

//Highlights this thing
function toggleSelect(col,thing)
{
	var others = document.getElementsByName('selects'+col);
    for(var i = 0; i < others.length; i++)
    {
		others[i].style.backgroundColor = 'transparent';
	}


	var cols = new Array('#ecc','#cee','transparent');

	if ( thing.style.backgroundColor != "transparent" )
		thing.style.backgroundColor = "transparent";
	else	
		thing.style.backgroundColor = cols[col];
}


/* =============================================== */

/* UPLOAD VIDEO PAGE STUFF */
/* =============================================== */
//Assumes aid has been set for page.
function startCategory()
{ 
   getResult("xml_getCategory.php?aid=" + aid, "upload_start");
}

//Attempt to set the category selects to the parts
function setCategories(c1,c2,c3)
{
/*
	if ( c1 > 0 ) {
		var sel = document.getElementById("c1");
		for(var i = 0; i < sel.options.length; i++)
	    {
			if ( sel.options[i].value == c1 ) {
				sel.selectedIndex = i;
				break;
			}
	    }
	}

	if ( c2 > 0 ) {
	    //Update for column 2
		var xmlHttpTemp1=GetXmlHttpObject();		if (xmlHttpTemp1==null)		{		  alert ("Your browser does not support AJAX!");		  return;		} 	
		xmlHttpTemp1.onreadystatechange= function()
	    {
			if (xmlHttpTemp1.readyState==4)			{
				if ( this.responseXML )

				var sel = document.getElementById("c2");
				for(var i = 0; i < sel.options.length; i++)
			    {
					if ( sel.options[i].value == c2 ) {
						sel.selectedIndex = i;
						break;
					}
			    }
			}
	    }		xmlHttpTemp1.open("GET",getResult("xml_getCategory.php?aid=" + aid + "&id=" + id, "upload_select_" + col);,true);
		xmlHttpTemp1.send(null);


	}

	if ( c3 > 0 ) {
		var sel = document.getElementById("c3");
		for(var i = 0; i < sel.options.length; i++)
	    {
			if ( sel.options[i].value == c3 ) {
				sel.selectedIndex = i;
				break;
			}
	    }
	}
*/
}

function selectCategory(col,id)
{

   getResult("xml_getCategory.php?aid=" + aid + "&id=" + id, "upload_select_" + col);
}


function getUploaded(file)
{
	var xmlHttpTemp=GetXmlHttpObject();	if (xmlHttpTemp==null)	{	  alert ("Your browser does not support AJAX!");	  return;	} 

	xmlHttpTemp.onreadystatechange= function()
    {
		if (xmlHttpTemp.readyState==4)		{
			if ( this.responseText )
     		document.getElementById('progress').innerHTML = this.responseText;
		}
    }	xmlHttpTemp.open("GET","proc_getProgress.php?rand=" + Math.random() + "&file=" + file,true);
	xmlHttpTemp.send(null);
    
	setTimeout("getUploaded(" + file + ");",1000);
}

/* =============================================== */


/* Main ajax mapper */
function procXML(XML,target)
{

	//Normalize between browsers
	if ( XML.childNodes[0].nodeName.toLowerCase() == "xml" ) {
		XML = XML.childNodes[1];
	} else {

		XML = XML.childNodes[0];	//Go into first layer
	}


    xmlTarget = "";

	//Manage CAtegories - first column
	if ( target.match(/^col_\d+/) )
	{
        var col = target.replace(/^.{4}/,"");
	    var col2 = parseInt(col) + 1;
	    var txt = "";

		//highlight past column entry
		highThis = "toggleSelect("+col+",this);";

		for(var i = 0; i < XML.childNodes.length; i++)
	    {
		   var n = XML.childNodes[i]; //Fix vv

		   //Make delete button if we can
		   var del = "";
		   if ( n.attributes[1].nodeValue == 'yes' )
				del = "<a class='del' onclick='del_category("+n.attributes[0].nodeValue+","+col+")'><img src='images/x.gif' border='0' alt='Can Delete This' style='margin-right: 5px;'/></a>";

	       if ( col < 2 )
		   		txt += "<div class='cat' id='col_"+col+"_"+i+"'>"+del+"<a class='cat' name='selects"+col+"' ondblclick=\"edit_category("+n.attributes[0].nodeValue+",this)\" onclick=\"reset_cols("+col+");Sel_cat["+col+"]=new Array("+i+","+n.attributes[0].nodeValue+");grab_category("+col2+","+n.attributes[0].nodeValue+");"+highThis+";\">" + URLDecode(n.childNodes[0].nodeValue) + "</a></div>";
		   else
		   		txt += "<div class='cat' id='col_"+col+"_"+i+"'>"+del+"<a class='cat' name='selects"+col+"' ondblclick=\"edit_category("+n.attributes[0].nodeValue+",this)\" onclick=\"Sel_cat["+col+"]=new Array("+i+","+n.attributes[0].nodeValue+");"+highThis+";\">" + URLDecode(n.childNodes[0].nodeValue) + "</a></div>";
	    }

        try {
	      document.getElementById("cat_" + col).innerHTML = txt;
        } catch(err) { alert("Error: " + err); }
	} else if ( target.match(/^setcol_\d+/) )
	{
        var col = target.replace(/^.{7}/,"");
	    col = parseInt(col);

		if ( col == 0 )
			subcat = -1;
		else
			subcat = Sel_cat[col-1][1];
		grab_category(col,subcat);
	} else if ( target.match(/^delcol_\d+/) )
	{
        var col = target.replace(/^.{7}/,"");
	    col = parseInt(col);

		if ( col == 0 )
			subcat = -1;
		else
			subcat = Sel_cat[col-1][1];
		grab_category(col,subcat);
	} else if ( target == "upload_start" )
	{  /* ADD CATEGORIES INTO FIRST CATEGORY IN UPLOAD.PHP */
         var catFirst = document.getElementById('c1');

         for(var i = 0; i < XML.childNodes.length; i++)
         {
			var y=document.createElement('option');
			y.text = XML.childNodes[i].childNodes[0].nodeValue;
 			y.value = XML.childNodes[i].attributes[0].nodeValue;
      		try { catFirst.add(y,null); } catch (err) { catFirst.add(y); }
         } 
	} else if ( target == "upload_select_1" )
	{  /* SELECT FIRST CATEGORY IN UPLOAD.PHP */
		 var catSecond = document.getElementById('c2');
		 var catThird = document.getElementById('c3');

         //Kill options
         while(catSecond.options.length > 0 ) { catSecond.remove(0); }
         while(catThird.options.length > 0 ) { catThird.remove(0); }

 		//Add in new 'select one' option
       	 var y=document.createElement('option');
		 y.text = "[Select]";
 		 y.value = "";
       	 var z=document.createElement('option');
		 z.text = "[Select]";
 		 z.value = "";
      	 try { catSecond.add(y,null); } catch (err) { catSecond.add(y); }
      	 try { catThird.add(z,null); } catch (err) { catThird.add(z); }
		 try {
         for(var i = 0; i < XML.childNodes.length; i++)
         {
			var y=document.createElement('option');
			y.text = XML.childNodes[i].childNodes[0].nodeValue;
 			y.value = XML.childNodes[i].attributes[0].nodeValue;
      		 try { catSecond.add(y,null); } catch (err) { catSecond.add(y); }
         } 
		} catch(err) { alert(XML.childNodes[0].nodeName); }
		

	}else if ( target == "upload_select_2" )
	{  /* SELECT SECOND CATEGORY IN UPLOAD.PHP */
		 var catThird = document.getElementById('c3');

         //Kill options
         while(catThird.options.length > 0 ) { catThird.remove(0); }

 		//Add in new 'select one' option
       	 var y=document.createElement('option');
		 y.text = "[Select]"
 		 y.value = "";
      	 try { catThird.add(y,null); } catch (err) { catThird.add(y); }

         for(var i = 0; i < XML.childNodes.length; i++)
         {
			var y=document.createElement('option');
			y.text = XML.childNodes[i].childNodes[0].nodeValue;
 			y.value = XML.childNodes[i].attributes[0].nodeValue;
         	try { catThird.add(y,null); } catch (err) { catThird.add(y); }
         } 
		

	}
}

/* MANAGE VIDEOS STUFF */
/* =============================================== */


/* =============================================== */

