HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: //opt/cpanel/ea-php54/root/usr/share/pear/RVSeagullMod/modules/tryout/classes/SgOutput.php
<?php
/* Reminder: always indent with 4 spaces (no tabs). */
// +---------------------------------------------------------------------------+
// WebSite:  http://www.rvglobalsoft.com
// Unauthorized copying is strictly forbidden and may result in severe legal action.
// Copyright (c) 2006 RV Global Soft Co.,Ltd. All rights reserved.
//
// =====YOU MUST KEEP THIS COPYRIGHTS NOTICE INTACT AND CAN NOT BE REMOVE =======
// Copyright (c) 2006 RV Global Soft Co.,Ltd. All rights reserved.
// This Agreement is a legal contract, which specifies the terms of the license
// and warranty limitation between you and RV Global Soft Co.,Ltd. and RV Site Builder.
// You should carefully read the following terms and conditions before
// installing or using this software.  Unless you have a different license
// agreement obtained from RV Global Soft Co.,Ltd., installation or use of this software
// indicates your acceptance of the license and warranty limitation terms
// contained in this Agreement. If you do not agree to the terms of this
// Agreement, promptly delete and destroy all copies of the Software.
//
// =====  Grant of License =======
// The Software may only be installed and used on a single host machine.
//
// =====  Disclaimer of Warranty =======
// THIS SOFTWARE AND ACCOMPANYING DOCUMENTATION ARE PROVIDED "AS IS" AND
// WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER
// WARRANTIES WHETHER EXPRESSED OR IMPLIED.   BECAUSE OF THE VARIOUS HARDWARE
// AND SOFTWARE ENVIRONMENTS INTO WHICH RV SITE BUILDER MAY BE USED, NO WARRANTY OF
// FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.  THE USER MUST ASSUME THE
// ENTIRE RISK OF USING THIS PROGRAM.  ANY LIABILITY OF RV GLOBAL SOFT CO.,LTD. WILL BE
// LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF PURCHASE PRICE.
// IN NO CASE SHALL RV GLOBAL SOFT CO.,LTD. BE LIABLE FOR ANY INCIDENTAL, SPECIAL OR
// CONSEQUENTIAL DAMAGES OR LOSS, INCLUDING, WITHOUT LIMITATION, LOST PROFITS
// OR THE INABILITY TO USE EQUIPMENT OR ACCESS DATA, WHETHER SUCH DAMAGES ARE
// BASED UPON A BREACH OF EXPRESS OR IMPLIED WARRANTIES, BREACH OF CONTRACT,
// NEGLIGENCE, STRICT TORT, OR ANY OTHER LEGAL THEORY. THIS IS TRUE EVEN IF
// RV GLOBAL SOFT CO.,LTD. IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO CASE WILL
// RV GLOBAL SOFT CO.,LTD.'S LIABILITY EXCEED THE AMOUNT OF THE LICENSE FEE ACTUALLY PAID
// BY LICENSEE TO RV GLOBAL SOFT CO.,LTD.
// +---------------------------------------------------------------------------+
// $Id: Output.php,v 1.52 2006/04/18 04:20:39 apiruk Exp $
// +---------------------------------------------------------------------------+

/**
 * Type you class description here ...
 *
 * @package sitebuilder
 * @author  Charnchai <charnchai@rvglobalsoft.com>
 * @author  Thiraphat <thiraphat@rvglobalsoft.com>
 * @version $Revision: 1.52 $
 * @since   PHP 4.1
 */

class SitebuilderOutput
{
    var $rvsUsrId;
    //use $this->conf from Manager.php

    function OnlineForm2($numField , $fieldData)
    {
      SGL::logMessage(null, PEAR_LOG_DEBUG);
      $title = $fieldData['title'];
      $name = $fieldData['name'];
      $type = $fieldData['type'];
      $selopt = $fieldData['seloption'];

      $aSelectType = array(
                                          'textbox' => RvsLibs_String::translate('Text Box')
                                          ,"textarea" => RvsLibs_String::translate('Text Area')
                                          ,"checkbox" => RvsLibs_String::translate('Check Box')
                                          ,"radiobox" => RvsLibs_String::translate('Radio Button')
                                          ,"listbox" => RvsLibs_String::translate('List Box')
                                          ,"hidden" => RvsLibs_String::translate('Hidden Field')
                                     );


      $fieldTotal = '';
       for ($i = 0; $i < $numField; $i++) {
           $classId = ($i%2 == 0) ? 'odd' : 'even';
           $disabled = ($type[$i] == 'radiobox' || $type[$i] == 'listbox') ? '' : 'disabled';
           $numOpt[$i] = ($selopt[$i] == 0 ) ? '' : $selopt[$i];


            $fieldTotal .= '<tr class="' . $classId . '">
                          <td><div align="center">
                              <input name="fieldtitle_' . $i . '" type="text" id="fieldtitle_' . $i . '" size="25" maxlength="100"  class="width100px" value="' . $title[$i] . '">
                            </div></td>
                          <td><div align="center">
                              <input name="fieldname_' . $i . '" type="text" id="fieldname_' . $i . '" size="15" maxlength="30" class="width100px" onChange="textReplace(this.value,\'' . $i . '\');" value="' . $name[$i] . '">
                            </div></td>
                          <td><div align="center"> <font size="1" face="Tahoma">
                              <select name="fieldtype_' . $i . '" id="fieldtype_' . $i . '" style="width:100px;" onChange="chkListBox(this,\'' . $i . '\')">'
                                .  SGL_Output::generateSelect($aSelectType, $type[$i]) .
                              '</select>
                              </font></div></td>
                          <td><div align="center"><font size="1" face="Tahoma">
                              <input name="seloption_' . $i . '" type="text" id="seloption_' . $i . '" size="10" maxlength="2" class="width30px" onChange="chkNum(this,\'' . $i . '\');"   ' . $disabled . '  value = "' . $numOpt[$i] . '">
                              </font></div></td>
                        </tr>';
       }
      return $fieldTotal;
    }

    /**
     * validate enable step v5
     * @param $step
     * @return unknown_type
     */

