/* Files Manager 2.1.5 RC1 */
/* Licenced for vbsupport.org */

var sAjax = 1,
open_jWindow = null,
dlpreview_media_ajax = null,
dlpreview_fulldesc_ajax = null,
genpass_ajax = null,
setpriority_ajax = null;

function krfm_Events(){}
krfm_Events.prototype.click = function(e)
{
     preview_dlfileinfo(this, container_id, dragdrop_handle_id);
     return false;
};

function krfm_strrpos(haystack, needle, offset)
{
    var i = -1;
    if (offset)
    {
        i = (haystack + '').slice(offset).lastIndexOf(needle); // strrpos' offset indicates starting point of range till end,
        // while lastIndexOf's optional 2nd argument indicates ending point of range from the beginning
        if (i !== -1)
        {
            i += offset;
        }
    }
    else
    {
        i = (haystack + '').lastIndexOf(needle);
    }
    return i >= 0 ? i : false;
}

function krfm_selfurl()
{
   var wl = window.location, tmp;
   tmp = wl.protocol + '//' + wl.host + wl.pathname;
   tmp = tmp.substr(tmp, krfm_strrpos(tmp, "/"));
   return tmp;
}

function strlen(string)
{
     return string.length;
}

function krfm_str_replace(search, replace, subject)
{
     return subject.split(search).join(replace);
}

function krfm_grayOut(vis, options)
{
     // Pass true to gray out screen, false to ungray
     // options are optional.  This is a JSON object with the following (optional) properties
     // opacity:0-100         // Lower number = less grayout higher = more of a blackout
     // zindex: #             // HTML elements with a higher zindex appear on top of the gray out
     // bgcolor: (#xxxxxx)    // Standard RGB Hex color code
     // grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
     // Because options is JSON opacity/zindex/bgcolor are all optional and can appear
     // in any order.  Pass only the properties you need to set.
     var options = options || {};
     var zindex = options.zindex || 50;
     var opacity = options.opacity || 80;
     var opaque = (opacity / 100);
     var bgcolor = options.bgcolor || '#000000';
     var dark = fetch_object('darkenScreenObject');
     if(!dark)
     {
         // The dark layer doesn't exist, it's never been created.  So we'll
         // create it here and apply some basic styles.
         // If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917
         var tbody = document.getElementsByTagName("body")[0];
         var tnode = document.createElement('div');           // Create the layer.
         tnode.style.position = 'absolute';                 // Position absolutely
         tnode.style.top = '0px';                           // In the top
         tnode.style.left = '0px';                          // Left corner of the page
         tnode.style.overflow = 'hidden';                   // Try to avoid making scroll bars
         tnode.style.display = 'none';                      // Start out Hidden
         tnode.id = 'darkenScreenObject';                   // Name it so we can find it later
         tnode.onclick = function ()
         {
             krclose_window();
         }
         tbody.appendChild(tnode);                            // Add it to the web page
         dark = fetch_object('darkenScreenObject');  // Get the object.
     }
     if(vis)
     {
         // Calculate the page width and height
         if(document.body && ( document.body.scrollWidth || document.body.scrollHeight))
         {
             var pageWidth = document.body.scrollWidth + 'px';
             var pageHeight = document.body.scrollHeight + 'px';
         }
         else if( document.body.offsetWidth )
         {
             var pageWidth = document.body.offsetWidth + 'px';
             var pageHeight = document.body.offsetHeight + 'px';
         }
         else
         {
             var pageWidth = '100%';
             var pageHeight = '100%';
         }
         //set the shader to cover the entire page and make it visible.
         dark.style.opacity = opaque;
         dark.style.MozOpacity = opaque;
         dark.style.filter = 'alpha(opacity='+opacity+')';
         dark.style.zIndex = zindex;
         dark.style.backgroundColor = bgcolor;
         dark.style.width = pageWidth;
         dark.style.height = pageHeight;
         dark.style.display = 'block';
     }
     else
     {
         dark.style.display = 'none';
     }
}

