/* swfuplaod stuff*/
var swfu;
function initUpload() {
    $('SWFUploadTargetDegraded').style.display = 'none';        
    var settings = {
        flash_url: "/js/swfupload/swfupload.swf",
        /*upload_url: "/;jsessionid=" + readCookieJSessId('JSESSIONID') + "?page=upload",*/
        file_size_limit: "30 MB",
        file_types: "*.jpg; *.jpeg; *.gif; *.tif; *.tiff",
        file_types_description: "Image files",
        file_upload_limit: 0,
        file_queue_limit: 0,

        use_query_string: true,
        file_post_name: "Filedata",
        requeue_on_error: false,
        debug: false,
        
        // Button settings
        button_image_url: "../../img/flash-button-new.gif", // Relative to the Flash file
        button_width: "64",
        button_height: "24",
        button_placeholder_id: "flashButtonPlaceHolder",
        button_text: "",
        button_text_style: "",
        button_text_left_padding: 5,
        button_text_top_padding: 5,
        button_cursor : SWFUpload.CURSOR.HAND,        
        
        //functions defined under 'handlers & listeners'
        file_queued_handler: fileQueued,
        file_queue_error_handler: fileQueueError,                
        upload_progress_handler: uploadProgress,
        upload_error_handler: uploadError,
        upload_success_handler: uploadSuccess,        
        upload_complete_handler: uploadComplete,
        queue_complete_handler: queueComplete // Queue plugin event
    }
            
    swfu = new SWFUpload(settings);    
}

/* file processing timout stuff */
var TIMEOUT_LIMIT_SECS  = 300;

var TIMEOUT_UPLOADED = 0;
var TIMEOUT_FINISHED = 1;
var timeoutMap       = new Array();

function checkTimeout(file_id) {        
    if(timeoutMap[file_id] == TIMEOUT_UPLOADED) {        
        swfu.cancelUpload(file_id);
        alert("The server is taking to long to respond, please check your Internet connection!");    
    }            
}




/* handlers & listeners */
var allFilesSize   = 0;
var allBytesLoaded = 0;

function fileQueued(file) { 
    var listingfiles = $("SWFUploadFileListingFiles");   
    if(!listingfiles.getElementsByTagName("ul")[0]) {
        $("tip").parentNode.removeChild($("tip"));
        var ul = document.createElement("ul")
        listingfiles.appendChild(ul);
    }

    listingfiles = listingfiles.getElementsByTagName("ul")[0];

    allFilesSize+=file.size;     
    $("allFiles").innerHTML = decodeFileSize (allFilesSize);

    var fileSize = decodeFileSize (file.size);
    
    var fileName = file.name;
    var fileTitle = file.name;
    var li = document.createElement("li");
    li.id = file.id;
    li.className = "SWFUploadFileItem";    
    li.innerHTML = "<table cellpadding=\"0\" cellspacing=\"0\" class=\"uploadTable\">"+
                       "<tr>"+
                            "<td class=\"side-left\">"+
                                "&nbsp;"+
                            "</td>"+
                            "<td style=\"width: 250px; font-size: 10px;\">"+
                                "<span title=\""+fileTitle+"\" id=\"filename_"+file.id+"\">"+fileName+"</span>"+
                            "</td>"+
                            "<td style=\"width: 110px;  padding: 0px 0px 0px 0px; text-align: center;\">"+
                                "<span class='progressBar' id='" + file.id + "progress'></span>"+
                            "</td>"+
                            "<td style=\"width: 60px; text-align: center;\">"+
                                fileSize+
                            "</td>"+
                            "<td style=\"width: 24px;\">"+
                                "<a id='" + file.id + "deletebtn' class='cancelbtn' href='javascript:swfu.cancelUpload(\"" + file.id + "\");'><!-- IE --></a>"+
                            "</td>"+
                            "<td class=\"side-right\">"+
                                "&nbsp;"+
                            "</td>"+
                        "</tr>"+
                    "</table>";

    listingfiles.appendChild(li);

    if($("filename_"+file.id).offsetWidth > 170){ cutName(file.id); }

    var queueinfo = document.getElementById("queueinfo");
    queueinfo.innerHTML = swfu.getStats().files_queued+ " photo(s)";              
    //document.getElementById("UploadBtn").style.display = "block";
    document.getElementById("cancelqueuebtn").style.display = "block";
    $("allComplete").style.display = "none";
    allBytesLoaded = 0;
    $("allProgress").style.background = "#e6e6e6";   
}

function fileQueueError(file, errorcode, message) { alert("Failed enqueuing file '"+file.name+"': "+message); }



function uploadProgress(file, complete, total) {
    var progress = document.getElementById(file.id + "progress");   
    var percent = Math.ceil((complete / total) * 100);
    progress.style.background = "#e6e6e6 url(/img/upload-progressbar-new.png) no-repeat -" + (100 - percent) + "px 0";
    if(complete == total) {
        $(file.id + "deletebtn").parentNode.innerHTML = "<img id='" + file.id + "deletebtn' src=\"/img/throbber-upload.gif\" style=\"width: 12px; height: 12px; display: block; float: right;\"/>";
        timeoutMap[file.id] = TIMEOUT_UPLOADED;                
        window.setTimeout('checkTimeout("'+file.id+'")', 1000 * TIMEOUT_LIMIT_SECS) ;
    }    
}

