function ch_mode(id)
{
    for(var i=1;i<=3;i++)
    {
       if (i==id) {
          currentmode=id;
          setcookie('yab_uploadmode',id);
          document.getElementById('uploadmode'+i).style.display='';
          document.uploadform.action=actions[id];
          document.getElementById('sessinfouploadmode').innerHTML = id;
       }
       else {
           document.getElementById('uploadmode'+i).style.display='none';
       }
    }
}

var rParam='';
function postIt()
{
    //if(uploadmode[currentmode]==0) return false;
    //ch_mode(currentmode);

    document.uploadform.action=actions[currentmode];
    
    var ok = validateUpload();

    if (ok==false) 
		return false;

    startUploading();
    
    var sid = document.uploadform.sessionid.value;
	iTotal = escape("-1");
	rParam = "iTotal=" + iTotal;
	rParam += "&iRead=0";
	rParam += "&iStatus=1";
    rParam += "&iMode="+currentmode;
	rParam += "&sessionid=" + sid;

    if(currentmode==1)
		AjaxRequest(rParam);
    //setTimeout("AjaxRequest(rParam);",10000);
    
 	document.uploadform.submit();
    return true;
}

function startUploading()
{
    try{

    document.getElementById('uploaderror').style.display   = 'none';
    document.getElementById('uploadwindow').style.display  = 'none';
    document.getElementById('emailwindow').style.display   = 'none';
    document.getElementById('uploadoverview').style.display= 'none';
    document.getElementById('uploadresults').style.display = 'none';
    
    document.getElementById('progressbar').style.display   = '';
    document.getElementById('progressbar2').style.display  = '';
    document.getElementById('helpwindow').style.display    = '';
    
    stopupload = false;
    }catch (e) {
        alert(e)
    }
}

function validateUpload()
{
    var hasuploads=false;
    if (currentmode==1) {
        for(var i=0;i<fileNum;i++)
        {
            var filename=document.getElementById('uploadfile_'+i).value;
            if(typeof(filename)=='undefined') continue;
            if(filename.length) hasuploads = true;
        }
    }
    else if (currentmode==2) {
        for(var i=0;i<urlNum;i++)
        {
            var filename=document.getElementById('uploadurl_'+i).value;
            if(typeof(filename)=='undefined') continue;

            if(filename.length) hasuploads = true;
        }
    }
    else if (currentmode==3) {
        for(var i=0;i<ftpNum;i++)
        {
            var filename=document.getElementById('uploadftp_'+i).value;
            if(typeof(filename)=='undefined') continue;
            if(filename.length) hasuploads = true;
        }
    }
    
    if (hasuploads==false) {
        alert(NoFileSelected);
        return false;
    }

    var fromemail=document.getElementById('fromemail').value;
    var toemail=document.getElementById('toemail').value;
    var terms=document.getElementById('terms');

    if (fromemail.length&&!checkmail(fromemail)) {
        alert(EmailInvalid);
        document.getElementById('fromemail').focus();
        return false;
    }

    if (fromemail.length==0&&toemail.length) {
        alert(SenderRequired);
        document.getElementById('fromemail').focus();
        return false;
    }

    if (terms.checked==false) {
        alert(TOSUnchecked);
        return false;
    }
}

function showProgress(params)
{
	/*
	  241873,
	  8577536,
	  00:07:28,
	  00:00:13,
	  18,
	  2,
	  iTotal=8577536&iRead=241873&iStatus=0&iMode=1&dtnow=1267913590&dtstart=1267913577&sessionid=95ea128ccc27231fa85147ac88913d57,
	  file_name
	 */

    document.getElementById('progressbar').style.display= '';
    document.getElementById('progressbar2').style.display= '';

    parts = params.split(',');

    document.getElementById('bread').innerHTML = mycalsize(parts[0]);
    document.getElementById('itotal').innerHTML = mycalsize(parts[1]);
    document.getElementById('dtremainingf').innerHTML = parts[2];
    document.getElementById('dtelapsedf').innerHTML = parts[3];
    document.getElementById('bspeedf').innerHTML = parts[4];

	if (parts.length == 8) {
		document.getElementById('proccesuploadingfilename').innerHTML =  parts[7];
	}

    document.getElementById('progBar').innerHTML= "<div class='progInner' style='width: " + parts[5] + "%;'>" + parts[5] + "%</div>";
}

