﻿String.prototype.trim = function(){
    return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))
}

String.prototype.startsWith = function(str){
    return (this.match("^"+str)==str)
}

String.prototype.endsWith = function(str){
    return (this.match(str+"$")==str)
}

function fixMsWord(innerText){
    innerText = trim(innerText);
    innerText = innerText.replace(/\t\r\n/gi, ' ');
    innerText = innerText.replace(/\r\n/gi, ' ');
    innerText = innerText.replace(/\r/gi, ' ');
    innerText = innerText.replace(/\n/gi, ' ');

    innerText = innerText.replace(/<(\/)*(\\?xml:|meta|link|span|font|del|ins|st1:|[ovwxp]:)((.|\s)*?)>/gi, ''); // Unwanted tags
    innerText = innerText.replace(/(class|style|type|start|cellpadding|cellspacing|border|height)=("(.*?)"|(\w*))/gi, ''); // Unwanted sttributes
    innerText = innerText.replace(/<style(.*?)style>/gi, '');   // Style tags
    innerText = innerText.replace(/<script(.*?)script>/gi, ''); // Script tags
    innerText = innerText.replace(/<!--(.*?)-->/gi, '');        // HTML comments
    innerText = innerText.replace(/<(?:(\w+)(?: [^>]*)?`> *<\/$1>)|(?:<\w+(?: [^>]*)?\/>)/g, '');
    innerText = innerText.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/gi, '');
    innerText = innerText.replace(/<(\w*)\s*[^\/>]*>\s*<\/\1>/g, ''); //Remove empty html tag

    var tempDiv = document.createElement("div");
    tempDiv.innerHTML = trim(innerText);
    for (i = 0; i < tempDiv.getElementsByTagName('p').length; i++) {
        var p = tempDiv.getElementsByTagName('p')[i];
        if (trim(getInnerTextByObj(p)).length == 0) {
            p.innerHTML = '&nbsp;';
        }
    }

    return tempDiv.innerHTML;
}

function getFolderName(strInput){
//    var strShortName='';
    strInput=trim(strInput.toLowerCase());
    strInput=toPlainText(strInput);
    strInput=toUnsignedText(strInput);
    strInput=toTitleCase(strInput);
    while(strInput.indexOf(' ')>-1){
        strInput=strInput.replace(' ', '-');
    }
    
    while(strInput.indexOf('--')>-1){
        strInput=strInput.replace('--', '-');
    }    
    return strInput;    
}

function insertHtmlLineBreak(src, maxLength){
    var output='';
	if(src.length>maxLength)
	{
	    var lastIndex=src.length-(src.length%maxLength);
	    var startIndex=0;
	    var middleIndex=maxLength;
	    while(middleIndex<=lastIndex){
	        output+=src.substring(startIndex, middleIndex) + '<br>';
	        startIndex=middleIndex;
	        middleIndex+=maxLength;
	    }
	    output+=src.substring(lastIndex);
	}
	else
	{
        output=src;
	}

	return output;
}

function getShortString(src, maxLength){
    var output='';
	if(src.length>maxLength)
	{
		output=src.substring(0, maxLength);
		var spaceIndex=output.lastIndexOf(' ');
		if(spaceIndex>-1)
		{
			output=output.substring(0, spaceIndex);
		}
	}
	else
	{
        output=src;
	}

	return output;
}

function getElementsByNameFixed(tag, name){
    var objArray=new Array(0);
    if(document.all){
        for(i=0;i<document.getElementsByTagName(tag).length;i++){
            var obj=document.getElementsByTagName(tag)[i];
            if(obj.getAttribute('name')==name){
                objArray[objArray.length]=obj;
            }
        }
        return objArray;
    }
    else{
        return document.getElementsByName(name);
    }
}

function getOuterHTMLByObject(obj){
//    var element = document.createElement("div");
//    element.appendChild(obj.cloneNode(true));
//    var innerHtml=element.innerHTML;
//    element=null;
    //    return innerHtml;
    var parent = obj.parentNode;

    var el = document.createElement(parent.tagName);

    el.appendChild(obj);

    var shtml = el.innerHTML;

    parent.appendChild(obj);

    return shtml;
}

function getInnerText(controlID){
    return getInnerTextByObj(document.getElementById(controlID));
}

function getInnerTextByObj(obj) {
    var innerText = '';
//    var returnText = '';

    if(document.all){
        innerText=obj.innerText.trim();
    }
    else{
        innerText=obj.textContent.trim();
    }

    return innerText;

//    var textArray = innerText.split('\n');

//    for (i = 0; i < textArray.length; i++) {
//        var tempText = textArray[i].trim();
//        if (tempText.indexOf('.')!=tempText.length){
//            tempText += '. ';
//        }
//        returnText += tempText;
//    }
//    return returnText.trim();
}

function setInnerText(controlID, strValue){
    setInnerTextByObj(document.getElementById(controlID), strValue);
}

function setInnerTextByObj(obj, strValue){
    if(document.all){
        obj.innerText=strValue.trim();
    }
    else{
        obj.textContent=strValue.trim();
    }
}

function toTitleCase(strInput){
	var strArray=strInput.split(' ');
	var strOutput='';
	for(i=0;i<strArray.length;i++){
		var word=strArray[i];
		var c=word.charAt(0);
//		strOutput+=c.toUpperCase() + word.substring(1, word.length);

		if(!isSpecialChars(c)){
	        strOutput+=c.toUpperCase() + word.substring(1, word.length);
	    }
	    
	    else{
	        if(word.length>1){
	            strOutput+=c + word.charAt(1).toUpperCase() + word.substring(2, word.length);
            }else{
                strOutput+=c + word.substring(1, word.length);
            }
	    }

		if(i<strArray.length-1){
			strOutput+=' ';
		}		
        
	}

	return trim(strOutput);
}

function toUnsignedText(strInput){
	var strTemp='';
	
	for(i=0;i<strInput.length;i++){
		var c=strInput.charAt(i);

		switch(c){
			case 'é': case 'è': case 'ẹ': case 'ẽ': case 'ẻ':
				strTemp+='e';
				break;
				
			case 'ê': case 'ế': case 'ề': case 'ệ': case 'ễ': case 'ể':
				strTemp+='e';
				break;

				//y related chars
			case 'ý': case 'ỳ': case 'ỵ': case 'ỹ': case 'ỷ':
				strTemp+='y';
				break;

				//u related chars
			case 'ú': case 'ù': case 'ụ': case 'ũ': case 'ủ':
				strTemp+='u';
				break;
			case 'ư': case 'ứ': case 'ừ': case 'ự': case 'ữ': case 'ử':
				strTemp+='u';
				break;
			
				//y related chars
			case 'í': case 'ì': case 'ị': case 'ĩ': case 'ỉ':
				strTemp+='i';
				break;

				//o related chars
			case 'ó': case 'ò': case 'ọ': case 'õ': case 'ỏ':
				strTemp+='o';
				break;
			case 'ơ': case 'ớ': case 'ờ': case 'ợ': case 'ỡ': case 'ở':
				strTemp+='o';
				break;
			case 'ô': case 'ố': case 'ồ': case 'ộ': case 'ỗ': case 'ổ':
				strTemp+='o';
				break;

				//a related chars
			case 'á': case 'à': case 'ạ': case 'ã': case 'ả':
				strTemp+='a';
				break;

			case 'ă': case 'ắ': case 'ằ': case 'ặ': case 'ẵ': case 'ẳ':
				strTemp+='a';
				break;
			case 'â': case 'ấ': case 'ầ': case 'ậ': case 'ẫ': case 'ẩ':
				strTemp+='a';
				break;

				//đ related chars
			case 'đ':
				strTemp+='d';
				break;

			default:
			    //strTemp+=c;
			    if(allowChars(c)){
			        strTemp+=c;
			    }
				break;
		}
		
	}

	return strTemp;
}

function replaceString(strInput, searchString, replaceString){
    if(strInput!=''){
        while(strInput.toLowerCase().indexOf(searchString.toLowerCase())>-1){
            strInput=strInput.replace(searchString, replaceString, "gi");
        }
//        var re=new RegExp(searchString, 'gi');
//        strInput=strInput.replace(re, replaceString);
    }
    return strInput;
}

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 toPlainText(strInput){
    var reg=/[-_=\+\\\|<>,.\?:;'‘’`“”~!\@#\$\%\^&*()\"\[\]\{\}\/\t\r\n–]+/g;
    strInput=strInput.replace(reg, ' ');
    while(strInput.indexOf('  ')>-1){
        strInput=strInput.replace('  ', ' ');
    }    
    return trim(strInput);
}

function toText(strInput){
    var reg=/[‘’`“”~\^\t\r\n–]+/g;
    strInput=strInput.replace(reg, ' ');
    while(strInput.indexOf('  ')>-1){
        strInput=strInput.replace('  ', ' ');
    }    

    return trim(strInput);
}

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);
	}
	
	while (sString.toUpperCase().substring(sString.length-4, sString.length) == '<BR>')
	{
		sString = sString.substring(0,sString.length-4);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}	
    while(sString.indexOf('  ')>-1){
        sString=sString.replace('  ', ' ');
    }

	return sString;
}

function isSpecialChars(c){
    var reg=/[^-_=\+\\\|<>,.\?:;'‘’`“”~!\@\#\$\%\^\&\*\(\)\""\[\]\{\}\t\r\n\x20\s ]+/;
	var foundChars=c.match(reg);

	if(foundChars!=null){
		return false;
	}
	else{
		return true;
	}    
}


function allowChars(c){
	var regSpecialChars=/[^a-zA-Z0-9 ]/g;
	var foundChars=c.match(regSpecialChars);
	if(foundChars!=null){
		return false;
	}
	else{
		return true;
	}
}
/*
function charIsValid(strInput){
	var reg=/[^a-zA-Z0-9_-]/g;
	var foundChars=strInput.match(reg);
	if(foundChars!=null){
		return false;
	}
	else{
		return true;
	}
}



function parseKeyword(strInput){
    var words=strInput.split(' ');
    var keyword='';
    
    if(words.length>0){
        var wordIndex=0;
        var word=checkKeyword(words[wordIndex]);

        while(wordIndex<words.length){
            if(keyword.indexOf(word)==-1){
                keyword+=word + ', ';
            }
            word=checkKeyword(words[++wordIndex]);
        }
    }
    while(keyword.indexOf(' ,')>-1){
        keyword=keyword.replace(' ,', ',');
    }
    while(keyword.indexOf(', ,')>-1){
        keyword=keyword.replace(', ,', ', ');
    }
        
    while(keyword.lastIndexOf(', ')==keyword.length-2){
        keyword=keyword.substring(0, keyword.length-2);
    }
    
    return keyword;
}

function checkKeyword(word){
    var specialChar='~!@#$%^&*()+=\|,./<>?;\':\"-“”';
    if(word!=null && word!=''){
	    for(i=0;i<specialChar.length;i++){
	        var c=specialChar.charAt(i);
	        while(word.indexOf(c)>-1){
	            word=word.replace(c, '');
            }
        }
    }
    
    return word + ' ';
}
*/

function postBackEncode(strInput){
    strInput=replaceString(strInput, '&', '###AND###');
    strInput=replaceString(strInput, '+', '###PLUS###');
//    strInput=replaceString(strInput, "'", "&apos;");    
    return strInput;
}

function postBackDecode(strInput){
    strInput=replaceString(strInput, '###AND###', '&');
    strInput=replaceString(strInput, '###PLUS###', '+');
//    strInput=replaceString(strInput, "&apos;", "'");    
    return strInput;
}