    function isProjectSessionExists()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$projectSessId = SGL_Session::get('rvs_project_id');
    	//uikit เช็คแค่ $projectSessId
    	return ($projectSessId) ? true : false;
    }

    function makeScript($tagScript, $counter, $looper)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	switch ($tagScript)
    	{
    		case 'li' :
    		default:
    			$tagScript = 'li';
				break;

    	}
    	if (!$looper) {
    		$looper = 0;
    	}
    	$returnVal = '';
    	if ($looper && ($looper % $counter == 0)) {
    		$returnVal = '</' . $tagScript . '><' . $tagScript . ' class="cloned">';
    	}
    	return $returnVal;
    }

    function isTemplateItemForderExists()
    {
    	$projectId = SGL_Session::get('rvs_project_id');
    	$userId = RvsLibs_User::getUserId();
    	$res = DaoFactory::Project()->findProjectInfoDataByProjectId($projectId, 'getRow');
    	if (isset($res['template_item_id']) && !empty($res['template_item_id'])) {
    		return true;
    	}
    	return false;
    }

    function genhtmlEntityDecode($attrName, $attrValue)
    {
    	$attrValue = html_entity_decode($attrValue);
    	return ''. $attrName .'= &quot;' . $attrValue . '&quot;&nbsp;&nbsp;';

    }

        /**
         * admin interface
         * input aMenu name == $req->get(managerName)
         *
         * @param string $aMenu
         * @return unknown
         */
     function currentMenu($aMenu)
     {
         $req = SGL_Request::singleton();
         $reqManagerName = $req->get('managerName');
         $action = $req->get('action');
         $current = ($reqManagerName == $aMenu) ? 'class="current"' : '';

         if ($aMenu == 'admin' && $reqManagerName == 'admin') {
             $current = ($action == '') ? 'class="current"': '';
         } elseif ($aMenu == 'updatelicense' && $reqManagerName == 'admin') {
             $current = ($action == 'licenseCycle') ? 'class="current"': '';
         }
         return $current;
     }


     function AdminMenu($aMenu)
     {
         $oSglMgr = SGL_Manager::singleton();
         $this->conf = $oSglMgr->conf;


         $usrStatus  = RvsLibs_User::getUserStatus();
         $aMenu = RvsLibs_String::strtolower($aMenu);
         $current = $this->currentMenu($aMenu);

         //@task (1) translate (2) getUsrStatus
         $tranConfig = RvsLibs_String::translate('Configuration');
         $tranResell = RvsLibs_String::translate('Reseller Control List');
         $tranResellControl = RvsLibs_String::translate('Reseller Tran Control List');

         if ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "adminconfig") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/adminconfig/" ' . $current . '>' . $tranConfig . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "autoupdateconfig") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/autoupdateconfig" ' . $current . '>' . RvsLibs_String::translate('AutoUpdate Configuration') . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "backupconfig") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/backupconfig" ' . $current . ' >' . RvsLibs_String::translate('Backup Configuration') . '</a></li>';
         } elseif ((SGL_Output::isDirectAdminMode() === false) && $usrStatus == RVS_ROOT_USER_NAME && $aMenu == "rollbackversion") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/rollbackversion" ' . $current . ' >' . RvsLibs_String::translate('Rollback Version') . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "updatelicense") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/admin/action/licenseCycle" ' . $current . ' >' . RvsLibs_String::translate('Upgrade License') . '</a></li>';
         } elseif ((SGL_Output::isDirectAdminMode() === false) && $usrStatus == RVS_ROOT_USER_NAME && $aMenu == "adminupgradervs") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/adminupgradervs" ' . $current . ' >' . RvsLibs_String::translate('Upgrade RVSiteBuilder') . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "adminrecoverprojectuserlist") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/adminrecoverprojectuserlist" ' . $current . ' >' . RvsLibs_String::translate('Recovering project user list') . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "resellercontrollist") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/resellercontrollist/"  ' . $current . '>' . $tranResell . '</a></li>';
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "resellertrancontrol") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/resellertrancontrol/" '  . $current . '>' . $tranResellControl . '</a></li>';
         } elseif ($usrStatus != RVS_ROOT_USER_NAME && $aMenu == "tryout") {
             if (!( (RVS_USER_NAME == $this->conf['tryout']['tryoutRootAccount'] && !$this->conf['tryout']['enableTryoutModuleForRoot'])
             || (RVS_USER_NAME != $this->conf['tryout']['tryoutRootAccount'] && !$this->conf['tryout']['enableTryoutModuleForReseller'])
             || $this->isOldTryout() === false )) {
                 $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/tryout/"  '  . $current . ' >' . RvsLibs_String::translate('Tryout Configuration') . '</a></li>';
             }
         } elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "migrateserver") {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/migrationserver/"  '  . $current . ' >' . RvsLibs_String::translate('Migrate Server') . '</a></li>';
         } elseif ((SGL_Output::isDirectAdminMode() === false) && $usrStatus == RVS_ROOT_USER_NAME && $aMenu == "admincomponentusercontrol") {
             $showMenu = ' <li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/admincomponentusercontrol/"  '  . $current . ' >' . RvsLibs_String::translate('Manage Components') . '</a></li>';
         } elseif ($aMenu == "admin") {
             // default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/admin/"  '  . $current . ' >' . RvsLibs_String::translate('Home') . '</a></li>';
         } elseif ($aMenu == "defaultsetting") {
             //default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/defaultsetting/"  '  . $current . ' >' . RvsLibs_String::translate('Owner Configuration') . '</a></li>';
         } elseif ($aMenu == "component") {
             //default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/component/"  '  . $current . ' >' . RvsLibs_String::translate('Component') . '</a></li>';
         } elseif ($aMenu == "usercontrollist") {
             //default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/usercontrollist/"  '  . $current . ' >' . RvsLibs_String::translate('User Control List') . '</a></li>';
         } elseif ($aMenu == "createbypowerbyicon") {
             //default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/createbypowerbyicon/"  '  . $current . ' >' . RvsLibs_String::translate('Created by and Powered by icon') . '</a></li>';
         } elseif ($aMenu == "translation") {
             //default menu
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/translation/"  '  . $current . ' >' . RvsLibs_String::translate('Translation') . '</a></li>';
         } elseif ($aMenu == "adminactivityreport" && $usrStatus == RVS_ROOT_USER_NAME) {
             $showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/adminactivityreport/"  '  . $current . ' >' . RvsLibs_String::translate('Activity Report') . '</a></li>';
         }  elseif ($usrStatus == RVS_ROOT_USER_NAME && $aMenu == "tryoutusercontrol") {
         	if (RvsLibs_License::isLicensePro() === true) {
         		$showMenu = '<li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilderpro/tryoutusercontrol/"  '  . $current . ' >' . RvsLibs_String::translate('Tryout User Control List') . '</a></li>';
         	}
         }
         return $showMenu;
     }

     function isOldTryout()
     {
         // optimize :nipaporn
         return (is_file(RvsLibs_File::buildPath(array(RVS_USER_HOME, '.rvsitebuilder', 'tryout_setting.ini.php'))))
         		? true
         		: false;
     }

        function englishValue($key , $currentModule)
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            $defaultLangFile = RvsLibs_File::buildPath(array(SGL_PATH, 'modules', $currentModule, 'lang', 'english-utf-8.php'));
            require $defaultLangFile;
            $aSourceLang = $words;
            return $aSourceLang[$key];
        }

        // If click "HOME" Set INDEX_URL from my_constants.php link to user control panel
        function getHomeUrl()
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            // optimize :nipaporn
            return  INDEX_URL;
        }

        function getLogoutUrl()
        {
            //SGL::logMessage(null, PEAR_LOG_DEBUG);
            // optimize :nipaporn
            /*return (CPMODE == 'cpanel')
                   ? '/logout'
                   : '/user/login/action/logout/';*/
        	/*
        	 * CpHandle function getLogoutUrl:: nipaporn
        	 */
        $oCp = CpHandle::factory();
        if (SGL::isError($oCp) === true) {
        	SGL_Error::pop();
        	return false;
        }
        return $oCp->getLogoutUrl();
        }

        function translateJsMsg($key)
        {
            //SGL::logMessage(null, PEAR_LOG_DEBUG);
            $traslated = RvsLibs_String::translate($key);
            // optimize :nipaporn
            return RvsLibs_String::jsAddSlashes($traslated);
        }

        function translateComponent($componentName,$isDialog = false)
        {
        	if ($isDilog) {
        		$cName = RvsLibs_String::translate($componentName);
        		return $tran =  RvsLibs_String::translate('Customize header and footer for') . ' ' . $cName;
        	} else  {
        		$cName = RvsLibs_String::translate($componentName);
        		return $tran =  RvsLibs_String::translate('Header and Footer for') . ' ' . $cName;
        	}
        }




        function jsAddSlashes($key)
        {
            return  addslashes($key);
        }

        function jsStripslashes($key)
        {
            return stripslashes($key);
        }
        /**
        * $option for validate unset button on WYSIWYG Editor in STEP 3 edit SideConfig
        */
        function showWysiwygpro($textareaCode, $formName, $width = '100%', $height = '300', $option = '')
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            // return '<textarea cols="50" rows="4" name=" ' . $formName . '" id="' . $formName . '">' . $textareaCode . '</textarea><br><input name="Submit" value="Save" type="submit" class="bborder"/>';
            /* include class Common */
            include_once(SGL_MOD_DIR . '/sitebuilder/classes/Common.php');
            include_once (WYSIWYG_ROOT_PATH . '/config.bridge.php');
            include_once (WYSIWYG_ROOT_PATH . '/editor_class.php');
            include_once (WYSIWYG_ROOT_PATH . '/editor_functions.php');

            // New Object
            $rvsUsrId = RvsLibs_User::getUserId();
            $rvsOwnerUsrId = RvsLibs_User::getOwnerId();
            // getProjectInfoData
            $aProjectInfoData = RvsLibs_Project::getProjectInfo(PROJECT_ID, $rvsUsrId);
            // get ComponentData
            $aComponentData = RvsLibs_Component::getComponentData(null, $rvsOwnerUsrId);
            $aCharsetData = RvsLibs_Charset::getCharsetData($aProjectInfoData->charset_id);
            $projectPageId = PROJECT_PAGE_ID;
            $projectId = PROJECT_ID;
            // set rvurl for context menu edit count and online_form
            $setRvUrl = '<script type="text/javascript"> <!--' . "\n" . "var rvurl = '" . SGL_BASE_URL . '/' . INDEX_PHPSU . "';"  . "\n" . "//--> </script>" . "\n";
            include_once(SGL_MOD_DIR . '/sitebuilder/classes/WysiwygEditorObject.php');

            //----------------------------------------- START -------------------------------------
            // select charset id  step 1
            // find chartset id in table rvs_charset
            $aCharsetId = DaoFactory::Project()->findAllProjectsByProjectId($projectId,  'getrow');
            $aCharsetData = DaoFactory::Charset()->findCharsetDataByCharsetId($aCharsetId['charset_id'], 'getrowobj');
            $charset = $aCharsetData->charset_name . '-' . $aCharsetData->charset_value;
            $editor->lang = RvsLibs_String::preg_replace('/[^a-z0-9\-_]/si', '', $charset);
            //------------------------------------------ END --------------------------------------
            $textareaCode = $setRvUrl . $editor->return_editor($width, $height);
            return $textareaCode;
        }

        function TryoutAdminMenu()
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            $showMenu = '
                       <tr>
                          <td width="14"><img src="' . PUBLIC_IMG_URL . '/bullet01.jpg" alt="" width="14" height="20" /></td>
                          <td class="margin01"><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/tryout/" >' . RvsLibs_String::translate('Tryout Configuration') . '</a></td>
                        </tr>
                        <tr>
                          <td colspan="2" height="1" class="dot"></td>
                        </tr>
                        <tr>
                          <td colspan="2" height="1" class="linde04"></td>
                        </tr>
                ';
            if (RvsLibs_License::isLicensePro()) {
                return $showMenu;
            }
        }
        /*
            $aError['1']['wrongName ']
        */
        function editCustomPageName($aError,$id)
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            $errorResult = '';
            if ($aError)
                foreach ($aError[$id] as $key=>$val) {
                   $errorResult .= '<div class="error" >' . $aError[$id][$key] . '</div>';
            }
            return $errorResult;
        }

        function importTemplateAdminMenu()
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);

            $req = SGL_Request::singleton();
            $reqManagerName = $req->get('managerName');
            $current = ($reqManagerName == "uploadtemplate") ? 'class="current"' : '';
            $showMenu = ' <li><a href="' . SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/uploadtemplate/parent/1" ' . $current . ' >' . SGL_Output::translate('Import Template') . '</a></li>';
            // validate enable icon import template for admin
            if ( RvsLibs_User::getUserStatus() != "user" ) {
                return $showMenu;
            }
        }

        function showHideAdminMenu()
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            return (SGL_Session::get('RVS_STEPINFO_ADMIN') && SGL_Session::get('RVS_STEPINFO_ADMIN') == 1 ) ? 'display:none' : 'display:';
        }

        function showHideStepInfoBar()
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            $fileStepInfoStatus = RvsLibs_File::buildPath(array(RVS_USER_HOME, '.rvsitebuilder', 'hideTagWelcome.txt'));//hideStepInfo.txt';
            if (file_exists($fileStepInfoStatus)) {
                return 'display:none';
            } else {
                return;
            }
        }
        //********************************************************************************
        function showHelp($helpName,$subHelp)
        {
            $sitebuilderUrl = WEB_THEME_URL . '/' . INDEX_PHPSU . '/sitebuilder';
            $tutorialsUrl = $sitebuilderUrl . '/help/category/' . $helpName;
            return $tutorialsUrl;
        }

        function stepDescription($step, $type, $mode = null)
        {
            $req = SGL_Request::singleton();
            $componentName = ($req->get('componentName')) ? $req->get('componentName') : 'Blog';

            //modifiy stepname V5 $aStepName['step']['step_name'] = 'key lang step name';
            //$aStepName['0']['Home'] = 'Home';
            $aStepName['1']['Diy'] = 'STEP1: Template';
            $aStepName['1']['Template'] = 'STEP1: Template';
            $aStepName['1']['upload_template'] = 'STEP1: Template';
            $aStepName['1']['Export Template'] = 'STEP1: Template';
            $aStepName['2']['AdjustStyle'] = 'STEP2: Adjust Style';
            $aStepName['3']['photo_album'] = 'Photo Album';
            $aStepName['3']['guest_book'] = 'Guest Book';
            $aStepName['3']['ComponentAndUserFramework'] = 'ComponentAndUserFramework';
            $aStepName['3']['Blog'] = 'Blog';
            $aStepName['3']['Newsletter'] = 'Newsletter';
            $aStepName['3']['Faq'] = 'Faq';
            $aStepName['3']['extras_pagetitle'] = 'STEP3: Content';
            $aStepName['3']['extras_metatag'] = 'STEP3: Content';
            $aStepName['3']['extras_pageeffect'] = 'STEP3: Content';
            $aStepName['3']['extras_filename'] = 'STEP3: Content';
            $aStepName['3']['wysiwyg'] = 'WYSIWYG';
            $aStepName['3']['Content'] = 'STEP3: Content';
            $aStepName['3']['Database Configuration'] = 'STEP3: Content';
            $aStepName['3']['Create Tryout'] = 'Create Tryout';
            $aStepName['3']['User Configuration'] = 'STEP3: Content';
            $aStepName['3']['System Configuration'] = 'STEP3: Content';
            $aStepName['3']['User'] = 'User';

            return RvsLibs_String::translate($aStepName[$step][$mode]);
        }

        /**
         * Generates a yes/no radio pair.
         *
         * @access  public
         * @param   string   $radioName  name of radio element
         * @param   boolean  $checked    is checked
         * @param   string   $noDisplay  display no word
         * @param   string   $yesDisplay  display yes word
         * @param   boolean  $returnType  0 = string html 1 = array html
         * @return  string   html        yes/no radio pair
         */
        function generateRadioPair($radioName, $checked, $noDisplay = 'no', $yesDisplay = 'yes', $returnType = '0')
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);
            if ($returnType) {
                $radioString = array();
            } else {
                $radioString = '';
            }
            if ($checked) {
                $yesChecked = ' checked';
                $noChecked = '';
            } else {
                $yesChecked = '';
                $noChecked = ' checked';
            }
            if ($returnType) {
                $radioString[0] = "<label for='$radioName" . "_label1'><input type='radio' id='$radioName" . "_label1' name='$radioName' value='0' $noChecked >" . SGL_String::translate($noDisplay) . "</label>";
                $radioString[1] = "<label for='$radioName" . "_label2'><input type='radio' id='$radioName" . "_label2' name='$radioName' value='1' $yesChecked >" . SGL_String::translate($yesDisplay) . "</label>";
            } else {
                $radioString .= "<label for='$radioName" . "_label1'><input type='radio' id='$radioName" . "_label1' name='$radioName' value='0' $noChecked >" . SGL_String::translate($noDisplay) . "</label>";
                $radioString .= "<label for='$radioName" . "_label2'><input type='radio' id='$radioName" . "_label2' name='$radioName' value='1' $yesChecked >" . SGL_String::translate($yesDisplay) . "</label>";
            }
            return $radioString;
        }


        function defaultRadioNavigatorName($navIdDefault, $navId)
        {
        	SGL::logMessage(null, PEAR_LOG_DEBUG);
        	if ($navIdDefault == $navId) {
        		return 'checked';
        	} else {
        		return '';
        	}

        }

        public static function generateSelectedValues($aValues, $selected = null, $multiple = false, $options = null)
        {
            SGL::logMessage(null, PEAR_LOG_DEBUG);

            if (!is_array($aValues) || (isset($options) && !is_array($options))) {
               SGL::raiseError('Incorrect param passed to ' . __CLASS__ . '::' . __FUNCTION__, SGL_ERROR_INVALIDARGS);
            }
            if (is_numeric($selected)) {
                $selected = (int) $selected;
            }
            $optionsString = '';
            if (isset($options)) {
                foreach ($options as $k => $v) {
                    $optionsString .= ' ' . $v . '="' . $v . '"';
                }
            }
            $r = '';
            if ($multiple && is_array($selected)) {
                foreach ($aValues as $k => $v) {
                    $isSelected = in_array($v, $selected) ? ' selected="selected"' : '';
                    $r .= "\n<option value=\"$v\"" . $isSelected . $optionsString . ">$v</option>";
                }
            } else {
                //  ensure $selected is not the default null arg, allowing
                //  zeros to be selected array elements
                $r = '';
                foreach ($aValues as $k => $v) {
                    $isSelected = ($v === $selected && !is_null($selected)) ? ' selected="selected"' : '';
                    $r .= "\n<option value=\"$v\"" . $isSelected . $optionsString . ">$v</option>";
                }
            }
            return $r;
        }

        function getLogoBrand()
        {
            $oSglMgr = SGL_Manager::singleton();
            if (isset($oSglMgr->conf['Admin']['Owner']['enableLogoBrand']) && $oSglMgr->conf['Admin']['Owner']['enableLogoBrand'] != 1) {
                return "";
            }
            $ownerLogoPath = $oSglMgr->conf['Admin']['Owner']['logo-path'];
            $ownerLogoURL = $oSglMgr->conf['Admin']['Owner']['logo-url'];

            $logoFileName = RvsLibs_String::trim($oSglMgr->conf['Admin']['Owner']['LogoBrand']);
            $pathOwner = realPath(RvsLibs_File::buildPath(array($ownerLogoPath, $logoFileName)));
            if (is_file($pathOwner)) {
                $code = '<img src="' . $ownerLogoURL . "/" . $logoFileName . '" alt="" style="height:30px;" />';
            } else {
                $code = '<img src="' . PUBLIC_IMG_URL . "/" . $logoFileName . '" alt="" style="height:30px;" />';
            }
            if (RVS_OWNER_USER_NAME != "admin" && !$oSglMgr->conf['Admin']['Owner']['LogoBrand'] ) {
                $code = SitebuilderOutput::getLogoBrandDefaultReseller();
            }
            return $code;
        }

        function getLogoBrandDefaultReseller()
        {
            $oSglMgr = SGL_Manager::singleton();
            if (isset($oSglMgr->conf['Admin']['DefaultReseller']['enableLogoBrand']) && $oSglMgr->conf['Admin']['DefaultReseller']['enableLogoBrand'] != 1) {
                return "";
            }
            $resellerLogoPath = $oSglMgr->conf['Admin']['DefaultReseller']['logo-path'];
            $resellerLogoURL = $oSglMgr->conf['Admin']['DefaultReseller']['logo-url'];

            $logoFileName = RvsLibs_String::trim($oSglMgr->conf['Admin']['DefaultReseller']['LogoBrand']);
            $pathReseller = realPath(RvsLibs_File::buildPath(array($resellerLogoPath, $logoFileName)));
            if (is_file($pathReseller)) {
                $code = '<img src="' . $resellerLogoURL . "/" . $logoFileName . '" alt="" style="height:30px;" />';
            } else {
                $code = '<img src="' . PUBLIC_IMG_URL . "/" . $logoFileName . '" alt="" style="height:30px;" />';
            }

            return $code;
        }

        function getTextBrand()
        {
            $oSglMgr = SGL_Manager::singleton();
            $this->conf = $oSglMgr->conf;
            $text = $this->conf['Admin']['Owner']['TextBrand'];
            if ( RVS_OWNER_USER_NAME != RVS_ROOT_USER_NAME && !$this->conf['Admin']['Owner']['TextBrand']) {
                $text = $this->conf['Admin']['DefaultReseller']['TextBrand'];
            }
            return $text;
        }

        function charsetInfo($info)
        {
            $charset = $_SESSION['aPrefs']['language'];
            $aDoubleByte = array("shift_jis", "euc-kr", "ucs-2", "zh-big5", "zh-gb2312" );
            $charsetInfo['charset'] = $charset;
            $charsetInfo['doble-byte'] = (in_array($charset, $aDoubleByte)) ? true: false;
            return $charsetInfo[$info];

        }

        function jsOparator($opt = '')
        {
            switch (RvsLibs_String::strtolower($opt)) {
                case 'and':
                    echo '&&';
                    break;
                case 'or':
                    echo '||';
                case '{':
                    echo '{';
                    break;
                case '}':
                    echo '}';
                    break;
                default:
                    break;
            }
        }

        function openimagelibrary($name)
        {
        	SGL::logMessage(null, PEAR_LOG_DEBUG);
            /* use open File browser wysiwyg anywhere
             1 call {this.plugin(#openimagelibrary#,#openBrowser#):h}
             2 modelibrary = now wysiwyg have 4 library 'image' , 'document' , 'media' , 'link'
             2 call function openBrowser.openImageLibrary('modelibrary','parent.replaceImageDiyBanner(url)') return url
             */
            return '<iframe name="' . $name . '" src="' .  SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/Wysiwyg/action/viewLibrary/" style="visibility:hidden;width:0px;height:0px; border:0;"></iframe>';
        }

        function getSitebuilderFooter()
        {
            // optimize :nipaporn
            return '<!-- RVSiteBuilder ' . RvsLibs_String::strtoupper(RvsLibs_License::getSitebuilderLicense()) . ' Version ' . RvsLibs_String::trim(RvsLibs_License::getSitebuilderVersion()) . ' -->';
        }

        function getMoveDefault($aDefault, $layerId, $position)
        {
        	return (isset($aDefault['Layer'. $layerId][$position]) && $aDefault['Layer'. $layerId][$position])
        	       ? $aDefault['Layer'. $layerId][$position] : 0 ;
        }


        function getPriorityDefault($priority, $p, $layeryId=null)
        {
        	if ($layeryId == null) {
        		//case LOGO Company slogan
        		return (isset($priority) && $priority)? $priority : $p ;
        	} else {
        		//case custom
               return (isset($priority['Layer'. $layeryId]['priority']) && $priority['Layer'. $layeryId]['priority'])
                        ? $priority['Layer'. $layeryId]['priority'] : '0';
        	}

        }

        function getNavigatorTypeName($aNavType,$key)
        {
        	return (isset($aNavType[$key]) && $aNavType[$key]) ? $aNavType[$key] : '';
        }

        function getRVSLicense()
        {
        	$license = RvsLibs_String::strtoupper(RvsLibs_License::getSitebuilderLicense());
        	if (RvsLibs_String::strtolower($license) === 'unknown') {
        		$license = RvsLibs_String::ucfirst(RvsLibs_String::strtolower($license));
        	}
        	return $license;
        }

        function isLicensePro()
        {
        	return (RvsLibs_License::isLicensePro()) ? true : false;
        }

        function getRVSVersion()
        {
            // Output Version
            $version = RvsLibs_String::trim(RvsLibs_License::getSitebuilderVersion());
            if ($version === 'unknown') {
                $version = RvsLibs_String::ucfirst(RvsLibs_String::strtolower($version));
            }
            $version = ' ' . $version;
            return $version;
        }

        /**
         * drag mouse at footer to see
         *
         * @return unknown
         */
        function getRVSProjectId()
        {
            //font color refer style.php class .footerversion
            $projectId = SGL_Session::get('rvs_project_id');
            $phpVersion = ' PHP: ' . @phpversion();
            $text = RvsLibs_String::sprintf('<font color="#3b3e45"> PROJECT ID: %s %s %s</font>', $projectId, $phpVersion);
            return ($projectId) ? $text : '';
        }

        /**
         * isQuotaUser
         * @param int $quota = Quota  percent  EX want validat this quota more than 90% show error
         * @return string javascript
         */
        function isQuotaUser($quota)
        {
            $pathCp = RvsLibs_Util::getPathQuotaUser();
            $code = <<< EOF
<script type="text/javascript">
//<![CDATA[
jQuery.sitebuilder.sitebuilder.getQuotaUser('%s','rvDisplayError','%s' ,'%s');
//]]>
</script>
EOF;
            $text = RvsLibs_String::jsAddSlashes(RvsLibs_String::translate('your space not enough'));
            return ($pathCp != '')
                    ? RvsLibs_String::sprintf($code, $pathCp, $text, $quota)
                    : '';
        }

        /**
         * check for print  </tr>
         *
         * /// comment /////////////////////////////////////////////////////////
         * Is be  relations function  isCountTd
         * /// comment /////////////////////////////////////////////////////////
         * /// siwakorn //////////////////////////////////////////////////////////
         *
         * @param <number> $column
         * @param <array> $all
         * @param <string>  $modCheck ------------- td / colspan
         * @return true / false
         */
        function isCountTd($column = 3,$all)
        {
            if ($GLOBALS['_SGL']['RVS']['countTd']['countTd'] == '') {
                $GLOBALS['_SGL']['RVS']['countTd']['countTd'] = 1;
            }
            $countTd = $GLOBALS['_SGL']['RVS']['countTd']['countTd']++;
            if ($column == $countTd) {
                $GLOBALS['_SGL']['RVS']['countTd']['countTd'] = 1;
                $GLOBALS['_SGL']['RVS']['countTd']['countAll'] = 0;
                return true;
            } else {
                $GLOBALS['_SGL']['RVS']['countTd']['countAll']++;
                return false;
            }
        }

        function countProject($aProject)
        {
            // optimize :nipaporn
			return (count($aProject)) ?  true : false;
        }

        /**
         * Check colspan and return num colspan or set default data globals
         *
         * /// comment //////////////////////////////////////////////////////
         * Is be  relations function  isCountTd
         * require function isCountTd for set count globals data
         * /// comment //////////////////////////////////////////////////////
         * /// siwakorn ///////////////////////////////////////////////////////
         *
         * @global <array> $GLOBALS[_SGL][RVS][countTd]
         * @param <number> $column
         * @param <string> $mode : unset / false
         * @return false / $colspan number
         */
        function isCheckColspan($column = 3, $mode = false)
        {
            $colspan = $GLOBALS['_SGL']['RVS']['countTd']['colspan'];
            $countAll = $GLOBALS['_SGL']['RVS']['countTd']['countAll'];

            if ($countAll != 0) {
                $colspan = $column - $countAll;
            } else {
                $GLOBALS['_SGL']['RVS']['countTd']['colspan'] = '';
            }
            if ($mode == 'unset') {
                $GLOBALS['_SGL']['RVS']['countTd']['colspan'] = '';
                $GLOBALS['_SGL']['RVS']['countTd']['countTd'] = '';
                $GLOBALS['_SGL']['RVS']['countTd']['countAll'] = '';
                return false;
            } else {
                return $colspan;
            }
        }

        function isUserEnableLog()
        {
             return (defined('RVS_VIEW_LOG_FLAG') && is_file(RVS_VIEW_LOG_FLAG))
                    ? true
                    : false;
        }

        // ===== logmessage Last line 1500 =======
        function getUserLogMessage()
        {
            $filename = (self::isUserEnableLog() === true)
        	              ? RVS_USER_HOME . '/.rvsitebuilder/' . SGL_Config::get('log.name')
        	              : SGL_LOG_DIR . '/php_log.txt';
            $line = (is_file($filename))
                        ? RvsLibs_File::file($filename)
                        : '';
            if ($line == '' || SGL::isError($line) === true) {
               return '';
            }
            $logmess = '';
            $numST = sizeof($line) - 1500;
            //optimize:pharadol
            for ($j = $numST, $max = sizeof($line); $j < $max; $j++) {
                $logmess .= $line[$j];
            }
            return $logmess;
        }

        /**
         * for debug nocp
         * @return unknown_type
         */
        function getReportSql()
        {
            if (defined('RVS_VIEW_LOG_FLAG') && is_file(RVS_VIEW_LOG_FLAG)
            && RvsLibs_Util::validateTrue(SGL_Config::get('debug.production')) === false
            && RvsLibs_Util::validateTrue(SGL_Output::isDirectAdminMode()) === false) {
            	echo "<b>log enable = " . SGL_Config::get('log.enabled') . "</b>";
            	echo "<br><b>debug production = " . SGL_Config::get('debug.production') . "</b>";
        		// report 1.
                echo '<pre>Execution Time ' . SGL_Output::getExecutionTime() . " milliseconds \n"
                    . SGL_Output::getMemoryUsage() . ' memory usage</pre>';

        		echo "<pre><h2>ตามลำดับ:</h2>" . "\n";
        		print_r($GLOBALS['all_the_queries']);
        		echo '</pre>';

        		// report 2.
        		echo "<pre><h2>ตามเวลาจาก มาก ไป น้อย</h2>" . "\n";
                arsort($GLOBALS['all_the_queries']);
        		print_r($GLOBALS['all_the_queries']);
        		echo '</pre>';

        		// report 3.
        		$sum = 0;
        		foreach ($GLOBALS['all_the_queries'] AS $t) {
        			$sum += $t;
        		}
        		echo '<pre>';
        		echo 'Total number of queries:   ' . $GLOBALS['global_query_counter'] . "\n";
        		echo 'Total time spend querying: ' . $sum;
        		echo '</pre>';

        		// report 4.
        		$distinct = array();
        		foreach ($GLOBALS['all_the_queries'] AS $q => $t) {
        			$parts = explode(' - ', $q);
        			unset($parts[0]);
        			$sql = implode(' - ', $parts);
        			@$distinct[$sql]++;
        		}
        		echo "<pre>How many duplications:" . "\n";
        		arsort($distinct);
        		print_r($distinct);
        		echo '</pre>';
            }
        }

        function countArray($aData)
        {
            return count($aData);
        }

        function CustomMetatag($aCustomMatatagProjectPage, $projectPageId)
        {
            return (isset($aCustomMatatagProjectPage[$projectPageId]))
                    ? true
                    : false;
        }

        function chkMetaTypeAndMetaName($metaTypeInfo,$metaNameInfo,$aMetaPage)
        {
        	foreach($aMetaPage as $k=>$v){
				if (($v->metatag_type == $metaTypeInfo) && ($v->metatag_name==$metaNameInfo)) return false;
        	}
        	return true;
        }

        function generateEnableViewLogOption($name)
        {
            $isEnable = (defined('RVS_VIEW_LOG_FLAG') && is_file(RVS_VIEW_LOG_FLAG)) ? true : false;
            return SGL_Output::generateRadioPair($name, $isEnable);
        }

        function generatePriorityViewlogSelect()
        {
            $aLogLevels = array();
            require_once SGL_DAT_DIR . '/ary.logLevels.php';
            return SGL_Output::generateSelect($aLogLevels, SGL_Config::get('log.priority'));
        }

        function checkStatusUserName($username)
        {
        	$oCp = CpHandle::factory();
        	if(SGL::isError($oCp) === true) {
        		SGL_Error::pop();
        		return false;
        	}
        	// optimize :nipaporn
        	return (isset($username) && $oCp->isAdmin($username))
		        	? true
		        	: false;
        }

        function changProductId($productId)
        {
            $a = RvsLibs_String::dbeExplode('-',$productId);
            if (isset($a[0]) && RvsLibs_String::strlen($a[0]) == 32) {
                $a1 = RvsLibs_String::translate('custom_id');
            } else {
                $a1 = $a[0];
            }
            $final = $a1 . '-' . $a[1];
            return  $final;
        }

        function checkUserName($customCategoryUser, $userId, $customCategoryName)
        {
            // optimize :nipaporn
            return ($customCategoryUser == $userId)
                   ? $customCategoryName
                   : '';
        }

        function isSpecialCharater($str)
        {
            // optimize :nipaporn
        	return (@RvsLibs_String::preg_match('/(\/|\\\|[?&%#~:\^\<\>\[\]()\*\+\@\"\'\`\,\|!;{}$]+)/i', $str))
        		   ? true
        		   : false;
        }

        function trTemplate($template)
        {
        	if ($template == 'email_registration_activation' || $template == 'email_forgot' || $template == 'email_registration_admin'
        		|| $template == 'login' || $template == 'authPage' || $template == 'prefUserEdit') {

        		return '<tr>';
        	}
        	return '<tr>';
        }

        function isComponantAndUserFramework($component)
        {
        	// optimize :nipaporn
            return ($component == 'ComponentAndUserFramework')
        		   ? true
        		   : false;
        }

        function getPageType($pageType)
        {
            // optimize :nipaporn
			return ($pageType == 'Trydemoonline')
                ? true
            	: false;
        }

        function setDiySprite($start, $dest, $style)
        {
        	$sprite = '';
        	$styleSprite = '';
        	$subFileConf = '';
        	$property = '';
        	$previewAs = '';
        	$class = '';
        	$attrTagId = '';
        	$attrTagIdBack = '';
        	$attrType = '';
        	$startIntSubFileConf = 0;

        	if ($style == 'navigator') {
        		$styleSprite = 'Sprite_navcolor_diy navcolor_diy';
        		$property = '';
        		$previewAs = 'navigator';
        		$subFileConf = 'navcolor';
        		$class = 'diy-navigator-sprite';
        		$attrTagId = 'id_navigator_diy_';
        		$attrTagIdBack = 'id_navigator_diy_';
                $attrType = 'navColor';
        	} if ($style == 'navigatorCase1') {
                $styleSprite = 'Sprite_navcolor_diy navcolor_diy';
                $property = '';
                $previewAs = 'navigator';
                $subFileConf = 'navcolor';
                $class = 'diy-navigator-sprite';
                $attrTagId = 'id_navigator_diy_';
                $attrTagIdBack = 'id_navigator_diy_';
                $attrType = 'navColor';

                $startIntSubFileConf = 436;
            } if ($style == 'navigatorCase2') {
                $styleSprite = 'Sprite_navcolor_diy navcolor_diy';
                $property = '';
                $previewAs = 'navigator';
                $subFileConf = 'navcolor';
                $class = 'diy-navigator-sprite';
                $attrTagId = 'id_navigator_diy_';
                $attrTagIdBack = 'id_navigator_diy_';
                $attrType = 'navColor';
                $startIntSubFileConf = -1;
            } elseif ($style == 'navigatorStyle') {
        		$styleSprite = 'Sprite_navcolor_diy navcolor_diy';
                $property = '';
                $previewAs = 'navigator';
                $subFileConf = 'navgradient';
                $class = 'diy-navigator-style-sprite';
                $attrTagId = 'id_navigator_style_diy_';
                $attrTagIdBack = 'id_navigator_style_diy_';
                $attrType = 'navStyle';
                $startIntSubFileConf = -207;
        	} else if ($style == 'navigatorStyleCase1') {
                $styleSprite = 'Sprite_navcolor_diy navcolor_diy';
                $property = '';
                $previewAs = 'navigator';
                $subFileConf = 'navgradient';
                $class = 'diy-navigator-style-sprite';
                $attrTagId = 'id_navigator_style_diy_';
                $attrTagIdBack = 'id_navigator_style_diy_';
                //$attrType = 'navStyle';
                $attrType = 'navImage';
                $startIntSubFileConf = -207;
            } else if ($style == 'navigatorStyleCase2') {
        	    $styleSprite = 'Sprite_navcolor_diy navcolor_diy';
                $property = '';
                $previewAs = 'navigator';
                $subFileConf = 'navgradient';
                $class = 'diy-navigator-style-sprite';
                $attrTagId = 'id_navigator_style_diy_';
                $attrTagIdBack = 'id_navigator_style_diy_';
                //$attrType = 'navStyle';
                $attrType = 'navImage';
                $startIntSubFileConf = -227;
        	} elseif ($style == 'websitebg') {
        		$styleSprite = 'Sprite_bg_diy_wb bg_wb_diy';
        		$property = '';
        		$previewAs = 'websitebg';
        		$subFileConf = 'bgColor';
        		$class = 'diy-websitebg-sprite';
        		$attrTagId = 'id_bg_wb_diy_';
        		$attrTagIdBack = 'id_bg_wb_diy_';
                $attrType = 'bgColor';
                $startIntSubFileConf = 110;
        	} elseif ($style == 'websitebgimggra') {
                $styleSprite = 'Sprite_gd_background gd_background_diy';
                $property = '';
                $previewAs = 'websitebg';
                $subFileConf = 'bgGDImages';
                $class = 'diy-websitebgimg-gradient-sprite';
                $attrTagId = 'id_websitebgimage_gradient_diy_';
                $attrTagIdBack = 'id_websitebgimage_gradient_diy_';
                $attrType = 'bgGradient';
            } elseif ($style == 'websitebgimg') {
                $styleSprite = 'Sprite_gd_background gd_background_diy';
                $property = '';
                $previewAs = 'websitebg';
                $subFileConf = 'bgImages';
                $class = 'diy-websitebgimg-sprite';
                $attrTagId = 'id_websitebgimage_diy_';
                $attrTagIdBack = 'id_websitebgimage_diy_';
                $attrType = 'bgImg';
                $startIntSubFileConf = -40;
            }/*else if ($style == 'websitebgimg') {
        		$styleSprite = 'Sprite_gd_background gd_background_diy';
        		$property = '';
        		$previewAs = 'websitebg';
        		$subFileConf = 'bgImages';
        		$class = 'diy-websitebgimg-sprite';
        		$attrTagId = 'id_websitebgimage_diy_';
        		$attrTagIdBack = 'id_websitebgimage_diy_';
                $attrType = 'bgImg';
        	} else if ($style == 'websitebgimggra') {
                $styleSprite = 'Sprite_gd_background gd_background_diy';
                $property = '';
                $previewAs = 'websitebg';
                $subFileConf = 'bgGDImages';
                $class = 'diy-websitebgimg-gradient-sprite';
                $attrTagId = 'id_websitebgimage_gradient_diy_';
                $attrTagIdBack = 'id_websitebgimage_gradient_diy_';
                $attrType = 'bgGradient';

                $startIntSubFileConf = -49;
            }*/ elseif ($style == 'headercolor') {
        		$styleSprite = 'SpriteDiy_header_color header_color_diy';
        		$property = '';
        		$previewAs = 'header';
        		$subFileConf = 'header';
        		$class = 'diy-headercolor-sprite';
        		$attrTagId = 'id_header_body_diy_';
        		$attrTagIdBack = 'id_header_body_diy_';
        		$attrType = 'hdColor';
        	} elseif ($style == 'headercolorCase1') {
                $styleSprite = 'SpriteDiy_header_color header_color_diy';
                $property = '';
                $previewAs = 'header';
                $subFileConf = 'header';
                $class = 'diy-headercolor-sprite';
                $attrTagId = 'id_header_body_diy_';
                $attrTagIdBack = 'id_header_body_diy_';
                $attrType = 'hdColor';
                $startIntSubFileConf = 436;
            } elseif ($style == 'headercolorCase2') {
                $styleSprite = 'SpriteDiy_header_color header_color_diy';
                $property = '';
                $previewAs = 'header';
                $subFileConf = 'header';
                $class = 'diy-headercolor-sprite';
                $attrTagId = 'id_header_body_diy_';
                $attrTagIdBack = 'id_header_body_diy_';
                $attrType = 'hdColor';
                $startIntSubFileConf = -1;
            } elseif ($style == 'headergradient') {
        		$styleSprite = 'SpriteDiyBgImage header_gradient_diy';
        		$property = '';
        		$previewAs = 'header';
        		$subFileConf = 'headerGradient';
        		$class = 'diy-headergradient-sprite';
        		$attrTagId = 'id_header_gradient_diy_';
        		$attrTagIdBack = 'id_header_gradient_diy_';
        		$attrType = 'hdImg';
        	}  elseif ($style == 'bodycolorCase1') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 190;
            } elseif ($style == 'bodycolorCase2') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 148;
            } elseif ($style == 'bodycolorCase3') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 106;
            } elseif ($style == 'bodycolorCase4') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 106;
            } elseif ($style == 'bodycolorCase5') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 134;
            } elseif ($style == 'bodycolorCase6') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 134;
            } elseif ($style == 'bodycolorCase7') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 96;
            } elseif ($style == 'bodycolorCase8') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 71;
            } elseif ($style == 'bodycolorCase9') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 71;
            } elseif ($style == 'bodycolorCase10') {
                $styleSprite = 'SpriteDiyBodyColor body_color_diy';
                $property = '';
                $previewAs = 'bodycolor';
                $subFileConf = 'bodyColor';
                $class = 'diy-bodycolor-sprite';
                $attrTagId = 'id_body_color_diy_';
                $attrTagIdBack = 'id_body_color_diy_';
                $attrType = 'bodyColor';
                $startIntSubFileConf = 79;
            }

        	for ($i = $start; $i <= $dest; $i++) {
	      	    if ($i < 10) {
	      	    	   $sprite .= '<div class="' . $class . '"
                                           id="' . $attrTagId . '0' . $i . '"
                                           attrTagId="' . $attrTagId . '0'. $i . '"
                                           attrDiyNo="' . $i . '"
                                           attrType="' . $attrType . '"
                                           attrSubFileConf="' . $subFileConf . ($i + $startIntSubFileConf) . '.ini.php' . '"
                                           attrProperty="' . $property . '"
                                           attrPreViewAs="' . $previewAs . '">

                                           <a href="javascript:void(0);">
                                                <span class="' . $styleSprite . '_0' . $i . '" ></span>
                                           </a>
                                   </div>';
	      	    } else {
	      	    	   $attrTagId = (($i + $startIntSubFileConf) < 10) ? $attrTagIdBack . '0' : $attrTagIdBack;

	      	    	   $sprite .= '<div class="' . $class . '"
                                           id="' . $attrTagId . ($i + $startIntSubFileConf) . '"
                                           attrTagId="' . $attrTagId . ($i + $startIntSubFileConf) . '"
                                           attrDiyNo="' . ($i + $startIntSubFileConf) . '"
                                           attrType="' . $attrType . '"
                                           attrSubFileConf="' . $subFileConf . ($i + $startIntSubFileConf) . '.ini.php' . '"
                                           attrProperty="' . $property . '"
                                           attrPreViewAs="' . $previewAs . '">

                                           <a href="javascript:void(0);">
                                                <span class="' . $styleSprite . '_' . $i . '" ></span>
                                           </a>
                                    </div>';
	      	    }
        	}
        	return $sprite;
        }

       function isopenLi($number = 25)
        {
           if ($GLOBALS['_SGL']['RVS']['open']['li'] == '') {
                $GLOBALS['_SGL']['RVS']['open']['li'] = 1;
            }
            $countTd = $GLOBALS['_SGL']['RVS']['open']['li']++;
            if ($countTd == 1) {
                return true;
            }
            if ($number == $countTd) {
                $GLOBALS['_SGL']['RVS']['open']['li'] = 1;
            }
        }

        function iscloseLi($number = 25)
        {

            if ($GLOBALS['_SGL']['RVS']['close']['li'] == '') {
                $GLOBALS['_SGL']['RVS']['close']['li'] = 1;
            }
            $countTd = $GLOBALS['_SGL']['RVS']['close']['li']++;

            if ($number == $countTd) {
                $GLOBALS['_SGL']['RVS']['close']['li'] = 1;
                return true;
            }
        }

        function isdivopen($number = 25)
        {
            if ($GLOBALS['_SGL']['RVS']['div']['div'] == '') {
                $GLOBALS['_SGL']['RVS']['div']['div'] = 1;
            }
            $countTd = $GLOBALS['_SGL']['RVS']['div']['div']++;
            if ($countTd == 1) {
                return true;
            }
            if ($number == $countTd) {
                $GLOBALS['_SGL']['RVS']['div']['div'] = 1;
            }
        }

        function isdivClose($number = 25)
        {

            if ($GLOBALS['_SGL']['RVS']['divClose']['divClose'] == '') {
                $GLOBALS['_SGL']['RVS']['divClose']['divClose'] = 1;
            }
            $countTd = $GLOBALS['_SGL']['RVS']['divClose']['divClose']++;
            if ($number == $countTd) {
                $GLOBALS['_SGL']['RVS']['divClose']['divClose'] = 1;
                return true;
            }
        }
    /**
     * ถ้ามี form มากกว่า 1 ให้มีจำนวนเลขต่อท้าย
     * @param $design
     * @param $aData
     * @return unknown_type
     */
    function listFormOnline($design,$aData)
    {
    $listData =  '';
    $name = array();
    $nameFrom = array(
    'Blank Form'=>'Blank Form',
    'Contact Us'=>'Contact Us',
    'Satisfaction Survey'=>'Satisfaction Survey',
    'Job Application'=>'Job Application',
    'Suggest Website'=>'Suggest Website',
    'Membership Registration'=>'Membership Registration',
    'Party RSVP'=>'Party RSVP',
    'Wedding Attendance'=>'Wedding Attendance',
    'Reservation'=>'Reservation',
    'Time Sheet'=>'Time Sheet',
    'Submit Product'=>'Submit Product',
    'Bug Tracker'=>'Bug Tracker',
    );

        foreach($aData as $k=>$v) {
        	$Id = str_replace('Form ', '', $v->title);
        	if (preg_match('/Form/',$v->title)) {
        	    $nameForm1 = $nameFrom[$Id];
        	} else {
        		$nameForm1 = $v->title;
        	}

            $name[$nameForm1][] = $nameForm1;
            $id = ($v->rvs_onlineform_id) ? $v->rvs_onlineform_id:$v->id;
            $pName = DaoFactory::OnlineForm()->findPageNameByPageData($id);

            $title = ($v->title && $v->title != '') ? $nameForm1 : 'Form ID ' . $id;
            $count = count($name[$nameForm1]);
            $count = ($count != 1) ? $count : '';
            $title = $title . ' ' . $count;
            $height = ($v->height)? $v->height:600;
            //ตัด form name ออก
            $page = (count($pName)) ? "In Page: " . join(',',array_keys($pName)) : '';
            $listData .= RvsLibs_String::sprintf($design, $id, $id, $height, $title) . $page;

        }
		return $listData;
    }

    function setJqueryEvent($formID, $project_page_id)
    {
    	return 'jQuery.sitebuilder.extras_Pagetitle.editPageTitle("#' . $formID . '","' . $project_page_id .'");';
    }

     function getBuyAccountUrl()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $url = false;
        $showUrl = false;
        $username = (isset($_COOKIE['tryoutUsername']))? $_COOKIE['tryoutUsername'] : null;
          /*CpHandle :: nipaporn*/
            $oCp = CpHandle::factory();
            if(SGL::isError($oCp) === true) {
            SGL_Error::pop();
            return false;
            }
        //if (CPMODE == 'tryout') {
            if ($oCp->isValidBuyAccountUrl()=== true) {
            $fileTryoutConfig = RvsLibs_File::buildPath(array(dirname(SGL_WEB_ROOT), 'tryout_config.ini.php'));

            $aConfig = (is_file($fileTryoutConfig))? RvsLibs_Config::parse_ini_file($fileTryoutConfig, true) : array();
            $aConfig['program_path'] = (isset($aConfig['program_path']))? $aConfig['program_path'] : null;
            $a = $aConfig['program_path'] . '/../.rvsPublish.ini.php';
            $b = (is_file($a))? RvsLibs_Config::parse_ini_file($a, true): array();
            $projectId = (isset($b['project_id']))? $b['project_id'] : '';

            $fileSettting = RvsLibs_File::buildPath(array($aConfig['home_user'], '.rvsitebuilder', 'projects', $projectId, 'scripts', 'Tryout', 'setting.ini.php'));

            if (is_file($fileSettting) === false) {
                 $aConfigSetting['showBuyAccount'] = true;
            } else {
                 $aConfigSetting = RvsLibs_Config::parse_ini_file($fileSettting, true);
            }

            //check billing_url
            $showUrl = (count($aConfig) && isset($aConfig['billing_url']) && $aConfig['billing_url'] !='')? true : false;
            //check ค่า config file setting.ini.php ค่า showBuyAccount
            $showUrl = (isset($aConfigSetting['showBuyAccount']) && $aConfigSetting['showBuyAccount'])? true : false;
            //ยังมีปัญหากับ tryout เก่า
             $fileSgConf = RvsLibs_File::buildPath(
                                                    array($aConfig['home_user'], '.rvsitebuilder', 'websitepublish', $projectId, 'var',$projectId. '.conf.php')
                                                    );
            if ($showUrl === true && is_file($fileSgConf)) {
                $c = SGL_Config::singleton();
                $aIpConfig = $c->load($fileSgConf);

                require_once  SGL_MOD_DIR . '/sitebuilder/classes/WebDao/ComponentAndUserFrameworkDao.php';
                require_once  SGL_MOD_DIR . '/sitebuilder/classes/DaoWebFactory.php';
                //connect db seagull
                //หา database seagull ที่ /public_html/.rvsitebuilder/websitepublish/653d395b4cecbadfd13541f59888ec5b/var/{preojectId}.conf.php
               $dbh = &ComponentAndUserFrameworkDao::_getDb($fileSgConf);
               $aUserData = DaoWebFactory::ComponentUserFramework()->findAllUserDataByUserName($username, $aIpConfig['table']['user'], $fileSgConf);
               $url = $this->billingUrlTryoutByAccount($fileTryoutConfig, $aUserData);
               $url = ($aUserData['usr_id'] == '999999999')? false : $url;
            }
        }
        return $url;
    }

    function billingUrlTryoutByAccount($fileTryoutConfig, $aUserInfo)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $billingUrl = false;
        $aMapField = array('billing_username' => 'username' ,
                                        'billing_firstname' => 'first_name' ,
                                        'billing_lastname' => 'last_name' ,
                                        'billing_address1' => 'addr_1' ,
                                        'billing_address2' => 'addr_2' ,
                                        'billing_address3' => 'addr_3' ,
                                        'billing_city' => 'city' ,
                                        'billing_country_state_province' => 'region' ,
                                        'billing_zipcode' => 'post_code' ,
                                        'billing_country' => 'country' ,
                                        'billing_contact' => 'email' ,
                                        'billing_telephone' => 'telephone' ,
                                        'billing_mobile' => 'mobile' ,
        );
        $aCountries = SGL::loadRegionList('countries');

        $aStates = SGL::loadRegionList('states');

        $aUserInfo['country'] = (isset($aUserInfo['country']) && isset($aCountries[$aUserInfo['country']]))
                                ? $aCountries[$aUserInfo['country']] : '';
        $aUserInfo['region'] = (isset($aUserInfo['region']) && isset($aStates[$aUserInfo['region']]))
                                ? $aStates[$aUserInfo['region']] : '';
        $aTryoutConfig = parse_ini_file($fileTryoutConfig, true);

        // Generate Billing Url
        if (!empty($aTryoutConfig['billing_url'])) {
            $billingUrl = $aTryoutConfig['billing_url'];
            $getData = '';

            // generate $getData
            foreach ($aTryoutConfig as $key=>$value) {
                preg_match('/billing_/', $key, $matches, PREG_OFFSET_CAPTURE);
                $infoKey = (isset($aMapField[$key])) ? $aMapField[$key] : false;
                if ($infoKey) {
                    // invalid, because $aUserInfo[0]->$infoKey becomes $aUserInfo[0]->""
                    $info = (isset($aUserInfo[$infoKey])) ? $aUserInfo[$infoKey] : false;
                }
                if (isset($aTryoutConfig['field_' . $key]) && $aTryoutConfig['field_' . $key] == true && $aTryoutConfig[$key] != '' && $info != '') {
                    if ($getData != '') {
                        $getData .= '&';
                    }
                    $getData .= $aTryoutConfig[$key] . '=' . $info;
                }
            }

            // return $billingUrl + $getData
            if ($getData != '') {
                $billingUrl = $billingUrl . '?' . $getData;
            } else {
                // remove end '/' (slash)
                if (preg_match("/\/$/", $billingUrl, $match)) {
                    $billingUrl = substr($billingUrl , 0 , (strlen($billingUrl) - 1));
                }
            }
        }
        return $billingUrl;
    }


    //nocp = /user/login/action/backToTryout/
    //tryout =/backToTryout
    //cpanel = /user/login/action/backToTryout/
    function getUrlBackToTryout()
    {
        /*if (CPMODE == 'tryout') {
            // optimize :nipaporn
            return (CPMODE == 'cpanel')
                    ? '/backToTryout'
                    : '/user/login/action/backToTryout/';
        } else {
            return false;
        }*/
        /*
         * CpHandle function getLogoutUrl:: nipaporn
         * */
    	$oCp = CpHandle::factory();
    	if (SGL::isError($oCp) === true) {
    		SGL_Error::pop();
    		return false;
    	}
    	if (SGL_Output::isADmin() === false && $oCp->isTryout() === true) {
    		return $oCp->getUrlBackToTryout();
    	}
    }

    function showUserMenu($aGroupComponent)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $str ='';
        include_once SGL_LIB_PEAR_DIR . '/HTML/Template/Flexy.php';
		$fileFlexy = 'showUserMenu.html';
		$output->flexyHandle = new HTML_Template_Flexy();
		$output->flexyHandle->compile($fileFlexy);

		foreach($aGroupComponent as $key => $value) {
		    $output->component_name = $value['component_name'];
		    $output->component_id = $value['component_id'];
		    $output->displayMenuName = $value['menu_name'];
		    $output->menu = $value['menu'];
		    $output->pageData = $value['pageData'];
		    $str .= $output->flexyHandle->bufferedOutputObject($output);
		}
         return $str;
    }

    function makeTreeView($aAlbumData, $galleryId, $albumId=null, $parentPath='')
    {
        SGL::logMessage('makeTreeView==1', PEAR_LOG_DEBUG);
        include_once SGL_LIB_PEAR_DIR . '/HTML/Template/Flexy.php';
		$fileFlexy = 'treeView.html';
		$output = new SGL_Output();
		$output->flexyHandle = new HTML_Template_Flexy();
		$output->flexyHandle->compile($fileFlexy);
        $output->galleryId = $galleryId;
        $output->albumId = $albumId;
		$codeHtml ='';
		$this->_makeTree($output, $codeHtml, $aAlbumData, $parentPath);
		return $codeHtml;
    }

    function _makeTree($output, &$codeHtml, $aAlbumData, &$parentPath, $folderId=null, $parentId=null)
    {
        SGL::logMessage('makeTreeView==4', PEAR_LOG_DEBUG);
        $i = 1;
        $maxOrder = count(array_keys($aAlbumData));
        foreach ($aAlbumData as $key => $val) {
            if (isset($val['folder-name'])) {
                if (RvsLibs_String::preg_match('/album_/', $key)) {
                    $output->albumId = $key;
                }
                $output->isNotAlbumFolder = ($key == $output->albumId) ? false : true;
                $output->folderName = $val['folder-name'];
                $output->folderId = $key;
                $output->totalImage = $val['total-img'];
                $output->folderDesc = $val['folder-desc'];
                $output->haveImage = ($val['total-img'] > 0) ? true : false;
                $output->parentPath = $parentPath;
                $output->maxOrder = $maxOrder;
                $output->order = $i;//(array_search($key, $val['order'])) +1;
                $output->disableMoveUpButton = $output->order == 1
                    ? 'true'
                    : 'false';
                $output->disableMoveDownButton = ($output->order == $output->maxOrder)? 'true':'false';
                $output->parentId = $parentId;
                $output->images = RvsLibs_String::translate('images');
                $folderName = $output->isNotAlbumFolder ? $val['folder-name'] : $key;
                $folderPath = RvsLibs_File::buildPath(array($parentPath, $folderName));
                $output->folderPath = $folderPath;
                $codeHtml .= '<ul id="folder_'. $key . '">';
                if ($output->isNotAlbumFolder === false) {
                	 $codeHtml .= '<li id="li_folder_' . $key . '" class="open">';
                } else {
                	 $codeHtml .= '<li id="li_folder_' . $key . '">';
                }
                $codeHtml .= $output->flexyHandle->bufferedOutputObject($output);

                if (is_array($val['sub-folder']) && count($val['sub-folder']) > 0) {
                    $this->_makeTree($output, $codeHtml, $val['sub-folder'], $folderPath, $key, 'folder_'. $key);
                }
                $codeHtml .= '</li>';
                $codeHtml .= '</ul>';
                $i++;
            }
        }
    }

    /**
     * make select tree
     * @param $aAlbumData = array();
     * @param $galleryId
     * @param $albumId
     * @param $current current folder name
     * @param $className class for add event when select folder
     * @return HTML code
     *
     * for edit css
     * class 'pulgin-show-input-box'
     * class 'pulgin-show-tree-view'
     */
    function makeSelectionTreeView($name, $aAlbumData, $galleryId, $albumId=null, $current=null, $className='selectiontree')
    {
        SGL::logMessage('makeTreeView==1', PEAR_LOG_DEBUG);
        include_once SGL_LIB_PEAR_DIR . '/HTML/Template/Flexy.php';
        $fileFlexy = 'selectionTreeView.html';
        $output->flexyHandle = new HTML_Template_Flexy();
        $output->flexyHandle->compile($fileFlexy);
        $output->galleryId = $galleryId;
        $output->albumId = $albumId;
        $output->name = $name;
        $selectAlbum = RvsLibs_String::translate('Select album');
        if (is_null($current) === true) {
            $current = $selectAlbum;
        }
        $output->className = $className;
        //$codeHtml = '<input type="text" style="width:200px" id="sinput-' . $name . '" name="input-' . $name . '" value="'  . $current . '" onclick="jQuery(\'#show-tree-' . $name . '\').show();">';
        $codeHtml = '<div><dl class="editdropdown">
                        <dt style="width:260px; margin:2px;">
                            <a href="javascript:void(0);"
                               id="input-' . $name . '"
                               class="compoLink"
                               onclick="this.focus();jQuery(\'#show-tree-' . $name . '\').show();"
                               onblur="setTimeout(function(){jQuery(\'#show-tree-' . $name . '\').hide()},250); "
                                                            >
                               <span>' . $current . '</span></a>
                        </dt>
                     </dl></div> ';
        $codeHtml .= '<input type="hidden"  name="cerrent-path" value="'  . $current . '">';
        $codeHtml .= '<div class="treeview" id="show-tree-' . $name . '" style="height:200px;overflow-y: scroll; overflow-x:hidden; z-index:1; position: absolute;display: none;background-color: #ffffff;width:260px; margin:0 2px;">';
        SGL::logMessage('makeTreeView==2', PEAR_LOG_DEBUG);
        $this->_makeTree($output, $codeHtml, $aAlbumData, $parentPath='');
        SGL::logMessage('makeTreeView==3', PEAR_LOG_DEBUG);
        $codeHtml .= '</div>';
        return $codeHtml;
    }
     /**
     * make MultipleSelectBox
     * @param $setIdBox = string (set id for script js and add event onload Mgr ajax)
     * @param $galleryId
     * @param $aSortDirsList = array();
     * @param $projectId
     * @param $currentVal = default value
     * @param $isShowList = bool(true : not show click slide up,down, false : show click slide up,down)
     * @return HTML code
     */
	function makeMultipleSelectBox($setIdBox, $galleryId, $aSortDirsList ,$projectId,$currentVal, $isShowList = false)
	{
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		include_once (SGL_MOD_DIR . '/sitebuilderpro/classes/AjaxClass/rvsPhotoGalleryAjaxMgr.php');
		$oGalleryMgr = new rvsPhotoGalleryAjaxMgr();
	    $isShow = (isset($isShowList) && $isShowList === true) ? '' : ' display:none ; ';
	    $idSelectBox =  (isset($setIdBox) && $setIdBox != '') ? $setIdBox : 'controlDropDown';
	    $idul =  (isset($setIdBox) && $setIdBox != '') ? 'MultipleSelectBox_'.$idSelectBox : 'MultipleSelectBox_DropDown';
	    $currentVal = (isset($currentVal) && $currentVal != '') ? $currentVal : 'List Album.';
		$codeHtml = <<<EOF
<input type="text" id="{$idSelectBox}"value="{$currentVal}" />
<div class='treeview'>
<ul id="{$idul}" style="position: absolute; background:#ffffff; {$isShow}">
EOF;
		$nameList = '';
		$classCurrent = true;
		$setMax = -1;
		$setMargin = 0;
		$folderPath="";
		$albumId="";
		foreach ($aSortDirsList as $key => $dirName) {
			$folderPath = RvsLibs_String::preg_replace('/(.*?)(album_(\w){32})/i',"",$dirName);
			$aExplode = array();
			$aExplode = RvsLibs_String::dbeExplode("/", $dirName);
			$dirName = end($aExplode);

            // === Level 1 Album ===
			if (count($aExplode)>0) {
				if (RvsLibs_String::preg_match('/(album_(\w){32})/i', $dirName,$aAlbumId)) {
					$albumId = (isset($aAlbumId[0]) && $aAlbumId[0] != '') ? $aAlbumId[0] : '' ;
					$fileGallery = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, $galleryId, 'gallery.dat'));
					$aGalleryData = $oGalleryMgr->_loadGalleryData($fileGallery);
					if (isset($aGalleryData[$dirName]['album-name'])) {
						$nameList = $aGalleryData[$dirName]['album-name'];
					} else {
						$nameList = $dirName;
					}

					if ($classCurrent) {
						$codeHtml .= <<<EOF
<li class="selected setvalue" albumId="{$albumId}" folderPath="{$folderPath}">{$nameList}</li>
EOF;
                        $setMax = -1;
                        $setMargin = 0;
						$classCurrent = false;
					} else {
						$codeHtml .= <<<EOF
<li class="setvalue" albumId="{$albumId}" folderPath="{$folderPath}">{$nameList}</li>
EOF;
                        $setMax = -1;
                        $setMargin = 0;
					}
					///TODO builder hidden
				// === Level 2 Folder ====
				} else {
					///TODO builder hidden
					$nameList = $dirName;
                    //$folderPath .= $dirName.'/';
					if (count($aExplode)>$setMax) {
						$setMargin += 30;
						$setMax = count($aExplode);

					} else if (count($aExplode)<$setMax) {
						$setMargin -= 30;
						$setMax = count($aExplode);
					}

					$codeHtml .= <<<EOF
<li  class="setvalue" style="margin: 0 {$setMargin}px;"  albumId="{$albumId}" folderPath="{$folderPath}">{$nameList}</li>
EOF;
				}
			}
		}
		$codeHtml .= '</ul><div>';
		return $codeHtml;
	}