function krfm_load_external_file(thefile, callback)
{
    thefile = (typeof(thefile) == "string") ? [thefile] : thefile;
    for(var i = 0; i < thefile.length; i++)
    {
        if(thefile[i] != "")
        {
            var script = document.createElement("script");
            YAHOO.util.Dom.setAttribute(script, "type", "text/javascript");
            if(i == thefile.length - 1)
            {
                if(typeof(callback) != "undefined")
                {
                    if(script.readyState)
                    {
                        script.onreadystatechange = function()
                        {
                            if(script.readyState == "loaded" || script.readyState == "complete")
                            {
                                script.onreadystatechange = null;
                                callback();
                            }
                        }
                    }
                    else
                    {
                        script.onload = function()
                        {
                            callback();
                        }
                    }
                }
            }
        }
        YAHOO.util.Dom.setAttribute(script, "src", thefile[i] + "?" + Math.floor(Math.random() * 100000));
        document.getElementsByTagName("head")[0].appendChild(script);
    }
}

function set_dragdrop_object(container_id, dragdrop_handle_id)
{
    var dragdrop;
    if(typeof(YAHOO.util.DD) == 'undefined')
    {
         krfm_load_external_file(krfm_bburl + "/clientscript/yui/dragdrop/dragdrop-min.js", function()
         {
             dragdrop = new YAHOO.util.DD(container_id);
             dragdrop.setHandleElId(dragdrop_handle_id);
         });
    }
    else
    {
         dragdrop = new YAHOO.util.DD(container_id);
         dragdrop.setHandleElId(dragdrop_handle_id);
    }
}

function krshow_window(str)
{
     this.container_id = 'undefined' ? '_dlfileinfo_container' : this.container_id;
     var Obj = fetch_object(this.container_id);
     if(Obj)
     {
          krclose_window();
     }
     var div = document.createElement('div');
     div.id = this.container_id;
     div.style.width = "400px";
     div.style.padding = "5px";
     div.className = 'tborder alt1 smallfont';
     div.style.position = is_ie ? "absolute" : "fixed";
     div.style.zIndex = "100";
     div.innerHTML = str;

     var closew_image = new Image();
     closew_image.src = IMGDIR_MISC + "/cross.png";
     closew_image.className = 'inlineimg';
     closew_image.alt = '';
     closew_image.border = '0';
     closew_image.onmousedown = function()
     {
          krclose_window();
          return false;
     }

     var elm_a = document.createElement('a');
     elm_a.href = '#';
     elm_a.title = 'Close Window';
     elm_a.appendChild(closew_image);
     div.appendChild(elm_a);

     document.body.appendChild(div);
     center_element(div);
     krfm_grayOut(true);
     return false;
}

function create_wrapper_container(container_id, dragdrop_handle_id, container_width, container_height)
{
     this.container_id = container_id;
     this.dragdrop_handle_id = dragdrop_handle_id;

     this.Obj = fetch_object(this.container_id);
     if(this.Obj)
     {
          krclose_window();
     }
     this.divContainer = document.createElement('div');
     this.divContainer.id = this.container_id;
     this.divContainer.className = "tborder";

     if(container_width)
     {
          this.divContainer.style.width = container_width + "px";
     }
     else if(is_ie)
     {// Fuck! i hate IE!
          this.divContainer.style.width = '600px';
     }
     else
     {
          this.divContainer.style.width = 'auto';
     }

     if(container_height)
     {
          this.divContainer.style.height = container_height + "px";
     }
     else
     {
          this.divContainer.style.height = 'auto';
     }

     this.divContainer.style.position = is_ie ? "absolute" : "fixed";
     this.divContainer.style.zIndex = "1000";

     document.body.appendChild(this.divContainer);
     krfm_grayOut(true);
     if(this.container_id && this.dragdrop_handle_id)
     {
          set_dragdrop_object(this.container_id, this.dragdrop_handle_id);
     }
}

