var enableconvert = false;
var enabledownload = false;
var converthtml = '';
var downloadhtml = '';
var current = 1;
var stopclicks = 0;
var folder = randomString();
var pid;
var attempts;
var bgNewHeightMax = 0;

function setheight () {
 var bgHeight = 135 + $("#accordion").height();
 var bgNewHeight = Math.ceil(bgHeight/203)*203;
 if (bgNewHeight > bgNewHeightMax) {
  bgNewHeightMax = bgNewHeight;
  $('div.body-bg4').css('height', bgNewHeight);
 }
}

function disablepanes() {
 enableconvert = false; enabledownload = false;
 $("#convertpane h3, #downloadpane h3").fadeTo(250,0.5);
}

function savepanes() {
 converthtml = $("#parameters").html();
 downloadhtml = $("#download").html();
}

function randomString() {
 var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
 var string_length = 16;
 var randomstring = '';
 for (var i=0; i<string_length; i++) {
  var rnum = Math.floor(Math.random() * chars.length);
  randomstring += chars.substring(rnum,rnum+1);
 }
 return randomstring;
}

function converterReady() { return true; }

function ____converterReady() {
 var uploadifyConfig = {
  'uploader'       : '/scripts/euploadify.swf',
  'script'         : '/uploadify.html',
  'cancelImg'      : '/images/cancel.png',
  'queueID'        : 'fileQueue',
  'folder'         : '/' + folder,
  'multi'          : true,
  'scriptAccess'   : 'always',
  'queueSizeLimit' : converterQueueSizeLimit,
  'sizeLimit'      : converterSizeLimit,
  'fileExt'        : converterFileExt,
  'fileDesc'       : 'Please select a file to convert',
  'onAllComplete'  : function(event, data) {
                      if (data.filesUploaded > 0) {
                       $("#parameters").html(converthtml);
                       setTimeout('$("#accordion").accordion("activate",1);',500);
                       enableconvert = true;
                       $("#convertpane h3").fadeTo(250,1);
                       $("#parameters").load('/parameters.html?folder=' + folder + '&rnd=' + Math.random());
                       current = 2;
                      }
                     },
  'onOpen'         : function(event,queueID,fileObj) {
                      disablepanes();
                     },
  'onSelectOnce'   : function(event,data) {
                      $("#uploadify").uploadifySettings('folder','/'+folder);
                     }
 };
 $("#accordion").accordion({ 
  'header'         : "h3",
  'autoHeight'     : false,
  'change'         : function() {
                                 setTimeout('setheight();',500);
                                }
 });
 $("#uploadpane h3 a, #uploadpane h3 span").bind("click",function (){
  if (stopclicks) { return false; }
  current = 1;
  folder = randomString();
  return true;
 });
 $("#convertpane h3 a, #convertpane h3 span").bind("click",function (){
  if (stopclicks) { return false; }
  if (enableconvert) {
   if (current == 1) { $('#uploadify').uploadifyClearQueue(); }
   current = 2;
  }
  return enableconvert;
 });
 $("#downloadpane h3 a, #downloadpane h3 span").bind("click",function (){
  if (stopclicks) { return false; }
  if (enabledownload) {
   if (current == 1) { $('#uploadify').uploadifyClearQueue(); }
   current = 3;
  }
  return enabledownload;
 });
 $("#doupload").bind("click",function (event) {
  setTimeout("jQuery('#uploadify').uploadifyUpload()",100);
  return false;
 });
 $("#cancelupload").bind("click",function () {
  setTimeout("jQuery('#uploadify').uploadifyClearQueue()",100);
  return false;
 });
 disablepanes();
 savepanes();
 $("#uploadify").uploadify(uploadifyConfig);
 setheight();
}

function backToUpload() {
 disablepanes();
 //setTimeout('$("#accordion").accordion("activate",0);',500);
 $("#accordion").accordion("activate",0);
 disablepanes();
 current = 1;
 folder = randomString();
 if ( typeof(filesNum) == "undefined" )
  filesNum=0;

 if ( typeof($("#uploadifyUploader").attr('type')) != "string" ) {
  globSelf._clearQueueUpload();
 } else {
	setTimeout(function(){
		//$("#uploadify").uploadifySettings('folder', folder);
		//$('#uploadify').uploadifyClearQueue();
	}, 2000);
 }
 $("#folder").val(folder);
 $.ajax({url: '/setdir.html',type: 'POST', data: 'folder='+folder});
 $("#folder").val(folder);
 if ( filesNum > 0 ) {
  do{
	filesNum--;
	$("div#paramsQueue div#paramsItem"+filesNum+" div.cancel a").click();
  } while (filesNum);
 }
 if ( $.trim($("#parameters").html()) ) {
  $("#parameters").html("");
 }
}

