﻿function showHidePanel(panelID){
    if(document.getElementById(panelID)!=null){
        var panel=document.getElementById(panelID);    
        panel.style.display=='none'?panel.style.display='block':panel.style.display='none';
    }
}

function highlighContent(div, isHighlight){
	if(isHighlight){
		div.style.cursor='hand';
		div.style.background='yellow';

	}else{
		div.style.cursor='normal';
		div.style.background='';
	}
}

function showEditMenu(div, isShow){
	var editMenu=document.getElementById('editMenu');
	if(isShow){
		var newX = findPosX(div) + 2;
		var newY = findPosY(div) + 2;
		editMenu.parent=div;
		editMenu.style.left=newX + 'px';
		editMenu.style.top=newY + 'px';
		if(editMenu.style.visibility!='visible'){
			editMenu.style.visibility='visible';
		}
		editMenu.style.cursor='hand';
	}else{
		editMenu.style.visibility='hidden';
	}
}


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function subString(strSource, intLen){
	var strReturn=strSource;
	if(strSource.length>intLen){
		strReturn=strSource.substring(0, intLen);
		var endIndex=strReturn.lastIndexOf(" ");
		strReturn=strReturn.substring(0, endIndex);
	}
	
	return  strReturn;
}

function confirmSaveReadOnlyData(strMsg){
	var arrayStr=strMsg.split(";");
	var msg="";
	for(i=0;i<arrayStr.length;i++){
		msg+=(i+1) + ". " + arrayStr[i] + "\n";
	}
	var msgPrefix="Những dữ liệu sau đây là KHÔNG THỂ THAY ĐỔI KHI ĐÃ LƯU:\n";
	var line="____________________________________________________________\n\n";
	var msgSuffix="Bạn có chắc không?";
	return confirm(msgPrefix + line + msg + line + msgSuffix);
	
}

function checkImageSize(imgSrc){
	var testImgObj=new Image();
	testImgObj.src=imgSrc;
	var maxLoop=100;
	var loopIndex=0;
	while(loopIndex<maxLoop && (testImgObj.width==0 || testImgObj.height==0)){
//		testImgObj=new Image();
//		testImgObj.src=imgSrc;
		loopIndex+=1;
		setInterval("", 500);
	}

	//END TEST IMAGE SIZE HERE	
	if(loopIndex>=maxLoop){
		if(confirm('Không xác định được kích thước full size của hình. Click Ok để thử lại')){
			return checkImageSize(imgSrc);
		}
		else{
			return false;
		}
	}else{
		return true;
	}
}

function charIsValid(txt){
	var strInput=txt.value;
	var regSpecialChars=/[^a-zA-Z0-9_-]/g;
	var foundChars=strInput.match(regSpecialChars);
	if(foundChars!=null){
		alert("Ký tự không hợp lệ!\n\nKý tự bắt buộc phải là TIẾNG VIỆT KHÔNG DẤU và có giá trị trong phạm vi từ a đến z, từ A đến Z,\ndấu gạch ngang (-), dấu gạch dưới (_), số từ 0 đến 9.\nNgoài ra, ký tự nhập vào không được bao gồm khoảng trắng và các ký tự đặc biệt khác");
		txt.focus();
		txt.select();		
		return false;
	}
	else{
		return true;
	}
}

function checkLocalFileName(diskFileName){
	if(diskFileName!="" && diskFileName.indexOf(":\\")!=-1){
		var beginIndex=diskFileName.lastIndexOf('\\') + 1;
		var endIndex=diskFileName.lastIndexOf('.');
		
		var fileName=diskFileName.substring(beginIndex, endIndex);
		
		var regSpecialChars=/[^a-zA-Z0-9_-]/g;
		var foundChars=fileName.match(regSpecialChars);
		if(foundChars!=null){
			alert("Tên file [" + fileName + "] không hợp lệ!\n\nTên file bắt buộc phải là TIẾNG VIỆT KHÔNG DẤU và có giá trị trong phạm vi từ a đến z, từ A đến Z,\ndấu gạch ngang (-), dấu gạch dưới (_), số từ 0 đến 9.\n\nNgoài ra, tên file không được bao gồm khoảng trắng và các ký tự đặc biệt khác");
			return false;
		}
		else{
			return true;
		}
	}
	else{
		return false;	
	}
}

function isInteger(strValue){
    
    var objRegExp  = /(^-?\d\d*$)/;
    //check for integer characters
    return objRegExp.test(strValue);
}