function RegisterNow()
{
    var ok = confirm(NeedRegister);
    if(ok==1) document.location = "register.php";
}

function toggle(el) {
    lyr = document.getElementById(el);

    if (lyr.style.display != 'block') { lyr.style.display = 'block'; }

    else { lyr.style.display = 'none'; }
}

function submitEmailForm()
{
    var fromemail=document.getElementById('fromemail').value;
    var toemail=document.getElementById('toemail').value;
    var terms=document.getElementById('terms');
    if(fromemail.length==0&&toemail.length!=0)
    {
        alert(FromemailNeeded);
        return false;
    }
    else
    {
        document.emailform.uploadmode.value=currentmode;
        setTimeout("document.emailform.submit();", 2000);
        //return document.emailform.submit();
    }
}

//generate new upload files
var attaIdx=1;
var fileNum=1;
var urlNum=1;
var ftpNum=1;
function newUploadField(type)
{
    if(type=='file') attaIdx = fileNum;
    if(type=='url')  attaIdx = urlNum;
    if(type=='ftp')  attaIdx = ftpNum;

    if(attaIdx>=max_uploads) {alert(MaxUploadsGot);return;}
    
    var fileobj=document.getElementById(type+'_'+'wraper0');
    var filelist=document.getElementById(type+'list');
    var filecode = fileobj.innerHTML;

    //file fields
    filecode = filecode.replace(/uploads_0/g,'uploads_'+attaIdx);
    filecode = filecode.replace(/uploadurl\[0\]/g,'uploadurl['+attaIdx+']');
    filecode = filecode.replace(/uploadftp\[0\]/g,'uploadftp['+attaIdx+']');
    
    //css id for html
    filecode = filecode.replace(/uploadfile\_0/g,'uploadfile_'+attaIdx);
    filecode = filecode.replace(/uploadurl\_0/g,'uploadurl_'+attaIdx);
    filecode = filecode.replace(/uploadftp\_0/g,'uploadftp_'+attaIdx);
    
    filecode = filecode.replace(/options0/g,'options'+attaIdx);
    filecode = filecode.replace(/attachId0/g,'attachId'+attaIdx);
    
    //name array for fields
    filecode = filecode.replace(/descr\[0\]/g,'descr['+attaIdx+']');
    filecode = filecode.replace(/password\[0\]/g,'password['+attaIdx+']');
    filecode = filecode.replace(/descr\_0/g,'descr_'+attaIdx);
    filecode = filecode.replace(/password\_0/g,'password_'+attaIdx);

    //alert( filecode);
    new Insertion.After(filelist, '<div id='+type+'_wraper'+attaIdx+'>'+filecode+'</div>');

    //clear out the filled values
    if(type!='file')
    document.getElementById('upload'+type+'_'+attaIdx).value='';
    
    document.getElementById(type+'_descr_'+attaIdx).value='';
    document.getElementById(type+'_password_'+attaIdx).value='';
    
    attaIdx++;
    
    if(type=='file') fileNum = attaIdx;
    if(type=='url')  urlNum  = attaIdx;
    if(type=='ftp')  ftpNum  = attaIdx;
}

function calsize(obj,str)
{
    var size=obj.value;
    var unit = LANG_KB;
    if(size=='') size=0;
    if(size>1024) { size=size/1024; unit=LANG_KB; }
    if(size>1024) { size=size/1024; unit=LANG_MB; }
    if(size>1024) { size=size/1024; unit=LANG_GB; }
    size = Math.round(size*100)/100;

    document.all[str].innerHTML=size+' '+unit;
}