/**
     * make MultipleSelectBox2
     * @param $setIdBox = string (set id for script js and add event onload Mgr ajax)
     * @param $galleryId
     * @param $aSortDirsList = array();
     * @param $projectId
     * @param $currentVal = default value
     * @param $isShowList = bool(true : not show click slide up,down, false : show click slide up,down)
     * @return HTML code
     */
    function makeMultipleSelectBox2($setIdBox, $galleryId, $aSortDirsList ,$projectId,$currentVal, $isShowList = false)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        include_once (SGL_MOD_DIR . '/sitebuilderpro/classes/AjaxClass/rvsPhotoGalleryAjaxMgr.php');
        $oGalleryMgr = new rvsPhotoGalleryAjaxMgr();
        $setTagLi = false;
        $setTagUi = false;
        $max = -1;
        $countDirs = count($aSortDirsList);
        $countTagUi = 0;
        $countLoop = 0;
        $idSelectBox =  (isset($setIdBox) && $setIdBox != '') ? $setIdBox : 'controlDropDown';
        $idSideControl = (isset($setIdBox) && $setIdBox != '') ? 'sideControl_' . $idSelectBox : 'sidetreecontrol';
        $idul =  (isset($setIdBox) && $setIdBox != '') ? 'MultipleSelectBox_'.$idSelectBox : 'MultipleSelectBox_DropDown';
        $isShow = (isset($isShowList) && $isShowList === true) ? '' : ' display:none ; ';
        $collapse = RvsLibs_String::translate('Collapse All');
        $expand = RvsLibs_String::translate('Expand All');
        $current = RvsLibs_String::translate('Current folder');
        $current = "<b>" . $current . "</b>";
        $imgUrl = PUBLIC_IMG_URL;
        //<input type="text" id="{$idSelectBox}" value="{$currentVal}" type="hidden" />
        if ($isShowList === true) {
        	$classInput='';
        	$codeShowSelectBoxList = <<<EOF
            {$current}: <span id="{$idSelectBox}"></span>
EOF;
        } else {
        	$classInput='editdropdown';
        	$codeShowSelectBoxList = <<<EOF
            <a href="javascript:void(0);" id="{$idSelectBox}">
                <input type="text" id="{$idSelectBox}" value="{$currentVal}" type="hidden" />
            </a>
EOF;
        }

        $codeHtml2 = <<<EOF
<div>
    <dl class="{$classInput}">
        <dt style="width:220px">
            {$codeShowSelectBoxList}
	    </dt>
    </dt>
</div>
<div id="{$idSideControl}">
<a href="?#"><img src="{$imgUrl}/Collapse-all.gif" alt="" width="11" height="11" border="0" align="absmiddle" /> {$collapse}</a> &nbsp; <a href="?#"><img src="{$imgUrl}/Expand.gif" alt="" width="11" height="11" border="0" align="absmiddle" /> {$expand}</a></div>
<ul id="{$idul}" style="position: absolute;background:#ffffff; z-index:100; {$isShow}">
EOF;
/*
        <dl class="editdropdown" >
                                                    <dt>
                                                      <a href="javascript:void(0);" id="currentFont" ><span>{projectNameCurrent:h}</span></a>
                                                    </dt>
                                                     <dd>
                                                       <ul>
                                                         {foreach:aProject,projectId,projectName}
                                                         <li><a href="javascript:void(0);" class="Projectedit" id="{projectId}"><span>{projectName}</span></a></li>
                                                         {end:}
                                                       </ul>
                                                     </dd>
                                                 </dl> */
        foreach ($aSortDirsList as $key => $dirName) {
        	$folderPath = RvsLibs_String::preg_replace('/(.*?)(album_(\w){32})/i',"",$dirName);
            $aExplode = array();
            $aExplode = RvsLibs_String::dbeExplode("/", $dirName);
            $length = count($aExplode);
            $dirName = end($aExplode);

            if ($length > 0) {
            		$countLoop++;
            		if (RvsLibs_String::preg_match('/(album_(\w){32})/i', $dirName, $aAlbumId)){
            				$albumId = (isset($aAlbumId[0]) && $aAlbumId[0] != '') ? $aAlbumId[0] : '' ;
            		}
            		$fileGallery = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, $galleryId, 'gallery.dat'));
            		$aGalleryData = $oGalleryMgr->_loadGalleryData($fileGallery);
            		if (isset($aGalleryData[$dirName]['album-name'])) {
            			$nameList = $aGalleryData[$dirName]['album-name'];
            		} else {
            			$nameList = $dirName;
	                 }
	                 if ($countLoop == 1) {
	                 	$setTagLi = true;
                        $max = $length;
                        $codeHtml2 .= '<li  ><span class="setvaluef last"  albumId="' . $albumId . '" folderPath="' . $folderPath . '">' . $nameList . '</span>';
	                 } else {
	                 	if ($length > $max) {
	                 		$countTagUi++;
	                 		$max = $length;
	                 		$codeHtml2 .= '<ul><li ><span class="setvaluef  last"albumId="' . $albumId . '" folderPath="' . $folderPath . '">' . $nameList. '</span>';
		                 	if ($countLoop == $length) {
	                            $setTagUi = true;
	                        }
	                 	} else if ($length == $max) {
	                 	     $max = $length;
                             $codeHtml2 .= '</li><li ><span class="setvaluef  last"  albumId="' . $albumId . '" folderPath="' . $folderPath . '">' . $nameList. '</span>';
		                 	if ($countLoop == $length) {
	                            $setTagUi = true;
	                        }
	                 	} else if ($length < $max) {
	                 	     $loop = $max - $length;
	                 	     $max = $length;
	                 	     for ($j = 0; $j < $loop; $j++) {
	                 	     	//echo '  loop ' . $j . '<br>';
	                 	     	$countTagUi--;
	                 	     	$codeHtml2 .= '</li></ul>';
	                 	     }
	                 	     $codeHtml2 .= '<li ><span class="setvaluef  last" albumId="' . $albumId . '" folderPath="' . $folderPath . '">' . $nameList. '</span>';
		                 	if ($countLoop == $length) {
	                            $setTagUi = true;
	                        }
	                 	}
	                 }
            	}
        }
        if ($setTagUi === true) {
            for ($i = 0; $i < $countTagUi; $i++) {
            	echo '</li></ul>';
            }
        }
        if ($setTagLi === true) {
        	$codeHtml2 .= '</li>';
        }
        $codeHtml2 .= '</ul>';
        return $codeHtml2;

    }

	function isThumbsImage($galleryPath,$currentFolderPath,$imgName)
	{
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$imagePathThumbs = RvsLibs_File::buildPath(array($galleryPath, $currentFolderPath, 'thumbs', $imgName));
		// optimize :nipaporn
		return (file_exists($imagePathThumbs) === true)
			? true
		    : false;
	}

	function isImageOrg($galleryPath, $currentFolderPath, $imgName)
	{
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$imagePathOrg = RvsLibs_File::buildPath(array($galleryPath, $currentFolderPath, 'images_org', $imgName));
        return (file_exists($imagePathOrg) === true)
                 ? true
        	     : false;
	}

	function isNotPhotoGallery($moduleName=null)
	{
		return (strtolower($moduleName) != 'photogallery') ? true : false;
	}

	function isPhotoAlbumDeprecated($component)
	{
		if (strtolower($component) == 'photo_album') {
			 echo '(' . RvsLibs_String::translate('deprecated') . ')';
		}
	}

	function isUserAndSystem($componentName)
	{
		if(isset($componentName) && $componentName == 'ComponentAndUserFramework') {
			return true;
		}
		return false;
	}

	function isTranslationCompo($componentName)
	{
		$url = SGL_Output::makeUrl("","ComponentUserAndSystem","sitebuilder");
		 $cName = strtolower($componentName);
		 if ($cName  == 'newsletter' || $cName == 'photogallery'){
		 	echo RvsLibs_String::translate('description db based component display example images'
                                                                                , 'vprintf'
                                                                                , array('UrlAdmin' => $url)
                                                                           );
	   } else {
		    $projectId = SGL_Session::get('rvs_project_id');
			$urllogin = RvsLibs_Publish::getUrlBlogLogin($projectId);
			echo RvsLibs_String::translate('description db based component'
                                                                                , 'vprintf'
                                                                                , array('urllogin' => $urllogin
                                                                                , 'UrlAdmin' => $url)
                                                                           );

		}
	}

	function getUsername()
    {
         return RVS_USER_NAME;
    }

    function chkUserAgent()
    {
    	if (isset($_SERVER["HTTP_USER_AGENT"])) {
    		return false;
    	} elseif (SGL_Output::isDirectAdminMode() &&  SGL_Session::get('HTTP_USER_AGENT') == '') {
    		return true;
    	} else {
    		return false;
    	}
    }

    function getMsgReseller()
    {
    	if (SGL_Output::isDirectAdminMode() === false) {
    		return RvsLibs_String::translate('reseller session warning');
    	}
    }

    function getEditMaxFileSizInfo()
    {
    	if (SGL_Output::isDirectAdminMode() === true) {
    		return RvsLibs_String::translate('edit value post data directadmin');
    	} else {
    		return RvsLibs_String::translate('edit value post data');
    	}
    }

    /**
     * check owner allow backup project
     * @return boolean
     */
    function isAllowExport()
    {
    	return RvsLibs_Util::validateTrue(
    	   RvsLibs_Config::getOwnerConf('AllowExportProject')
    	);
    }

    /**
     * check owner allow Import project
     * @return boolean
     */
    function isAllowImport()
    {
    	return RvsLibs_Util::validateTrue(
    			RvsLibs_Config::getOwnerConf('AllowImportProject')
    	);
    }


     /******list font family::: list font stadard + custom font by project ::: tag list dl dt li ***********
     * $valDef : string(set value default)
	 * $nameClass : string('dropdown');// class used in style.php มีผล ว่าห้ามซ้ำกันใน page เดียวกัน
     * $idTarget : string('customFLFontFamily') // id เป็น text box ที่ต้องการเก็บค่า
     *             : for set (id=>  tag dl id="dl_{idTarget}")
     * @author : darawan 27/09/54
     ***********************************************************/
    function genFontList($valDef, $idTarget)
    {
        $aFont = DaoFactory::Font()->findAllFontOrderByFontName('getvalue');
        $aFont = RvsLibs_String::str_replace("_", " ", $aFont);
        // add default in listbox
        $resListBox = '<li><div onclick="jQuery.sitebuilder.sitebuilder.selectListStyleFont(jQuery(this),\'' . $idTarget . '\')" attrStrFont="Default" attrKeyFont="0"><span style="font-family:Verdana;" ></span></div></li>' . "\n";
        $fontNameDef = '';
        foreach ($aFont as $k => $v) {
            $aFont[$k] = RvsLibs_String::ucfirst($aFont[$k]);
            if ($k == $valDef && $fontNameDef == '') $fontNameDef = $aFont[$k];
            $resListBox .= '<li><div '
                . 'attrStrFont="' . $aFont[$k] . '" '
                . 'attrKeyFont="' . $k . '" '
                . 'eTarget="' . $idTarget . '" '
                . 'onclick="jQuery.sitebuilder.sitebuilder.selectListStyleFont(jQuery(this));">'
                . '<span style="font-family:' . $aFont[$k] . ';" >' . $aFont[$k] . '</span>'
                . '</div></li>' . "\n";
        }
        //=== font custom
        $fileFontIni =  RvsLibs_File::buildPath(
        	array(
        		RVS_USER_HOME
        		, '.rvsitebuilder'
        		, 'customfont'
        		,'fontname.ini.php'
        	)
        );
        if (is_file($fileFontIni)) {
        	//include file for load array
        	include $fileFontIni;
        	foreach ($aFontCustom as $k => $v) {
        		$aFontCustom[$k] = RvsLibs_String::ucfirst($aFontCustom[$k]);
        		if ($k == $valDef && $fontNameDef == '') $fontNameDef = $aFontCustom[$k];
        		$strFont = urlencode($aFontCustom[$k]);
        		$resListBox .= '<li><div '
        		  . 'attrStrFont="' . $strFont . '" '
        		  . 'attrKeyFont="' . $k . '" '
        		  . 'eTarget="' . $idTarget . '" '
        		  . 'onclick="jQuery.sitebuilder.sitebuilder.selectListStyleFont(jQuery(this));">'
        		  . '<span style="font-family:' . RvsLibs_String::str_replace('"', '', $aFontCustom[$k]) . ';">' . $aFontCustom[$k] . '</span>'
        		  . '</div></li>' . "\n";
        	}
        }
        $fontNameDef = ($fontNameDef != '') ? $fontNameDef : 'Verdana';
        $startResListBox = '<dl id="dl_'.$idTarget.'" class="dropdown"><dt><div><span>' . $fontNameDef . '</span></div></dt><dd><ul>'. "\n";
        return $startResListBox . $resListBox .= '</ul></dd></dl>';
    }

  	/******list font family customroject
     * @author : darawan 12/10/54
     ***********************************************************/
    function genFontCustomList()
    {
        //=== font custom
        $fileFontIni =  RvsLibs_File::buildPath(array(RVS_USER_HOME, '.rvsitebuilder', 'customfont', 'fontname.ini.php'));
        $listCustom = '';
        if (is_file($fileFontIni)) {
            //include file for load array
            include $fileFontIni;
            foreach ($aFontCustom as $k => $v) {
                $fontName = RvsLibs_String::ucfirst($aFontCustom[$k]);
$listCustom .= <<<EOF
<span id="cutom_font_{$k}" keyDel="{$k}" class="delFont">
    <table cellpadding="0" cellspacing="5"  style="width:368px;float:left;">
        <tr>
             <td align="left" valign="top" width="50%" style="border-bottom:1px dashed #cccccc;"><span style="font-family:{$fontName};">{$fontName}&nbsp;&nbsp;</span></td>
             <td align="left" valign="top" style="border-bottom:1px dashed #cccccc;"><span class="deleteFont"  onclick="jQuery.sitebuilder.sitebuilder.deleteCustomFont(jQuery('#cutom_font_{$k}'))" title="delete">&nbsp;</span></td>
        </tr>
     </table>

</span>
EOF;
            }
        }
        return $listCustom;
    }

    /******list font size font ::: tag list dl dt li ***********
     * $valDef : string(set value default)
     * $aFontSize : array('10','12');
     * $idTarget : string('customFLFontFamily') // id เป็น text box ที่ต้องการเก็บค่า
     *              : for set (id=>  tag dl id="dl_{idTarget}")
     * @author : darawan 27/09/54
     ***********************************************************/
    function genFontSizeList($aFontSize, $valDef, $idTarget)
    {
    	$valdef = '';
        // add default in listbox
        $resListBox = '<li><div onclick="jQuery.sitebuilder.sitebuilder.selectListStyleSize(jQuery(this));" val="0" eTarget="' . $idTarget . '">'
                    . '<span style="font-size:76%;" ></span></div></li>' . "\n";
        foreach ($aFontSize as $v) {
            if ($v == $valDef && $valDef == '')  $valDef  = $v;// find set default
            $resListBox .= '<li><div onclick="jQuery.sitebuilder.sitebuilder.selectListStyleSize(jQuery(this));" val="'.$v.'px" eTarget="'.$idTarget.'">'
                . '<span style="font-size:' . $v .'px;" >' . $v . 'px</span></div></li>' . "\n";
        }
        $valDef = ($valDef != '' && $valDef != '0') ? $valDef : '12px';
        $startResListBox = '<dl id="dl_' . $idTarget . '" class="dropdown"><dt><div><span>' . $valDef . '</span></div></dt><dd><ul>'. "\n";;
        return $startResListBox . $resListBox .= '</ul></dd></dl>';
    }

    function genBodyAttribute($aAttributeBody, $idTarget, $default = null)
    {
        foreach ($aAttributeBody as $v) {
            $default = (isset($default) && $default) ? $default : $v;
            $resListBox .='<li><div onclick="jQuery.sitebuilder.sitebuilder.selectListBodyAttribute(jQuery(this));" val="' . $v . '" eTarget="' . $idTarget . '">'
                        . '<span>' . $v . '</span></div></li>' . "\n";
        }
        $startResListBox = '<dl id="dl_' . $idTarget . '" class="dropdown"><dt><div>'
                        . '<span>' . $default . '</span></div></dt><dd><ul>' . "\n";
        return $startResListBox . $resListBox .= '</ul></dd></dl>';
    }

    function getSelectPageOption($id)
    {
    	$project_id = RvsLibs_Project::getProjectId();
    	$rvs_usr_id = RvsLibs_User::getUserId();
    	$aPagStructure = RvsLibs_Project::getPageStructureDataWithOutInternalPage($project_id, $rvs_usr_id);
    	$option = '<select id="' . $id . '" name="' . $id . '">';
    	foreach($aPagStructure as $val) {
    		$option .= '<option value="' . $val->project_page_id . '">' . htmlentities($val->page_name) . '</option>';
    	}
    	$option .= '</select>';
    	return $option;
    	//getAllPageStructureData
    }

    function checkLinkIdAndExterUrl($linkId, $projectPageId)
    {
    	$exterUrl = DaoFactory::Link()->findLinkDataAndProjectPageData($linkId, $projectPageId, 'getassoc');
    	if ($linkId && $exterUrl[$projectPageId]->external_url) {
    		return true;
    	}
    	return false;
    }

    /**
     * show external link
     * @param $linkActive
     * @param $rvsLinkId
     * @param $projectPageId
     * @param $urlWeb
     * @param $thim
     * @return unknown_type
     * @other pharadol fix v5
     */
    function showExternalLink($linkActive)
    {
    	$display = 'display:';
    	if ($linkActive) {
    		$display="display:none";
    	}
    	return $display;
    }

    function isExternalLin($projectPageId, $aLink)
    {
    	if (isset($aLink[$projectPageId])) {
    		if ($aLink[$projectPageId]->rvs_link_id
	    		&& isset($aLink[$projectPageId]->external_url)
	    		&& !empty($aLink[$projectPageId]->external_url))
	    		{
    			return true;
    		}
    	}
    	return false;
    }

    function isComponentUseDb($iscompo)
    {
    	if ($iscompo == true) {
    		return 'display:';
    	}
    	return "display:none";
    }

   function isInternalPage($aIsInternal)
    {
        if (count($aIsInternal)) {
            return 'display:';
        }
        return "display:none";
    }

    function isNotComponentUseDb($iscompo)
    {
        if ($iscompo == true) {
            return true;
        }
        return false;
    }

    /**
     * show wysiwyg editor
     * @param $showwysiwyg
     * @param $linkActive
     * @param $rvsLinkId
     * @param $projectPageId
     * @param $webThemeUrl
     * @param $sglPathUrl
     * @param $indexPhpsu
     * @param $theme
     * @return unknown_type
     * @other pharadol fix v5
     */
    function showwysiwyg($showwysiwyg, $linkActive, $rvsLinkId, $projectPageId, $webThemeUrl, $sglPathUrl, $indexPhpsu, $theme)
    {
        $data = '';
	 	if ($showwysiwyg) {
				if ($linkActive) {
					$data = '<span id="wysiwyg_' . $projectPageId .  '" style="display:none">';
				} else {
					if ($linkActive) {
					$data .= '<span id="wysiwyg_' . $projectPageId .  '">';
					} else {
					$data .= '<span id="wysiwyg_' . $projectPageId .  '">';
					}
				}
					$data .= '<a  href="' . $sglPathUrl . '/' . $indexPhpsu .'/sitebuilder/wysiwyg/project_page_id/' . $projectPageId .  '"
					     target ="windowsName' . $projectPageId .  '"
					     onclick="return jQuery.sitebuilder.sitebuilder.switchNewWin(newwin' . $projectPageId . ');">
				<img src="' . $webThemeUrl . '/themes/' . $theme . '/sitebuilder/images/i-edit.gif" width="52" height="20" alt="{translate(#Edit#)}"  border="0">
				</a></span>';
	 	} else {
			 if ($linkActive) {
				 $data .= '<span  id="wysiwyg_' . $projectPageId .  '" style="display:none">';
			 } else {
				if ($rvsLinkId) {
					$data .= '<span  id="wysiwyg_' . $projectPageId .  '" style="display:none">';
				} else {
					$data .= '<span  id="wysiwyg_' . $projectPageId .  '">';
				}
			 }
	 	$data .= '<img src="' . $webThemeUrl . '/themes/' . $theme . '/sitebuilder/images/i-manage.gif" width="17" height="15" alt="{translate(#Manage#)}"  border="0"></a></span>';
	 	}
     return $data;
    }
    /*
    function test($showwysiwyg, $linkActive, $rvsLinkId, $projectPageId, $webThemeUrl, $sglPathUrl, $indexPhpsu, $theme,$home)
    {
    	if ($rvsLinkId) {
    	$a = $this->showwysiwyg($showwysiwyg, $linkActive, $rvsLinkId, $projectPageId, $webThemeUrl, $sglPathUrl, $indexPhpsu, $theme);
    	} else {
    	$a = $this->showExternalLink($linkActive, $rvsLinkId, $projectPageId, $webThemeUrl, $theme, $home);
    	}
    	return $a;
    }
    */

    /**
     * show month day year
     * @param $lastModifier
     * @return unknown_type
     * @othor pharadol fix v5
     */
    function getFormatTime($lastModifier)
    {
		$aMonth = array('1'=>'January'
		               ,'2'=>'February'
		               ,'3'=>'March'
		               ,'4'=>'April'
		               ,'5'=>'May'
		               ,'6'=>'June'
		               ,'7'=>'July'
		               ,'8'=>'August'
		               ,'9'=>'September'
		               ,'10'=>'October'
		               ,'11'=>'November'
		               ,'12'=>'December'
		               );
    	if ($lastModifier) {
    		$date = strftime ("%b/%d/%Y",$lastModifier);
    		$aDate = explode('/',$date);
    		$dateM = $aDate[0] . ' ' .  $aDate[1] . ' ' . $aDate[2];
    	} else {
    		$dateM = '....';
    	}
    	return $dateM;
    }

    function checkNewsleter($value)
    {
    	if (preg_match('/@@Newsletter\^/', $value)) {
    		return true;
    	}
    }

    function mailSystemMenu($compoentName)
    {
        if ($compoentName == 'Newsletter') {
            return true;
        } else {
            return false;
        }
    }

    /**
     * show page option
     * @param $projectPageId
     * @param $actLink
     * @param $targetPic
     * @param $pageName
     * @return unknown_type
     * @othor pharadol fix v5
     */
    function pageOption($projectPageId, $actLink, $targetPic, $pageName, $isHomePage, $componentId='', $notShowClonePage=false, $value, $showwysiwyg, $lavel, $setDraft, $setMember = 0, $isShowHtmlEditor=true)
    {
    	$isV5 = (SGL_Output::isV6Session() == false) ? true : false;
    	$page = '&nbsp;';
    	$htmlEditor = '';
    	$strClonePage = '';
    	$draft = '';

    	if (preg_match('/@@Newsletter\^/', $value)) {
    		return '';
    	}

    	if (!$isHomePage && count($lavel) <= 0) {
    		$disHome = '<option value="MoveToInternalPage">' .  RvsLibs_String::translate('Move to internal page') . '</option>';
    	}

    	if ($showwysiwyg != '0' && $isShowHtmlEditor == true) {
    	    $htmlEditor = '<option value="HtmlEditor">' .  RvsLibs_String::translate('HTML Editor') . '</option>';
    	}

    	if ($notShowClonePage == false) {
    		$strClonePage = '<option value="clonePage">' .  RvsLibs_String::translate('Clone Page') . '</option>';
    	}

   		 if(!$isHomePage){
    		$disHome .=  '<option value="setLinkTarget">' .  RvsLibs_String::translate('Link and target') . '</option>';
    	}
    	//ถ้าเป็นหน้า home ไม่ให้ set draft
    	if (!$isHomePage && !$componentId) {
    		if ($setDraft == 1) {
    			$draft = '<option value="Draft" style="display:none">' .  RvsLibs_String::translate('Set Draft') . '</option>';
    			$draft = '<option value="UnDraft">' .  RvsLibs_String::translate('UnSet Draft') . '</option>';
    		} else {
    			$draft = '<option value="UnDraft" style="display:none">' .  RvsLibs_String::translate('UnSet Draft') . '</option>';
    			$draft = '<option value="Draft">' .  RvsLibs_String::translate('Set Draft') . '</option>';
    		}
    	} else {
    		$draft = '<option value="UnDraft" style="display:none">' .  RvsLibs_String::translate('UnSet Draft') . '</option>';
    		$draft = '<option value="Draft" style="display:none">' .  RvsLibs_String::translate('Set Draft') . '</option>';
    	}


    	$oCp = CpHandle::factory();
    	if (SGL::isError($oCp) === true) {
    		SGL_Error::pop();
    		return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
    	}
    	$memberPage = '';
    	//isv5 show member page only
    	if ($oCp->isNotTryout() === true && $isV5 = true) {
    		if ($setMember == 1) {
    			$memberPage = '<option value="UnmemberPage">' .  RvsLibs_String::translate('UnSet Member Page') . '</option>';
    		} else {
    			$memberPage = '<option value="memberPage">' .  RvsLibs_String::translate('Set Member Page') . '</option>';
    		}
    	}

    	$page = '<form  id="hid_' . $projectPageId . '" class="hid_select" name="jump_' . $projectPageId . '">
    					 	<select id ="pageOption_' . $projectPageId . '" rvsAct=" ' . $actLink . ' "class="pageOption widthoption" project_page_id ="' . $projectPageId . '" targetLink=" ' . $targetPic . ' " pagename ="' . $pageName . '" componentId="' . $componentId. '" isHomePage="' . $isHomePage . '"   >
	    				      <option value="default">' .  RvsLibs_String::translate('Select Page Option') . '</option>
	                          ' . $disHome . '
				    	      ' . $strClonePage . '
				    	      ' . $htmlEditor . '
				    	      <option value="setHomePage">' .  RvsLibs_String::translate('Set Home Page') . '</option>
				    	      <option value="Rename">' .  RvsLibs_String::translate('Rename') . '</option>
				    	      ' . $draft . '
				    	      ' . $memberPage . '
			    	      	</select>
			    	      </form>';
    	return $page;

    }

    function pageOptionInternal($projectPageId, $actLink, $targetPic, $pageName, $rvsLinkId, $componentId='', $notShowClonePage=false, $showwysiwyg='',$setMember = 0, $isShowHtmlEditor=true)
    {
    	$isV5 = (SGL_Output::isV6Session() == false) ? true : false;
    	$link = '';
    	$strClonePage = '';
    	$htmlEditor = '';

    	if ($notShowClonePage == false) {
    		$strClonePage = '<option value="clonePage">' .  RvsLibs_String::translate('Clone Page') . '</option>';
    	}

    	if (!$componentId) {
    		$link = '<option value="setLinkTarget">' .  RvsLibs_String::translate('Link and target') . '</option>';
    	}

    	if ($showwysiwyg != '0' && $isShowHtmlEditor == true) {
    		$htmlEditor = '<option value="HtmlEditor">' .  RvsLibs_String::translate('HTML Editor') . '</option>';
    	}

    	$oCp = CpHandle::factory();
    	if (SGL::isError($oCp) === true) {
    		SGL_Error::pop();
    		return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
    	}
    	$memberPage = '';
    	if ($oCp->isNotTryout() === true && $isV5 == true) {
    		if ($setMember == 1) {
    			$memberPage = '<option value="UnmemberPage">' .  RvsLibs_String::translate('UnSet Member Page') . '</option>';
    		} else {
    			$memberPage = '<option value="memberPage">' .  RvsLibs_String::translate('Set Member Page') . '</option>';
    		}
    	}
    		$page = '<select id ="pageOption_' . $projectPageId . '" rvsAct=" ' . $actLink . ' " class="pageOption widthoption" name="transfer_reason1" project_page_id ="' . $projectPageId . '" targetLink=" ' . $targetPic . ' " pagename ="' . $pageName . '"  componentId="' . $componentId. '" isInternal="1" >
                		 <option value="default">' .  RvsLibs_String::translate('Select Page Option') . '</option>
                		 <option value="MoveToMainPage">' .  RvsLibs_String::translate('Move Main Page') . '</option>
                		 ' . $link . '
                		 ' . $strClonePage . '
			    		 ' . $htmlEditor . '
			    		 ' . $memberPage . '
			    		 <option value="Rename">' .  RvsLibs_String::translate('Rename') . '</option>
    					 </select>';
    		return $page;

    }

    function showLinkTarget($target, $linkActive, $projectPageId, $rvsLinkId, $pageName, $targetPic, $webThemeUrl, $theme)
    {
        $data = '';
    	if ($target) {
    		if ($linkActive) {
    			$data ='<span id="targetlink_' . $projectPageId . '" style="display:none">';
    		} else {
    			if ($rvsLinkId) {
    				$data .='<span id="targetlink_' . $projectPageId . '" style="display:none">';
    			} else {
    				$data .='<span id="targetlink_' . $projectPageId . '">';
    			}
    		}
    		$targetPic = ($targetPic != '') ? $targetPic : 'spacer.gif';
    		$data .='<a  class = "jq_targetLink"
 				pagename = "' . $pageName . '"
						project_page_id = "' . $projectPageId . '">
						<img src="' . $webThemeUrl . '/themes/' . $theme . '/sitebuilder/images5/' . $targetPic . '"  id="linkTarget_' . $projectPageId . '"  width="1" height="1" style="cursor:pointer" border="0"></a>
					 </a>
					 </span>';
    	}
    	return $data;
    }


    function brToNewline($str, $newline = "<br />")
    {
    	return RvsLibs_String::brToNewline($str, $newline);
    }

    function isShowDeletePage($link_active, $isHomePage, $projectPageId)
    {
    	if (!$link_active && !$isHomePage) {
            return   '';
        }
        return  'display:none;';
    }

    function targetNewWindown($target)
    {
    	if ($target == '_blank') {
    		return true;
    	}
    	return false;
    }

 function listUserDns()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $aUserDnsAll = array();
        $aUserDns = array();
        $aUserDns = RvsLibs_User::getUserDNS(1);
        if ($aUserDns) {
            foreach ($aUserDns as $k=>$v) {
                $www = 'www.' . $v;
                $aUserDnsAll1[$www] = $www;
                $aUserDnsAll2[$v] = $v;
            }
            asort($aUserDnsAll1);
            asort($aUserDnsAll2);
            return array_merge($aUserDnsAll1, $aUserDnsAll2);
        }
    }

    /**
     * make makeTreeViewPageStructure
     * @param $aProjectPage = array list page
     * @author darawan 01/11/11
     * @return HTML code
     */
	function makeTreeViewPageStructure($aProjectPage)
	{
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$optMenu = '<img class="jq_mainpage" project_page_id="%s" rvs_link_id="%s" src="' . PUBLIC_IMG_URL . '/btnHideShortcut01.gif" width="10" height="10" title="' . RvsLibs_String::translate('Link active') .'" style="cursor:pointer" border="0" >';
		$codeHtml = <<<EOF
<div class='treeview'>
<ul id="MultipleSelectBox_DropDown" style="background:#ffffff;">
EOF;

		foreach ($aProjectPage as $k => $v) {

			if ($this->checkNewsleter($v->value) === true) {
				unset($v->page_name);
			}

			$iconMaster = ($v->subPage && $v->is_home != '1') ? sprintf($optMenu, $v->project_page_id, $v->link_active) : '';
			$iconHome = ($v->is_home) ? ' <span class=" iconHome02" style="float:right;"></span>' : '';
			$pageName = RvsLibs_String::brToNewline($v->page_name, "<br>") . $iconHome;
			$codeHtml .= <<<EOF
<li class="selected setvalue" pageId="{$v->project_page_id}"parentId="0" isHome="{$v->is_home}"><span id="point_{$v->project_page_id}" class="mgrPage" style="float:left;">{$pageName}</span> <span class="iconMaster">{$iconMaster}</span>
EOF;
			if(count($v->level1) > 0){
				// level 1
				$idx1 = 0;
				$codeHtml.=<<<EOF
<ul style="background:#ffffff;">
EOF;
			foreach ($v->level1 as $k1 => $v1) {
				$iconMaster = ($v1->subPage && $v1->is_home != '1') ? sprintf($optMenu,$v1->project_page_id,$v1->link_active) : '';
				$iconHome = ($v1->is_home) ? ' <span class=" iconHome02" style="float:right;"></span>' : '';
				$pageName = RvsLibs_String::brToNewline($v1->page_name, "<br>") . $iconHome;
				$codeHtml .= <<<EOF
<li class="last currentSelect"lv="1"idx="{$idx1}" pageId="{$v1->project_page_id}" parentId="{$v->project_page_id}"isHome="{$v1->is_home}"><span id="point_{$v1->project_page_id}" class="mgrPage" style="float:left;">{$pageName}</span> <span class="iconMaster">{$iconMaster}</span>
EOF;
				$idx1++;
				if(count($v1->level2) > 0){
					$idx2 = 0;
					$codeHtml.=<<<EOF
<ul style="background:#ffffff;">
EOF;
				// level 2
				foreach ($v1->level2 as $k2 => $v2) {
					$iconMaster = ($v2->subPage && $v2->is_home != '1') ? sprintf($optMenu,$v2->project_page_id,$v2->link_active) : '';
					$iconHome = ($v2->is_home) ? ' <span class=" iconHome02" style="float:right;"></span>' : '';
					$pageName = RvsLibs_String::brToNewline($v2->page_name, "<br>") . $iconHome;
					$codeHtml .= <<<EOF
<li class="last" idx="{$idx2}" pageId="{$v2->project_page_id}"parentId="{$v1->project_page_id}"isHome="{$v2->is_home}"><span id="point_{$v2->project_page_id}" class="mgrPage" style="float:left;">{$pageName}</span><span class="iconMaster">{$iconMaster}</span></li>
EOF;
				$idx2++;
				}
				$codeHtml.=<<<EOF
</ul>
EOF;
				}//close if
	$codeHtml.=<<<EOF


</li>
EOF;
			}

		$codeHtml.=<<<EOF
</ul>
EOF;
		}// cloise if
		$codeHtml.=<<<EOF


</li>
EOF;
	}
		$codeHtml .= '</ul></div>';
		return $codeHtml;
	}

	function isNonePageContent($aPage)
	{
		if (count($aPage) > 0) {
			return true;
		}
		return false;
	}

	function currentStep($step,$stepNo)
	{
		if ($step == $stepNo) {
			echo "navstep1_current";
		} elseif ($step == $stepNo) {
			echo "navstep1_current";
		} elseif ($step == $stepNo) {
			echo "navstep1_current";
		} else {
			echo "navstep1";
		}
	}

    function currentStep2($step,$stepNo)
    {
        if ($step == $stepNo) {
            echo "navstep2_current";
        } elseif ($step == $stepNo) {
            echo "navstep2_current";
        } elseif ($step == $stepNo) {
            echo "navstep2_current";
        } else {
            echo "navstep2";
        }
    }

    function currentStep3($step,$stepNo)
    {
        if ($step == $stepNo) {
            echo "navstep3_current";
        } elseif ($step == $stepNo) {
            echo "navstep3_current";
        } elseif ($step == $stepNo) {
            echo "navstep3_current";
        } else {
            echo "navstep3";
        }
    }
    function currentStep0($step,$stepNo)
    {
        if ($step == $stepNo) {
            echo "navstep0_current";
        } elseif ($step == $stepNo) {
            echo "navstep0_current";
        } elseif ($step == $stepNo) {
            echo "navste0_current";
        } else {
            echo "navste0";
        }
    }
	/**
	 * validate current submenu by mode existing
	 * @param unknown_type $mode
	 * @param unknown_type $name
	 * @return unknown_type
	 */
	function currentSubStep($mode, $name)
	{
		//currentSubStep Step1 Template
		$aMenu['Template'] = 'Template';
		$aMenu['Export Template'] = 'exportandimport';
		$aMenu['Diy'] = 'diytemplate';
		$aMenu['upload_template'] = 'exportandimport';
		//$input->mode = 'Export Template';
		//currentSubStep Step3 Content
		$aMenu['Content'] = 'pagecontent';
		$aMenu['User Configuration'] = 'User Configuration';
		$aMenu['System Configuration'] = 'System Configuration';
		$aMenu['Database Configuration'] = 'System Configuration';
		$aMenu['Faq'] = 'Faq';
		$aMenu['Blog'] = 'Blog';
		$aMenu['Newsletter'] = 'Newsletter';
		$aMenu['photo_album'] = 'Photo Album';
		$aMenu['guest_book'] = 'Guest Book';
		$aMenu['extras_pagetitle'] = 'extra';
		$aMenu['extras_filename'] = 'extra';
		$aMenu['extras_pageeffect'] = 'extra';
		$aMenu['extras_filename'] = 'extra';
		$aMenu['extras_metatag'] = 'extra';

		if (isset($aMenu[$mode]) && $aMenu[$mode] == $name) {
			echo "tabheader_curr";
		} else {
			echo "";
		}
	}

	function currentFontStyle($Fontstyle)
	{
		if (!empty($Fontstyle) && (strtoupper($Fontstyle) == 'B' || strtoupper($Fontstyle) == 'I' || strtoupper($Fontstyle) == 'U' || strtoupper($Fontstyle) == 'O')) {
			return "border-left: #444444 solid 1px; border-top: #444444 solid 1px; border-right: #ffffff solid 1px; border-bottom: #ffffff solid 1px;";
		}
		return '';
	}

	function currentTranslation($currentComponentName)
	{

		if($currentComponentName == 'user'){
			echo RvsLibs_String::translate('Translate user block login');
		} else if ($currentComponentName == 'default'){
			echo RvsLibs_String::translate('Translate website user and admin interface');
		} else if ($currentComponentName == 'fckeditor'){
			echo RvsLibs_String::translate('Translate login submission');
		} else if ($currentComponentName == 'authweb'){
			echo RvsLibs_String::translate('Translate reply email for registration user');
		}else if ($currentComponentName == 'newsletter'){
			echo RvsLibs_String::translate('Translate newsletter in your website');
		}
	}

	function genNavigationList($aNav,$navigator_style,$aNavigator, $currentNav)
	{
		$res = "";
		foreach ($aNavigator as $kAllNav => $vAllNav) {
			$navList = '';
			$current = '';
			$navType = ($navigator_style != $kAllNav)  ? "display:none;" : "display:;";
			foreach ($vAllNav as $kNav => $vNav) {
				$vNav = str_replace('Navigator', '', $vNav);
				$getType = $this->getNavigatorTypeName($aNav,$kNav);
				if ($currentNav == $kNav) {
					$inputHidden = "<input name=\"AdjustStylNav\" id=\"nav_Adjust\" value=\"{$vNav}\" type=\"hidden\" navType=\"{$getType}\" navId=\"{$kNav}\">";
					$showVal = (strlen($vNav) > 30) ? substr($vNav, 0, 30) : $vNav;
					$current = "<div  id=\"nav_{$kNav}\" navType=\"{$getType}\" navId=\"{$kNav}\">{$showVal}</div>";
				}
				$navList .= "<li><div  class=\"AdjustStylNav\" id=\"nav_{$kNav}\" navType=\"{$getType}\" navId=\"{$kNav}\">{$vNav}</div></li>\n";
			}
			if (empty($current)) {
				$showVal = (strlen($vNav) > 30) ? substr($vNav, 0, 30) : $vNav;
				$current = "<dt><span><div>{$showVal}</div></span></dt>";
			}
			$current = "<dt><span>{$current}</span></dt>";
			$res .= "<div id=\"navigatorStyle{$kAllNav}\" style=\" {$navType}\"><dl class=\"dropdown\">{$current}<dd class= \"diaplyoptionnav\"style=\"display:;\"><ul>{$navList}</ul></dd></dl></div>\n";
		}
			return $res."\n".$inputHidden;
	}

	/**
	 * Replace Navigator stylexx to navigator_stylexx
	 * @param unknown $name
	 */
	function getNavType($name)
	{
		echo preg_replace('/Navigator /', 'navigator_', $name);
	}

	/**
	 * Replace Navigator stylexx to stylexx
	 * @param unknown $name
	 */
	function getNavName($name)
	{

		echo preg_replace('/Navigator /', '', $name);
	}

	function validateLocalImg($isImg, $imgUrl)
	{
		if ($isImg && !preg_match('/rvs_library\//', $imgUrl)) {
			return true;
		}
		return false;
	}

	/**
	 * case: admin disable all component STEP 3 hidden add page component
	 * case: isUikit disable add component
	 * @param unknown_type $normalCompo
	 * @param unknown_type $dbCompo
	 * @return unknown_type
	 */
	function allowAddPageComponent($normalCompo, $dbCompo, $isUikit = 0)
	{
	   SGL::logMessage('isUikit::' . $isUikit, PEAR_LOG_DEBUG);
	   if (count($normalCompo) == 0
	       && count($dbCompo) == 0
	       && !SGL_Session::get('rvs_tryout')) {
	       	return false;
	   } elseif ($isUikit == 1 || $isUikit == true) {
	   		return false;
	   }
	   return true;
	}

	/**
    * count validate more 8 project return display:none
    */
	function countDisplayNone($count = 1, $max = 3)
	{
		if ($count >= $max) {
			return 'display:none;';
		}
	}

	function removetagGG($str){
	    return str_replace('{gg}','<', $str);
	}

	function genDisplayColorTone($aColorConf, $typeColorTone)
	{
		if ($typeColorTone == 'headercolor') {
			$type = 'Head';
			$fileName = 'header';
			$headIni = 'header';
			$keyIni = 'header';
			$classColor = 'setColorHead';
		} else if ($typeColorTone == 'navigatorcolor') {
			$type = 'Nav';
			$fileName = 'navColor';
			$headIni = 'bgcolor';
			$keyIni = 'color_bgn';
			$classColor = 'setColorNav';
		}

		$option = '';
		$aColorGroup = array('2-violet', '1-blue', '6-green', '5-yellow', '4-orange', '3-red', '7-black');
		foreach ($aColorGroup as $ColorGroup) { //1-blue => Array
				$genColor = '';
				$buff = '';
				foreach ($aColorConf[$ColorGroup] as $kNoFile => $vNoFile) { //(bodyColor)1(.ini.php) => Array
					$genColor .= '<div class="' . $classColor . '" value="' . $fileName . $kNoFile . '" style="background-color:' . $vNoFile[$headIni][$keyIni] . '"></div>';
					if ($kNoFile == 49 || $kNoFile == 25 || $kNoFile == 1) {
						if ($ColorGroup == '3-red' || $ColorGroup == '5-yellow') {
							$buff = '<div class="colorToneBox" value="' . $ColorGroup . '" >' . $genColor . '</div>' . $buff;
						} else {
							$buff = $buff . '<div class="colorToneBox" value="' . $ColorGroup . '" >' . $genColor . '</div>';
						}
						$genColor = '';
					}
				}
				$option .= $buff;
		}
		echo $option . '<div class="colorToneLine"></div>';
	}

	function genBackgroundImage($aBackgroundImages, $customImageName, $urlProjectBGImg)
	{
		$urlImage = WEB_THEME_URL . '/rvs_library/background/';

		$option = '<div id="listBackgroundImage" >
				<img class="setBackgroundImage" src="' . $urlImage . 'no-image-01.jpg" bgimg="" bgpreview="" />';
		if(!empty($customImageName)) {
			$sBuff = '<img id="setCustomBackgroundImage" class="setBackgroundImage" src="%scustom_background/%s" bgimg="images/custom_background/%s" bgpreview="%scustom_background/%s" />';
			$option .= sprintf($sBuff, $urlProjectBGImg, $customImageName, $customImageName, $urlProjectBGImg, $customImageName);
		} else {
			$option .= '<img id="setCustomBackgroundImage" class="setBackgroundImage" src="" bgimg="" bgpreview="" style="display:none;" />';
		}
		foreach ($aBackgroundImages as $kBackgroundImages => $vBackgroundImages) {
			preg_match('/([\w-_]+).(\w+)$/', $vBackgroundImages, $matchBackgroundImages);
			$sBuff = '<img class="setBackgroundImage" src="%spreview/%s_pre.%s" bgimg="images/background/%s" bgpreview="%s%s" />';
			$option .= sprintf($sBuff, $urlImage, $matchBackgroundImages[1], $matchBackgroundImages[2], $vBackgroundImages, $urlImage, $vBackgroundImages);
		}
		echo $option . '</div>';
	}

	/**
	 * for build projectJsOn data to click more project
	 *
	 * @param unknown_type $projectJsOnUrl
	 * @return unknown_type
	 */
	function includeProjectJsOnUrl($projectJsOnUrl)
	{
            $code = <<< EOF
<script type="text/javascript" src="$projectJsOnUrl"></script>
EOF;
		echo $code;
	}

	function isIncludeFileJson($fileName) {
		$projectId = SGL_Session::get('rvs_project_id');
		if ($fileName == 'freeImages.json'
			&& is_file(WEB_THEME_PATH . '/js/rvsitebuilder/' . $fileName) == true) {
			return true;
		} elseif ( is_file(REAL_PROJECT_PATH .'/'. $projectId . '/json/' . $fileName) == true) {
			return true;
		}
		return false;
	}

	function isDevMode()
	{
		$req = SGL_Request::singleton();
		$mgr = strtolower($req->get('managerName'));
		if ($mgr == 'rvwysiwyg') {
			$path = RVWYSIWYG_ROOT_PATH;
			$devpath = $path . '/live/devmode.txt';
		} elseif ($mgr == 'rvwysiwyguikit') {
			$path = RVWYSIWYG_UIKIT_ROOT_PATH;
			$devpath = $path . '/live/devmode.txt';
		}
		if(isset($devpath) && is_file($devpath) == true){
			SGL::logMessage('run isDevMode=1', PEAR_LOG_DEBUG);
			self::_detectRvwysLivePerm($path);
			return true;
		} else {
			SGL::logMessage('run normal mode', PEAR_LOG_DEBUG);
			return false;
		}
	}

	/**
	 * กรณี rvwys devmode
	 * จะ validate permission file live
	 */
	private static function _detectRvwysLivePerm($path = null)
	{
		$rvwysLive = $path . '/live';
		$aFile = array(
				$rvwysLive . '/rvwysiwyg.css',
				$rvwysLive . '/rvwysiwyg-ui.css',
				$rvwysLive . '/rvwysiwyg-editable.css',
				$rvwysLive . '/rvwysiwyg.js',
				$rvwysLive . '/rvwysiwyg-ui.js',

				//uikit
				$rvwysLive . '/rvwysiwyg-uikit.css',
				$rvwysLive . '/rvwysiwyg-uikit-ui.css',
				$rvwysLive . '/rvwysiwyg-editableuikit.css',
				$rvwysLive . '/rvwysiwyg-uikit.js',
				$rvwysLive . '/rvwysiwyg-uikit-ui.js',
		);
		$str = "";
		foreach ($aFile as $path) {
			if (is_file($path) == true && is_writable($path) == false ) {
				$str .= "sudo chmod 777 " . $path . "<br>";
			}
		}
		if ($str != "") {
			echo "RVWYSIWYG is Develop mode, Please change permission to 777 <br>" . $str;
			exit;
		}
	}

	/**
	 *
	 * @return Ambigous <object, string>|boolean
	 */
	static function isCallCpanel54Api()
	{
		$oCp = CpHandle::factory();
		if (SGL::isError($oCp) === true) {
			SGL_Error::pop();
			return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
		}

		$res = $oCp->getServerSoftwareInfo();
		if (isset($res['version']) && isset($res['software'])
		&& $res['software'] == 'cpanel'
				&& $res['version'] >= '11.54') {
			SGL::logMessage('rvdebug:' . $res['version'], PEAR_LOG_DEBUG);
			return true;
		} else {
			SGL::logMessage('rvdebug: 00000', PEAR_LOG_DEBUG);
			return false;
		}
	}

	/**
	 * if project long over 25 character to cut
	 *
	 * @param string $projectName
	 * @return Ambigous <unknown, string>
	 */
	static function shortProjectName($projectName = null)
	{
		//echo mb_strlen($projectName) . ' ';
		$max = 25;
		if (mb_strlen($projectName) > $max) {
			mb_internal_encoding('UTF-8');
			$projectName = mb_substr($projectName, 0, $max) . ' ...';
			SGL::logMessage('rvdebug: project_name:' . $projectName, PEAR_LOG_DEBUG);
		}
		return $projectName;
	}

	static function checkRestorProject($projectId)
	{

		$path = REAL_PROJECT_PATH.'/'.$projectId.'/checkrestore.txt';
		SGL::logMessage(' cmd ======'.$path, PEAR_LOG_DEBUG);
		if(is_file($path)){
			return true;
		}else{
			return false;
		}
	}

	/**
	 * แสดงเปลี่ยนภาษา
	 * @return string
	 */
	static function listLangOptions()
	{
		SGL::logMessage('rvdebug:', PEAR_LOG_DEBUG);
		$aLank = RvsLibs_Charset::getAllLangData();

		$lang = $_SESSION['aPrefs']['language'];
		$langSel = $GLOBALS['_SGL']['LANGUAGE'][$lang][4];
		$charsetId = array_search(ucfirst(RvsLibs_String::strtolower($langSel)), $aLank);

		$charsetId = ($charsetId) ? $charsetId : SGL_Session::get('charset_id');

		$langOptions = SGL_Output::generateSelect($aLank, $charsetId);
		return $langOptions;

	}

	static function LangNameById()
	{
		SGL::logMessage('rvdebug:', PEAR_LOG_DEBUG);
		$aLank = RvsLibs_Charset::getAllLangData();
		$lang = $_SESSION['aPrefs']['language'];
		$langSel = $GLOBALS['_SGL']['LANGUAGE'][$lang][4];
		$charsetId = array_search(ucfirst(RvsLibs_String::strtolower($langSel)), $aLank);
		return $aLank[$charsetId];
	}
	static function LangId()
	{
		SGL::logMessage('rvdebug:', PEAR_LOG_DEBUG);
		$aLank = RvsLibs_Charset::getAllLangData();
		$lang = $_SESSION['aPrefs']['language'];
		$langSel = $GLOBALS['_SGL']['LANGUAGE'][$lang][4];
		return $charsetId = array_search(ucfirst(RvsLibs_String::strtolower($langSel)), $aLank);
	}
	static function listLangLI()
	{
		SGL::logMessage('rvdebug:', PEAR_LOG_DEBUG);
		$aLank = RvsLibs_Charset::getAllLangData();
		$lang = $_SESSION['aPrefs']['language'];
		$langSel = $GLOBALS['_SGL']['LANGUAGE'][$lang][4];
		$charsetId = array_search(ucfirst(RvsLibs_String::strtolower($langSel)), $aLank);

		 $charsetId = ($charsetId) ? $charsetId : SGL_Session::get('charset_id');
		$langOptions = SGL_Output::generateSelect($aLank, $charsetId);
		$data = '';
		foreach ($aLank as $key=>$val) {
			$data .= '<li><a href="javascript:void(0);" class="setFontSize" key="'. $key . '"><span>'. $val . '</span></a></li>';
		}
		return $data;
	}

	static function isMasterPage($id = null)
	{

		if (!$id) {
			return false;
		}

		if ($id == '1') {
			return false;
		}

		return true;
	}

	/**
	 * ถ้าไม่เคย set page value ไว้ แสดง project value
	 *
	 * @param unknown $pageValue
	 * @param unknown $projectValue
	 * @return boolean
	 */
	static function getPageValue($pageValue, $projectValue)
	{
		return ($pageValue) ? $pageValue : $projectValue;
	}

	static function listFonts()
	{
		$aFonts = RvsLibs_Util::getFonts();
		$jsString = '[';
		foreach ($aFonts as $val) {
			$jsString .= '\''.$val.'\',';
		}
		$jsString = trim($jsString, ',') . ']';
		return $jsString;
	}

	static function getEmailSystem()
    {
    	$aData = array();
    	$projectId = RvsLibs_Project::getProjectId();
    	$fileSetting = RvsLibs_File::buildPath(array(RVS_USER_HOME,'.rvsitebuilder', 'websitepublish', $projectId, 'Setting.ini.php'));
    	if (is_file($fileSetting)) {
    		include $fileSetting;
    		$aData = $mailConf;
    	}
    	return json_encode($aData);
   }

   static function getMsgNewEditorUrl()
   {
   	$action = (SGL_Output::isV6Session() == true) ? 'action/switchtoUIv5' : 'action/switchtoUIv6';
   	$url = SGL_Output::makeUrl("","sitebuilder","sitebuilder") . $action;
   	$aUrl = array('UrlNewEditor' => $url);
   	return RvsLibs_String::translate('Create project new  editor of RVsitebuilder','vprintf', $aUrl);
   }

   static function getIndexData($aData, $file, $key)
   {
   		return (isset($aData[$file][$key])) ? $aData[$file][$key] : '';
   }

   static function isCheckbokCategory($aData, $file, $key, $cateId)
   {
   		$categoryText = (isset($aData[$file][$key])) ? $aData[$file][$key] : '';
   		$aData = explode(',', $categoryText);
   		if (count($aData) && in_array($cateId, $aData)) {
   			return true;
   		}

   		return false;
   }

   static function isShowImages($aData, $file)
   {
   	$isShow = (isset($aData[$file])) ? true : false;

   	if ($isShow == true) {
   		return ' display:none; ';
   	}

   }

   static function countArrayByIndex($aImagesDB,$aFileByFolder)
   {
   		$aData = array();
   		foreach ($aImagesDB as $file => $v) {
   			if (isset($aFileByFolder[$file])) {
   				$aData[] = $file;
   			}
   		}
   		return count($aData);
   }

   static function getFileName($file)
   {
   	    return str_replace('-dot-', '.', $file);
   }

   static function getImagesSource($aSourceImage,$folder)
   {
   		$no = 1;
   		if (isset($aSourceImage[$folder])) {
   			foreach ($aSourceImage[$folder] as $path) {
   				$str .= sprintf('%s. <a href="%s" target="_blank">%s</a><br>' ,$no, $path, $path);
   				$no++;
   			}
   		}
   		echo $str;
   }

}
?>