﻿//------------Function Library--------------------------------------

// returns true if the string is empty
function isEmpty(s) {
    return (s == null || s.length == 0); //false isnot empty
}
// returns true if the string only contains characters A-Z or a-z
function isAlpha(str) {
    var re = /[^a-zA-Z]/g
    if (re.test(str)) return false;
    return true;
}
// returns true if the string only contains characters 0-9
function isNumber(s) {
    var r = /^\d+$/; return r.test(s);
}
// returns true if the string only contains characters A-Z, a-z or 0-9
function isAlphanumeric(s) {
    var r = /^[a-zA-Z0-9]+$/; return r.test(s);
}
/**********************************************************************
IN:
NUM - the number to format
decimalNum - the number of decimal places to format the number to
bolLeadingZero - true / false - display a leading zero for
numbers between -1 and 1
bolParens - true / false - use parenthesis around negative numbers
bolCommas - put commas as number separators.
 
RETVAL:
The formatted number!
**********************************************************************/
function FormatNumber(num, decimalNum, bolLeadingZero, bolParens, bolCommas) {
    if (isNaN(parseInt(num))) return "NaN";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1; 	// Get sign of number

    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10, decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10, decimalNum);
    tmpNum *= iSign; 				// Readjust for sign


    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
        tmpNumStr = tmpNumStr.substring(1, tmpNumStr.length);
    else
        tmpNumStr = "-" + tmpNumStr.substring(2, tmpNumStr.length);

    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(".");
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0, iStart) + "," + tmpNumStr.substring(iStart, tmpNumStr.length)
            iStart -= 3;
        }
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1, tmpNumStr.length) + ")";

    return tmpNumStr; 	// Return our formatted string!
}

function ReplaceAll(iStr, v1, v2) {
    var i = 0, oStr = '', j = v1.length;
    while (i < iStr.length) {
        if (iStr.substr(i, j) == v1) {
            oStr += v2;
            i += j
        }
        else {
            oStr += iStr.charAt(i);
            i++;
        }
    }
    return oStr;
}
// Format number by using 1000 seperator
function FormatN(num) {
    var n = ReplaceAll(num, ',', '');
    if (n == '') return '0';
    var no = FormatNumber(parseInt(n), false, false, false, true);
    return no;
}
// returns true if the string's length equals "len"
function isLength(str, len) {
    return str.length == len;
}
// returns true if the string's length is between "min" and "max"
function isLengthBetween(str, min, max) {
    return (str.length >= min) && (str.length <= max);
}
// returns true if the string is a valid date formatted as...
// mm dd yyyy, mm/dd/yyyy, mm.dd.yyyy, mm-dd-yyyy
function isDate(str) {
    var re = /^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$/
    if (!re.test(str)) return false;
    var result = str.match(re);
    var m = parseInt(result[1]);
    var d = parseInt(result[2]);
    var y = parseInt(result[3]);
    if (m < 1 || m > 12 || y < 1900 || y > 2100) return false;
    if (m == 2) {
        var days = ((y % 4) == 0) ? 29 : 28;
    } else if (m == 4 || m == 6 || m == 9 || m == 11) {
        var days = 30;
    } else {
        var days = 31;
    }
    return (d >= 1 && d <= days);
}
// returns true if "str1" is the same as the "str2"
function isMatch(str1, str2) {
    return str1 == str2;
}
// returns true if the string contains only whitespace
// cannot check a password type input for whitespace
function isWhitespace(str) { // NOT USED IN FORM VALIDATION
    var re = /[\S]/g
    if (re.test(str)) return false;
    return true;
}
// removes any whitespace from the string and returns the result
// the value of "replacement" will be used to replace the whitespace (optional)
function stripWhitespace(str, replacement) {// NOT USED IN FORM VALIDATION
    if (replacement == null) replacement = '';
    var result = str;
    var re = /\s/g
    if (str.search(re) != -1) {
        result = str.replace(re, replacement);
    }
    return result;
}
//
function identify_Browser() {
    d = document;
    this.agt = navigator.userAgent.toLowerCase();
    this.major = parseInt(navigator.appVersion);
    this.dom = (d.getElementById);
    this.ns = (d.layers);
    this.ns4up = (this.ns && this.major >= 4);
    this.ns6 = (this.dom && navigator.appName == "Netscape");
    this.op = (window.opera);
    if (d.all) this.ie = 1; else this.ie = 0;
    this.ie4 = (d.all && !this.dom);
    this.ie4up = (this.ie && this.major >= 4);
    this.ie5 = (d.all && this.dom);
    this.ie6 = (d.nodeType);
    this.sf = (this.agt.indexOf("safari") != -1);
    this.win = ((this.agt.indexOf("win") != -1) || (this.agt.indexOf("16bit") != -1));
    this.winme = (this.agt.indexOf("win 9x 4.90") != -1);
    this.xpsp2 = (this.agt.indexOf("sv1") != -1);
    this.mac = (this.agt.indexOf("mac") != -1);
}
var oBw = new identify_Browser();

function collapse(id) {
    if (oBw.ie5 || oBw.ns6) {  //Disable function in unsupported browsers
        Istate = document.getElementById(id).style.display;
        if (Istate == 'none') {
            Istate = 'block';
        }
        else {
            Istate = 'none';
        }
        document.getElementById(id).style.display = Istate;
    }
}

function CheckNumeric(e) {
    if (!e)
        e = window.event;
    var key;

    if (e.keyCode) {
        //alert(e.keyCode);	
        key = e.keyCode;
    }
    else {
        //alert(e.charCode);
        key = e.charCode;
    }
    //alert(key);
    if (key > 47 && key < 58 || (key == 9 || key == 8)) {
        //alert (key);
        return
    }
    else if (window.event) //IE       
    {
        window.event.returnValue = null
    }
    else //Firefox       
    {
        e.preventDefault()
    }
}


// Hàm chặn phím enter
// Các dùng: bắt sự kiện onkeypress = "return preventEnter(event)"
function preventEnter(e) {
    var key //= (window.event) ? event.keyCode : e.which;   
    if (window.event) {
        key = event.keyCode
    }
    else {
        key = e.which
    }

    if (key != 13) {
        return
    }
    else if (window.event) //IE       
    {
        window.event.returnValue = null
    }
    else //Firefox       
    {
        e.preventDefault()
    }
}

// Trả về giá trị True nếu địa chỉ Email hợp lệ
function isValidEmail(str) {
    return str.match(/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/)
}

// Hàm cắt khoảng trắng 2 ở đầu chuỗi
function sTrim(s) {
    while (s.charCodeAt(0) <= 32) {
        s = s.substr(1)
    }
    while (s.charCodeAt(s.length - 1) <= 32) {
        s = s.substr(0, s.length - 1)
    }
    return s
}

// Hàm kiểm tra ngày hợp lệ
function isDate(day, month, year) {
    if ((month < 1) || (month > 12)) return false
    var dt = new Date(year, month - 1, day)
    if (dt.getDay() != day)
        return false
    else
        return true
}

/////////////////////////////////////////////////////////////////////////////////////////////////
// ALL ABOUT AJAX HERE
/////////////////////////////////////////////////////////////////////////////////////////////////
function loadXMLFile(dname) {
    try //Internet Explorer
        {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }
    catch (e) {
        try //Firefox, Mozilla, Opera, etc.
            {
            xmlDoc = document.implementation.createDocument("", "", null);
        }
        catch (e) { alert(e.message) }
    }
    try {
        xmlDoc.async = false;
        xmlDoc.load(dname);
        return (xmlDoc);
    }
    catch (e) { alert(e.message) }
    return (null);
}

// XmlHttp object class
function XmlHttp() {
    this.array = new Array(1);

    this.setValue = function(v) { this.array[0] = v; }
    this.getValue = function() { return this.array[0]; }
}

function loadXMLDoc(xmlHttp, url, callback, content) {
    xmlHttp.setValue(createXMLHttpRequest())
    if (xmlHttp.getValue()) {
        xmlHttp.getValue().onreadystatechange = function() { eval(callback) }
        xmlHttp.getValue().open('POST', url, true)
        xmlHttp.getValue().setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        xmlHttp.getValue().send(content)
        return true
    }
    else {
        alert('Trình duyệt của bạn không hỗ trợ AJAX!\nBạn hãy sử dụng trình duyệt IE 4.0 trở lên hoặc Mozilla FireFox 1.0 trở lên')
        return false
    }
}

function createXMLHttpRequest() {
    var xmlHttp = null
    try {	// Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest()
    }
    catch (e) {	// Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
        }
        catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e) {
                return null
            }
        }
    }
    return xmlHttp
}
// Lấy ngày để ko bị Cache
function getDateString() {
    var sDate = '';
    var today = new Date();
    sDate += today.getFullYear() + '' + today.getMonth() + '' + today.getDay + '' + today.getHours() + '' + today.getMinutes() + '' + today.getSeconds() + today.getMilliseconds() + '';
    return sDate
}