function mycalsize(num)
{
    var size = num-2079;
    var unit = LANG_KB;
    if(size=='') size=0;
    if(size>1024) { size=size/1024; unit=LANG_KB; }
    if(size>1024) { size=size/1024; unit=LANG_MB; }
    if(size>1024) { size=size/1024; unit=LANG_GB; }
	size = Math.round(size*10)/10;

    return size+' '+unit;
}

function AjaxSubmit(formname)
{
    eval('var url=document.'+formname+'.action;');
    eval('var httpmethod=document.'+formname+'.method;');

    var Param = Form.serialize(formname);
    var myAjax = new Ajax.Updater ('main', url, {method: httpmethod, parameters: Param,evalScripts: true} );
}

function showResult(originalRequest)
{
    //put returned XML in the textarea
    params=(originalRequest.responseText);
    alert(originalRequest.responseText);
    String.evalScripts(originalRequest.responseText);

}

function showDownloadLinks()
{
    var uploadfrmdoc = document.getElementById('emailframe').contentWindow;

    try{

    document.getElementById('uploadresults').innerHTML = uploadfrmdoc.document.getElementById('linksholder').innerHTML;
    document.getElementById('uploadoverview').innerHTML = uploadfrmdoc.document.getElementById('uploadoverview').innerHTML;

    }
    catch (e) {alert(e)}

    document.getElementById('uploadresults').style.display='';
    document.getElementById('uploadoverview').style.display='';
    document.getElementById('helpwindow').style.display='none';
	document.getElementById('progressbar').style.display='none';
	document.getElementById('esttimeleftblock').style.display='none';
}

function showDownloadErrors()
{
    try{
	
	document.getElementById('onlyformupload').style.display='none';
    document.getElementById('uploaderror').style.display='';
    document.getElementById('uperror').innerHTML=document.getElementById('uploadframe').contentWindow.document.getElementById('upload_errors').innerHTML;

    resetUploadInterface();

    stopUpload();
    }catch (e) {
        alert('showDownloadErrors:'+e)
    }
}

function resetUploadInterface()
{
    try{

    document.getElementById('uploadwindow').style.display='';
    document.getElementById('emailwindow').style.display='';
    document.getElementById('uploadoverview').style.display='none';
    document.getElementById('uploadresults').style.display='none';
    document.getElementById('progressbar').style.display='none';
    document.getElementById('progressbar2').style.display='none';
    document.getElementById('helpwindow').style.display='none';
    
    }catch (e) {
        alert('resetUploadInterface:'+e)
    }
}

function showResponse(originalRequest)
{
    var parts= new Array();
    var params=originalRequest.responseText;
	//i_req = i_req+1;

    //alert(params);
    if (params.substring(0,5) == 'start') {
        rParam = params.substring(6);
        setTimeout("AjaxRequest(rParam);", 2000);
    }
    else {
        parts = params.split(',');
        if (parts.length > 5) {
            showProgress(params);
        }
        
        var url = parts[6];
        if (url.length > 5) {
            setTimeout("AjaxRequest('"+url+"');", 2000);
        }
        else {
            url='';
        }
    }
}

function stopUpload()
{
    stopupload = true;
}

function AjaxRequest(rParam)
{
    if (stopupload) {
        //alert('Ajax is stoped!');
        return;
    }

    var url=document.uploadform.returnurl.value;
    //alert(url+rParam+'&url='+progress_url+'&r='+Math.random());
    var myAjax = new Ajax.Request(url, {method: 'get', parameters: rParam+'&url='+progress_url+'&r='+Math.random(), onComplete: showResponse,onFailure: reportError} );
}

function reportError(request)
{   
    alert(originalRequest.responseText);
    alert('Sorry. There was an error.');
}

var tmpTag=new Array();
var tmpStore=new Array();
function makeEditable(id)
{
    tmpTag[id] = $(id).innerHTML?1:0;
    $(id).innerHTML=$(id).innerHTML?($(id).innerHTML):'Click here to edit';
	Event.observe(id, 'click', function(){edit($(id))}, false);
	Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
	Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}