function open_ajax_window(Obj, container_id, dragdrop_handle_id, container_width, container_height)
{
    var extraPostData = get_extraPostData(Obj);
    if(AJAX_Compatible)
    {
         var sendUrl = krfm_bburl + '/krfilesmanager.php',
         postData = extraPostData + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
         handleSuccess = function(ajax)
         {
              if(ajax.responseXML !== undefined)
              {
                  if(fetch_tag_count(ajax.responseXML, 'jwindow'))
                  {
                       var html = ajax.responseXML.documentElement.getElementsByTagName("html"),
                       htmldata = html[0].childNodes[0].nodeValue;
                       create_wrapper_container(container_id, dragdrop_handle_id, container_width, container_height);
                       var preview = fetch_object(container_id);
                       preview.innerHTML = htmldata;
                       preview.style.width = preview.offsetWidth+15 + 'px';
                       fetch_object(dragdrop_handle_id).style.cursor = "move";
                       center_element(preview);
                       console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                       var pnav = fetch_object("krfm_pagenav_container");
                       if(pnav)
                       {
                           var alinks = fetch_tags(pnav, "a");
                           for(var i = 0; typeof alinks[i] != "undefined"; i++)
                           {
                                alinks[i].onclick = krfm_Events.prototype.click;
                           }
                       }
                  }
                  else
                  {
                       var errors = ajax.responseXML.getElementsByTagName('error');
                       if(errors.length)
                       {
                           var error_html = '<ol>';
                           for(i = 0; i < errors.length; i++)
                           {
                                error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                           }
                           error_html += '</ol>';
                           krshow_window(error_html);
                           return false;
                       }
                  }
              }
         },
         handleFailure = function(ajax)
         {
              console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
              window.open(krfm_bburl + '/krfilesmanager.php?' + extraPostData, 'krfm_html', 'scrollbars=yes, resizable=yes, width=600, height=500');
              return false;
         },
         callback =
         {
              success: handleSuccess,
              failure: handleFailure,
              timeout: vB_Default_Timeout
         };
         if(YAHOO.util.Connect.isCallInProgress(open_jWindow))
         {
              YAHOO.util.Connect.abort(open_jWindow);
         }
         open_jWindow = YAHOO.util.Connect.asyncRequest('POST', sendUrl, callback, postData);
         return false;
    }
    return true;
}

function preview_dlfileinfo(Obj, container_id, dragdrop_handle_id, container_width, container_height)
{
    this.Obj = Obj;
    this.container_id = container_id ? container_id : '_dlfileinfo_container';
    this.dragdrop_handle_id = dragdrop_handle_id ? dragdrop_handle_id : 'dlfileinfo_ddhandle';

    var extraPostData = get_extraPostData(Obj);

    if(AJAX_Compatible)
    {
         var sUrl = krfm_bburl + '/krfilesmanager.php',
         postData = extraPostData + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
         handleSuccess = function(ajax)
         {
              if(ajax.responseXML !== undefined)
              {
                   if(fetch_tag_count(ajax.responseXML, 'dlfileinfo'))
                   {
                        create_wrapper_container(container_id, dragdrop_handle_id, container_width, container_height);
                        var preview = fetch_object(container_id),
                        response = ajax.responseXML.documentElement.getElementsByTagName("preview");
                        preview.innerHTML = response[0].childNodes[0].nodeValue;
                        fetch_object(dragdrop_handle_id).style.cursor = "move";
                        preview.style.overflow = 'visible';
                        center_element(preview);
                        console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                        var pnav = fetch_object("krfm_pagenav_container");
                        if(pnav)
                        {
                            var alinks = fetch_tags(pnav, "a");
                            for(var i = 0; typeof alinks[i] != "undefined"; i++)
                            {
                                 alinks[i].onclick = krfm_Events.prototype.click;
                            }
                        }
                   }
                   else
                   {
                        var errors = ajax.responseXML.getElementsByTagName('error');
                        if(errors.length)
                        {
                             var error_html = '<ol>';
                             for(i = 0; i < errors.length; i++)
                             {
                                  error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                             }
                             error_html += '</ol>';
                             krshow_window(error_html);
                             return false;
                       }
                   }
              }
         },
         handleFailure = function(ajax)
         {
              console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
              document.location.href = krfm_bburl + '/krfilesmanager.php?' + extraPostData;
         },
         callback =
         {
              success: handleSuccess,
              failure: handleFailure,
              timeout: vB_Default_Timeout
         };
         if(YAHOO.util.Connect.isCallInProgress(dlpreview_media_ajax))
         {
              YAHOO.util.Connect.abort(dlpreview_media_ajax);
         }
         dlpreview_media_ajax = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
         return false;
    }
    return true;
}

