var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function QuickTour() {
    $('#quickstart').click();
}
$(document).ready(function() {
    // For tooltip
    //    $('*').tipsy({
    //        gravity: $.fn.tipsy.autoNS,
    //        fade: true,
    //        html: true,
    //        live: true
    //    });
    
    //    $('img[title]').tooltip({
    //        });
        
    // $("*").tooltip();
    
    if ($(".tabs").length > 0) {
        $( ".tabs" ).tabs();
    }

    // For making active selected records
    $("#btnActive").click(function() {
        var boxes = $(".grid").find("input[type=checkbox]");
        if(boxes.is(":checked")) {
            $("#form_action").val("active");
            $("#frmMain").submit();
            return true;
        } else {
            // MSG
            alert("Please select a record to perform this action.");
            return false;
        }
    })

    // For making inactive selected records
    $("#btnInactive").click(function() {
        var boxes = $(".grid").find("input[type=checkbox]");
        if(boxes.is(":checked")) {
            $("#form_action").val("inactive");
            $("#frmMain").submit();
            return true;
        } else {
            // MSG
            alert("Please select a record to perform this action.");
            return false;
        }
    })

    // For deleting selected records
    $("#btnDelete").click(function() {
        var boxes = $(".grid").find("input[type=checkbox]");
        if(boxes.is(":checked")) {
            // MSG
            yn = confirm("Are you sure that you want to delete seleted user(s)?\nWarning: All user data will be deleted as well. You cannot roll-back this transaction.");
            if(yn) {
                $("#form_action").val("delete");
                $("#frmMain").submit();
                return true;
            } else return false;
        } else {
            // MSG
            alert("Please select a record to delete.");
            return false;
        }
    })

    //$(".deleteicon").click(function() {
    $(".deleteicon").live("click",function() {
        yn = confirm("Do you realy want to delete selected records. All related data will also delete.");
        if(yn) {
            callerImage = $(this).children("img");
            currentImage = $(this).children("img").attr("src");
            waitImage = imageUrl + "/loading-16x16-4.gif";
            $.ajax({
                url: $(this).attr('href'),
                beforeSend: function( xhr ) {
                    $("#message").hide();
                    $("#message").removeClass("success");
                    $("#message").removeClass("error");
                    callerImage.attr("src",waitImage);
                },
                success: function(data) {
                    if(data=='success') {
                        //                        $("#message").html("Record successfully delete");
                        //                        $("#message").addClass("success");
                        //                        $("#message").show();
                        //setTimeout("window.location.reload()", 3000); 
                        window.location.reload(); 
                    } else {
                        $("#message").html(data);
                        $("#message").addClass("error");
                        $("#message").show();
                    }
                },
                error: function(xhr, ajaxOptions, thrownError) {
                    $("#message").html("Comunication error while deleting with message: " + thrownError);
                    $("#message").addClass("error");
                    $("#message").show();
                },
                complete: function(jqXHR, textStatus) {
                    callerImage.attr("src",currentImage);
                }
            });
        }
        return false;
    })

    $(".activeicon").click(function() {
        callerImage = $(this).children("img");
        inactiveImage = imageUrl + "/inactive-grid.png";
        activeImage = imageUrl + "/active-grid.png";
        currentImage = $(this).children("img").attr("src");
        waitImage = imageUrl + "/loading-16x16-4.gif";
        $.ajax({
            url: $(this).attr('href'),
            beforeSend: function( xhr ) {
                $("#message").hide();
                $("#message").removeClass("success");
                $("#message").removeClass("error");
                callerImage.attr("src",waitImage);
            },
            success: function(data) {
                if(data=='Active') {
                    $("#message").html("User successfully activate");
                    $("#message").addClass("success");
                    $("#message").show();
                    callerImage.attr("src",activeImage);
                } else if (data=='Inactive') {
                    $("#message").html("User successfully inactivate");
                    $("#message").addClass("success");
                    $("#message").show();
                    callerImage.attr("src",inactiveImage);
                } else {
                    $("#message").html(data);
                    $("#message").addClass("error");
                    $("#message").show();
                    callerImage.attr("src",currentImage);
                }
            },
            error: function(xhr, ajaxOptions, thrownError) {
                $("#message").html("Comunication error while updating user status with message: " + thrownError);
                $("#message").addClass("error");
                $("#message").show();
                callerImage.attr("src",currentImage);
            },
            complete: function(jqXHR, textStatus) {
            }
        });
        return false;
    })

    $("#btnSearch").click(function(){
        url = $("#searchUrl").val();
        urlNoSearch = $("#noSearchUrl").val();
        if($("#search").val()=='') {
            url = urlNoSearch;
        } else {
            url = url.replace("--search--", $("#search").val());
        }
        window.location.href=url;
        return false;
    })

    $("#addToGroup").click(function() {
        var boxes = $(".grid").find("input[type=checkbox]");
        if(boxes.is(":checked")) {
            $("#form_action").val("add2group");
            $("#frmMain").submit();
            return true;
        } else {
            // MSG
            alert("Please select a record to perform this action.");
            return false;
        }
    })

    $("#addToDistribution").click(function() {
        var boxes = $(".grid").find("input[type=checkbox]");
        if(boxes.is(":checked")) {
            $("#form_action").val("add2distribution");
            $("#frmMain").submit();
            return true;
        } else {
            // MSG
            alert("Please select a record to perform this action.");
            return false;
        }
    })


    // for alternat color in grid
    $(".grid tbody tr:odd").addClass("odd");
    $(".grid tbody tr:even").addClass("even");

    $("#new_folder_name").keypress(function(event){
        if(event.keyCode == 13){
            $(".createfolder").trigger("click");
            return false;
        }
        
    });    
    
    $(".createfolder").click(function(){
        queryString = parent.getHashQuery();
        var q = parseQueryString(queryString);
        //$.post(baseUrl+'/ajax/index/createfolder', {
        $.post(baseUrl+'/ajax/file/createfolder', {
            parent: $('#selectfoldertree').val(),
            foldername: $('#new_folder_name').val(),
            type: q['type']
        },
        function(data) {
            if(data=='success') {
                folderDropDown();
                $(".popupWrap").animate( 
                {
                    backgroundColor: '#9DF6A6'
                },
                500
                )
                .animate( 
                {
                    backgroundColor: 'white'
                }, 
                500
                );
                $('.ferror').hide();
                $('unchecked').hide();
                $('#new_folder_name').val('');
            } else {
                $(".popupWrap").animate(
                {
                    backgroundColor: '#FE4848'
                },
                500
                )
                .animate(
                {
                    backgroundColor: 'white'
                },
                500
                );
                $('.ferror').show();
                $('unchecked').show();
            }
        });
    });

    if($('#selectfoldertree').val()){
        $.post(baseUrl+'/ajax/index/folderid', {
            fid: $('#selectfoldertree').val()
        },
        function(data) { });
    }
}); // End $(document).ready(function()