function checkStatus(status) {
 var allnum = 0;
 var convnum = 0;
 var successnum = 0;
 var itemid;
 $.each(status, function(i, val) {
  allnum++;
  if (val == 'converting') { convnum++; }
  if (val == 'success') { successnum++; }
  progress(i,val);
 });
 if (allnum == 0) {
  attempts--;
  if (attempts > 0) { setTimeout('jah();',500); }
  else { stopclicks = 0; alert('Transfer Error'); progressReset(); }
 }
 else if (convnum > 0) {
  setTimeout('jah();',500);
 }
 else {
  stopclicks = 0;
  if (successnum > 0) {
   $("#download").html(downloadhtml);
   setTimeout('$("#accordion").accordion("activate",2);',500);
   enabledownload = true;
   $("#downloadpane h3").fadeTo(250,1);
   $("#download").load('/download.html?folder=' + folder + '&rnd=' + Math.random());
   current = 2;
  }
 }
}

function jah() {
 url = '/convertstatus.html?pid=' + pid + '&folder=' + folder + '&rnd=' + Math.random();
 var Params = {};
 Params.type = "GET";
 Params.url = url;
 Params.dataType = "json";
 Params.success = checkStatus;
 Params.error = function() { checkStatus({}); };
 $.ajax(Params);
}

function progress(i,status) {
 var barid = '#convertProgressBar' + i;
 var itemid = '#paramsItem' + i;
 var textid = '#fileStatusText' + i;
 if (status == 'converting') {
  $(barid).css({ 'width' : '100%', 'background-image' : 'url(/images/progress-bar.gif)', 'background-color' : '#FFFFFF' });
  $(itemid).removeClass('convertError');
  $(textid).html(' - Converting...');
 } else if (status == 'success') {
  $(barid).css({ 'width' : '100%', 'background-image' : '', 'background-color' : '#0099FF' });
  $(itemid).removeClass('convertError');
  $(textid).html(' - Completed');
 } else if (status == 'failed') {
  $(barid).css({ 'width' : '100%', 'background-image' : '', 'background-color' : '#0099FF' });
  $(itemid).addClass('convertError');
  $(textid).html(' - Failed');
 } else {
  $(barid).css({ 'width' : '1px', 'background-image' : '', 'background-color' : '#0099FF' });
  $(itemid).removeClass('convertError');
  $(textid).html('');
 }
}

function progressReset() {
 $(".convertProgressBar").css({ 'width' : '1px', 'background-image' : '', 'background-color' : '#0099FF' });
 $(".paramsQueueItem").removeClass('convertError');
 $(".fileStatus").html('');
}

function initParams() {
 if (filesNum < 1) { alert('Upload error or file is either too big or too small.'); backToUpload(); }
 $('#convertForm').submit(function() { return false; }); 
 $(".paramsQueueItem .cancel a").bind("click",function () {
  if (stopclicks) { return false; }
  $('#' + $(this).parent().parent().attr('id')).fadeOut(250, function() { $(this).remove(); });
  if ($(".paramsQueueItem").length == 1) { 
    //$("#upload").slideDown(300);
	backToUpload();
  }
  return false;
 });
 $("#toepub a, #toother a").bind("click",function() {
  if (stopclicks) { return false; }
  $("#format").val($(this).attr('id'));
  $('#convertProgressBar0').css({ 'width' : '100%', 'background-image' : 'url(/images/progress-bar.gif)', 'background-color' : '#FFFFFF' });
  $.ajax({
   'type'     : 'POST',
   'url'      : $('#convertForm').attr('action'),
   'data'     : $('#convertForm').serialize(),
   'dataType' : 'json',
   'success'  : function(data) {
                 progressReset();
                 stopclicks = 1;
                 if (data.status == 'OK') {
                  enabledownload = false;
                  $("#downloadpane h3").fadeTo(250,0.5);
                  pid = data.pid;
                  folder = data.folder;
                  attempts = 20;
				  $('#convertProgressBar0').css({ 'width' : '100%', 'background-image' : 'url(/images/progress-bar.gif)', 'background-color' : '#FFFFFF' });
                  jah();
                 } else if (data.status == 'ERROR') {
                  stopclicks = 0;
                  alert('Error (' + data.details + ')');
                 } else {
                  stopclicks = 0;
                  alert('Transfer Error');
                 }
                },
   'error'    : function(jqXHR,textStatus,errorThrown) {
                 stopclicks = 0;
                 alert('Transfer Error (' + textStatus + ')');
                }
  });
  return false;
 });
 $("input.param").example(function() { return $(this).attr('title'); });
}