function moderate_file(Obj)
{
    if(AJAX_Compatible)
    {
         extraPostData = get_extraPostData(Obj);

         var sUrl = krfm_bburl + '/krfilesmanager.php',
         postData = extraPostData + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
         handleSuccess = function(ajax)
         {
              if(ajax.responseXML !== undefined)
              {
                   if(fetch_tag_count(ajax.responseXML, 'dlfileinfo'))
                   {
                        var aObject = fetch_object(Obj.id),
                        classname = ajax.responseXML.documentElement.getElementsByTagName("classname");
                        phrase = ajax.responseXML.documentElement.getElementsByTagName("phrase");
                        hrefhtml = ajax.responseXML.documentElement.getElementsByTagName("hrefhtml");
                        aObject.className = classname[0].childNodes[0].nodeValue;
                        aObject.innerHTML = phrase[0].childNodes[0].nodeValue;
                        aObject.href = hrefhtml[0].childNodes[0].nodeValue;
                        console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                   }
                   else
                   {
                        var errors = ajax.responseXML.getElementsByTagName('error');
                        if(errors.length)
                        {
                             var error_html = '<ol>';
                             for(i = 0; i < errors.length; i++)
                             {
                                  error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                             }
                             error_html += '</ol>';
                             krshow_window(error_html);
                             return false;
                       }
                   }
              }
         },
         handleFailure = function(ajax)
         {
              console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
              document.location.href = krfm_bburl + '/krfilesmanager.php?' + extraPostData;
         },
         callback =
         {
              success: handleSuccess,
              failure: handleFailure,
              timeout: vB_Default_Timeout
         };
         if(YAHOO.util.Connect.isCallInProgress(dlpreview_media_ajax))
         {
              YAHOO.util.Connect.abort(dlpreview_media_ajax);
         }
         dlpreview_media_ajax = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
         return false;
    }
    return true;
}

var krfm_set_file_priority = null;
krfm_Events.prototype.set_priority_onclick = function(e)
{
     if(krfm_set_file_priority && krfm_set_file_priority.Obj == this)
     {
         return false;
     }
     else
     {
         krfm_set_file_priority = new set_file_priority(this);
     }
     return false;
};

function set_file_priority_init(table_setpriority_cells)
{
    var aElm = fetch_tags(fetch_object(table_setpriority_cells), 'a');
    for(var i = 0; i < aElm.length; i++)
    {
        if(aElm[i].id && aElm[i].id.substr(0, 14) == 'dlsetpriority_' && aElm[i].rel.indexOf('KRFM::AJAX') != -1)
        {
             var details = aElm[i].id.split('_');
             this.dlfileid = details[1];
             this.priority = details[2];
             this.Obj = aElm[i].id;
             aElm[i].onclick = krfm_Events.prototype.set_priority_onclick;
        }
    }
}

