/* disable back button */
try {
	if(_isDisableBackButton != null && (_isDisableBackButton == true || _isDisableBackButton == "true")) {
		javascript:window.history.forward(1);
	}
} catch (e) {
	// alert(e);
}

// JavaScript Document
function setupCalendar(strInputField, strButton) {
	Calendar.setup({
	  inputField    : strInputField,
//	  ifFormat 		: "%d/%m/%Y",
	  daFormat 		: "%d/%m/%Y",	  
	  button        : strButton,
	  align         : "Lr"
	});
}


function setupVNCalendar(strInputField, strButton) {
	Calendar.setup({
	  inputField    : strInputField,
	  ifFormat 		: "%d/%m/%Y",
	  daFormat 		: "%d/%m/%Y",	  
	  button        : strButton,
	  align         : "Lr"
	});
}

function openNewWindow(url, width, height){
	    var nLeft = (window.screen.width - width)/2;
	    var nTop = (window.screen.height - height)/2;
	    var properties = "width=" + width
	                     + ",height=" + height 
	                     + ",top="+ nTop
	                     + ",left=" + nLeft 
	                     + ",titlebar=yes,status=yes,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,location=no,title='DK online'";
		var newName = "newWin"; // + suffix;
		var win = window.open(url, newName , properties, true);	
		win.focus();    
	    return;
}

function openNormalWindow(url){
		openNewWindow(url, 650, 450);
	    return;
}

function openURL(url) {
	if(!isProtocol(url)) {
		url = "http://" + url;
	}
	var win = window.open(url);	
	return;
}

function openStreamQuotes(url) {
	    var properties = "titlebar=yes,status=yes,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,location=no,title='VNDirect Online...'";
		var newName = "StreamQuotes"; // + suffix;
		var win = window.open(url, newName , properties, true);	
		win.focus();    
	    return;
}

function isProtocol (externalLink) {
    var protocol = false;
    externalLink = externalLink.toLowerCase();
    var listOfProtocol = 
    	new Array("http://"
    				, "https://"
    				, "ftp://"
    				, "sftp://"
    				, "file://"
    				, "mailto://"
    				, "news://"
    				, "mms://"
    				, "telnet://"
    				, "wais://"
    				, "gopher://"
    				, "javascript:"
    			);
    var i;
    for(i=0; i< listOfProtocol.length; i++) {
    	if (externalLink.indexOf(listOfProtocol[i]) == 0) {
        	protocol = true;
        	break;
        }
    }
   return protocol;
}

//++++ TungNQ
function checkSelectItem(chkAllItemId, chkItemName){
    var size = 0;
    var index = 0;

    var chkItemElems = document.getElementsByName(chkItemName);
    var len = chkItemElems.length;
    for (var i = 0; i < len; i++) {    
        var e = chkItemElems[i];
        if(e.type=="checkbox") {
            index += (e.checked ? 1 : 0);
	        size ++;
        }
    }

    var selectAllItem = document.getElementById(chkAllItemId);
    if(selectAllItem != null && selectAllItem.type=="checkbox") {
        selectAllItem.checked = (size == index);
    }
    return;
}

function checkSelectAllItem(chkAllItemId, chkItemName){
    var selectAllItem = document.getElementById(chkAllItemId);
    if(selectAllItem != null && selectAllItem.type=="checkbox") {
	    var chkItemElems = document.getElementsByName(chkItemName);
	    var len = chkItemElems.length;
	    for (var i = 0; i < len; i++) {    
	        var e = chkItemElems[i];
	        if(e.type=="checkbox") {
                e.checked = selectAllItem.checked;
	        }
	    }        
    }
    return;
}

function getCheckboxValues(chkItemName) {
	var arrays = new Array();
	var size = 0;
    var index = 0;

    var chkItemElems = document.getElementsByName(chkItemName);
    var len = chkItemElems.length;
    for (var i = 0; i < len; i++) {    
        var e = chkItemElems[i];
        if(e.type=="checkbox" && e.checked) {
	        arrays[size ++] = e.value;
        }
    }	
	return arrays;
}

/*
 * Count number of checked check boxes that have name as parameter
 */
