/* 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: sitebuilder.js,v 1.1 2007/07/06 06:52:41 parinya Exp $
// +---------------------------------------------------------------------------+


/**
 * Main Java Script for sitebuilder
 *
 * @package sitebuilder
 * @author Pairote <pairote@rvglobalsoft.com>
 * @author Parinya <parinya@rvglobalsoft.com>
 * @version $Revision: 1.1 $
 * 
 * Depends:
 *  jquery.js
 *  ui.dialog.js (jQuery)
 *  ui.core.js (jQuery)
 *  ui.draggable.js (jQuery)
 *  ui.resizable.js (jQuery)
 *  jquery.bgiframe.js (jQuery)
 *  plugins/labs_json.js (jQuery)
 *  plugins/jquery.form.js (jQuery)
 *  prototype.js
 */

if (window.jQuery && !window.jQuery.sitebuilder) {
    var LOG_PRIORITY = {
            ALERT: 0,
            CRIT: 1,
            ERR: 2,
            WARNING: 3,
            NOTICE: 4,
            INFO: 5,
            DEBUG: 6
    };
    
    (function(jQuery) {
        
        jQuery.sitebuilder = { };
        jQuery.sitebuilder.string = {
                wordwrap: function(text, width, brk, cut) {
            
                    brk = brk || '\n';
                    width = width || 75;
                    cut = cut || false;
                    
                    if (!text) { return text; }
                    text = jQuery.trim(text);
                    var i, j, s, r = text.split("\n");
                    if(width > 0) for(i in r){
                        for(s = r[i], r[i] = ""; s.length > width;
                            j = cut ? width : (j = s.substr(0, width).match(/\S*$/)).input.length - j[0].length
                            || width,
                            r[i] += s.substr(0, j) + ((s = s.substr(j)).length ? brk : "")
                        );
                        r[i] += s;
                    }
                    
                    return r.join("\n");
                },
                decode: function(data) {
                    return     (typeof data =='object')? data:jQuery.json.decode(data);
            }

                
                
        };
        jQuery.sitebuilder.Log = {
                logMessage: function(message, level) {
                    if(window.console && !SGL_PRODUCTION) {
                        if(!document.all) {
                        console.debug(jQuery.sitebuilder.Log.getLogLevelMsg(level) + ': ' + message);
                    
                        }
                    }
                    return this;
                },
                getLogLevelMsg: function(level) {
                    switch (level) {
                        case LOG_PRIORITY.ALERT: return 'Alert';
                        case LOG_PRIORITY.CRIT: return 'Crit';
                        case LOG_PRIORITY.ERR: return 'Error';
                        case LOG_PRIORITY.WARNING: return 'Warning';
                        case LOG_PRIORITY.NOTICE: return 'Notice';
                        case LOG_PRIORITY.INFO: return 'Info';
                        case LOG_PRIORITY.DEBUG: 
                        default: return 'Debug';
                    };
                }
        };

        jQuery.sitebuilder.Ajax = {
            settingsdefault:  {
                /// Default setting
                type: "POST",
                url: RVS_AJAX_INDEX   
            },
            connect: function(param){
                jQuery('body').css({'cursor':'wait'});
                defaultSetting = {
                        type: "POST",
                        url: RVS_AJAX_INDEX   
                };
                
                if ( arguments.length === 2 ) {
                    /*
                    for (k in arguments[1]) {
                        jQuery.sitebuilder.Log.logMessage('Dialog arguments Debug: ' + k, LOG_PRIORITY.DEBUG);
                    }
                    
                    for (k in defaultSetting) {
                        jQuery.sitebuilder.Log.logMessage('Dialog defaultSetting Debug: ' + k, LOG_PRIORITY.DEBUG);
                    }
  */
                    settings = defaultSetting;
                    for (k in arguments[1]) {
                        settings[k] = arguments[1][k];
                    }
                   // settings = jQuery.extend(settings, arguments[1]);
                    //if (this.settingsdefault.waitDialog != undefined) delete this.settingsdefault.waitDialog;
                }
                /*
                for (k in settings) {
                    jQuery.sitebuilder.Log.logMessage('Dialog settings Debug: ' + k, LOG_PRIORITY.DEBUG);
                }
                */
                

                if (settings.skipwaitDialog != undefined && settings.skipwaitDialog == true) {
                
                } else if (settings.waitDialog != undefined && typeof settings.waitDialog == "function") {
                    waitDialog = jQuery("<div/>");
                    waitDialog.bind(
                            "ajaxSend", function(){
                                //alert('send')
                                jQuery('body').css({'cursor':'wait'});
                                if (settings.waitDialog == undefined) {
                                    if (typeof settings.waitDialog !== 'function') {
                                        jQuery('select,object,embed').displayTagProblemIE67('hidden'); 
                                       waitDialog.dialog('open');
                                   }
                                } else {
                                    try{
                                        //alert(settings.waitDialog)
                                        settings.waitDialog("ajaxSend");
                                    } catch (e) {
                                    settings.waitDialog();
                                    }
                                }
                            }
                        ).bind(
                            "ajaxComplete", function(){
                                //jQuery('body').css({'cursor':'default'});
                                if (settings.waitDialog == undefined) {
                                    jQuery('select,object,embed').displayTagProblemIE67('visible'); 
                                    waitDialog.dialog('close');
                                    waitDialog.dialog('destory');
                                    waitDialog.remove();
                                } else {
                                    try{
                                        settings.waitDialog("ajaxComplete");
                                         waitDialog.remove();
                                    } catch (e) {
                                        settings.waitDialog();
                                    }
                                }
                            }
                        );
                } else {
                        
                    waitDialog = jQuery("<div/>").dialog({
                        id: 'waitDialog',
                        modal: true,
                        title: msgPleaseWait,
                        resizable: 'auto',
                        autoOpen: false
                    }).parent().find(".ui-dialog-titlebar-close").hide().end().end();
                    indicator = jQuery("<div/>").addClass("ui-progressbar-indicator").text(msgPleaseWait+"...").appendTo(waitDialog);
                    waitDialog.bind(
                        "ajaxSend", function(){
                            jQuery('body').css({'cursor':'wait'});
                            if (typeof settings.waitDialog != 'function') {
                                 jQuery('select,object,embed').displayTagProblemIE67('hidden'); 
                                waitDialog.dialog('open');
                            } 
                        }
                    ).bind(
                        "ajaxComplete", function(event, XMLHttpRequest, ajaxOptions){ 
                            //jQuery('body').css({'cursor':'default'});
                            if (typeof settings.waitDialog !== 'function') {
                                 jQuery('select,object,embed').displayTagProblemIE67('visible'); 
                                waitDialog.dialog('close');
                                waitDialog.dialog('destory');
                                waitDialog.remove();
                            }
                        }
                    );
                }
                
                jQuery.sitebuilder.Log.logMessage('AJAX Send: '+ param, LOG_PRIORITY.DEBUG);
                /// Setting AJAX
                jQuery.ajaxSetup(settings);
                /// Call AJAX
                
                
                option = {
                    success: function (data, textStatus){
                        jQuery('body').css({'cursor':'default'});
                                        try{
                        data2 = jQuery.json.decode(data);
                                        statusDecode = true;
                                        }catch(e){
                                            statusDecode = false;
                                        }
                                    if (statusDecode === true && data2['errorType'] !== undefined) {
                                        xhr = {};
                                        xhr.status = '500';
                                        xhr.statusText = 'text/json';
                                        xhr.responseText = data;
                                        ajaxOptions = {};
                                        thrownError = {};
                                        this.error(xhr, ajaxOptions, thrownError)
                                        return;
                                    }                        
                        jQuery.sitebuilder.Log.logMessage('AJAX returns: '+ data, LOG_PRIORITY.DEBUG);
                        if (typeof settings.waitDialog === 'function') {
                        
                        } else {
                         jQuery('select,object,embed').displayTagProblemIE67('visible');
                            waitDialog.dialog('close');
                                waitDialog.dialog('destory');
                                waitDialog.remove();
                            }
                            //X-Powered-By Seagull http://seagullproject.org
                            //<hr /> <div id="errorWrapper" class="errorContent">
                        if(typeof data == 'object'){
                            if(typeof settings.callback.doSuccess == 'function') {
                                settings.callback.doSuccess(data);
                            } else {
                                jQuery.sitebuilder.Ajax.doSuccess(data);
                            }
                            
                        }else{
                            //alert('string')
                    
                            if ( (data.match(/^<hr \/>/gi) && data.match(/<div id="errorWrapper" class="errorContent">/gi)) 
                                 || data.match(/<span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>\( ! \)<\/span>/gi)
                            ) {
                                /// PHP Code error
                                ErrDialog = jQuery("<div/>").dialog({
                                    modal: true,
                                    title: 'PHP Error',
                                    width: 'auto',
                                    height: 'auto',
                                    resizable: 'auto',
                                    autoOpen: false,
                                       buttons:{
                                        "Close": function() { ErrDialog.dialog('close'); }
                                    }
                                }),
                                indicator = jQuery("<div/>").addClass("ui-progressbar-indicator").html(data).appendTo(ErrDialog);
                                ErrDialog.dialog('open');
                            } else if(typeof settings.callback.doSuccess == 'function') {

                                settings.callback.doSuccess(data);
                            } else {
                                jQuery.sitebuilder.Ajax.doSuccess(data);
                            }
                        }
                        },
                        error: function (xhr, ajaxOptions, thrownError){
                            jQuery('body').css({'cursor':'default'});
                               /* for filefox
                               xhr.setRequestHeader 
                               xhr.send 
                               xhr.readyState 
                               xhr.status 
                               xhr.channel 
                               xhr.responseXML 
                               xhr.responseText 
                               xhr.statusText 
                               xhr.abort 
                               xhr.getAllResponseHeaders 
                               xhr.getResponseHeader 
                               xhr.sendAsBinary 
                               xhr.overrideMimeType 
                               xhr.multipart 
                               xhr.mozBackgroundRequest 
                               xhr.onload 
                               xhr.onerror 
                               xhr.onprogress 
                               xhr.onuploadprogress 
                               xhr.onreadystatechange 
                               xhr.addEventListener 
                               xhr.removeEventListener 
                               xhr.dispatchEvent 
                               xhr.getInterface 
                               */
                            keyy=''
                            for(key in xhr) {
                                keyy += key+'\n'
                              //  jQuery.sitebuilder.Log.logMessage('AJAX Error returns data: '+ key + " = " + eval("xhr."+key), LOG_PRIORITY.DEBUG)
                            }
                            var defXHR = {};
                            jQuery.sitebuilder.Log.logMessage('AJAX connect error '+ xhr.status +': '+ xhr.statusText, LOG_PRIORITY.ERR);
                            
                            if (typeof settings.waitDialog === 'function'){
                            
                            }else{
                                waitDialog.dialog('close');
                                waitDialog.dialog('destory');
                                waitDialog.remove();
                            }

                            if (xhr.status == 500) {
                                jQuery.sitebuilder.Log.logMessage('AJAX connect response text: '+xhr.responseText, LOG_PRIORITY.ERR);
    
                                ErrorJson = jQuery.json.decode(xhr.responseText);
                                defXHR = ErrorJson;
                                
                                if (ErrorJson.errorType != undefined && ErrorJson.errorType == "MGR") {
                                    defXHR.error = ErrorJson.error;
                                } else if (ErrorJson.errorType != undefined) {
                                    defXHR.errorMessage = ErrorJson.message;
                                } else {
                                    defXHR.errorType = 'UNK';
                                    defXHR.errorMessage = 'Unknown Status.';
                                }
                                
                            } else {
                                defXHR.errorMessage = 'Network connection Error(' + xhr.status + ': '+ xhr.statusText +'), please try again.';
                            }
                                
                            if (typeof settings.callback.doError === 'function') {
                                settings.callback.doError(xhr, ajaxOptions, thrownError,defXHR);
                            } else {
                                jQuery.sitebuilder.Ajax.doError(xhr, ajaxOptions, thrownError,defXHR);
                            }
                        }
                };
                
                if (param.match(/^[#|\.]/)) {
 
                    /// Send Form Id
                    jQuery.sitebuilder.Log.logMessage('Usage ajaxSubmit (jQuery form)', LOG_PRIORITY.ERR);
                    var mp = 'multipart/form-data';
                    //alert('settings.excUrlExternal'+settings.excUrlExternal)
                    if(settings.excUrlExternal) {
                        option.excUrlExternal = settings.excUrlExternal;
                    }
                    jQuery(param).ajaxSubmit(option);
                    
                } else {
                    jQuery.sitebuilder.Log.logMessage('Usage ajax (jQuery default)', LOG_PRIORITY.ERR);
                    option.data = param;
                    jQuery.ajax(option);
                }
                    /// Used data
            },
            doSuccess: function(data) {
                
                    /**
                     * Default process on event success.
                     * If want over write this function, you can setting callback in settings.doSuccess
                     */
            },
            doError: function(xhr, ajaxOptions, thrownError,defXHR) {
                 /**
                 * Default process on event error.
                 * If want over write this function, you can setting callback in settings.doError
                 */
                    try{
                    // try defXHR.error is string
                    var isdefXHRerror = eval('"'+defXHR.error+'"');
                    }catch(e){
                    //  defXHR.error is object
                    var isdefXHRerror = defXHR.error;
                    }
                if (defXHR.errorType === 'MGR') {
                    errorTitle = "Error";
                    errorText = '';
                    if(typeof isdefXHRerror === 'object') {
                        for (k in defXHR.error) {
                            errorText += defXHR.error[k];
                        }
                    } else {
                        errorText += defXHR.error
                    }
                    
                } else {
                    errorTitle = "System";
                    errorText = defXHR.errorMessage;    
                }
                    
                ErrDialog = jQuery(this).dialog({
                    modal: true,
                    title: errorTitle,
                    height: 'auto',
                    resizable: 'auto',
                    autoOpen: false,
                    buttons:{
                        "Close": function() { ErrDialog.dialog('close'); }
                    }
                });
                indicator = jQuery("<div/>").addClass("ui-progressbar-indicator").html(errorText).appendTo(ErrDialog);
           
            }
        };

        /**
         * ฟังก์ชัน restore project directAdmin
         */
        jQuery.sitebuilder.directAdminUpload = {
            isFileType:'', // exp = jpeg|gif|png....|swf
            isFileName:{},
            daOption: {},
            msg:'',
            statusUploaded:false,
            vaildIsFileType:function(formId){
            	obj = this;
            	isTrue = true;
                jQuery(formId).find('.fileDirectAdmin').each(function() {
                	fileName = obj.splitFileName(jQuery(this).val());
                	typeFie = fileName.replace(/\./gi);
                	pathFileType = new RegExp('('+obj.isFileType+')$', 'gi');
                	if(!typeFie.match(pathFileType)) {
                		alert('ERROR ' +fileName +' not match ' +obj.isFileType)
                		isTrue = false;
                	}
                });
                return isTrue;
               
            },
            splitFileName:function(path){
		if(jQuery.browser.mozilla) {
            		// firefox only
            		return path;
            	} else {
            		// IE / Chrome / Safari
            		var pos =path.lastIndexOf(path.charAt(path.indexOf(":")+1)); 
            		return  path.substring(pos+1);
            	}
            },
            matchFileUpload:function(stringHTML,fileName){
                fileName = fileName.replace(/\./gi , '\\.');
                var pathFile = new RegExp('\/(.*)'+fileName, 'gi');
                return stringHTML.match(pathFile);
            },
            connect:  function(formId){
                if ( arguments.length === 2 ) {
                        this.daOption = arguments[1];
                }    
                objDAF = this;
                objDAF.isFileType = (objDAF.daOption.isFileType != null)
                                   ? objDAF.daOption.isFileType
                                   : '';
                if(objDAF.isFileType != '' && objDAF.vaildIsFileType(formId) == false) {
                	return false;
                }
                if(typeof objDAF.daOption.validate == 'function') {
                    validFile = objDAF.daOption.validate(formId);
                    return  (validFile)? true:false;
                } else {
                    jQuery.sitebuilder.Ajax.connect(formId,{
                        excUrlExternal:UPLOAD_DIRECTADMIN_URL,
                        callback: {
                            doSuccess: function(data) {
                            },
                            doError: function(data) {
                            defXHR = jQuery.sitebuilder.string.decode(data);
                            isSucess = false;
                            jQuery('.fileDirectAdmin').each(function(u,i){
                                fileName = objDAF.splitFileName(jQuery(this).val());
                                isSucess = objDAF.matchFileUpload(defXHR.responseText,fileName);
                                if (isSucess) {
                                    objDAF.msg += 'upload file sucess'+fileName + '<br>';    
                                    objDAF.statusUploaded = true;
                                } else {
                                    objDAF.msg += 'upload file faill '+fileName + '<br>';
                                    objDAF.statusUploaded = false;
                                }
                            });
                            if(typeof objDAF.daOption.callback == 'function') {
                                objDAF.daOption.callback(data,objDAF.msg);
                            }
                                
                            }
                        }    
                    });
                }
            }
                
        };
        
        jQuery.sitebuilder.serialize = {
            form: function(Id) {
                var action;
                var settings = {};

                if ( arguments.length == 2 ) {
                    settings = arguments[1];
                }
                if(typeof(Id) == 'object') {
                    var inputParam = Id.find("input").serialize();
                    var selectParam =  Id.find("select").serialize();
                    var textareaParam =  Id.find("textarea").serialize();
                    var resParam = '';
                }else{
                    var inputParam = jQuery(Id + " input").serialize();
                    var selectParam = jQuery(Id + " select").serialize();
                    var textareaParam = jQuery(Id + " textarea").serialize();
                    var resParam = '';
                }
                if (selectParam != '') 
                    resParam += (resParam != '') ? '&' + selectParam : selectParam;

                if (inputParam != '') 
                    resParam += (resParam != '') ? '&' + inputParam : inputParam;
                
                if (textareaParam != '') 
                    resParam += (resParam != '') ? '&' + textareaParam : textareaParam;
                
                return resParam;
            }
        };
        
        jQuery.fn.rvsDialog = function() {
            var action;
            var settings = {};
            var SC_Settings = {};
            var parent;

            var defaultSettings = {
                bgiframe :false,
                modal: true,
                position: 'center',
                height: 'auto',
                width: 400,
                resizable: 'auto',
                draggable: true,
                closeOnEscape :true
            };
            
            if ( arguments.length == 1 ) {
                action = ( arguments[0].constructor == String ? arguments[0] : null );
                SC_Settings = ( arguments[0].constructor == Object ? arguments[0] : null );
            } else if ( arguments.length == 2 ) {
                action = ( arguments[0].constructor == String ? arguments[0] : null );
                SC_Settings = arguments[1];
            } else if ( arguments.length == 3 ) {
                action = ( arguments[0].constructor == String ? arguments[0] : null );
                optionVal = arguments[1];
                configOption = arguments[2];
            }

            return this.each(function(){
                parent = jQuery(this).get(0).id;
                if (action === 'open') {
                    jQuery.sitebuilder.Log.logMessage('Open #'+ parent+' Dialog', LOG_PRIORITY.DEBUG);
                    var ie = jQuery(this);
                    ie.parent().find(".dialog-option").hide().end().end();
                    
                    settingInDesign = jQuery('#' + parent).find(".dialog-option").html();
                    
                  //  jQuery.sitebuilder.Log.logMessage('#'+ parent+' Dialog option:' + settingInDesign, LOG_PRIORITY.DEBUG);
                    
                    var DS_Setting = {};
                    if (settingInDesign != null) {
                        eval('DS_Setting = {' + settingInDesign + '};');
                    } 
                    settings = jQuery.extend(settings, defaultSettings);
                    settings = jQuery.extend(settings, DS_Setting);
                    settings = jQuery.extend(settings, SC_Settings);
       
                    
                    if(settings.modal == true ) {
                        if(jQuery.browser.msie && jQuery.browser.version < 7) {
                            jQuery('select,object,embed').displayTagProblemIE67('hidden'); 
                            var Optselect = ie.parent().find('select,object,embed');
                            for(i = 0; i < Optselect.length; i++){
                                jQuery(Optselect[i]).show();
                                jQuery.sitebuilder.Log.logMessage('select in Dialog : #'+ Optselect[i].id, LOG_PRIORITY.DEBUG);
                            }
                        }
                    }
                    
                     
                        settings.beforeclose = function(){
                        if (settings.doBeforeclose2) {
                             settings.doBeforeclose2();
                             }
                              jQuery('select,object,embed').displayTagProblemIE67('visible'); 
                        }
                    
                    
                    ie.dialog('option', 'autoOpen', false);
                    ie.dialog(settings);
                    ie.dialog('open').parent().find('.ui-dialog-buttonpane').css({'visibility':'visible'});
                    ie.parent().find(".ui-state-default").each(function(){
                    jQuery(this).attr({'id':'button_'+jQuery.md5(jQuery(this).text())})})
                    if (settings.closeOnEscape != true) {
                        // Close x button
                        ie.parent().find(".ui-dialog-titlebar-close").hide().end().end();
                    }
                } else if (action === 'close') {
                    jQuery.sitebuilder.Log.logMessage('Close #'+ parent +' Dialog', LOG_PRIORITY.DEBUG);
                    var ie = jQuery(this);
                    ie.dialog('close');
                    
                } else if (action === 'option') {
                    jQuery.sitebuilder.Log.logMessage('Close #'+ parent +' Dialog', LOG_PRIORITY.DEBUG);
                    var ie = jQuery(this);
                    ie.dialog('option',optionVal,configOption).parent().find('.ui-dialog-buttonpane').css({'visibility':'visible'});              
                }
            });
        };
        
        jQuery.fn.rvsTabs = function() {
         return this.each(function(){
             setTabs = jQuery(this);
         //    setTabs.tabs({ spinner: 'Retrieving data...' });
//             setTabs.tabs({ event: 'mouseover' });
 //good            setTabs.tabs({ fx: { opacity: 'toggle' } });
             //setTabs.tabs({ collapsible: true });
//             setTabs.tabs({ tabTemplate: '<div><a href="#{href}"><span>#{label}</span></a></div>' });
   //          setTabs.tabs({ deselectable: true });
         //    setTabs.tabs({ spinner: 'Retrieving data...' });
             setTabs.tabs().find(".ui-tabs-nav").sortable({axis:'x'})
             setTabs.tabs().tabs('option', 'fx', { opacity: 'toggle' });
             
         });
         };
        jQuery.fn.getSelectVal = function()
        {
            return jQuery(this).find('option:selected').text();
        }
        /*
        
        
        */
        jQuery.fn.convertHtmlToJs = function(data)
        {
            catchData = data;
                try{
                    if (typeof data != 'object') {
                        eval('data = ' + data);
                    }
                this.get(0).innerHTML=data.data;
                jQuery.sitebuilder.Log.logMessage('\n===convertHtmlToJs data===\n' + data.convertJs+'\n=================\n', LOG_PRIORITY.DEBUG);
                eval(data.convertJs);
                return this.get(0).innerHTML;
            
            }catch(e){
                return this.get(0).innerHTML = catchData;
            }
        }
        
        jQuery.fn.LoadingDisplay = function(even, opt) {
            
            if (even == "ajaxSend") {
                jQuery(this).showLoading(opt);
            } else {
                jQuery(this).hideLoading(opt);
            }
      }
        jQuery.fn.LoadingDisplayComplete = function(even, opt){
 
            if (even == "ajaxSend" ) {
                jQuery(this).showLoading(opt);
            }else if (even == 'ajaxComplete') {
                jQuery(this).showLoading(opt);
            } else {
                jQuery(this).hideLoading(opt);
            
            }
      }
 /**
 * @author tanawat & pornthip
 * @doing  show image loading on dialog box jQuery
 */
        jQuery.fn.showLoading = function(opt)
        {
            //alert(this.find('#builditemLoadingCenter').get(0))
            if(!this.find('#builditemLoadingCenter').get(0)) {
                this.parent().find('.ui-dialog-buttonpane').css({'visibility':'hidden'});
                var confWdith = 100;
                var confHeight = 10;
                
                //ui-dialog-title-
                //alert('#ui-dialog-title-'+this.get(0).id)
                dialogHeight = this.height()+65
                var centerw = (this.width()/2)-(confWdith/2);
                var centerh = (dialogHeight/2)-(confHeight/2);
                var itemLoad = '<table cellspacing="1" cellpadding="0" ><tr><td><img  src="'+PUBLIC_IMG_URL+'loading02.gif" alt="" width="29" height="27" border="0"  /></td><td>'+rvsloading+'</td></tr></table>';
                var div = jQuery('<div/>');

                if(opt) {
                    centerw = (opt.left) ? opt.left : centerw;
                    centerh = (opt.top) ? opt.top : centerh;
                }
                  var loadCss = {
                            'position':'absolute'
                            ,'left':centerw+'px'
                            ,'top':centerh+'px'
                            ,'background-color':'#FFFFFF'
                            ,'width':confWdith+'px'
                        };

                div.css(loadCss);
                div.addClass('builditemLoadingCenter');
                div.attr('id','builditemLoadingCenter');
                div.html(itemLoad);
                objLoad = this.append(div);
            }
        }
 /**
 * @author tanawat & pornthip
 * @doing  hide image loading on dialog box jQuery
 */
        jQuery.fn.hideLoading = function(opt)
        {
            
              jQuery('.builditemLoadingCenter').remove();
              //  jQuery('#builditemLoadingCenter').remove();
              this.parent().find('.ui-dialog-buttonpane').css({'visibility':'visible'});
              
        }
        jQuery.fn.buildDialogError = function(defXHR,afterClose)
        {
        /**
                 * Default process on event error.
                 * If want over write this function, you can setting callback in settings.doError
                 */
                    try{
                    // try defXHR.error is string
                    //var isdefXHRerror = eval('isdefXHRerror = "'+defXHR['error']+'"');
                    var isdefXHRerror = (jQuery.json.decode(defXHR.error));
                    }catch(e){
                    //  defXHR.error is object
                    var isdefXHRerror = defXHR['error'];
                    }
                if (defXHR.errorType === 'MGR') {
                    var errorTitle = "Error";
                    var errorText = '';
                    if(typeof (isdefXHRerror) === 'object' ) {
                        for(key in isdefXHRerror) {
                        if( typeof (isdefXHRerror[key]) != 'function' )     
                            errorText += isdefXHRerror[key];
                        }
                    } else {
                        errorText += defXHR.error
                  }
                    
                } else {
                    errorTitle = "System";
                    errorText = defXHR.message;    
                }
                    
                ErrDialog = jQuery("<div/>").dialog({
                    modal: true,
                    title: errorTitle,
                    height: 'auto',
                    resizable: 'auto',
                    autoOpen: false,
                    buttons:{
                        "Close": function() { 
                            ErrDialog.dialog('close');
                            if (typeof(afterClose) == 'function') {
                                afterClose();
                            }
                        }
                    }
                });

                aa = jQuery("<div/>").addClass("ui-state-highlight ui-corner-all").appendTo(ErrDialog);
                dd = jQuery("<p/>").appendTo(aa);
                bb = jQuery("<span/>").addClass("ui-icon ui-icon-info").css({'float':'left','margin-right':'0.3em'}).appendTo(dd);
                cc = jQuery("<span/>").attr('id','msg').html(errorText).appendTo(dd);
                ErrDialog.dialog('open');
                return this;
        }
        
         jQuery.fn.buildFrame = function(obj) {

         if ( jQuery(this).find("#"+obj.id).is(":visible")) {
           // alert("remove")
                jQuery(this).find('#'+obj.id).remove()
            }
            oThis = jQuery(this)
            ifhtml = jQuery("<iframe/>").attr(obj).appendTo(oThis)
            setGoto = obj.src ? obj.src:'';
            
             oThis.find("#"+obj.id).attr({"src":""})
         oThis.find("#"+obj.id).attr(obj)
         }
        
        jQuery.fn.displayTagProblemIE67 = function(val){  
         if(jQuery.browser.msie && jQuery.browser.version < 7) {
                                 jQuery(this).css({'visibility':val}); 
                                 }
        }
        jQuery.fn.wordwrap = function(options)
        {
            var settings = {
                width: 50,
                cut:true,
                brk: '<br/>\n'
            };
            
            jQuery.extend(settings, options);
                
            return this.each(function() 
            {
                jQuery(this).html(jQuery.sitebuilder.string.wordwrap(jQuery(this).html(),settings.width,settings.brk,settings.cut));
            });
        }


        
        /**
         * Open new window
         */
        jQuery.fn.openWindown = function(url, name, isEnabledirtyForm) {
            var options = {
                url :  url,
                name : (name) ? name : ''
            };
            
            if (isEnabledirtyForm) {
                newWindows()
            } else {
                newWindows()
            }
            
            function newWindows() {
                var isIe = document.all? true: false;
                if (options.name){
                    win = window.open(options.url, options.name);
                }else {
                    win = window.open(options.url);
                }
                window.focus();
                if (isIe = true){
                    win.resizeTo(window.screen.availWidth, window.screen.availHeight);
                    win.moveTo(0, 0);    
                }
                win.focus();
            };
        }
        
        /**
         * Dirty form windown
         */
         jQuery.fn.dirtyFormWin = function() {
            var winName = window.name;
            //  var lostWarning = "You have made any changes to the fields without submitting, your changes will be lost.";
            //  var lostWarning = document.getElementById("dirtyFormMsg").value;

            if (winName == "edtingframe") {

                aDirtyForm = isDirtyFormWYS();
                if (aDirtyForm == true) return  lostWarning;

            } else {
    
                if (document.getElementById("thisStep")) {
                    var thisStep =  document.getElementById("thisStep").value;      //alert("thisStep=" + thisStep);
                } else {
                    var thisStep = 0;       //alert("thisStep=" + thisStep);
                }
            
                if (thisStep != 4 & thisStep !=3 & thisStep !=5 & thisStep !=2) {
                    aDirtyForm = isDirtyForm();
                    if(aDirtyForm == true) return  lostWarning;
                }else if (thisStep == 4) {               
                    aDirtyForm = isDirtyFormPageStructure();
                    if (aDirtyForm == true) return  lostWarning;
                } else if (thisStep == 3) {               
                    aDirtyForm = isDirtyForm();
                    aDirtyFormHidden =  isDirtyHiddenField();
               
                    if (aDirtyForm == true ) return lostWarning;         
                    if (aDirtyFormHidden == true ) return  lostWarning;  
                }           
            
            }
        }
         
        /*
         * make Show subMenu by Div
         * oTarget = '#idDivShowSubmenu'
         * evt = 'show','hide'
         * add by darawan 26/02/53
         * */
       jQuery.fn.subMenu = function(oTarget,staDis){
               if(staDis == 'show'){
                   a = jQuery(this);
                   ap = a.position();
                   jQuery(oTarget).css({
                       left:ap.left+a.width(),
                    top:ap.top
                }).each(function(){
                    //jQuery.sitebuilder.Log.logMessage('fn subMenu : frmid='+jQuery(oTarget).attr('frmID'), LOG_PRIORITY.DEBUG);
                    jQuery(oTarget).show();            
                });
            } else if (staDis == 'hide'){
                jQuery(this).bind('mouseleave',function(){
                    //jQuery.sitebuilder.Log.logMessage(' jQuery.fn.subMenu : staDis='+staDis, LOG_PRIORITY.DEBUG);
                    jQuery(oTarget).hide();
                });    
            }
               return this;
        }
        
    })(jQuery);
}

function print_js(obj){

    var de = '';
        for(key in obj) {
            de+=key+'\n'
        }
    return de;
}