function set_file_priority(Obj)
{
    if(AJAX_Compatible)
    {
         this.Obj = Obj;
         var details = this.Obj.id.split('_');
         this.dlfileid = details[1];
         this.priority = details[2];
         extraPostData = get_extraPostData(this.Obj);

         var sUrl = krfm_bburl + '/krfilesmanager.php',
         postData = extraPostData + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
         handleSuccess = function(ajax)
         {
              if(ajax.responseXML !== undefined)
              {
                   if(fetch_tag_count(ajax.responseXML, 'dlfileinfo'))
                   {
                        var aObject = fetch_object('dlpriorityfile_' + dlfileid),
                        menuObject = fetch_object('dlpriorityfile_' + dlfileid + '_menu'),
                        classname = ajax.responseXML.documentElement.getElementsByTagName("classname");
                        menuhtml = ajax.responseXML.documentElement.getElementsByTagName("menuhtml");
                        buttonphrase = ajax.responseXML.documentElement.getElementsByTagName("buttonphrase");
                        aObject.className = classname[0].childNodes[0].nodeValue;
                        aObject.innerHTML = buttonphrase[0].childNodes[0].nodeValue;
                        menuObject.innerHTML = menuhtml[0].childNodes[0].nodeValue;
                        if(vBmenu.activemenu == 'dlpriorityfile_' + dlfileid)
                        {
                             vBmenu.hide();
                        }
                        console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                   }
                   else
                   {
                        var errors = ajax.responseXML.getElementsByTagName('error');
                        if(errors.length)
                        {
                             var error_html = '<ol>';
                             for(i = 0; i < errors.length; i++)
                             {
                                  error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                             }
                             error_html += '</ol>';
                             krshow_window(error_html);
                             return false;
                       }
                   }
              }
         },
         handleFailure = function(ajax)
         {
              console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
              document.location.href = krfm_bburl + '/krfilesmanager.php?' + extraPostData;
         },
         callback =
         {
              success: handleSuccess,
              failure: handleFailure,
              timeout: vB_Default_Timeout
         };
         if(YAHOO.util.Connect.isCallInProgress(setpriority_ajax))
         {
              YAHOO.util.Connect.abort(setpriority_ajax);
         }
         setpriority_ajax = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
         return false;
    }
    return true;
}

function krfm_genpassword(Obj, resp_containerid, memberid)
{
    if(AJAX_Compatible)
    {
         var extraPostData = '';
         if(resp_containerid === 'response_genpass_custom')
         {
             Obj.form.pmpassword.value = Obj.form.pmpassword.checked ? 1 : 0;
             extraPostData = 'do=genpass&userid=' + Obj.form.userid.value + '&dlfileid=' + Obj.form.dlfileid.value + '&pmpassword=' + Obj.form.pmpassword.value;
         }
         else
         {
             var pmpasswordObject = fetch_object('pmpassword_' + memberid);
             pmpasswordObject.value = pmpasswordObject.checked ? 1 : 0;
             extraPostData = get_extraPostData(Obj);
             extraPostData += '&pmpassword=' + pmpasswordObject.value;
         }
         var sUrl = krfm_bburl + '/krfilesmanager.php',
         postData = extraPostData + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
         handleSuccess = function(ajax)
         {
              if(ajax.responseXML !== undefined)
              {
                   if(fetch_tag_count(ajax.responseXML, 'html'))
                   {
                        var aObject = fetch_object(resp_containerid),
                        password = ajax.responseXML.documentElement.getElementsByTagName("password");
                        aObject.innerHTML = password[0].childNodes[0].nodeValue;
                        console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                   }
                   else
                   {
                        var errors = ajax.responseXML.getElementsByTagName('error');
                        if(errors.length)
                        {
                             var error_html = '<ol>';
                             for(i = 0; i < errors.length; i++)
                             {
                                  error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                             }
                             error_html += '</ol>';
                             krshow_window(error_html);
                             return false;
                       }
                   }
              }
         },
         handleFailure = function(ajax)
         {
              console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
              document.location.href = krfm_bburl + '/krfilesmanager.php?' + extraPostData;
         },
         callback =
         {
              success: handleSuccess,
              failure: handleFailure,
              timeout: vB_Default_Timeout
         };
         if(YAHOO.util.Connect.isCallInProgress(genpass_ajax))
         {
              YAHOO.util.Connect.abort(genpass_ajax);
         }
         genpass_ajax = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
         return false;
    }
    return true;
}