function countChecked(chkItemName) {
    var counter = 0;
    var chkItemElems = document.getElementsByName(chkItemName);
    var len = chkItemElems.length;

    for (var i = 0; i < len; i++) {
        var e = chkItemElems[i];
        if (e.checked) 
        	counter++;
    }

    return counter;
}


// Define alert message
var DELETE_MESSAGE = "Please select item to delete";

//---
function trim(sString){
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}
/*
*
*/
function isNumber(strNum, beginNum, endNum) {
	var chk = false;
	try {
		if(!isNaN(strNum)) {
			var num = parseFloat(strNum);
			chk = (num >= 0 && num <= endNum);
		}
	} catch (e) {
		chk = false;
	}
	return chk;
}

function isEmpty(str) {
	try {
	 return (trim(str) == '');
	} catch (e) {
	}
	return true;	
}

//++++++++++++++++++++++++++++++++++ 
var DIV_CLOSED = 0;
var DIV_OPENED = 1;
var DIV_ICONS = new Array("../../../images/icons/minus.gif", "../../../images/icons/plus.gif");
var DIV_REG_STATUS = new Array();

/**
* create OpenAndCloseObj object.
*/
function OpenAndCloseObj(name, status) {
	this.name = name;
	this.status = status;
}

/**
*
*/
function openAndCloseDiv(divId, iconImgId) {
	try {
		var statusObj = DIV_REG_STATUS[divId];	
		if(statusObj != undefined && statusObj != null) {
			var divDetailId = document.getElementById(divId);
			var iconImage = document.getElementById(iconImgId);						
			if(statusObj.status == DIV_CLOSED) {
				divDetailId.style.display="inline";
				iconImage.src = DIV_ICONS[DIV_CLOSED];
				statusObj.status = DIV_OPENED;
			// } else if(statusObj.status == DIV_OPENED) {
			} else {
				divDetailId.style.display="none";
				iconImage.src = DIV_ICONS[DIV_OPENED];		
				statusObj.status= DIV_CLOSED;
			}
		} else {
			alert("divId:" + divId);
		}
	} catch (e) {
		alert(e);
	}
	return;
}

/**
*
*/
function regOpenAndCloseDiv(divId, status, iconImgId) {
	try {
		if(status != undefined && (status == DIV_CLOSED || status == DIV_OPENED)) {
			DIV_REG_STATUS[divId] = new OpenAndCloseObj(divId, status);
		} else {
			DIV_REG_STATUS[divId] = new OpenAndCloseObj(divId, DIV_OPENED);
		}
		
		if(iconImgId != undefined && iconImgId != null) {
			openAndCloseDiv(divId, iconImgId);
		}
	} catch (e) {
		alert(e);
	}
}

/**
*
*/
function validateRequired(field, message) {
    var isValid = true;
    
    if (field.type == 'text' ||
        field.type == 'textarea' ||
        field.type == 'file' ||
        field.type == 'select-one' ||
        field.type == 'radio' ||
        field.type == 'password') {
        
        var value = '';
		// get field's value
		if (field.type == "select-one") {
			var si = field.selectedIndex;
			if (si >= 0) {
				value = field.options[si].value;
			}
		} else {
			value = field.value;
		}
        
        if (trim(value).length == 0) {        
        	alert(message);   
            isValid = false;
        }
   }

   field.focus();
   
   return isValid;
}

function validateTwoFields(field1, field2, message) {
    var bValid = true;
    var focusField;
        
    if (field1.type == 'text' ||
        field1.type == 'textarea' ||
        field1.type == 'select-one' ||
        field1.type == 'radio' ||
        field1.type == 'password') {
        
        var value;
        var secondValue;
		// get field's value
		if (field1.type == "select-one") {
			var si = field1.selectedIndex;
			value = field1.options[si].value;
            secondValue = field2.options[si].value;
		} else {
			value = field1.value;
            secondValue = field2.value;
		}
        
        if (value != secondValue) {
           	focusField = field1;
            alert(message);
            bValid = false;
        }
    }
	
	if (!bValid) {
		focusField.focus();
	}
    
    return bValid;
}