function openPopup(link, width, height) {
    if(typeof fancyboxClose == 'function') {
        $.fancybox({
            'width'                 :width,
            'height'                :height,
            'padding'               : 0,
            'autoScale'             : true,
            'autoDimensions'        : false,
            'transitionIn'          : 'elastic',
            'transitionOut'         : 'elastic',
            'type'                  : 'iframe',
            'href'                  : link,
            'onClosed'              : function() {
                fancyboxClose();
            }
        });
    } else {
        $.fancybox({
            'width'                 :width,
            'height'                :height,
            'padding'               : 0,
            'autoScale'             : true,
            'autoDimensions'        : false,
            'transitionIn'          : 'elastic',
            'transitionOut'         : 'elastic',
            'type'                  : 'iframe',
            'href'                  : link
        });
    }
}

function folderDropDown() {
    url = baseUrl+'/ajax/file/folderdropdown';
    getData(url,'',"#selectfoldertree",'');
}

function getData(url, wait, output, error) {
    $.ajax({
        url: url,
        beforeSend: function( xhr ) {
            if(wait!='') $(wait).show();
        },
        success: function(data) {
            if(output!='') $(output).html(data);
            if(wait!='') $(wait).hide();
             var hash = getHashQuery();
             var q = parseQueryString(hash);
             if(q['search']!=undefined && $("#search_filter").length ){
                 $("#search_filter").val(unescape(q['search']));
             }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            if(error!='') $(error).html(thrownError);
            if(wait!='') $(wait).hide();
        },
        complete: function(jqXHR, textStatus) {
        }
    });
}

function getDataInput(url, wait, output, error) {
    $.ajax({
        url: url,
        beforeSend: function( xhr ) {
            if(wait!='') $(wait).show();
        },
        success: function(data) {
            if(output!='') $(output).val(data);
            if(wait!='') $(wait).hide();
        },
        error: function(xhr, ajaxOptions, thrownError) {
            if(error!='') $(error).html(thrownError);
            if(wait!='') $(wait).hide();
        },
        complete: function(jqXHR, textStatus) {
        }
    });
}


