// Global PodcastPeople functions 
// Created by Andrew Okonetchnikov (andrew@wildbit.com)
// Wildbit LLC (http://wildbit.com)
// Ver 1.1

/* PROTOTYPE's onDOMReady Extension */

Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady(); 
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});


/* Global.js functions */

Event.onDOMReady( initPage );

function initPage() {
	initSWFObjects();
	initZebraTables();
	initTableCheckboxes();
	initLayout();
}

// SWFObject
var swfobjs = [];
function registerSWFObject(swfobj,domel) {
	if(navigator.appVersion.match(/\bMSIE\b/)) {
		$(domel).style.visibility="hidden";
		swfobjs.push({ob:swfobj,el:domel});
	}
	else { swfobj.write(domel); }
}

function initSWFObjects() {
	if(!swfobjs) return 0;
	for(var i=0; i<swfobjs.length; i++) {
		var swfobj = swfobjs[i];
		$(swfobj.el).style.visibility="visible";
		swfobj.ob.write(swfobj.el);
		swfobj=null;
	}
	return 1;
}

function initLayout() {
	Nifty("div#page","big transparent");
	Nifty("div.maincol","big");
	Nifty("ul#innertabs li", "top");
	Nifty("div.post-controls");
	Nifty("div.help,div.notification,div.sidebar_block", "normal tr br transparent");
	Nifty("div.status-msg", "small");
	Nifty("ul.widgets-list li");
}

function initZebraTables() {
	var even;
	var tables = $$("TABLE.data");
	if(!tables) return false;
	
	tables.each( function(table){
		even = false;
		table.getElementsBySelector("tr").each( function(tr){
			even = !even;
			if(even) Element.addClassName(tr, "even");
		});
	});
}

function initTableCheckboxes() {
	var chckboxes = $$("TABLE TBODY INPUT");
	var headchkbox = $$("TABLE THEAD INPUT").first();
	if(!chckboxes) return false;
	
	chckboxes.each( function(checkbox) {
		// Initial init
		if(checkbox.type == "checkbox" && checkbox.checked)
			toggleTableRow(checkbox);
			
		// Event observing
		if(checkbox.type == "checkbox")
		{
			Event.observe(checkbox, "click", function(event) {
				toggleTableRow(Event.element(event));
				if(headchkbox) headchkbox.checked = false;
			});
		}
	});
	
	if(headchkbox && headchkbox.type == "checkbox") {
		Event.observe(headchkbox, "click", function(event) {
			if(Event.element(event).checked)
			{
				chckboxes.each( function(checkbox) {
					checkbox.checked = true;
					toggleTableRow(checkbox);
				});
			}
			else
			{
				chckboxes.each( function(checkbox) {
					checkbox.checked = false;
					toggleTableRow(checkbox);
				});
			}
		});
	}
}

function toggleTableRow( checkbox ) {
	if(checkbox.checked)
		Element.addClassName(checkbox.parentNode.parentNode, "selected");
	else
		Element.removeClassName(checkbox.parentNode.parentNode, "selected");
}


function removePhoto(elem) {
	Effect.toggle($(elem), 'appear', { 
		afterFinish: function() {
			if($$('UL.filmstrip LI.photo-preview').length == 1) {
				new Insertion.Top(elem.parentNode, '<li class="comment">No photos uploaded yet.</li>');
				new Effect.Highlight(elem.parentNode);
			}
			Element.remove(elem);
		}
	});
}

function update_select_options(target, opts_array, clear_select_list) {
	if($(target).type.match("select")) {
		clear_select_list[clear_select_list.length] = target;
		
		for(k = 0; k < clear_select_list.length; k++) {
			obj = $(clear_select_list[k]);
			if(obj.type.match("select")){
				len = obj.childNodes.length;
				for(var i = 0; i < len; i++) { obj.removeChild(obj.firstChild); }
			}
		}
		
		for(i = 0; i < opts_array.length; i++) {
			o = document.createElement("option");
			o.appendChild(document.createTextNode( opts_array[i][0]));
			o.setAttribute("value", opts_array[i][1]);
			obj.appendChild(o);
		}
	}
}

function change_domain() {
	if ($('show_url_type1').checked)
		params = "new_domain=" + escape($('show_url_pp').value);
	else
		params = "new_custom_domain=" + escape($('show_url_custom').value);
	new Ajax.Request("/admin/settings/change_domain", {parameters:params, asynchronous:true, evalScripts:true});
}


function getFlashMovieObject(movieName) {
  if (window.document[movieName]) {
      return window.document[movieName];
  } 
  if (navigator.appName.indexOf("Microsoft Internet") == -1) {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  } else {
    return $(movieName);
  }
}

function getRecorderFileName() {
	var flash = getFlashMovieObject("recordstudio");
	if (!flash) return null; 	
	return flash.GetVariable("/:streamName");
}

/* Uploader Callbacks */

function uploadStart(uploaderObj, fileObj) {
	$(uploaderObj.settings.target).next().hide();
	$(uploaderObj.settings.progress).show();
}

function uploadProgress(uploaderObj, fileObj, bytesLoaded) {
	$(uploaderObj.settings.progress + "_value").style.width = Math.ceil((bytesLoaded / fileObj.size) * 100) + "%";
}

function uploadComplete(uploaderObj, fileObj) {
	$(uploaderObj.settings.progress).hide();
	$(uploaderObj.settings.target).next().show();
	var container = $(uploaderObj.settings.target).up();
	$$("#" + container.id + " a.action").last().onclick();
}