function krfm_show_dlfile_description(Obj, dlfileid, resp_containerid)
{
    var divObject = fetch_object(resp_containerid);
    currentStatus = Obj.getAttribute("divStatus_" + dlfileid);
    if(AJAX_Compatible)
    {
         if(!currentStatus)
         {
             var extraPostData = get_extraPostData(Obj);
             var sUrl = krfm_bburl + '/krfilesmanager.php',
             postData = 'do=showdlfiledesc&dlfileid=' + dlfileid + '&ajax=' + sAjax + '&securitytoken=' + SECURITYTOKEN,
             handleSuccess = function(ajax)
             {
                 if(ajax.responseXML !== undefined)
                 {
                     if(fetch_tag_count(ajax.responseXML, 'dlfileinfo'))
                     {
                         var contentDescription = ajax.responseXML.documentElement.getElementsByTagName("description");
                         divObject.innerHTML = contentDescription[0].childNodes[0].nodeValue;
                         divObject.className = 'progressContainer blue';
                         divObject.style.display = 'block';
                         Obj.setAttribute("divStatus_" + dlfileid, 'opened');
                         console.log('krfm_bburl:: ', krfm_bburl, '; krfm_js_bburl:: ', krfm_js_bburl);
                     }
                     else
                     {
                         var errors = ajax.responseXML.getElementsByTagName('error');
                         if(errors.length)
                         {
                             var error_html = '<ol>';
                             for(i = 0; i < errors.length; i++)
                             {
                                  error_html += '<li>' + errors[i].firstChild.nodeValue + '</li>';
                             }
                             error_html += '</ol>';
                             krshow_window(error_html);
                             return false;
                        }
                     }
                 }
             },
             handleFailure = function(ajax)
             {
                 console.warn("AJAX Error: Status = %s: %s", ajax.status, ajax.statusText);
                 document.location.href = krfm_bburl + '/krfilesmanager.php?' + extraPostData;
             },
             callback =
            {
                 success: handleSuccess,
                 failure: handleFailure,
                 timeout: vB_Default_Timeout
            };
            if(YAHOO.util.Connect.isCallInProgress(dlpreview_fulldesc_ajax))
            {
                 YAHOO.util.Connect.abort(dlpreview_fulldesc_ajax);
            }
            dlpreview_fulldesc_ajax = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
            return false;
         }
         else if(currentStatus === 'closed')
         {
              divObject.style.display = 'block';
              Obj.setAttribute("divStatus_" + dlfileid, 'opened');
         }
         else
         {
              divObject.style.display = 'none';
              Obj.setAttribute("divStatus_" + dlfileid, 'closed');
         }
    }
    return true;
}

function krclose_window()
{
    fetch_object(this.container_id).parentNode.removeChild(fetch_object(this.container_id));
    krfm_grayOut(false);
}

function get_extraPostData(Obj)
{
    var extraPostData = '';
    var parameterString = Obj.href.replace(/.*\?(.*)/, "$1"),
    parameterTokens = parameterString.split("&"),
    parameterList = new Array();

    for(i = 0; i < parameterTokens.length; i++)
    {
         var parameterName = parameterTokens[i].replace(/(.*)=.*/, "$1"),
         parameterValue = parameterTokens[i].replace(/.*=(.*)/, "$1");
         extraPostData += '&' + parameterName + '=' + parameterValue;
         parameterList[parameterName] = parameterValue;
    }
    extraPostData = extraPostData.substr(1, strlen(extraPostData));
    return extraPostData;
}

