var show_fname_chars=72;
var max_post_size;

function $(elem){return document.getElementById(elem);}

function StartUpload(f1)
{
    f1.target='xupload';
    var NF=0;
    for (var i=0;i<f1.length;i++)
    {
     current = f1.elements[i];
     if(current.type && current.type=='file' && current.value!='')
      {
         if(!checkExt2(current,f1.ext_allowed,f1.ext_not_allowed))return false;
//          if(isVideo(current) && f1.elements[current.name+'_encode'].checked)
//          {
//              f1.action = srv_htdocs_url_enc+"/upload/"+srv_id_enc;
//          }
         NF++;
      }
    }
//     var cx=0;
     var farr=new Array();
     for (var i=0;i<=f1.length;i++)
     {
       current = f1[i];
       if(f1.name=='file' && current && current.type && current.type=='file')
       {
//          var descr = $(current.name+'_descr');
//          if(descr)descr.name = 'file_'+cx+'_descr';
//          current.name = 'file_'+cx;
//          cx++;
          name = current.value.match(/[^\\\/]+$/);
          if(name && name!='null')farr.push(name);
       }
     }
    if(f1.name=='url')
    {
        //NF=f1.url_mass.value.split(/\n/).length;
        //farr.push(f1.url_mass.value.split(/\n/));
        var arr = f1.url_mass.value.split(/\n/);
        NF=arr.length;
        for(i=0;i<arr.length;i++)
        {
            name = arr[i].match(/[^\\\/]+$/);
            name=name+'';
            if(name && name!='null' && name.indexOf('?')==-1)farr.push(name);
        }
    }
    if(NF<=0){alert('Select at least one file to upload');return false;};

    var UID='';
    for(var i=0;i<12;i++)UID+=''+Math.floor(Math.random() * 10);
    max_post_size=NF*max_upload_filesize;
    openStatus(f1,UID, farr.join(', ') );

    if(f1.sid)f1.sid.value=UID;
    f1.action = f1.action+"/?X-Progress-ID="+UID;
}

function openStatus(f1,UID,fnames)
{
 $('utmodes').style.display='none';
 var d1 = $('div_'+f1.name);
 xy = findPos( d1 );
 $('progress2').style.left = xy[0]+'px';
 $('progress2').style.top = xy[1]+'px';
 $('progress2f').style.width = (d1.offsetWidth-3) + 'px';
 $('progress2f').style.height = d1.offsetHeight + 'px';
 d1.style.visibility='hidden';

//// $('progress2f').src = 'http://'+f1.action.split('/')[2]+'/status.html?'+f1.name+'-'+UID+'-'+max_post_size;

 var stp='/status.html?';
 if(usr_progress_type=='1')stp='/status2.html?';

 $('progress2f').src = srv_htdocs_url+stp+f1.name+'='+UID+'='+max_post_size+'='+fnames;

 //self.transfer2.name='http://shareator.xxx:8072';
}

// function checkExt(obj)
// {
//     value = obj.value;
//     if(value=="")return true;
//     var re1 = new RegExp("^.+\.("+ext_allowed+")$","i");
//     var re2 = new RegExp("^.+\.("+ext_not_allowed+")$","i");
//     if( (ext_allowed && !re1.test(value)) || (ext_not_allowed && re2.test(value)) )
//     {
//         str='';
//         if(ext_allowed)str+="\nOnly these extensions are allowed: "+ext_allowed.replace(/\|/g,',');
//     if(ext_not_allowed)str+="\nThese extensions are not allowed:"+ext_not_allowed.replace(/\|/g,',');
//         alert("Extension not allowed for file: \"" + value + '"'+str);
//         return false;
//     }
//
//     return true;
// }
function checkExt2(obj,ext_ok,ext_bad)
{
    if(!obj || obj.value=="")return false;
    var re_ok = new RegExp("^.+\.("+ext_ok+")$","i");
    var re_bad = new RegExp("^.+\.("+ext_bad+")$","i");
    if( ext_ok && !re_ok.test(obj.value) ){alert("This extension is not allowed!\n\nAllowed extensions: "+ext_ok.replace(/\|/g,','));return false};
    if( ext_bad && re_bad.test(obj.value) ){alert("This extension is not allowed!\n\nNot allowed extensions: "+ext_bad.replace(/\|/g,','));return false};
    return true;
}

function fixLength(str)
{
 var arr = str.split(/\\/);
 str = arr[arr.length-1];
 if(str.length<show_fname_chars)return str;
 return '...'+str.substring(str.length-show_fname_chars-1,str.length);
}