function checkDateTime(txtDateTime) 
{ 
   var sDate = txtDateTime.value;
   var bValid = false; 
//   var aMatch =/^\d{2}[\/-](1|2|3|4|5|6|7|8|9|10|11|12)[\/-]\d{4}$/.exec(sDate); 
   var aMatch =/^\d{2}[\/-](01|02|03|04|05|06|07|08|09|10|11|12)[\/-]\d{4}$/.exec(sDate);      
   if (sDate.length==0) { return true; } 

   if (aMatch == null) 
  { 
     alert(sDate + " không đúng định dạng!\nNgày tháng bắt buộc phải ở dạng: Ngày-Tháng-Năm (dd-mm-yyyy)\n\nDate value is not valid format! Date must be in format of: dd-mm-yyyy");  txtDateTime.focus(); 
     return bValid; 
  } 
               
  var DateArray = sDate.split("-"); 
  

// Convert the text month to a number - zero based month 

	
	
  switch (DateArray[1]) 
  { 
     case "01":   DateArray[1] = 0; break; 
     case "02":   DateArray[1] = 1; break; 
     case "03":   DateArray[1] = 2; break; 
     case "04":   DateArray[1] = 3; break; 
     case "05":   DateArray[1] = 4; break; 
     case "06":   DateArray[1] = 5; break; 
     case "07":   DateArray[1] = 6; break; 
     case "08":   DateArray[1] = 7; break; 
     case "09":   DateArray[1] = 8; break; 
     case "10":   DateArray[1] = 9; break; 
     case "11":   DateArray[1] = 10; break; 
     case "12":   DateArray[1] = 11; break; 
  }


// Use 1970 as the breaking point for determining whether the year 
// should be >= 2000 or 1900.   

//if (DateArray[2] < 70) { DateArray[2] = 20 + DateArray[2]; } 
//else  { DateArray[2] = 19 + DateArray[2]; } 

//var oDate = new Date(); 
var oDate = new Date(DateArray[2], DateArray[1], DateArray[0]);

// Validate whether the date itself is a valid calendar date.  
if (DateArray[2] != oDate.getFullYear() || DateArray[1] != oDate.getMonth())
{ 
    alert(sDate + " có giá trị không hợp lệ!\nVí dụ: 30-2 là ngày không hợp lệ"); 
    return bValid; 
} 


  bValid = true; 
  return bValid; 

}

function checkEmail(emailStr) {
	if(emailStr.indexOf(";")!=-1){
		var emailArray=emailStr.split(";");
		for(i=0;i<emailArray.length;i++){
			isValid=checkEmail(emailArray[i]);
			if(!isValid){
				break;
			}

		}
		return isValid;
	}
	
	else{
	
		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 showUrlPopup(strURL, w, h){
	var left, top, setting;
	left=(screen.width - w)/2;
	top=(screen.height - h)/2;
			
	setting = "width=" + w + ",height=" + h + ", scrollbars=1, toolbar=1,titlebar=yes," 
				+ "dependent=yes, menubar=1,location=yes,status=1, directories=1, resizable=yes, "		
				+ "top=" + top + ", left=" + left;
	popupWin=window.open(strURL,"",setting);
	popupWin.focus();

}

function isNumeric(objName,minval,maxval,comma,period,hyphen){
// only allow 0-9 be entered, plus any values passed
// (can be in any order, and don't have to be comma, period, or hyphen)
// if all numbers allow commas, periods, hyphens or whatever,
// just hard code it here and take out the passed parameters
	var checkOK = "0123456789" + comma + period + hyphen;
	var checkStr = objName;
	var allValid = true;
	var decPoints = 0;
	var allNum = "";

	for (i = 0;  i < checkStr.value.length;  i++){
		ch = checkStr.value.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j)) break;
			
		if (j == checkOK.length){
			allValid = false;
			break;
		}
		
		if (ch != ",") allNum += ch;
	}
	
	if (!allValid){	
		alertsay = "Number is invalid!\nSố không hợp lệ!\""
		alert(alertsay);
		return (false);
	}

	// set the minimum and maximum
	var chkVal = allNum;
	
	var prsVal = parseInt(allNum);
	
	if (chkVal != "" && !(prsVal >= minval && prsVal <= maxval)){
		alertsay = "Number is too small or too large!\nSố quá nhỏ hoặc quá lớn! "
		alert(alertsay);
		return (false);
	}
}

function checkTextBoxIsNumeric(txtTextBox){
    if(txtTextBox.value!=""){
	    if(txtTextBox.value=="0.00" || txtTextBox.value=="0" || txtTextBox.value=="0."  || txtTextBox.value==".0" || txtTextBox.value=="." || txtTextBox.value==","){
		    txtTextBox.value="0";
	    }			
	    return checkNumeric(txtTextBox, 0, 1000000000, ",", ".", "");
    }
}
function checkNumeric(objName,minval, maxval,comma,period,hyphen)
{
	var numberfield = objName;
	if (isNumeric(objName,minval,maxval,",",".","") == false)
	{
		numberfield.select();
		numberfield.focus();
		return false;
	}
	else
	{
		return true;
	}
}

//prevent Enter key
function handleEnter (field, event, lastControlID, submitControlID) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
	    if(lastControlID!='' && field.id!=lastControlID){
		    var i;
		    for (i = 0; i < field.form.elements.length; i++)
			    if (field == field.form.elements[i])
				    break;
		    i = (i + 1) % field.form.elements.length;
		    field.form.elements[i].focus();
        }
        else if(document.getElementById(submitControlID)!=null){
            document.getElementById(submitControlID).click();
            
        }

		return false;
	} 
	else{
		return true;
	}
} 




//end prevent enter key
//allow Enter key to submit
function enterSubmit(nextElementID, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		document.getElementById(nextElementID).click();
		return false;
	} 
	else{
		return true;
	}
}      

function getIndexByValue(strValue, lst){
	var index=-1;
	if(lst.options.length>0){
	    var lstLen=lst.options.length;
	    strValue=strValue.toLowerCase();
	    var opt=null;
	    for(i=0;i<lstLen;i++){
		    currentValue=lst.options[i].value.toLowerCase();
		    if(currentValue==strValue){
			    index=i;
			    break;
		    }
	    }
    }
	
	return index;
}