function checkMEmail(emailStr) {
   emailStr = trim(emailStr);
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

////////////////////////////////
function getPosTop(obj) /*:int*/ {
    var oNode = obj;
    var iTop = 0;
    
    //while(oNode.tagName != "BODY") {
    while(oNode){
        iTop += oNode.offsetTop;
        oNode = oNode.offsetParent;
    }    
    return iTop;
};

function getPosLeft(obj) /*:int*/ {

    var oNode = obj;
    var iLeft = 0;
    
    //while(oNode.tagName != "BODY") {
    while(oNode){
        iLeft += oNode.offsetLeft;
        oNode = oNode.offsetParent;        
    }    
    return iLeft;
};

///////////////////////
function enterKeyPressAction(e, actionNext) {
	var key;
	if(window.event) {
		key = window.event.keyCode;
	}	     //IE
	else {
		key = e.which;     //firefox
	}
	if (key == 13) {
		eval(actionNext);
	}	
}

/**
* Remove all enter character
*/
function removeEnter(input) {
	var output = "";
	if(input != null) {
		for (var i = 0; i < input.length; i++) {
			if ((input.charCodeAt(i) == 13) && (input.charCodeAt(i + 1) == 10)) {
				i++;
			} else if(input.charCodeAt(i) == 10 || input.charCodeAt(i) == 9) {
				// nothing
			} else {
				output += input.charAt(i);
		   	}	
		}
	}
	return output;
}

/**
*
*/
function checkNumber(num) {
	try {
		if(isNaN(num)) {
			num = num.toString().replace(/\$|\,/g,'');
			return (!isNaN(num));
		} else {
			return true;
		}
	} catch (e) {
	}
	return false;
}

/**
* Format number to display in web
*/
function formatCurrency(num) {
	return formatNumberWithScale(num, 2);
}

function formatNumberWithScale(num, scale, usingSign) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) {
		num = "0";
	}
	if(isNaN(scale)) {
		scale = 0;
	}
	scale = Math.abs(scale);
		
	sign = (num == (num = Math.abs(num)));
	
	var numDiv = Math.pow(10, scale);
	
	num = Math.floor(num*numDiv + 0.50000000001);
	
	cents = num%numDiv;
	num = Math.floor(num/numDiv).toString();
	
	var centsLenth = cents.toString().length;
	for(var i=0; i < (scale - centsLenth); i ++) {
		cents = "0" + cents;
	}

	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
	}
	return (((sign)?(usingSign ? '+' : ''):'-') + num + (scale == 0 ? '' : ('.' + cents)));
}

/**
* get UUID of a page
*/
function getPageUUID() {
	try {
		var pageId = "_page.uuid";
		return document.getElementById(pageId).innerHTML;
	} catch (e) {
		// alert("getPageUUID: " + e);
	}
	return "";
	
}

/**
* add parameter to URL
*/
function addParam2URL(url, paramName, paramValue) {
	url = (url == null ? "" : url);
	try {
		if(url.length > 0) {
			var index = url.indexOf("?");
			var indexTmp = url.indexOf(paramName + "=");
			if(indexTmp < 0) {
				if(index > -1) {				
					var urlTmp = url.substring(0, index + 1);
					urlTmp = urlTmp + paramName + "=" + paramValue;
					urlTmp = urlTmp + "&" + url.substring(index + 1);
					url = urlTmp;
				} else {
					url = url + "?" + paramName + "=" + paramValue;
				}
			}
		}
	} catch (e) {
		alert(e);
	}
	return url;
}

/**
* Get AJAX servlet proxy URL
*/
function getAJAXProxyUrl() {
	// return "vndirect_" + getPageUUID() + ".ajax";
	return VNDIRECT_AJAX_URI;
}

/*
* Disable link button
*/
function disableLink(aId) {
	try {
		var aLink = document.getElementById(aId);
		aLink.href = "javascript:void(0)";
		aLink.onclick = "";
	} catch (e) {
		alert(e);
	}
}

function disableButton(aId) {
		try {
		var aLink = document.getElementById(aId);		
		if(aLink != null && aLink != 'undefined') {
			aLink.href = "javascript:void(0)";
			aLink.onclick = "";
			
			try {
				aLink.style.color = "gray;";
			} catch (e) {
				// alert("aLink.style: " + e);
			}
		}
	} catch (e) {
		alert(e);
	}
}
