Sindbad~EG File Manager
/*
* Version 1.0, 23-Aug-2013
* ToDo : Convert it as jQuery plugin to remove function name clashes.
*/
/*
NOTE:
~~~~~
css classes :
~~~~~~~~~~~~~
1. req - For required field
2. email - Valid email address
3. mob - valid mobile number
4. phone - valid phone number
5. dt - valid date
// Only for delete operation
6. chk-all - Select All checkbox
7. chk-item - Individual check box
Dependencies:
~~~~~~~~~~~~~
1. validation.css
*/
//old Name : Validation
function Validate(divId, truncate) {
var IsReqOrInValid = false;
truncate = typeof truncate == 'undefined' || truncate == true ? true : false;
var id = divId + " input[type = text], textarea";
//Trim all inputs with maxlength set
if (truncate) {
$(id).each(function () {
if ($(this).attr('maxlength')) {
$(this).val($.trim($(this).val()).substring(0, $(this).attr('maxlength')));
}
else {
$(this).val($.trim($(this).val()));
}
});
}
//for required field
//var $inputs = $(divId + ' .req');
//modified by karthik k on 26/07/2014
var $inputs = $(divId + ' input[type = text]:not(.hidden).req');
$inputs.each(function () {
if (!$(this).val()) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//for required field
//modified by karthik k on 26/07/2014
var $inputs = $(divId + ' textarea:not(.hidden).req');
$inputs.each(function () {
if (!$(this).val()) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//Modified by karthik k on 26/07/2014
//required field for dropdown list
var $inputsChosen = $(divId + ' select:not(.hidden).req');
$inputsChosen.each(function () {
var Id = this.id;
if (!$(this).val()) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//required field for chosen Plugin
var $inputsChosen = $(divId + ' .chzn-select.req');
$inputsChosen.each(function () {
var Id = this.id;
if (!$(this).val()) {
$('#' + Id + '_chzn').addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$('#' + Id + '_chzn').removeClass('req-highlight');
}
});
/* var $inputsSelectize = $(divId + ' .selectize-dropdown.req');
$inputsSelectize.each(function () {
var Id = this.id;
if (!$(this).val()) {
// $('#' + Id + '_chzn').addClass('highlight');
IsReqOrInValid = true;
}
else {
//$('#' + Id + '_chzn').removeClass('highlight');
}
});*/
//required field for checkbox
var $inputsCheck = $(divId + ' .req > input[type=checkbox]');
$inputsCheck.each(function () {
if ($('input[name=' + this.name + ']:checked').length == 0) {
$(this).parent().addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).parent().removeClass('req-highlight');
}
});
//required field for Radio buttons
var $inputsRadio = $(divId + ' input[type=radio].req');
$inputsRadio.each(function () {
if ($('input[name=' + this.name + ']:checked').length == 0) {
$(this).parent().addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).parent().removeClass('req-highlight');
}
});
//validation for email address
var $inputs = $(divId + ' .email');
$inputs.each(function () {
if ($(this).val())
if (!isValidEmail($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//validation for mobile number
var $inputs = $(divId + ' .mob');
$inputs.each(function () {
if ($(this).val())
if (!isValidNumber($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//validation for pin number
var $inputs = $(divId + ' .pin');
$inputs.each(function () {
if ($(this).val())
if (!isValidPinNumber($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//Validate Date formats - Only for dd/mm/yyyy
var txtids = divId + " .dt";
$(txtids).each(function () {
if ($(this).val() != "") {
if (!isValidDate($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = $(this).val().split("/");
if (IsDateValid(temp[0], temp[1], temp[2])) {
$(this).removeClass('req-highlight');
} else {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
}
}
});
//validation for 24 hours format time
var $inputs = $(divId + ' .time24');
$inputs.each(function () {
if ($(this).val())
if (!isValidTime24($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//highlight Validation for phone number
var $inputs = $(divId + ' .phone');
$inputs.each(function () {
if ($(this).val())
if (!isValidPhone($(this).val())) {
$(this).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$(this).removeClass('req-highlight');
}
});
//selectize validation
var $inputs = $(divId + ' .req.selectized');
$inputs.each(function () {
if(this.tagName == "SELECT")
{
if (!$.trim($(this).val())) {
$('.'+this.id).addClass('req-highlight');
IsReqOrInValid = true;
}
else {
$('.'+this.id).removeClass('req-highlight');
}
}
});
//if validation fails then scroll to top of the page
if (IsReqOrInValid) {
$('html, body').animate({ scrollTop: $(divId).offset().top }, 300);
return false;
}
else {
return true;
}
}
// reference: www.codeproject.com/Articles/13873/Date-Validation-in-JavaScript
// Validate whether date really exists ? Example : Feb 30 will fail.
function IsDateValid(Day, Mn, Yr) {
var DateVal = Mn + "/" + Day + "/" + Yr;
var dt = new Date(DateVal);
if (dt.getDate() != Day) {
return (false);
}
else if (dt.getMonth() != Mn - 1) {
//this is for the purpose JavaScript starts the month from 0
return (false);
}
else if (dt.getFullYear() != Yr) {
return (false);
}
//valid date
return (true);
}
// Ref: http://t4109.codeinpro.us/q/508117854f1eba38a40302a2
// Date Formatting : Formats DB date to dd/MM/yyyy format.
function FromDBDate(datestring) {
var matches = /\/Date\((\d*)\)\//.exec(datestring);
var date;
if (!matches) {
date = "";
}
else {
var data = new Date(parseInt(matches[1]));
date = data.getDate() + "/" + (data.getMonth() + 1) + "/" + data.getFullYear()
}
return date;
}
// Date Formatting : Formats dd/MM/yyyy to MM-dd-yyyy format to send it back to DB
function ToDBDate(datestring) {
var data;
if (datestring == null || datestring == "" || datestring === undefined) {
data = "";
}
else {
data = datestring.split("/");
data = data[2] + "-" + data[1] + "-" + data[0];
}
return data;
}
// Function to display error or success message in corresponding error summary control
// old name : ShowMsg
function ShowMessage(result, controlId) {
var err = "";
var succ = "";
if (result.Error.length > 0) {
$.each(result.Error, function (i, item) {
err = err + item + '</br >';
});
}
if (result.Success.length > 0) {
$.each(result.Success, function (i, item) {
succ = succ + item + '</br >';
});
}
if (err != "") {
$(controlId + "_errSummary").html(err);
$(controlId + "_errSummary").show();
}
else {
$(controlId + "_errSummary").hide();
}
if (succ != "") {
$(controlId + "_succSummary").html(succ);
$(controlId + "_succSummary").show();
}
else {
$(controlId + "_succSummary").hide();
}
}
//reference:forum.jquery.com/topic/how-do-i-add-event-handler-to-dynamically-created-checkbox-in-jquery
//stackoverflow.com/questions/17918219/jquery-function-not-working-properly-for-dynamically-created-checkbox
//stackoverflow.com/questions/3890372/all-checkbox-under-a-div-not-immediate-inside-to-the-div
//Private function - Not necesary to call
function OnCheckedChange(containersId, btnDeleteId) {
var $chkIds = new Array();
var $chkdIds = new Array();
$chkIds = $(containersId + ' .chk-item:checkbox');
$chkdIds = $(containersId + ' .chk-item:checkbox:checked');
if ($chkdIds.length > 0) {
$(btnDeleteId).show();
}
else {
$(btnDeleteId).hide();
}
if ($chkIds.length == $chkdIds.length) {
$(containersId + " .chk-all").prop('checked', true);
} else {
$(containersId + " .chk-all").prop('checked', false);
}
}
function SelectAllItems(containerId, btnDeleteId) {
var $HdrchkdIds = new Array();
$HdrchkdIds = $(containerId + ' .chk-all:checkbox:checked');
if ($HdrchkdIds.length > 0) {
$(containerId + " .chk-item").prop('checked', true);
}
else {
$(containerId + " .chk-item").prop('checked', false);
}
var $chkdIds = new Array();
$chkdIds = $(containerId + ' .chk-item:checkbox:checked');
if ($chkdIds.length > 0) {
$(btnDeleteId).show();
}
else {
$(btnDeleteId).hide();
}
}
//Call This function only once in page load function
//containerId:"#divItems tr td";
//btnDeleteId:"#btnBulkDeleteId"
//class to be applied : chk-all to header (Select All) check box, chk-item to invidual check boxes in the repeater
function InitCheckedChange(containerId, btnDeleteId) {
$(document).on('change', containerId + ' .chk-all', function () {
// To select all the checkboxes
SelectAllItems(containerId, btnDeleteId);
});
$(document).on('change', containerId + ' .chk-item', function () {
OnCheckedChange(containerId, btnDeleteId);
});
}
function SelectAllItms(containerId, btnDeleteId) {
$(containerId + " .chk-item").prop('checked', true);
var $chkIds = new Array();
$chkIds = $(containerId + ' .chk-item:checkbox');
if ($chkIds.length > 0)
{
$(btnDeleteId).addClass('show');
$(btnDeleteId).removeClass('hidden');
} //$(btnDeleteId).show();
else
{
$(btnDeleteId).addClass('hidden');
$(btnDeleteId).removeClass('show');
//$(btnDeleteId).hide();
}
}
function DeSelectAllItms(containerId, btnDeleteId) {
$(containerId + " .chk-item").prop('checked', false);
//$(btnDeleteId).hide();
$(btnDeleteId).addClass('hidden');
$(btnDeleteId).removeClass('show');
}
function OnSelectCheckedChange(containersId, btnDeleteId) {
var $chkIds = new Array();
var $chkdIds = new Array();
$chkIds = $(containersId + ' .chk-item:checkbox');
$chkdIds = $(containersId + ' .chk-item:checkbox:checked');
if ($chkdIds.length > 0)
{
$(btnDeleteId).addClass('show');
$(btnDeleteId).removeClass('hidden');
} //$(btnDeleteId).show();
else
{
$(btnDeleteId).addClass('hidden');
$(btnDeleteId).removeClass('show');
//$(btnDeleteId).hide();
}
if($chkdIds.length === 0){
$(containersId + " #ddlHeader").val('1');
}
else if ($chkIds.length == $chkdIds.length) {
$(containersId + " #ddlHeader").val('2');
}else
$(containersId + " #ddlHeader").val('0');
}
function InverseSelectItms(containerId, btnDeleteId) {
/* $(containerId + " .chk-item").prop('checked', false);
$(btnDeleteId).hide();*/
var $chkIds = new Array();
var $isShowDeleteBtn = false;
$chkIds = $(containerId + ' .chk-item:checkbox');
if($chkIds.length > 0)
{
$.each($chkIds, function(index, val) {
if(val.checked)
{
$(val).prop('checked', false);
}
else
{
$(val).prop('checked', true);
$isShowDeleteBtn = true;
}
});
if($isShowDeleteBtn === true)
{
$(btnDeleteId).addClass('show');
$(btnDeleteId).removeClass('hidden');
}
else
{
$(btnDeleteId).addClass('hidden');
$(btnDeleteId).removeClass('show');
// $(btnDeleteId).hide();
}
}
//$(containerId + ' #ddlHeader').val('0');
}
function DeleteMultipleSelectItems(containerId, itemsArray, btnDeleteId) {
if (confirm('Are you sure you want to delete selected items?')) {
var $checkedIds = $(containerId + " input:checked");
$checkedIds.each(function () {
!isNaN($(this).attr('indexid')) ? itemsArray[$(this).attr('indexid')].status = -1 : 0;
});
//After deleting all checked items then hide delete button
$(btnDeleteId).addClass('hidden');
$(btnDeleteId).removeClass('show');
return itemsArray;
}
else {
return null;
}
}
function InitSelectChange(containerId, btnDelete) {
$(document).on('click', containerId + ' #divItemsHeader ul li a', function () {
// To select all the checkboxes
//alert($(this).val());
var option = 0;
option = parseInt($(this).attr('value'));
if(option === 1) // None option Selected
DeSelectAllItms(containerId, btnDelete);
else if (option === 2) //All option Selected
SelectAllItms(containerId, btnDelete);
else if (option === 3) //Inverse option Selected
{
InverseSelectItms(containerId, btnDelete);
// $(this).val('0');
}else if(option === 4) //form submition for deletion
{
$chkdIds = $(containerId + ' .chk-item:checkbox:checked');
if ($chkdIds.length > 0)
{
if(DeleteConfirm())
$(containerId).submit();
}
return false;
}
});
$(document).on('change', containerId + ' .chk-item', function () {
OnSelectCheckedChange(containerId, btnDelete);
});
}
//reference:stackoverflow.com/questions/2155622/get-a-list-of-checked-checkboxes-in-a-div-using-jquery
//-http://stackoverflow.com/questions/5450104/using-jquery-getting-all-checked-checkboxes-with-a-certain-class-name
//-http://www.stoimen.com/blog/2010/03/31/jquery-get-the-id-of-the-current-element/
// To delete multiple items from the given array.
function DeleteMultipleItems(containerId, itemsArray, btnDeleteId) {
if (confirm('Are you sure you want to delete selected items?')) {
var $checkedIds = $(containerId + " input:checked");
$checkedIds.each(function () {
!isNaN($(this).attr('indexid')) ? itemsArray[$(this).attr('indexid')].status = -1 : 0;
});
//After deleting all checked items then hide delete button
$(btnDeleteId).hide();
return itemsArray;
}
else {
return null;
}
}
//index page delete button Confirm box
function DeleteConfirm() {
if (confirm('Are you sure you want to delete selected items?')) {
return true;
}
else {
return false;
}
}
function DeleteItmConfirm() {
if (confirm('Are you sure you want to delete item?')) {
return true;
}
else {
return false;
}
}
// Place focus on the first control
function MovePage(id) {
$(id + ' :input:visible:first').focus();
}
//function MovePage(id) {
// $(id + ' :input:visible:first').focus();
//}
// Shows modal / closes modal
// toClose parameter is optional.
//function Modal(divId, toClose) {
// toClose = typeof toClose == 'undefined' ? false : true;
// if (toClose == false)
// $(divId).reveal();
// else
// $(divId).hideModal();
//}
/*function Modal(divId, toClose) {
toClose = typeof toClose == 'undefined' || toClose == false ? false : true;
if (toClose == false)
$(divId).reveal();
else
$(divId).hideModal();
}*/
function Openloading() {
$.colorbox({ title: "Loading, Please wait..", opacity: "0.5", width: "200px", height: "100px", html: "<div id=\"cboxLoadingGraphic\"></div>", escKey: false, closeButton: false, overlayClose: false, initialWidth: "100px",initialHeight: "50px", });
}
function Closeloding() {
$.colorbox.close();
}
/* Regular Expressions */
function isValidEmail(emailId) {
var exp = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
var pattern = new RegExp(exp);
return pattern.test(emailId);
}
function isValidPassword(password) {
var exp = /^([a-zA-Z0-9!@#$%_]{8,15})$/;
var pattern = new RegExp(exp);
return pattern.test(password);
}
function isValidName(name) {
var exp = /^([a-zA-Z\s]{1,20})$/;
var pattern = new RegExp(exp);
return pattern.test(name);
}
function isValidNumber(no) {
var exp = /^[0-9]{10}/;
var pattern = new RegExp(exp);
return pattern.test(no);
}
function isValidPhone(phoneNumber) {
var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
return phoneNumberPattern.test(phoneNumber);
}
function isValidDate(date) {
var exp = /^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/]\d{4}$/;
var datePatern = new RegExp(exp);
return datePatern.test(date);
}
function isValidTime24(time) {
var exp = /^([01]\d|2[0-3]):?([0-5]\d)*:?([0-5]\d)$/;
var datePatern = new RegExp(exp);
return datePatern.test(time);
}
function isValidPinNumber(no) {
var exp = /^[0-9]{6}/;
var pattern = new RegExp(exp);
return pattern.test(no);
}
function IsAuthenticated(result) {
if (result == null) {
alert('Please log in to continue.');
window.location.replace("/Default.aspx");
return false;
}
else {
return true;
}
}
function ClearHighLight(divId)
{
var $inputs = $(divId + ' .req-highlight').removeClass('req-highlight');
}
function ClearTableStyle(divId)
{
var $inputsodd = $(divId+' table.mws-table tbody tr.odd table.notblstyle tr');
$inputsodd.each(function () {
$(this).removeClass('even');
$(this).removeClass('odd');
});
var $inputseven = $(divId+' table.mws-table tbody tr.even table.notblstyle tr');
$inputseven.each(function () {
$(this).removeClass('even');
$(this).removeClass('odd');
});
}
function Modal(divId, toClose)
{
toClose = typeof toClose == 'undefined' || toClose == false ? false : true;
if (toClose == false)
{
$(divId).modal({show:true, keyboard:false ,backdrop:"static"}) ; // $(divId).reveal();
// $('.chosen-select', this).chosen('destroy').chosen();
}
else
// $(divId).modal({show:false}) ; //$(divId).hideModal();
$(divId).modal('hide');
}
// Function to display error or success message in corresponding error summary control
// old name : ShowMsg
function ShowMessage(result, controlId)
{
$(controlId +".alert-success").hide();
$(controlId +".alert-danger").hide();
$(controlId +".alert-info").hide();
if (result['msg'].length > 0) {
if(result['status']=='success')
{
if(result['msg'])
{
$(controlId +" .alert-success").show();
$(controlId +" .alert-success span").html(result['msg']);
}
}
else if(result['status']=='error')
{
$(controlId +" .alert-danger").show();
$(controlId +" .alert-danger span").html(result['msg']);
}
else if(result['status']=='info')
{
$(controlId +" .alert-info").show();
$(controlId +" .alert-info span").html(result['msg']);
}
}
}
//Created by karthik
//Date : 2014-09-29
//Converted from DB datetime to DD/MM/YYYY HH:MM:SS string format
function FromDBToDMYTString(dbDatetime)
{
try
{
if(typeof dbDatetime !== 'undefined' && dbDatetime !== null)
{
var dtTime = dbDatetime.split(' ');
var date = dtTime[0].split('-');
var time = dtTime[1].split(':');
return date[2]+'/'+date[1]+'/'+date[0]+' '+time[0]+':'+time[1]+':'+time[2];
}
else
return null;
}catch(err)
{
return null;
}
}
//Created by karthik
//Date : 2014-09-29
//Converted from DB datetime to DD/MM/YYYY string format
function FromDBToDMYString(dbDatetime)
{
var res ='';
try
{
if(typeof dbDatetime !== 'undefined' && dbDatetime !== null)
{
var dtTime = dbDatetime.split(' ');
if(typeof dtTime[0] !=='undefined')
var date = dtTime[0].split('-');
if($.isArray(date) && date.length>0)
res = date[2]+'/'+date[1]+'/'+date[0];
return res;
}
else
return null;
}catch(err)
{
return null;
}
}
// created by karthik k
//To round the decimal values
// it takes 2 as default value for decimal place when you not mention the decimal place
function RoundOffDecimal(inputText,noOfDecimalPlace)
{
var res = 0 ;
try
{
if(typeof inputText !== 'undefined' && $.isNumeric(inputText))
{
res = parseFloat(inputText);
if(typeof noOfDecimalPlace !== 'undefined' && $.isNumeric(noOfDecimalPlace))
res = res.toFixed(parseInt(noOfDecimalPlace));
else
res = res.toFixed(2);
}else
return null;
return parseFloat(res);
}catch(e)
{
return null;
}
}
function NullIfEmpty(param)
{
try
{
if(typeof param !== 'undefined' && $.trim(param)!== '')
return $.trim(param);
else
return null;
}catch(e)
{
return null;
}
}
//refernce : http://w3lessons.info/demo/ajax-indicator/
//http://w3lessons.info/2014/01/26/showing-busy-loading-indicator-during-an-ajax-request-using-jquery/
function ShowProgress()
{
var text = 'loading data.. please wait..';
if(jQuery('body').find('#resultLoading').attr('id') != 'resultLoading'){
jQuery('body').append('<div id="resultLoading" style="display:none"><div><img src="'+assetBaseUrl+'/images/ajax-loader.gif"><div>'+text+'</div></div><div class="bg"></div></div>');
}
jQuery('#resultLoading').css({
'width':'100%',
'height':'100%',
'position':'fixed',
'z-index':'10000000',
'top':'0',
'left':'0',
'right':'0',
'bottom':'0',
'margin':'auto'
});
jQuery('#resultLoading .bg').css({
'background':'#000000',
'opacity':'0.7',
'width':'100%',
'height':'100%',
'position':'absolute',
'top':'0'
});
jQuery('#resultLoading>div:first').css({
'width': '250px',
'height':'75px',
'text-align': 'center',
'position': 'fixed',
'top':'0',
'left':'0',
'right':'0',
'bottom':'0',
'margin':'auto',
'font-size':'16px',
'z-index':'10',
'color':'#ffffff'
});
jQuery('#resultLoading .bg').height('100%');
jQuery('#resultLoading').fadeIn(300);
jQuery('body').css('cursor', 'wait');
}
function StopProgress()
{
jQuery('#resultLoading .bg').height('100%');
jQuery('#resultLoading').fadeOut(300);
jQuery('body').css('cursor', 'default');
}
/*
jQuery(document).ajaxStart(function () {
ShowProgress();
}).ajaxStop(function () {
StopProgress();
});
*/
function Show_Tab(tabId) {
$('#myTab a[href="'+tabId+'"]').tab('show');
}
// Created by karthik
// Date : 2014-12-19
//reference :
// http://stackoverflow.com/questions/3421999/jquery-remove-only-text-content-from-a-div
function ShowSuccErrorMsg(succErrObject)
{
$('#divSuccessErrorInfo').empty();
if(succErrObject.status === 1)
$('#divSuccessErrorInfo').append('<div class="alert alert-dismissable alert-success hidden"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>'+succErrObject.msg+'</div>');
else if(succErrObject.status === 0)
$('#divSuccessErrorInfo').append('<div class="alert alert-dismissable alert-danger" ><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>'+succErrObject.msg+'</div>');
else if(succErrObject.status === -1)
$('#divSuccessErrorInfo').append('<div class="alert alert-dismissable alert-info hidden"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>'+succErrObject.msg+'</div>');
}
function ClearSuccErrorMsg()
{
$('#divSuccessErrorInfo').empty();
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists