<!--
/* -------------------------------------------------------------- 
    __Existing Js__
    __Normal JS__
    __jQuery__           
                    goToTop()
                    scrollToAnchor()
                    initModalWindow()
                    initSlideShow()
                    initSlidePanel()
                    initTabs()
                    supersleight()
                    photoGallerySlideShow()
                    spotlightSlideShow()
-------------------------------------------------------------- */

/* __Existing Js__ */
function submitCounter(URL,Data) {
    var xmlHttp = null;
    var thedate = new Date();
    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) {
                alert("Your browser does not support XML H!");
                return false;
            }
        }
    }
    Data = Data + "&thedate=" + thedate.getTime();
    try {
        xmlHttp.open("GET",URL + Data,false);
        xmlHttp.send(null);
    }
    catch (e) { }
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
 
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
 
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


/* __Normal JS__ */
function IncludeJavaScript(jsFile)
{
    document.write('<script type="text/javascript" src="' + jsFile + '"></script>'); 
}

function googleTranslatePop(hl, sl, idLanguage, pgUrl) {
    try {
        var tl = document.getElementById(idLanguage).value;
        window.open('http://translate.google.com.sg/translate?hl=' + hl + '&sl=' + sl + '&tl=' + tl + '&u=' + pgUrl);
    }
    catch(errC) {
    }
    finally { }    
}

function fFBlogin(strClientID, strRedirectURL) {
    try {
        //document.location.href = "https://graph.facebook.com/oauth/authorize?client_id=" + strClientID + "&scope=email,publish_stream&redirect_uri=" + strRedirectURL;
        try {
            parent.window.location.href = "https://graph.facebook.com/oauth/authorize?client_id=" + strClientID + "&redirect_uri=" + strRedirectURL;
        }
        catch(errC) {
            document.location.href = "https://graph.facebook.com/oauth/authorize?client_id=" + strClientID + "&redirect_uri=" + strRedirectURL;
        }
        finally { return false; }
    }
    catch(errC) { }    
}

function appendAnchorToInvalidUrl() {
    // Append dummy anchor to urls that end with "]"
    try {
        if (document.location.href.lastIndexOf("]") == (document.location.href.length - 1)) {
            document.location.href = document.location.href + '#top';
        }
    }
    catch(errC) { }
}

function toggleDiv(clientID) {
    try {
        var sDisplay = "";
        if (document.getElementById(clientID) != null) {
            if (document.getElementById(clientID).style.display == "") {
                document.getElementById(clientID).style.display = "none";
            }
            else {
                document.getElementById(clientID).style.display = "";
            }
        }
    }
    catch(errC) { }
}

function fssValidateDate(oSrc, args) { 
    args.IsValid=validateDate(args.Value); 
}
function getMaxDate() {
    return convertToDate('31/12/9999', "/")
}
function getMinDate() {
   return convertToDate('1/1/1753', "/")     
}
function validateDate(strDate) {
    try {
        var boolSuccess = false;
        
        // ------------------------------------------------------
        // Validate characters
        var validChars = "0123456789:/ ";
        var bValid=true;
        var sChar;

        for (i = 0; i < strDate.length && bValid == true; i++) {
            sChar = strDate.charAt(i); 
            if (validChars.indexOf(sChar) == -1) { bValid = false; }
        } 
        // ------------------------------------------------------

        if (bValid) {
            var dteSrc = Date.parse(convertToDate(strDate, "/"));       
            if (dteSrc <= Date.parse(getMaxDate()) && dteSrc >= Date.parse(getMinDate())) { boolSuccess = true; }   
        }
        
        return boolSuccess
    }
    catch(errC) {}  
} 

function fssValidateDateRange(oSrc, args) { 
    try {
        var strStart="", strEnd="";
        strStart = Trim(args.Value);
        if (oSrc.attributes['EndDate'].nodeValue != null) { strEnd = Trim(document.getElementById(oSrc.attributes['EndDate'].nodeValue + "_txtDate").value); } 
        // If start date or end date format is wrong, return true. This is so that the invalid date range error will not appear with the invalid format error.
        if ((strStart==""||strEnd=="") || (strStart==strEnd) || (validateDate(strStart)==false) || (validateDate(strEnd)==false)) { args.IsValid = true; }
        else { args.IsValid = validateDateRange(strStart, strEnd); }
    }
    catch(errC) { args.IsValid = false; } 
}
function validateDateRange(strStart, strEnd) {
    try {
        var boolSuccess = false;
        var dteStart = Date.parse(convertToDate(strStart, "/"));
        var dteEnd = Date.parse(convertToDate(strEnd, "/"));
        if (dteStart < dteEnd) { boolSuccess = true; }       
        return boolSuccess
    }
    catch(errC) {}  
}
function convertToDate(datefield, separator) {
    try {
        var strDate;
        var strDateArray;
        var strDay;
        var strMonth;
        var strYear;
        var intDay;
        var intMonth;
        var intYear;
        var strMonthArray = new Array(12);

        strMonthArray[0] = "Jan";
        strMonthArray[1] = "Feb";
        strMonthArray[2] = "Mar";
        strMonthArray[3] = "Apr";
        strMonthArray[4] = "May";
        strMonthArray[5] = "Jun";
        strMonthArray[6] = "Jul";
        strMonthArray[7] = "Aug";
        strMonthArray[8] = "Sep";
        strMonthArray[9] = "Oct";
        strMonthArray[10] = "Nov";
        strMonthArray[11] = "Dec";

        strDate = datefield;
        strDateArray = strDate.split(separator);
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
        intDay = parseInt(strDay, 10);
        intMonth = parseInt(strMonth, 10);
        intYear = parseInt(strYear, 10);
        datefield = strMonthArray[intMonth-1] + " " + intDay + " " + strYear;

        return datefield;
    }
    catch(errC) {errC.description}   
}

