function xtinify(xid)
{
    if(window.xupload_tmp_url==undefined || window.xupload_cgi_url==undefined)
    {
        alert("Can't initialize XUpload Tiny.\nNeed xupload_tmp_url & xupload_cgi_url variables");
        return;
    }
    var ext_folder='';
    if(window.xupload_ext_folder!=undefined)ext_folder=xupload_ext_folder;
    var arr = [];
    if (arguments.length > 1)
    {
        for(var i=0, length = arguments.length; i < length; i++){ if($(arguments[i]))arr.push(arguments[i]); }
    }
    else
    {
        if($(xid))arr.push(xid);
    }
    var code='';
    for(var i=0;i<arr.length;i++)
    {
        var id=arr[i];
        code+="<div id='"+id+"_div' class='xupload_div'>"+
        "<form name='"+id+"' enctype='multipart/form-data' method='POST' action='"+window.xupload_cgi_url+"/upload.cgi?' target='"+id+"_frame'>"+
        "<input type='hidden' name='ext_folder' value='"+ext_folder+"'>"+
        "<input type='file' name='file' onChange='startUpload(this.form)'></form>"+
        "<iframe src='javascript:false;' name='"+id+"_frame' style='position:absolute;left:-9999px;'></iframe>"+
        "<div class='xupload_bar' id='"+id+"_bar'><div class='xupload_status' id='"+id+"_progress'></div><div class='xupload_perc' id='"+id+"_perc'></div></div></div>";
    }
    document.getElementsByTagName("BODY")[0].innerHTML+=code;

    var isMSIE = /*@cc_on!@*/false;
    for(var i=0;i<arr.length;i++)
    {
        var id=arr[i];
        var x = $(id);
        var div = $(id+'_div');
        var bar = $(id+'_bar');
        var xy = findPos(x);
        div.style.left = xy[0]+'px';
        div.style.top = xy[1]+'px';
        bar.style.left = 0;
        bar.style.top = 0;
        var w=(x.clientWidth+4);
        var h=(x.clientHeight+3);
        if(isMSIE){w+=83;h+=1;}
        div.style.width = w+'px';
        div.style.height = h+'px';
        bar.style.width  = div.style.width;
        bar.style.height = div.style.height;
    }
}

function startUpload(f)
{
    var UID='';
    for(var i=0;i<12;i++)UID+=''+Math.floor(Math.random() * 10);
    f.action = f.action.split('?')[0]+'?upload_id='+UID+'&input_id='+f.name;
    $(f.name+'_bar').style.display='block';
    f.submit();
    if(window.xupload_disable_button!=undefined && $(xupload_disable_button))$(xupload_disable_button).disabled=true;
    window.setTimeout( function (){jah(f.name,window.xupload_tmp_url+'/'+UID+'.html')}, 1000);
}

function setInput(id,val)
{
    if(val)
    {
        $(id).value=val;
        $(id+'_div').style.display='none';
    }
    else
    {
        $(id+'_bar').style.display='none';
    }
    if(window.xupload_disable_button!=undefined && $(xupload_disable_button))$(xupload_disable_button).disabled=false;
}

if(!window.$){ window.$ = function (elem){return document.getElementById(elem);} }
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 StopLoad(w)
{
    if(w.stop) w.stop(); else if(w.document.execCommand) w.document.execCommand("Stop");
}

function SP(id,res)
{
    if(res.match(/^ERROR:(.+)$/)){setInput(id,'');StopLoad(window.frames[id+'_frame']);alert(RegExp.$1);return false;}
    if(!res.match(/^\d+:\d+$/))return true;
    var ss = res.split(/:/);
    var percent = parseInt(100*parseFloat(ss[0])/parseFloat(ss[1]));
    $(id+'_progress').style.width = percent+'%';
    $(id+'_perc').innerHTML = percent+'%';
    return true;
}

function jahDone(req,id,url)
{
    if (req.readyState == 4)
    {
        if($(id).value){return;}
        if (req.status == 200)
        {
            if(SP(id,req.responseText))
            {
                window.setTimeout(function (){jah(id,url)},500);
            }
        }
        //else
        //{window.setTimeout("jah('"+id+"','"+url+"');",500);}
    }
}

function jah(id,url)
{
    url = url.split(/\?/)[0]+'?rnd='+Math.random();
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {jahDone(req,id,url);};
        req.open("GET", url, true);
        req.send(null);
    }
    else if (window.ActiveXObject)
    {
        var req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req)
        {
            req.onreadystatechange = function() {jahDone(req,id,url);};
            req.open("GET", url, true);
            req.send();
        }
    }
}