function getCharity(category,obj)
    {
        var url = '/CharityFund/Action/?category='  + category + '&t=' + getDateString();
        new Ajax.Request(url, {
          method: 'get',
          onSuccess: function(transport) {
            var notice = $(obj);            
              notice.innerHTML= transport.responseText
           
          }
        });

    }
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion() {
    var version;
    var axo;
    var e;

    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }

    if (!version) {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful. 

            // default to the first public version
            version = "WIN 6,0,21,0";

            // throws if AllowScripAccess does not exist (introduced in 6.0r47)		
            axo.AllowScriptAccess = "always";

            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");

        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }

    return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer() {
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;

    if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    else if (isIE && isWin && !isOpera) {
        flashVer = ControlVersion();
    }
    return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
    versionStr = GetSwfVer();
    if (versionStr == -1) {
        return false;
    } else if (versionStr != 0) {
        if (isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
            tempString = tempArray[1]; 		// "2,0,0,11"
            versionArray = tempString.split(","); // ['2', '0', '0', '11']
        } else {
            versionArray = versionStr.split(".");
        }
        var versionMajor = versionArray[0];
        var versionMinor = versionArray[1];
        var versionRevision = versionArray[2];

        // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}

function AC_AddExtension(src, ext) {
    if (src.indexOf('?') != -1)
        return src.replace(/\?/, ext + '?');
    else
        return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) {
    var str = '';
    if (isIE && isWin && !isOpera) {
        str += '<object ';
        for (var i in objAttrs) {
            str += i + '="' + objAttrs[i] + '" ';
        }
        str += '>';
        for (var i in params) {
            str += '<param name="' + i + '" value="' + params[i] + '" /> ';
        }
        str += '</object>';
    }
    else {
        str += '<embed ';
        for (var i in embedAttrs) {
            str += i + '="' + embedAttrs[i] + '" ';
        }
        str += '> </embed>';
    }

    document.write(str);
}

function AC_FL_RunContent() {
    var ret =
    AC_GetArgs
    (arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
    AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent() {
    var ret =
    AC_GetArgs
    (arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
    AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType) {
    var ret = new Object();
    ret.embedAttrs = new Object();
    ret.params = new Object();
    ret.objAttrs = new Object();
    for (var i = 0; i < args.length; i = i + 2) {
        var currArg = args[i].toLowerCase();

        switch (currArg) {
            case "classid":
                break;
            case "pluginspage":
                ret.embedAttrs[args[i]] = args[i + 1];
                break;
            case "src":
            case "movie":
                args[i + 1] = AC_AddExtension(args[i + 1], ext);
                ret.embedAttrs["src"] = args[i + 1];
                ret.params[srcParamName] = args[i + 1];
                break;
            case "onafterupdate":
            case "onbeforeupdate":
            case "onblur":
            case "oncellchange":
            case "onclick":
            case "ondblClick":
            case "ondrag":
            case "ondragend":
            case "ondragenter":
            case "ondragleave":
            case "ondragover":
            case "ondrop":
            case "onfinish":
            case "onfocus":
            case "onhelp":
            case "onmousedown":
            case "onmouseup":
            case "onmouseover":
            case "onmousemove":
            case "onmouseout":
            case "onkeypress":
            case "onkeydown":
            case "onkeyup":
            case "onload":
            case "onlosecapture":
            case "onpropertychange":
            case "onreadystatechange":
            case "onrowsdelete":
            case "onrowenter":
            case "onrowexit":
            case "onrowsinserted":
            case "onstart":
            case "onscroll":
            case "onbeforeeditfocus":
            case "onactivate":
            case "onbeforedeactivate":
            case "ondeactivate":
            case "type":
            case "codebase":
            case "id":
                ret.objAttrs[args[i]] = args[i + 1];
                break;
            case "width":
            case "height":
            case "align":
            case "vspace":
            case "hspace":
            case "class":
            case "title":
            case "accesskey":
            case "name":
            case "tabindex":
                ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i + 1];
                break;
            default:
                ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i + 1];
        }
    }
    ret.objAttrs["classid"] = classid;
    if (mimeType) ret.embedAttrs["type"] = mimeType;
    return ret;
}

// ------- Format Number -------
function FormatNumber(num, decimalNum, bolLeadingZero, bolParens, bolCommas) {
    if (isNaN(parseInt(num))) return "NaN";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1; 	// Get sign of number

    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10, decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10, decimalNum);
    tmpNum *= iSign; 				// Readjust for sign


    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
        tmpNumStr = tmpNumStr.substring(1, tmpNumStr.length);
    else
        tmpNumStr = "-" + tmpNumStr.substring(2, tmpNumStr.length);

    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(".");
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0, iStart) + "," + tmpNumStr.substring(iStart, tmpNumStr.length)
            iStart -= 3;
        }
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1, tmpNumStr.length) + ")";

    return tmpNumStr; 	// Return our formatted string!
}