function MultiSelector( list_target, max_files, ext_ok, ext_bad )
{
    this.list_target = $(list_target);
	this.count = 0;
	this.id = 0;
	if( max_files ){
		this.max = max_files;
	} else {
		this.max = -1;
	};

    this.addElement = function( element )
    {
		if( element.tagName == 'INPUT' && element.type == 'file' )
        {
           element.name = 'file_' + this.id++;
           element.multi_selector = this;
           element.onkeypress = function(){return false;}
           element.onchange = function()
           {
               if(element.value.length<2)return;
               if(!checkExt2(element,ext_ok,ext_bad))return;
               //if(!checkExt(element))return;
               //element.video = isVideo(element);
               //if(max_files<=1)return;
               if (navigator.appVersion.indexOf("Mac")>0 && navigator.appVersion.indexOf("MSIE")>0)return;
               var new_element = document.createElement( 'input' );
               new_element.type = 'file';
               new_element.size = element.size;

               //this.parentNode.insertBefore( new_element, this );
               this.parentNode.appendChild( new_element, this );
               this.multi_selector.addElement( new_element );
               this.multi_selector.addListRow( this );

               // Hide this: we can't use display:none because Safari doesn't like it
               this.style.position = 'absolute';
               this.style.left = '-9000px';
           };
           // If we've reached maximum number, disable input element
           if( this.max != -1 && this.count >= this.max ){element.disabled = true;};

           this.count++;
           this.current_element = element;
		} 
        else {alert( 'Error: not a file input element' );};
	};

	this.addListRow = function( element )
    {
		var new_row = document.createElement( 'div' );
        new_row.className = 'xrow';

        var adel = document.createElement( 'a' );
        adel.href='#';
        adel.title='Delete';
        var img = document.createElement( 'img' );
        img.src='images/del.gif';
        adel.appendChild( img );

		new_row.element = element;

		adel.onclick= function()
        {
			this.parentNode.element.parentNode.removeChild( this.parentNode.element );
			this.parentNode.parentNode.removeChild( this.parentNode );
			this.parentNode.element.multi_selector.count--;
			this.parentNode.element.multi_selector.current_element.disabled = false;
			return false;
		};
		

		currenttext=document.createTextNode(" "+fixLength(element.value));
        var span1 = document.createElement( 'font' );
        span1.className = 'xfname';
        span1.appendChild( currenttext );

        new_row.appendChild( span1 );
        new_row.appendChild( adel );
        var br = document.createElement( 'br' );
        br.setAttribute('clear', 'all');
        new_row.appendChild( br );


        if(descr_mode && descr_mode!='0')
        {
            var new_row_descr = document.createElement( 'div' );
            new_row_descr.innerHTML = "<span class='xdescr'>"+lang_description+"</span><input type='text' name='"+element.name+"_descr' class='fdescr' maxlength=48>";
            if(public_on){ new_row_descr.innerHTML+="&nbsp;<input type='checkbox' name='"+element.name+"_public' value='1' id='pub_"+element.name+"' checked><label for='pub_"+element.name+"' class='xdescr'>"+lang_published+"</label>"; }
            new_row_descr.innerHTML+='</span>';
            new_row.appendChild( new_row_descr );
        }

        if(element.video)
        {
            var vid = document.createElement( 'div' );
            vid.innerHTML="<input type='checkbox' name='"+element.name+"_encode' value='1' id='vid_"+element.name+"' checked><label for='vid_"+element.name+"' class='xdescr'>Recode into MP4 Stream</label>";
            new_row.appendChild( vid );
        }
        

		this.list_target.appendChild( new_row );
	};
};

function getFormAction(f)
{
    if(!f)return;
    for(i=0;i<=f.attributes.length;i++)
    {
        if(f.attributes[i] && f.attributes[i].name.toLowerCase()=='action')return f.attributes[i].value;
    }
    return '';
}

function setFormAction(f,val)
{
    for(i=0;i<=f.attributes.length;i++)
    {
        if(f.attributes[i] && f.attributes[i].name.toLowerCase()=='action')f.attributes[i].value=val;
    }
}

function InitUploadSelector(id,max,ext_ok,ext_bad)
{
    if($("div_"+id))
    {
        var multi_selector = new MultiSelector( "list_"+id, max, ext_ok, ext_bad );
        multi_selector.addElement( $("element_"+id) );
        var f1 = $("form_"+id)
        f1.max_upload_files=max;
        f1.ext_allowed=ext_ok;
        f1.ext_not_allowed=ext_bad;
    }
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function changeUploadType(utype)
{
    $('div_file').style.position='absolute';
    if($('div_url'))$('div_url').style.position='absolute';
    if($('div_video'))$('div_video').style.position='absolute';
    $('div_'+utype).style.position='static';
}

function jah(url,id)
{
    if($(id))$(id).innerHTML='Checking...';
    var req;
    if(window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch(e)
        {
        	try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {return 0;}
        }
    }
    else {return 0;}

	req.open("GET", url+'&rnd='+Math.random(), 1);
	req.onreadystatechange = function()
    {
		if(req.readyState == 4)
        {
			if (req.status == 200)
            {
                if(id && $(id))
                {
                    $(id).innerHTML=req.responseText;
                }
                else
                {
                    eval(req.responseText);
                };
			}
		}
	};
	req.send("");
    return false;
};

function submitCommentsForm(f1)
{
    if(f1.cmt_name && f1.cmt_name.value==''){alert('Name required');return false;}
    if(f1.cmt_text.value.length<4){alert("Too short comment");return false;}
    var url='/cgi-bin/index.cgi?';
    for(i=0;i<f1.elements.length;i++)
    {
        url=url+'&'+f1.elements[i].name+'='+f1.elements[i].value;
    }
    url = url.replace(/\n/g,'_n_');
    jah(url);
    return false;
}


