﻿function addEvent(elm, evType, fn, useCapture)  
// addEvent and removeEvent  
// cross-browser event handling for IE5+,  NS6 and Mozilla  
// By Scott Andrew  
{  
    if (elm.addEventListener){  
        elm.addEventListener(evType, fn, useCapture);  
        return true;  
    }
    else if (elm.attachEvent){  
        var r = elm.attachEvent("on"+evType, fn);  
        return r;  
    }
    else
    {  
        alert("Handler could not be removed");  
    }  
}   

function prepareTextBoxes(){  
    if (!document.getElementsByTagName) return;  
    var oi=0;  
    var thisObj;  
    var objs = document.getElementsByTagName("input");  
    for (oi=0;oi<objs.length;oi++) {  
        thisObj = objs[oi];  
        if(thisObj.getAttribute('type') == 'text' || thisObj.getAttribute('type') =='password'){
//            thisObj.className = 'text ' + thisObj.className;
            thisObj.className = 'text';
        }
        
        else if(thisObj.getAttribute('type') == 'checkbox'){
            thisObj.className = 'checkbox';
        }
    }  
}  
  
addEvent(window, "load", prepareTextBoxes);    

function isInteger(strValue){
    if(strValue.length>255){
        return [false,'Chuỗi nhập vào có giá trị quá dài!'];
    }else{
        var isValid=true;
	    var reg=/[^0-9.,]/g;
	    var foundChars=strValue.match(reg);
	    if(foundChars!=null){
		    isValid=false;
	    }     
        return [isValid,'Giá trị hợp lệ bao gồm số từ 0 - 9, dấu chấm, dấu phẩy'];
    }
}

function isDouble(strValue){
    if(strValue.length>255){
        return [false,'Chuỗi nhập vào có giá trị quá dài!'];    
    }
    else{
        var isValid=true;
	    var reg=/[^0-9.,]/g;
	    var foundChars=strValue.match(reg);
	    if(foundChars!=null){
		    isValid=false;
	    }     
        return [isValid,'Giá trị hợp lệ bao gồm số từ 0 - 9, dấu chấm, dấu phẩy'];
    }
}

function isDateTime(strValue, lan){
    if(strValue.length>50){
        return [false,'Chuỗi nhập vào có giá trị quá dài!'];
    }else{
        if(lan=='vn'){
            return isDateTimeVN(strValue);
        }
        else{
            return isDateTimeEN(strValue);    
        }
    }
}

function isDateTimeEN(sDate) 
{ 
    var msg='Giá trị hợp lệ là dd/mm/yyyy';
    
    var bValid = false; 
    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){ 
        return bValid;
    } 
    var DateArray = sDate.split("/"); 
    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; 
    }
    
    var oDate = new Date(DateArray[2], DateArray[1], DateArray[0]);
    if (DateArray[2] != oDate.getFullYear() || DateArray[1] != oDate.getMonth()){ 
        return bValid; 
    }
    bValid = true;
    return [bValid,msg]; 
}

function isDateTimeVN(sDate) 
{ 
    var msg='Giá trị hợp lệ là dd/mm/yyyy';
    var bValid = false; 
    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){ 
        return bValid;
    } 
    var DateArray = sDate.split("/"); 
    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; 
    }
    
    var oDate = new Date(DateArray[2], DateArray[1], DateArray[0]);
    if (DateArray[2] != oDate.getFullYear() || DateArray[1] != oDate.getMonth()){ 
        return bValid; 
    }
    bValid = true;
    return [bValid,msg]; 
}

function isFullUrl(strValue){
    var msg='Url hợp lệ phải bắt đầu bằng: http:// hoặc https://\nNgoài ra, url chỉ bao gồm các ký tự từ a-z, A-Z, số từ 0-9, và các ký tự đặc biệt sau: [-] [_] [.] [,] [:] [=] [&] [?] [@] [/]';
    var isValid=true;
    if(strValue.length>255){
        isValid=false;
        msg='Chuỗi nhập vào có giá trị quá dài!';        
    }
    else if(!strValue.toLowerCase().startsWith('http://') && !strValue.toLowerCase().startsWith('https://')){
        isValid=false;
    }
    else{
	    var reg=/[^a-zA-Z0-9.,:=&\?@_\/-]/g;
	    var foundChars=strValue.match(reg);
	    if(foundChars!=null){
		    isValid=false;
	    }     
    }
    return [isValid,msg];
}

function isEmail(emailStr) {
    var msg='Email hợp lệ phải có dạng ten@domainname.com';
    if(emailStr.length>255){
        return [false,'Chuỗi nhập vào có giá trị quá dài!'];
    }
    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,msg];
	    }
	    var user=matchArray[1]
	    var domain=matchArray[2]


	    if (user.match(userPat)==null) {
		    return [false,msg];
	    }

	    var IPArray=domain.match(ipDomainPat)
	    if (IPArray!=null) {
		    for (var i=1;i<=4;i++) {
			    if (IPArray[i]>255) {
                    return [false,msg];
			    }
		    }
            
            return [true,msg];
	    }

	    var domainArray=domain.match(domainPat)
	    if (domainArray==null) {
		    return [false,msg];
	    }

	    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,msg];
	    }

	    if (len<2) {
		    return [false,msg];
	    }

        return [true,msg];
    }
}