function ReplaceAll(iStr, v1, v2) {
    var i = 0, oStr = '', j = v1.length;
    while (i < iStr.length) {
        if (iStr.substr(i, j) == v1) {
            oStr += v2;
            i += j
        }
        else {
            oStr += iStr.charAt(i);
            i++;
        }
    }
    return oStr;
}

// Format number by using 1000 seperator
function FormatN(num) {
    var n = ReplaceAll(num, ',', '');
    if (n == '') return '0';
    var no = FormatNumber(parseInt(n), false, false, false, true);
    return no;
}


//----------------------End Function Library------------------------------------------

//======================ChangeTab===================================================

function selectTab1() {
    document.getElementById("more_wall").style.display = "block";
    document.getElementById("more_scr").style.display = "none";
    document.getElementById("more_art").style.display = "none";
    
    document.getElementById("wall").style.display = "block";
    document.getElementById("scr").style.display = "none";
    document.getElementById("art").style.display = "none";
}
function selectTab2() {
    document.getElementById("more_wall").style.display = "none";
    document.getElementById("more_scr").style.display = "block";
    document.getElementById("more_art").style.display = "none";

    document.getElementById("wall").style.display = "none";
    document.getElementById("scr").style.display = "block";
    document.getElementById("art").style.display = "none";

}
function selectTab3() {
    document.getElementById("more_wall").style.display = "none";
    document.getElementById("more_scr").style.display = "none";
    document.getElementById("more_art").style.display = "block";

    document.getElementById("wall").style.display = "none";
    document.getElementById("scr").style.display = "none";
    document.getElementById("art").style.display = "block";

}


function selectTab11() {
    document.getElementById("more_wall1").style.display = "block";
    document.getElementById("more_scr1").style.display = "none";
    document.getElementById("more_art1").style.display = "none";

    document.getElementById("wall1").style.display = "block";
    document.getElementById("scr1").style.display = "none";
    document.getElementById("art1").style.display = "none";
}
function selectTab22() {
    document.getElementById("more_wall1").style.display = "none";
    document.getElementById("more_scr1").style.display = "block";
    document.getElementById("more_art1").style.display = "none";

    document.getElementById("wall1").style.display = "none";
    document.getElementById("scr1").style.display = "block";
    document.getElementById("art1").style.display = "none";

}
function selectTab33() {
    document.getElementById("more_wall1").style.display = "none";
    document.getElementById("more_scr1").style.display = "none";
    document.getElementById("more_art1").style.display = "block";

    document.getElementById("wall1").style.display = "none";
    document.getElementById("scr1").style.display = "none";
    document.getElementById("art1").style.display = "block";

}

function redirectGallery() {
    window.location.href = "/Gallery/" + tGallery + "/Page1/Default.aspx";
}
//======================End ChangeTab===================================================
//Resize Images
function ResizeImages(img) {
    if (img.width > 605) {
        img.height = parseInt(img.height * 605 / img.width);
        img.width = 605;
    }
}
//==================================================
function sTrim(s)
{	
	while(s.charCodeAt(0) <= 32)
	{
		s = s.substr(1)
	}
	while(s.charCodeAt(s.length - 1) <= 32)
	{
		s = s.substr(0, s.length - 1)
	}
	return s
}
function LTrim( value ) {
     	
 	var re = /\s*((\S+\s*)*)/;
 	return value.replace(re, "$1");
     	
}
function RTrim( value ) {
    	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}
function trim( value ) {
    	
    return LTrim(RTrim(value));
    	
}
function validate_tag(content)
{
    var flag=false;
        
    if(content.match(/([\<])([^\>]{1,})*([\>])/i)==null)
     flag=true;
    return flag;        
}