function uploadError(file, errcode, message) {    
    timeoutMap[file.id] = TIMEOUT_FINISHED;
    $(file.id + "deletebtn").parentNode.innerHTML = "";
    if(errcode == SWFUpload.UPLOAD_ERROR.FILE_CANCELLED){
        var li = document.getElementById(file.id);    
        allFilesSize-=file.size;        
        $("allFiles").innerHTML = decodeFileSize (allFilesSize);
        li.style.display = "none";
        document.getElementById("queueinfo").innerHTML = swfu.getStats().files_queued+ " photo(s)"; 
    } else {
        if(message == "504") {
            alert("Insufficient storage room, please upgrade your account to expand");
        } else if(message == "409"){
            alert("Session expired, please relogin");                
        } else if (message == "401") {
            alert("Access denied, please to relogin");
        } else {
            alert("Error uploading photo "+file.name);
        }
        
    }
}

function uploadSuccess(file, data) {
    $(file.id + "deletebtn").parentNode.innerHTML = "<img src=\"/img/upload-complete.gif\" style=\"display: block; float: right;\"/>";
}

function uploadComplete(file) {  
    timeoutMap[file.id] = TIMEOUT_FINISHED;  
    var progress = document.getElementById(file.id + "progress");
    progress.style.background = "#e6e6e6 url(/img/upload-progressbar-new.png) no-repeat 0 0";                    
    allBytesLoaded += file.size;        
    $("allProgress").style.background = "#e6e6e6 url(/img/upload-progressbar-new.png) no-repeat -" + (100 - Math.ceil((allBytesLoaded / allFilesSize) * 100)) + "px 0";    
    document.getElementById("queueinfo").innerHTML = swfu.getStats().files_queued+ " photo(s)"; 
    
}

function queueComplete(num_files_uploaded) {
    allFilesSize = 0;
    allBytesLoaded = 0;    
    $("queueinfo").innerHTML = "Done!"  
    $("cancelqueuebtn").style.display = "none";
    $("allComplete").style.display    = "block";
    $("allProgress").style.background = "#e6e6e6 url(/img/upload-progressbar-new.png) no-repeat 0";        
}

function beginUpload() {
    
    timeoutMap = new Array();
    var callback = function(status, req) {
        if (status == 0) {
            var ticket = req.responseText;
            doUpload(ticket);
        } else {
            if(req.status == 403) {                                             
                openAjaxMessageBox("page=show-ajax-login&text=info_login_message_box_group_join", "setLoginButtonAction('"+groupId+"')");
            } else  {
                openMessageBox(req.statusText);
            }           
        }
    }

    var url = "page=change-upload-params";
    url += "&albumName=" + encodeURIComponent($('uploadAlbumNew').value);
    url += "&albumId=" + encodeURIComponent($('uploadAlbum').value);
    url += "&pub=" + encodeURIComponent($('uploadPublicity1').checked ? 1 : 0);
    //url = makeUrl(url, false);
    ajaxCall(url, callback, true);   
}

function doUpload(ticket) {
    
    var url = "/?page=upload&ticket=" + encodeURIComponent(ticket);    
    url += "&pub=" + encodeURIComponent($('uploadPublicity1').checked ? 1 : 0);
    url += "&tags=" + encodeURIComponent($('uploadTags').value);
    url += "&desc=" + encodeURIComponent(descChanged ? $('uploadDescription').value : "");
    url += "&date=" + new Date().getTime();
    url = makeUrl(url, false);
    swfu.setUploadURL(url);    
        
    try {swfu.startUpload();} catch (ex) {}    
}



/* tabs and parameters stuff */
//params and changes stuff
var descChanged    = false;
var albNameChanged = false;

function blurUploadProps(elem){ 
    if(elem.id == "uploadAlbumNew") {       
        
        if(elem.value == "") {
            albNameChanged = false;
            elem.value = $(elem.id+"Text").value; 
            $('photoVisibility').style.display = 'block'; 
            $('albumVisibility').style.display = 'none';
        } else {
            albNameChanged = true;
            $('photoVisibility').style.display = 'none'; 
            $('albumVisibility').style.display = 'block';
            $("uploadAlbum").selectedIndex = 0;
        }
        
    } else if(elem.id == "uploadAlbum") {
        
        if(elem.value != "*") {
            $("uploadAlbumNew").value = "";
            blurUploadProps($("uploadAlbumNew"));
        }
        
    } else if (elem.id == "uploadDescription") {
        
        if(elem.value == ""){
            descChanged = false;
            elem.value = $(elem.id+"Text").value;
        } else {
            descChanged = true;         
        }
        
    }   
}

function focusUploadProps(elem){
    if(elem.id == "uploadAlbumNew") {
        if(!albNameChanged) {elem.value = "";}  
    } else if (elem.id == "uploadDescription") {        
        if(!descChanged) {elem.value = "";} 
    }       
}

   
function decodeFileSize (fileSize) {       
     if(fileSize < 1048576) {
        fileSize = fileSize/1024;
        fileSize = ""+fileSize;
        fileSize = fileSize.substring(0, parseInt(fileSize.indexOf("."))+2);
        fileSize = fileSize + "KB";
    } else{
        fileSize = fileSize/1048576;
        fileSize = ""+fileSize;
        fileSize = fileSize.substring(0, parseInt(fileSize.indexOf("."))+2);
        fileSize = fileSize + "MB";
    }

    return fileSize;

}

function cutName(fileId) {
    elem = $("filename_"+fileId);
    while(elem.offsetWidth > 210) {
         elem.innerHTML = elem.innerHTML.substring(0, elem.innerHTML.length-1);
    }
    elem.innerHTML = elem.innerHTML+"&#8230;";
}