function edit(obj)
{
	Element.hide(obj);
    tmpStore[obj.id]=obj.innerHTML;

	var textarea = '<div id="'+obj.id+'_editor"><textarea id="'+obj.id+'_edit" name="'+obj.id+'" rows="2" cols="30">'+(tmpTag[obj.id]==0?'':trim(obj.innerHTML))+'</textarea>';
	var button	 = '<div style="align:center;"><input id="'+obj.id+'_save" type="button" class=button value="SAVE" /> OR <input id="'+obj.id+'_cancel" type="button" class=button value="CANCEL" /></div></div>';

	new Insertion.After(obj, textarea+button);

	Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
	Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);
}

function showAsEditable(obj, clear)
{
	if (!clear){
		Element.removeClassName(obj, 'editable');
	}else{
		Element.addClassName(obj, 'editable');
	}
}

var url='ajax.php';
function saveChanges(obj)
{

	var new_content	=  ($F(obj.id+'_edit'));

	obj.innerHTML	= "Saving...";
	cleanUp(obj, true);

	var success	= function(t){editComplete(t, obj);}
	var failure	= function(t){editFailed(t, obj);}


	var pars = 'id='+obj.id+'&mode=split&content='+new_content;
	var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});
}

function cleanUp(obj, keepEditable)
{
	Element.remove(obj.id+'_editor');
	Element.show(obj);
	if (!keepEditable) showAsEditable(obj, true);
}

function editComplete(t, obj)
{
	obj.innerHTML	= t.responseText;
    tmpTag[obj.id] = obj.innerHTML?1:0;
    obj.innerHTML=obj.innerHTML?obj.innerHTML:'Click here to edit';
	showAsEditable(obj, true);
}

function editFailed(t, obj)
{
	alert('Sorry, the update failed.');
    obj.innerHTML   =  tmpStore[obj.id];
	cleanUp(obj,0);
}

function trim(inputString) 
{
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);

   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);

   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }

   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
   }
   return retValue;
}

function ClipBoard(id)
{
	var ccc = MM_findObj(id);
    if (document.all){
	ccc.value = ccc.innerText;
	Copied = ccc.createTextRange();
	Copied.execCommand("Copy");
    alert("URL copied!");
    }
    else
    {
        alert('Close this box and press \'CTL-c\' to copy');
        ccc.focus();
        ccc.select();
    }
}

function MM_findObj(n, d) { //v4.01
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function highlight(id) {
    var field = MM_findObj(id);
	field.focus();
  	field.select();
}

function checkAll()
{
    for (var i=0;i<document.myform.elements.length;i++)
    {
       var e = document.myform.elements[i];
       if (e.type == 'checkbox' && e.name != 'allbox'&& !e.disabled)
       e.checked = document.myform.allbox.checked;
    }

}

function opConfirm(text, conf)
{
    for (var i=0;i<document.myform.elements.length;i++)
    {
       var e = document.myform.elements[i];
       if (e.type == 'checkbox' && e.name != 'allbox' && e.checked == 1 ) {
          if (conf) {
             return confirm(text);
          } else {
             return 1;
          }
       }
    }
    return false;
}
var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i

function checkmail(e){
	var returnval=emailfilter.test(e)
	return returnval;
}

function getexpirydate( nodays){
   var UTCstring;
   Today = new Date();
   nomilli=Date.parse(Today);
   Today.setTime(nomilli+nodays*24*60*60*1000);
   UTCstring = Today.toUTCString();
   return UTCstring;
}

function getcookie(cookiename) {
   var cookiestring=""+document.cookie;
   var index1=cookiestring.indexOf(cookiename);
   if (index1==-1 || cookiename=="") return "";
   var index2=cookiestring.indexOf(';',index1);
   if (index2==-1) index2=cookiestring.length;
   return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}

function setcookie(name,value)
{
   duration=30;

   cookiestring=name+"="+escape(value)+";EXPIRES="+getexpirydate(duration);
   document.cookie=cookiestring;

}

function delcookie(name)
{
   cookiestring=name+"="+escape('')+";EXPIRES="+getexpirydate(-1);
   document.cookie=cookiestring;
}