function isText(strValue){
    var msg='Giá trị hợp lệ là tiếng Việt không dấu, bao gồm các ký tự từ a-z, A-Z, số từ 0-9 và các ký tự sau: [.] [,] [:] [-] [_] [=] [/] [@] [%] [*]';
	var reg=/[^a-zA-Z0-9.,:;*=@\/\?\% _-]/g;
	var foundChars=strValue.match(reg);
	if(foundChars!=null){
		return [false,msg];
	}
	else{
		return [true,msg];
	}
}

function isShortUrl(strValue){
    var msg='Giá trị hợp lệ là tiếng Việt không dấu, không khoảng trắng, bao gồm các ký tự từ a-z, A-Z, số từ 0-9 và các ký tự sau: [.] [,] [:] [-] [_] [=] [&] [?] [/] [@]';
    var isValid=true;
    
    if(strValue.length>255){
        isValid=false;
        msg='Chuỗi nhập vào có giá trị quá dài!';        
    }
    else{
	    var reg=/[^a-zA-Z0-9.,:=&\?@\/_-]/g;
	    var foundChars=strValue.match(reg);
	    if(foundChars!=null){
            isValid=false;
	    }
    }
    
    return [isValid,msg];
}

function isAlphaNumeric(strValue){
    var msg='Giá trị hợp lệ là tiếng Việt không dấu, không bao gồm khoảng trắng, gồm các ký tự từ a-z, A-Z, số từ 0-9 và các ký tự sau: [-] [_]';
	var reg=/[^a-zA-Z0-9_-]/g;
	var foundChars=strValue.match(reg);
	if(foundChars!=null){
		return [false,msg];
	}
	else{
		return [true,msg];
	}
}

function isUnicodeText(strValue){
    var msg='Giá trị hợp lệ bao gồm các tất cả ký tự, chữ số, không bao gồm các ký tự đặc biệt như: [<] [>] [‘] [’] [`] [“] [”] [#] [$] [%] [^] [(] [)] [[] []] [{] [}]';
	var reg=/[<>\{\}]+/g;
	var foundChars=strValue.match(reg);
	if(foundChars!=null){
		return [false,msg];
	}
	else{
		return [true,msg];
	}
}

function isLocalFileName(strValue){
    var msg='Giá trị hợp lệ bắt buộc phải là tiếng việt không dấu, không khoảng trắng, gồm các ký tự từ a-z, A-Z, số từ 0-9 và các ký tự sau: [-] [_]';
    var isValid=true;
    
    if(strValue.length>255){
        isValid=false;
        msg='Chuỗi nhập vào có giá trị quá dài!';
    }
	else if(strValue.indexOf('.')>-1 && allowUploadFileExt(strValue)){
		var reg=/[^a-zA-Z0-9\/\\:_-]/g;
		var foundChars=strValue.match(reg);
		if(foundChars!=null){
			isValid=false;
		}
	}
	else{
		isValid=false;	
	}
	
	return [isValid,msg];
}

function allowUploadFileExt(fileName){
    var isAllowed=false;
    fileName=fileName.toLowerCase();
    var fileExt=fileName.substring(fileName.lastIndexOf('.'));
    switch(fileExt){
        case '.jpg':
        case '.jpeg':
        case '.gif':
        case '.png':
        case '.bmp':
        case '.pdf':        
        case '.wmv':
        case '.avi':
        case '.mpg':
        case '.mpeg':
        case '.mov':
        case '.mp4':
        case '.flv':
        case '.mp3':                                
        case '.doc':
        case '.txt':
        case '.xls':
        case '.rtf':
        case '.ppt':
        case '.rar':
        case '.zip':
        case '.htm':
        case '.html':
            isAllowed=true;
            break;
         
        default:
            isAllowed=false;
            break;
    }
    return isAllowed;
}

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 getViewPortHeight(){
    var viewPortHeight;

    // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

    if (typeof window.innerWidth != 'undefined')
    {
      viewPortHeight = window.innerHeight;
    }

    // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

    else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
    {
       viewPortHeight = document.documentElement.clientHeight;
    }
    // older versions of IE
    else
    {
       viewPortHeight = document.getElementsByTagName('body')[0].clientHeight;
    }
    
    return viewPortHeight;
}

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=0,titlebar=0," 
				+ "dependent=0, menubar=0,location=0,status=0, directories=0, resizable=1, "		
				+ "top=" + top + ", left=" + left;
	var popupWin = window.open(strURL, "popup_id", setting);
	popupWin.focus();
}

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;
}

    
function drawHtmlChart(totalWidth, currentPercent, unit, textColor, bgColor, chartHeight){
    var htmlStr='';
    if(currentPercent>0){
        var percentInt=eval(currentPercent);
        var step=eval(totalWidth/100);
        var currentWidth = Math.round(step*percentInt);
        
        var paddingTop=chartHeight>14?(chartHeight - 14)/2 + 'px':'0px';
        var htmlStr='<div style="position:absolute;top:0px;left:0px;text-align:center;width:' + totalWidth + 'px;height:' + chartHeight + 'px;color:' + textColor + '"><div style="padding-top:' + paddingTop + '">' + currentPercent + ' ' + unit + '</div></div>';
        htmlStr+='<div style="top:0px;left:0px;width:' + currentWidth + 'px;background-color:' + bgColor + '"><img src="' + jsCurrentSkinPath + 'images/member/trans.gif" width=1 height=' + chartHeight + ' border=0 /></div>';
    }
    
    return htmlStr;
}