function fssValidateInteger(oSrc, args) { 
    try {
        var min, max;
        try { if (oSrc.attributes['Min'].nodeValue != null) { min = oSrc.attributes['Min'].nodeValue; } } catch(errC) {}
        try { if (oSrc.attributes['Max'].nodeValue != null) { max = oSrc.attributes['Max'].nodeValue; } } catch(errC) {}
        args.IsValid = validateInteger(Trim(args.Value), min, max); 
    }
    catch(errC) { args.IsValid = false; } 
}
function validateInteger(strInput, min, max) {
    try {
        var bSuccess = false;
        var bTemp = true;
        var strTemp = Trim(strInput).toString();
        var cValue = "";

        for (var i = 0; i < strTemp.length; i++) {
            cValue = strTemp.charAt(i);
            if (cValue < "0" || cValue > "9") {
                bTemp = false;
            }
        }
        if (bTemp) {
            strInput = parseInt(strInput);
            min = parseInt(min);
            max = parseInt(max);
            if (strInput>=min && strInput<=max) { bSuccess = true; }
        }
        return bSuccess;    
    }
    catch(errC) { return false; }   
}

function fssValidateDecimal(oSrc, args) { args.IsValid = validateDecimal(Trim(args.Value), oSrc.attributes['Min'].nodeValue, oSrc.attributes['Max'].nodeValue); }
function validateDecimal(strInput, min, max) {
    try {
        var bSuccess = false;
        if (!isNaN(parseFloat(strInput))) {
            if (strInput>=min && strInput<=max) {
                strInput = strInput + "";
                if (strInput.indexOf(".")==-1 || strInput.substring(strInput.indexOf(".")+1).length<=2) { bSuccess = true; }
            }
        }
        return bSuccess;    
    }
    catch(errC) {}      
}

function OnClientCommandExecuting(editor, args)
{
    /* ssTextEditor */
    var name = args.get_name(); //The command name
    var val = args.get_value(); //The tool that initiated the command

    if (name == "Emoticons")
    {                                                                                
        //Set the background image to the head of the tool depending on the selected toolstrip item
        var tool = args.get_tool();
        var span = tool.get_element().getElementsByTagName("SPAN")[0];
        span.style.backgroundImage = "url(" + val + ")";
        
        //Paste the selected in the dropdown emoticon    
        editor.pasteHtml("<img src='" + val + "'>"); 
        
        //Cancel the further execution of the command
        args.set_cancel(true); 
    }
}

function openWin(url, name) {
    try {
        var width = screen.width - 400;
        var height = screen.height - 300;
        var left = (screen.width  - width)/2;
        var top = (screen.height - height)/2;
        if (left < 0) { left = 0; }
        if (top < 0) { top = 0; }        
        var params = 'width='+width+', height='+height;
        params += ', top='+top+', left='+left;
        params += ', directories=no';
        params += ', location=no';
        params += ', menubar=no';
        params += ', resizable=no';
        params += ', scrollbars=yes';
        params += ', status=no';
        params += ', toolbar=no';
        if (name == "") { name="ssWindow"; }

        newwin = window.open(url, name, params);
        if (window.focus) { newwin.focus(); }
        return false;
    }
    catch (errC) {}
}

function fssValidateDateDropDown(oSrc, args) { 
    var bSuccess = false;
    var dayID, monthID, yearID;
    
    try {
        dayID = document.getElementById(oSrc.attributes['ControlID_Day'].nodeValue);
        monthID = document.getElementById(oSrc.attributes['ControlID_Month'].nodeValue);
        yearID = document.getElementById(oSrc.attributes['ControlID_Year'].nodeValue);
        
        // Return true if all 3 fields are empty
        if (dayID.options[dayID.selectedIndex].value=="" && monthID.options[monthID.selectedIndex].value=="" && yearID.options[yearID.selectedIndex].value=="") { bSuccess = true; }
        else if (dayID.options[dayID.selectedIndex].value!="" && monthID.options[monthID.selectedIndex].value!="" && yearID.options[yearID.selectedIndex].value!="") { bSuccess = true; }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function validateRegex(type) {
    var expression;

    try {
        switch(type) {
            case 1:   // alpha-numeric (8-30 char)
                expression = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,30})$/;
                break;
            default:
        }    
    }
    catch (errC) {}
    finally { return expression; }
}