////==========================================
//Check All boxes
//==========================================
function CheckAll(fmobj) {
    if(fmobj==null) {
        fmobj = document.forms[0];
        if(document.forms[1]!=null) {
            fmobj = document.forms[1];
        }
    }
    for (var i=0;i<fmobj.elements.length;i++) {
        var e = fmobj.elements[i];
        if ( (e.name != 'checkall') && (e.type=='checkbox') && (!e.disabled) && !$(e).hasClass("cbgroup") ) {
            e.checked = fmobj.checkall.checked;
        }
    }
}

//==========================================
//Check all or uncheck all?
//==========================================
function CheckCheckAll(fmobj) {
    if(fmobj==null) {
        fmobj = document.forms[0];
        if(document.forms[1]!=null) {
            fmobj = document.forms[1];
        }
    }

    var TotalBoxes = 0;
    var TotalOn = 0;
    for (var i=0;i<fmobj.elements.length;i++) {
        var e = fmobj.elements[i];
        if ((e.name != 'checkall') && (e.type=='checkbox') && !$(e).hasClass("cbgroup")) {
            TotalBoxes++;
            if (e.checked) {
                TotalOn++;
            }
        }
    }
    if (TotalBoxes==TotalOn) {
        fmobj.checkall.checked=true;
    }
    else {
        fmobj.checkall.checked=false;
    }
}

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
    return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
    return stringToTrim.replace(/\s+$/,"");
}

function Left(str, n){
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}

function updateSubfolder(val){
    queryString = parent.getHashQuery();
    var q = parseQueryString(queryString);
    $.post(
        baseUrl+'/ajax/index/folderid',
        {
            fid: val,
            type: q['type']
        },
        function(data) {}
        );
}

$(function() {
    var button = $('#add_button');
    var box = $('#folder_box');
    var form = $('#folder_form');
    button.removeAttr('href');
    button.click(function(login) {
        box.toggle();
        button.toggleClass('active');
        $("#new_folder_name").focus();

        $("#upload_file").val('');
        $('#upload_button').removeClass('active');
        $('#upload_box').hide();
        $("#upload_error").hide();
    });
    
    
    
    var group_button = $('#group_button');
    var group_box = $('#group_box');
    var group_form = $('#group_form');
    group_button.removeAttr('href');
    group_button.click(function(login) {
        group_box.toggle();
        $("#group_error").hide();
        $("#group_name").val("");
        $("#group_name").focus();
        group_button.toggleClass('active');
        if(typeof getDistributionList == 'function') {
            getDistributionList();
        }
    });
    
    
    
    
    
    form.mouseup(function() {
        return false;
    });
    
    $(this).mouseup(function(login) {
        if(!($(login.target).parent('#add_button').length > 0)) {
            button.removeClass('active');
            box.hide();
        }
        //alert($(login.target).parent().attr("id"));
        //alert($(login.target).closest("#group_box").html());
        if(($(login.target).closest('#group_box').length == 0)) {
            group_button.removeClass('active');
            group_box.hide();
        }
    });
    
});

$(function() {
    var button = $('#upload_button');
    var box = $('#upload_box');
    var form = $('#upload_form');
    button.removeAttr('href');
    button.click(function(login) {
        box.toggle();
        button.toggleClass('active');
        $("#upload_file").focus();
    });
    form.mouseup(function() {
        return false;
    });
    
//    $(this).mouseup(function(login) {
//        if(!($(login.target).parent('#upload_button').length > 0)) {
//            button.removeClass('active');
//            box.hide();
//        }
//    });
    
});


// ******* Start hash checking functions *********** //

// Hash checking when back button click
// Add code below ...
function locationHashChanged(queryString) {
    if(typeof hashCheck == 'function') {
        hashCheck(queryString);
    }
}

// CALL THIS FROM YOUR AJAX LOAD CODE EACH LOAD ...
function changeHashValue(hashQuery) {
    stopHashListener();
    hashValue     = hashQuery;
    location.hash = hashQuery;
    startHashListener();
}

// AND DONT WORRY ABOUT ANYTHING BELOW ...
function checkIfHashChanged() {
    var hashQuery = getHashQuery();
    if (hashQuery == hashValue)
        return;
    hashValue = hashQuery;
    locationHashChanged(hashQuery);
}

function parseQueryString(queryString) {
    var q = {};
    var pairs = queryString.split('&');
    for (var idx in pairs) {
        var arg = pairs[idx].split('=');
        q[arg[0]] = arg[1];
    }
    return q;
}

function startHashListener() {
    hashListener = setInterval(checkIfHashChanged, 1000);
}

function stopHashListener() {
    if (hashListener != null)
        clearInterval(hashListener);
    hashListener = null;
}

function getHashQuery() {
    return location.hash.replace(/^#/, '');
}

var hashListener = null;
var hashValue    = '';
startHashListener();

// ******* End hash checking functions *********** //

function pad(number, length) {
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }
    return str;
}