function fssValidateOldPassword(oSrc, args) { 
    var bSuccess = false;
    var newPassword = "";

    try {
        newPassword = document.getElementById(oSrc.attributes['NewPasswordID'].nodeValue).value;
        if (Trim(newPassword) == "") {
            bSuccess = true;
        }
        else {
            if (Trim(args.Value) != "") {
                bSuccess = true;
            }
        }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function fssValidateOldPasswordExists(oSrc, args) {
    var bSuccess = false;
    var oldPassword = "";

    try {
        try { oldPassword = document.getElementById(oSrc.attributes['OldPasswordID'].nodeValue).value; } catch(errC) {}
        if (Trim(oldPassword) == "") {
            bSuccess = true;
        }
        else {
            if (Trim(args.Value) != "") {
                bSuccess = true;
            }
        }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function fssValidatePassword(oSrc, args) { 
    var bSuccess = false;
    var password1, password2;

    try {
        password1 = Trim(args.Value) + "";
        password2 = Trim(document.getElementById(oSrc.attributes['NewPassword2ID'].nodeValue).value) + "";

        if (password1 != "") {
            if (validateRegex(1).test(password1)) { 
                //if (password1==password2) {
                    bSuccess = true;     
                //}
            }
        }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function fssComparePassword(oSrc, args) {
    var bSuccess = false;
    var password1, password2;
    
    try {
        password1 = Trim(document.getElementById(oSrc.attributes['NewPassword1ID'].nodeValue).value) + "";
        password2 = Trim(args.Value) + "";

        //if ((password1 == "") && (password2 == "")) {
        //    bSuccess = true;
        //}
        //else {
            if (password1 == password2) {
                bSuccess = true;     
            }
        //}
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function fssValidateCheckbox(oSrc, args) { 
    var bSuccess = false;

    try {
        sClientID = oSrc.attributes['ControlID'].nodeValue;
        if (document.getElementById(sClientID).checked) {
            bSuccess = true;
        }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function fssValidateCheckboxlist(oSrc, args) { 
    var bSuccess = false;

    try {
        sClientID = oSrc.attributes['ControlID'].nodeValue;
        bSuccess = validateCheckbox(sClientID);
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}
function validateCheckbox(chkControlId) {
    var bSuccess = false;
    try {
        var options = document.getElementById(chkControlId).getElementsByTagName('input');
        if (options != null) {
            for(i=0; i<options.length; i++) {
                var opt = options[i];        
                if(opt.type=="checkbox") {
                    if (opt.checked) { bSuccess = true; } 
                }
            }
        }
    }
    catch (errC) { }
    finally { return bSuccess; }
}

function validateMultipleNameEmail(name, email, delimiter) {
    /* 
        iError 
        -1: Exception
        1: Email is empty
        2: # name & email don't match
        3: Invalid email format
    */
    var strName, strEmail, aryName, aryEmail, iError = 0;
    try {
        strName = Trim(document.getElementById(name).value);
        strEmail = Trim(document.getElementById(email).value);
        if (strEmail != "") {
            aryName = Trim(strName).split(delimiter);
            aryEmail = Trim(strEmail).split(delimiter);
            if (aryName.length == aryEmail.length) {
                for (var iCount = 0; iCount < aryEmail.length; iCount++) {
                    if (!validateEmail(Trim(aryEmail[iCount]))) { iError = 3; }
                }        
            }
            else { iError = 2; }
        }
        else {
            iError = 1;
        }
    }
    catch (errC) { iError = -1; }
    finally { return iError; }
}

function fssValidateMultipleEmail(oSrc, args) { args.IsValid = validateMultipleEmail(Trim(args.Value), oSrc.attributes['delimiter'].nodeValue); }
function validateMultipleEmail(strEmail, delimiter) {
    var aryEmail, boolSuccess = true;
    try {
        if (strEmail != "") {
            aryEmail = Trim(strEmail).split(delimiter);
            for (var iCount = 0; iCount < aryEmail.length; iCount++) {
                if (!validateEmail(Trim(aryEmail[iCount]))) { boolSuccess = false; }
            }        
        }
    }
    catch (errC) { boolSuccess = false; }
    finally { return boolSuccess; }
}

function fssValidateEmail(oSrc, args) { args.IsValid = validateEmail(Trim(args.Value)); }
function validateEmail(str) {
    var emailExp = new RegExp("[A-Za-z0-9\-\_\+\.][A-Za-z0-9]+@[A-Za-z0-9\-\_][A-Za-z0-9]+\.[A-Za-z][A-Za-z\-\.]*$");
    if ((Trim(str) == "") || (!emailExp.test(str)) || (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(Trim(str))))
    { return false; }
    else
    { return true; }
}

function fssValidateEmptyText(oSrc, args) { 
    var bSuccess = false;
    if (Trim(args.Value) != "") { bSuccess = true; }
    args.IsValid = bSuccess;
}

function fssValidateCaptcha(oSrc, args) {
    var bSuccess = false;
    var sClientID = "", sName = "";

    try {
        sClientID = oSrc.attributes['ControlID'].nodeValue;
        if (sClientID != null && sClientID != "") {
            //sName = sClientID.replace(/_/gi, "$");
            sName = sClientID;
            if (Trim(document.getElementsByName(sClientID)[0].value) != "") { bSuccess = true; }
        }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}

function Trim(str) { return RTrim(LTrim(str)); }
function LTrim(str) {
    var whitespace = new String(" \t\n\r");
    var s = str;

    if (whitespace.indexOf(s.charAt(0)) != -1) {
        var j = 0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
            j++;
        s = s.substring(j, i);
    }
    return s;
}
function RTrim(str) {
    var whitespace = new String(" \t\n\r");
    var s = str;

    if (whitespace.indexOf(s.charAt(s.length - 1)) != -1) {
        var i = s.length - 1;       
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
            i--;
        s = s.substring(0, i + 1);
    }
    return s;
}

function hideDiv(clientID) {
    try { 
        document.getElementById(clientID).style.display = "none";
    } 
    catch(errC) { }
}

function displayDiv(clientID, iDisplay) {
    try { 
        var sDisplay = "";
        if (document.getElementById(clientID) != null) {
            if (iDisplay == 1) { sDisplay = ""; } else { sDisplay = "none"; }
            document.getElementById(clientID).style.display = sDisplay;
        }
    } 
    catch(errC) { }
}

function getPrintContent(pgDiv, parentDiv) {
    try {
        var parentDivDefault = "pgContent";

        if (window.opener != null) {
            var i, cssNodeParent, cssNodeCurrent, cssNodePrint;

            // Delete all css elements in current page except blank.css
            for (i = document.getElementsByTagName("link").length - 1; i >= 0; i--) {
                cssNodeCurrent = document.getElementsByTagName("link")[i];
                if (cssNodeCurrent.href.indexOf("blank.css") != -1) {
                    cssNodePrint = cssNodeCurrent;
                }
                else {
                    document.getElementsByTagName("head")[0].removeChild(cssNodeCurrent);
                }
            }

            // Insert all css elements from parent page to this page (position before blank.css)
            for (i = 0; i < window.opener.document.getElementsByTagName("link").length; i++) {
                cssNodeParent = window.opener.document.getElementsByTagName("link")[i];
                cssNodeCurrent = document.createElement('link');
                cssNodeCurrent.type = cssNodeParent.type;
                cssNodeCurrent.rel = cssNodeParent.rel;
                cssNodeCurrent.href = cssNodeParent.href;
                cssNodeCurrent.media = cssNodeParent.media;
                
                if (cssNodePrint != null) {
                    document.getElementsByTagName("head")[0].insertBefore(cssNodeCurrent, cssNodePrint);
                }
                else {
                    document.getElementsByTagName("head")[0].appendChild(cssNodeCurrent);
                }
            }

            if (cssNodePrint != null) {
                document.getElementsByTagName("head")[0].appendChild(cssNodePrint);
            }
                    
            oPgDiv = document.getElementById(pgDiv);
            oParentDiv = window.opener.document.getElementById(parentDiv);
            if (oParentDiv == null) {
                oParentDiv = window.opener.document.getElementById(parentDivDefault);
            }
            oPgDiv.innerHTML = oParentDiv.innerHTML;

            try {
                $('#' + pgDiv + ' a').attr('target', '_self'); 
                $('#' + pgDiv + ' a').attr('onclick', 'return false;'); 
                $('#' + pgDiv + ' a').attr('href', 'javascript:void(0)'); 
                $('#' + pgDiv + ' input').attr('disabled', 'true'); 
            }
            catch (errC) { }
            
//            // Disable anchors and image buttons                
//            for (i = 0; i < document.getElementsByTagName('a').length; i++) {
//                document.getElementsByTagName('a')[i].href = 'javascript:void(0)';
//                document.getElementsByTagName('a')[i].onclick = 'return false;';
//                document.getElementsByTagName('a')[i].target = '_self';
//            }
//            for (i = 0; i < document.getElementsByTagName('input').length; i++) {
//                document.getElementsByTagName('input')[i].disabled = true;
//            }        

            // Hide control panel
            hideDiv("IconBar.ascx_tblControlPanel");
            hideDiv("dvPrintFriendly");
            self.print();    
        }
    }
    catch (errC) { }  
}

function chkTextAreaLength(field, maxLength, counterID) {
    try {
        if (field != null) {
            if (field.value.length > maxLength) {
                field.value = field.value.substring(0, maxLength);
            }
            document.getElementById(counterID).innerHTML = maxLength - field.value.length;
        }
    }
    catch(errC) { }      
}

function replaceDivText(divID, content) {
    try {
        document.getElementById(divID).innerHTML = content;
    }
    catch(errC) { } 
}

function getTextboxText(id) {
    try {
        return document.getElementById(id).value;
    }
    catch(errC) { } 
}

function appendWinTitle(title) {
    try {
        document.title = title + document.title;
    }
    catch(errC) { } 
}

function fssListReorderMoveUp(listboxName) {
    var listbox = document.getElementById(listboxName);
    var selectedItem="", oldItemText="", oldItemValue="";
    
    if (listbox != null) {
        if (listbox.selectedIndex != 0) {
            selectedItem = listbox.selectedIndex;
            oldItemText = listbox[listbox.selectedIndex].text;
            oldItemValue = listbox[listbox.selectedIndex].value;
            listbox[selectedItem].text = listbox[selectedItem-1].text;
            listbox[selectedItem].value = listbox[selectedItem-1].value;
            listbox[selectedItem-1].text = oldItemText;
            listbox[selectedItem-1].value = oldItemValue;
            listbox.selectedIndex = listbox.selectedIndex - 1;   
        }
    }
}
function fssListReorderMoveDown(listboxName) {
    var listbox = document.getElementById(listboxName);
    var selectedItem="", oldItemText="", oldItemValue="";
    
    if (listbox != null) {
        if (listbox.selectedIndex != listbox.length-1) {
            selectedItem = listbox.selectedIndex;
            oldItemText = listbox[listbox.selectedIndex].text;
            oldItemValue = listbox[listbox.selectedIndex].value;
            listbox[selectedItem].text = listbox[selectedItem+1].text;
            listbox[selectedItem].value = listbox[selectedItem+1].value;
            listbox[selectedItem+1].text = oldItemText;
            listbox[selectedItem+1].value = oldItemValue;
            listbox.selectedIndex = listbox.selectedIndex + 1;   
        }
    }
}
function fssListReorderUpdateHidden(listboxName, hiddenName) {
    var listbox = document.getElementById(listboxName);
    var listOrder = document.getElementById(hiddenName);
    
    if (listbox!=null && listOrder!=null) {
        listOrder.value = "";
        
        for (var count=0; count<listbox.length; count++) {
            listOrder.value = listOrder.value + listbox[count].value;
            if (count != listbox.length-1) {
                listOrder.value = listOrder.value + "|";
            }
        }
    }
}

function fssValidateTextEditor(oSrc, args) {
    var bSuccess = false;

    try {
        if (Trim(args.Value) != "") {
            var editor = $find(oSrc.attributes['teClientID'].nodeValue);
            var maxLength = oSrc.attributes['teMaxLength'].nodeValue;

            if (editor != null && maxLength !=null) {
                maxLength = parseInt(maxLength);
                if (maxLength == 0 || editor.get_text().length <= maxLength) {
                    bSuccess = true;          
                }
            }
        }
    }
    catch (errC) { bSuccess = false; }
    finally { args.IsValid = bSuccess; }
}
function fssValidateFileUpload(oSrc, args) {
    var bSuccess = false;

    try {
        var file = document.getElementById(oSrc.controltovalidate);
        if (file.disabled) { bSuccess = true; }
        else if (Trim(file.value) != '' && validateDocExtension(Trim(file.value), oSrc.attributes['Extension'].nodeValue)) { bSuccess = true; }
    }
    catch (errC) { }
    finally { args.IsValid = bSuccess; }
}
function validateDocExtension(strInput, strValidExt) {
    var bSuccess = false;
    
    try {
        var regex;
        var aryExtension = strValidExt.split(",");
        strInput = Trim(strInput);
        for (var i = 0; i < aryExtension.length; i++) {
            regex = new RegExp("(." + aryExtension[i] + ")", "i")
            if (regex.test(strInput)) {bSuccess = true; }
        }
        return bSuccess;
    }
    catch (errC) { }
}    

function fssValidateNRIC(oSrc, args) { args.IsValid = check_nric(Trim(args.Value)); }
function check_nric(strNRIC)
{
    var bValid = true;
    if (Trim(strNRIC) != "")
    {
	    // these variables used for NRIC checks
	    weight = new Array("2","7","6","5","4","3","2");
	    u_reftb = new Array("A","B","C","D","E","F","G","H","I","Z","J");
	    f_reftb = new Array("K","L","M","N","P","Q","R","T","U","W","X");
	    var i=0, prod=0, sum=0, rem = 0 ;
	    var pfx, chkdgt;

	    if (strNRIC.length!=9)
	    { bValid = false; }

	    if (bValid)
	    {
	        pfx    = Trim(strNRIC).charAt(0).toUpperCase();
	        chkdgt = Trim(strNRIC).charAt(8).toUpperCase();

	        if (pfx != 'I' && pfx != 'S' && pfx != 'T' &&
	        pfx != 'F' && pfx != 'G')
	        { bValid = false; }
	        for(i=0; i<7; i++)
	        {
		        prod = weight[i] * Trim(strNRIC).charAt(i+1);
		        sum +=prod;
	        }
	        if(pfx == 'T' || pfx == 'G')
	        {
		        sum +=4;
	        }
	        rem = sum % 11;
	        if (pfx == 'I' || pfx == 'S' || pfx == 'T')
	        {
		        if (chkdgt == u_reftb[(11-rem) -1])
		        { bValid = true; }
		        else
		        { bValid = false; }
	        }
	        else
	        {
		        if (chkdgt == f_reftb[(11-rem) -1])
		        { bValid = true; }
		        else
		        { bValid = false;	}
	        }
	    }
    }
    else { bValid=false; }
    return bValid
}

function changeImage(id, img) { 
    try {
        document.getElementById(id).src = img; 
    }
    catch (errC) { }
    
} 

function toggleInputField(input, inputOthers, input2Type) {
    try {
        einput = document.getElementById(input);
        einputOthers = document.getElementById(inputOthers);
       
        if (!einput.checked) { 
            einputOthers.disabled = true; 
            switch(input2Type) {
                case "text":
                    einputOthers.value = ''; 
                    break;
                case "dropdown":
                    einputOthers[0].selected = true;
                    break;
              	case "radio":
                    einputOthers.checked = false;
                    break;
              	case "checkbox":
                    einputOthers.checked = false;
                    break;
                case "file":
                    document.getElementById(inputOthers + "_divFile").innerHTML = '';
                    break;
                case "div":
                   document.getElementById(inputOthers).style.display = "none";
                   document.getElementById(inputOthers).disabled  = true;
                    break;                    
            } 
        }
        else { 
            switch(input2Type) {
                case "file":                    
                    if (document.getElementById(inputOthers + "_hFileURL"))
                    { einputOthers.disabled = true;  }
                    else
                    { einputOthers.disabled = false; }
                    break;
                case "div":
                   document.getElementById(inputOthers).style.display = "";
                   document.getElementById(inputOthers).disabled  = false;
                    break;   
                default:
                    einputOthers.disabled = false;
                    break;
            }
        }
        
    }
    catch(errC) {}   
}

function getValueByID(strID) {
    return document.getElementsByName(strID).value;    
}

function validateRadiolist(chkControlId) {
    var options = document.getElementsByName(chkControlId);
    var ischecked = false;    

    if (options != null) {    
        for(i=0; i<options.length; i++) {
            var opt = options[i];    
            if(opt.checked) {
                ischecked= true;                
            }
        }       
    }    
    return ischecked;
}

function validateListboxlist(chkControlId) {
   var Source = document.getElementById(chkControlId);
   var ischecked = false;    
    
   if (Source.options.selectedIndex!=-1)
   {    ischecked= true;    }
    
   return ischecked;
}

/* --------------------------------------------------------------------------------------------------- */

/* __jQuery__ */
$(function() {
    scrollToAnchor();
    initModalWindow();
    initSlideShow();
    initSlidePanel();
    initTabs();
    spotlightSlideShow();
    $('img').supersleight({shim: 'images/spacer.gif'});
    $('.table tr:even').addClass("alt");
    $(".obj-twitter").html("<SCRIPT>if (WIDGETBOX) { WIDGETBOX.renderWidget('8c50c334-61c7-4e9e-a445-77c196ebec64'); }</SCRIPT>");
    $('.roundCorner').corner("cc:#FFF");
/*
    $("a[href$=pdf]").addClass("pdf");
    $("a[href$=zip]").addClass("zip");
    $("a[href$=doc]").addClass("doc");
    $("a[href$=docx]").addClass("doc");
    $("a[href$=xls]").addClass("xls");
    $("a[href$=xlsx]").addClass("xls");
    $("a[href*=@]").addClass("mailto");
    $("a[href*=feed/rss]").addClass("rss");
    $("a[href$=zip]").addClass("zip");
    $("a[href$=rar]").addClass("zip");
    $("a[href$=ace]").addClass("zip");
    $("a[href$=tar.gz]").addClass("zip");
    $("a[href$=tgz]").addClass("zip");
*/
/*
    $("a:not([href*=http://app1.reach.simsys.sg])").not("[href^=#]").not("[href*=/Portals]").not("[href*=/portals]").not("[href*=http://app1.reach.simsys.sg/Portals]").not("[href*=http://app1.reach.simsys.sg/portals]").addClass("external");
    $("a[href*=javascript]").removeClass("external");
    $(".removeClass a").removeClass("external");
    $('a img').parent().removeClass("external");
    $("a[onClick]").removeClass("external");
*/
});

function scrollToAnchor() {
    try {
        $('a[href^=#]:not([href=#])').click(function() {
            if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
                var $target = $(this.hash);
                $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
                if ($target.length) {
                    var targetOffset = $target.offset().top;
                    $('html,body').animate({scrollTop: targetOffset}, 'slow');
                    location.hash = this.hash;
                    return false;
                }
            }
        });
    }
    catch (errC) { }
}


function initModalWindow() {
    try { 
        $("a[rel='cb-gallery']").colorbox({transition:"fade"});
        $(".cb-iframe").colorbox({width:"80%", height:"80%", iframe:true}); 
        $(".cb-if-login").colorbox({width:"620px", height:"500px", iframe:true, scrolling:false}); 
        $(".cb-inline").colorbox({width:"50%", inline:true, href:"#cb-inline-text"});
        $(".cb-ajax").colorbox();
        $("a[rel='cb-GE-gallery']").colorbox({transition:"fade",slideshow:true});
    } 
    catch (errC) { }    
}

function initStripEmptyUL() {
    try {
        $('ul').each(function() { 
            if ($(this).children().length == 0) { 
                $(this).remove(); 
            } 
        }); 
    } 
    catch (errC) { }    
}

function initSlidePanel() {
    jQuery(".trigger").click(function() {
        jQuery(".slidePanel").slideToggle("fast");
        jQuery(this).toggleClass("active");
        return false;
    });
}

// init slideshow
function initSlideShow() {
	jQuery('.intro').slideShow({
		numElementLink:'ul.add-nav a',
		slideEl:'div.image-box > div.slide',
		autoSlideShow:true,
		switchTime:5000,
		duration:750
	});
}

// slideshow plugin
jQuery.fn.slideShow = function(_options){
	var _options = jQuery.extend({
		
		linkNext:'a.next',
		linkPrev:'a.prev',
		linkPause:'a.pause',
		numElementLink:'div.nav li a',
		duration:500,
		pauseOnHover:true,
		autoSlideShow:false,
		autoHeight:false,
		switchTime:3000,
		event:'click',
		currentEl:'#footer span.cur',
		allEl:'#footer span.all'
	},_options);

	return this.each(function(){
		var _THIS = jQuery(this);
		var _slideEl = jQuery(_options.slideEl, _THIS);
		var _elTagName = _options.slideEl;
		var _linkNext = jQuery(_options.linkNext, _THIS).length ? jQuery(_options.linkNext, _THIS) : false;
		var _linkPrev = jQuery(_options.linkPrev, _THIS).length ? jQuery(_options.linkPrev, _THIS) : false;
		var _linkPause = jQuery(_options.linkPause, _THIS).length ? jQuery(_options.linkPause, _THIS) : false;
		var _numElementLink = jQuery(_options.numElementLink, _THIS).length ? jQuery(_options.numElementLink, _THIS) : false;
		var _numElement = jQuery(_options.numElementLink, _THIS).length ? _numElementLink.parent() : false;
		var _duration = _options.duration;
		var _switchTime = _options.switchTime;
		var _numElActive, _n, _timer = false, _hover = false;
		

		if (!_slideEl.filter('.active').length)
			_slideEl.eq(0).addClass('active');
		jQuery(_slideEl).not(".active").css('display','none');
		jQuery(_slideEl).not(".active").css('display','none');

		if (jQuery(_numElement).length) {activeNumEl()}

		if (_options.autoSlideShow) {
			_timer = setTimeout(function(){nextEl()},_switchTime);
			contentHover();
		}
		if (_linkNext) {
			jQuery(_linkNext).click(function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				if (jQuery(_slideEl).filter(".active").next().is(_elTagName)) {
					jQuery(_slideEl).filter(".active").next().addClass("next");
				} else {
					jQuery(_slideEl).eq(0).addClass("next");
				}
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPrev) {
			jQuery(_linkPrev).click(function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				if (jQuery(_slideEl).filter(".active").prev().is(_elTagName)) {
					jQuery(_slideEl).filter(".active").prev().addClass("next");
				} else {
					jQuery(_slideEl).filter(":last-child").addClass("next");
				}
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPause) {
			if (!_options.autoSlideShow) {
				_linkPause.addClass('play');
				_options.autoSlideShow = true;
				if (!_hover) contentHover();
			}
			jQuery(_linkPause).click(function(){
				if (!_linkPause.is('.play')) {
					clearTimeout(_timer);
					_linkPause.addClass('play');
				} else {
					_linkPause.removeClass('play');
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				return false;
			});
		}
		if (_numElementLink) {
			jQuery(_numElementLink).bind(_options.event, function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				_n = _numElement.index(jQuery(this).parent());
				if (!jQuery(_slideEl).eq(_n).hasClass("active")){
					jQuery(_slideEl).eq(_n).addClass("next");
					fadeElement();
					activeNumEl();
				}
				return false;
			});
		}
		if (_options.currentEl || _options.allEl) {
			_THIS.all = _slideEl.length;
			jQuery(_options.allEl, _THIS).html(_THIS.all);
			function currentNum() {
				var _index = _slideEl.index(_slideEl.filter('.active')) + 1;
				jQuery(_options.currentEl, _THIS).html(_index);
			}
			currentNum();
		}
		function contentHover() {
			if(!_options.pauseOnHover) return;
			_hover = true;
			_slideEl.hover(function() {
				if (_timer) clearTimeout(_timer);
			}, function(){
				if (_linkPause && !_linkPause.is('.play'))
					_timer = setTimeout(function(){nextEl()},_switchTime);
				else if (!_linkPause)
					_timer = setTimeout(function(){nextEl()},_switchTime);
			});
		}
		function nextEl(){
			if (jQuery(_slideEl).filter(".active").next().is(_elTagName)){
				jQuery(_slideEl).filter(".active").next().addClass("next");
			} else {
				jQuery(_slideEl).eq(0).addClass("next");
			}
			fadeElement();
			activeNumEl();
			_timer = setTimeout(function(){nextEl()},_switchTime);
		};
		function activeNumEl() {
			jQuery(_numElement).removeClass("active");
			_numElActive = jQuery(_slideEl).index(jQuery(_slideEl).filter(".active")[0]);
			jQuery(_numElement).eq(_numElActive).addClass("active");

			// ss:customised	
			if (jQuery(_numElement).eq(_numElActive).parent().parent().attr('class')=='slideon')
			{
				if (_numElActive==0)
				{ jQuery(_numElement).eq(_numElActive).parent().parent().css('left',0); }		
				if ((_numElActive>=5))
				{ jQuery(_numElement).eq(_numElActive).parent().parent().css('left',(_numElActive-4)*(-175)); }
			}

		};
		function fadeElement(){
			jQuery(_slideEl).filter(".active").fadeOut(_duration).removeClass("active");
			jQuery(_slideEl).filter(".next").fadeIn(_duration).addClass("active").removeClass("next");
			if (_options.autoHeight) jQuery(_slideEl).filter(".active").eq(0).parent().animate({height:jQuery(_slideEl).filter(".active").eq(0).height()},{duration:_duration});
			if (_options.currentEl || _options.allEl) currentNum();
		};
	});
}

// tabs
function initTabs()
{
	var sets = document.getElementsByTagName("ul");
	for (var i = 0; i < sets.length; i++)
	{
		if (sets[i].className.indexOf("tabset") != -1)
		{
			var tabs = [];
			var links = sets[i].getElementsByTagName("a");
			for (var j = 0; j < links.length; j++)
			{
				if (links[j].className.indexOf("tab") != -1)
				{
					tabs.push(links[j]);
					links[j].tabs = tabs;
					var c = document.getElementById(links[j].href.substr(links[j].href.indexOf("#") + 1));

					//reset all tabs on start
					if (c) if (links[j].className.indexOf("active") != -1) c.style.display = "block";
					else c.style.display = "none";

					links[j].onclick = function ()
					{
						var c = document.getElementById(this.href.substr(this.href.indexOf("#") + 1));
						if (c)
						{
							//reset all tabs before change
							for (var i = 0; i < this.tabs.length; i++)
							{
								document.getElementById(this.tabs[i].href.substr(this.tabs[i].href.indexOf("#") + 1)).style.display = "none";
								this.tabs[i].className = this.tabs[i].className.replace("active", "");
							}
							this.className += " active";
							c.style.display = "block";
							return false;
						}
					}
				}
			}
		}
	}
}

if (window.addEventListener) window.addEventListener("load", initTabs, false);
else if (window.attachEvent) window.attachEvent("onload", initTabs);

jQuery.fn.supersleight = function(settings) {
	settings = jQuery.extend({
		imgs: true,
		backgrounds: true,
		shim: 'x.gif',
		apply_positioning: true
	}, settings);
	
	return this.each(function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
			jQuery(this).find('*').andSelf().each(function(i,obj) {
				var self = jQuery(obj);
				// background pngs
				if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
					var bg = self.css('background-image');
					var src = bg.substring(5,bg.length-2);
					var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
					var styles = {
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
						'background-image': 'url('+settings.shim+')'
					};
					self.css(styles);
				};
				// image elements
				if (settings.imgs && self.is('img[src$=png]')){
					var styles = {
						'width': self.width() + 'px',
						'height': self.height() + 'px',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
					};
					self.css(styles).attr('src', settings.shim);
				};
				// apply position to 'active' elements
				if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
					self.css('position', 'relative');
				};
			});
		};
	});
};

function photoGallerySlideShow()
{
jQuery(document).ready(function($) {
		$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=37795997@N03&lang=en-us&format=json&jsoncallback=?", function(data){
				$.each(data.items, function(i,item){
					var newthumb = $("ul.thumbs").children("li:first").clone();
					var baseimg = item.media.m;

					var thumbimg = baseimg.replace("_m.jpg", "_s.jpg");
					$(newthumb).find("img").attr("src", thumbimg);

					var disimg = baseimg.replace("_m.jpg", ".jpg");
					$(newthumb).find(".thumb").attr("href", disimg);

					var lgeimg = baseimg.replace("_m.jpg", "_b.jpg");
					$(newthumb).find(".download").children("a").attr("href", lgeimg);

					var title = item.title;
					var description = item.description;

					var desc = $("<div />").append(description);
					if ($(desc).children().size() == 3) {
						description = $(desc).children("p:last").html();
					} else {
						description = "";
					}

					//$(newthumb).find(".image-title").empty().html(title);
					//$(newthumb).find(".image-desc").empty().html(description);
					//$(newthumb).find(".image-auth").empty().html(item.author);

					$("ul.thumbs").append(newthumb);
				});

				$("ul.thumbs").children("li:first").remove();

				// Initially set opacity on thumbs and add
				// additional styling for hover effect on thumbs
				var onMouseOutOpacity = 0.67;
				$('#thumbs ul.thumbs li').opacityrollover({
					mouseOutOpacity:   onMouseOutOpacity,
					mouseOverOpacity:  1.0,
					fadeSpeed:         'fast',
					exemptionSelector: '.selected'
				});

				// Initialize Advanced Galleriffic Gallery
				var gallery = $('#thumbs').galleriffic({
					delay:                     2500,
					numThumbs:                 5,
					preloadAhead:              10,
					enableTopPager:            false,
					enableBottomPager:         false,
					maxPagesToShow:            1,
					imageContainerSel:         '#slideshow',
					controlsContainerSel:      '#controls',
					captionContainerSel:       '',
					loadingContainerSel:       '#loading',
					renderSSControls:          true,
					renderNavControls:         true,
					playLinkText:              'Play Slideshow',
					pauseLinkText:             'Pause Slideshow',
					prevLinkText:              '&laquo; Previous',
					nextLinkText:              'Next &raquo;',
					nextPageLinkText:          'Next &raquo;',
					prevPageLinkText:          '&laquo; Prev',
					enableHistory:             false,
					autoStart:                 true,
					syncTransitions:           true,
					defaultTransitionDuration: 900,
					onSlideChange:             function(prevIndex, nextIndex) {
						// 'this' refers to the gallery, which is an extension of $('#thumbs')
						this.find('ul.thumbs').children()
							.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
							.eq(nextIndex).fadeTo('fast', 1.0);
					},
					onPageTransitionOut:       function(callback) {
						this.fadeTo('fast', 0.0, callback);
					},
					onPageTransitionIn:        function() {
						this.fadeTo('fast', 1.0);
					}
				});
		});

		// We only want these styles applied when javascript is enabled
		$('div.navigation').css({'width' : '296px', 'float' : 'left'});
		$('div.content').css('display', 'block');
	});
}


function spotlightSlideShow()
{
$(function() { fCycleSpotlightsInitSlideShow(); });
 function fCycleSpotlightsInitSlideShow() {
 jQuery('.spotlights').slideShow({
 numElementLink: 'div.spotlights-add-nav ul a',
 slideEl:  'div.spotlights-box > div.slide',
 autoSlideShow:true,
 switchTime:5000,
 duration:1000,
 event:'mouseover'
 });
 }

}
//-->
