﻿
Type.registerNamespace('EPG.MCF.SearchControl');

EPG.MCF.SearchControl.SearchControlBehavior = function(element) {


    EPG.MCF.SearchControl.SearchControlBehavior.initializeBase(this, [element]);

    this._ImmediateNav=true;
    this._NewWindow=false;
    this._LastURL='';
    this._LastText='';
    this._TextID="";
    this._TextField=null;    
    this._ArticleText="";     
    this._ArticleTextID="";
    this._ArticleTextField=null;    
    this._Text="";                
    this._WatermarkText="Facilities Search";
    this._ArticleWatermarkText="M&C Search";        
    this._AutoCompleteBehavior=null; 
    this._SearchType="DEST_HOT";
    this._waterMarkBehavior=null;
    this._ArticlewaterMarkBehavior=null;
    this._ServiceURL="/meeting-facilities";
    this._DetailDomain="";
    this._EnableCaching =false;
    this._ArticleOnly =false;
    this._DropWidth  = 285;
    this._MinimumPrefixLength  = 2;
    this._CompletionInterval  = 250;
    this._CompletionSetCount  = 20;

    if (!this._ArticleOnly){
        this._rdoTypeD = $get(this._element.id + "_rdoTypeD");        
        this._rdoTypeP = $get(this._element.id + "_rdoTypeP");
        this._header_onclick$delegate = Function.createDelegate(this, this._header_onclick);
        this._ItemSelected$delegate = Function.createDelegate(this, this._ItemSelected);
        this._ExecSearch$delegate = Function.createDelegate(this, this._ExecSearch);
    }
    this._KeyPress$delegate = Function.createDelegate(this, this._KeyPress);   
    this._ExecArtSearch$delegate = Function.createDelegate(this, this._ExecArtSearch);
    this._KeyDown$delegate = Function.createDelegate(this, this._KeyDown);
  
}

EPG.MCF.SearchControl.SearchControlBehavior.prototype = {

    initialize : function() {
        EPG.MCF.SearchControl.SearchControlBehavior.callBaseMethod(this, 'initialize');
        
        this._ArticleTextField=$get(this._ArticleTextID)                    
        this._ArticleTextField.value= this._ArticleText 
         
        if (!this._ArticleOnly){
            this._TextField=$get(this._TextID) 
            this._TextField.value= this._Text 
            $addHandlers(this._rdoTypeD, {click:this._header_onclick$delegate});
            $addHandlers(this._rdoTypeP, {click:this._header_onclick$delegate});        
            $addHandlers(this._TextField, {onkeypress:this._KeyPress$delegate});
            $addHandlers($get(this._element.id + "_btnSearch"), {click:this._ExecSearch$delegate});
        }
        $addHandlers(this._ArticleTextField, {onkeypress:this._KeyPress$delegate});
        $addHandlers($get(this._element.id + "_btnSearchArt"), {click:this._ExecArtSearch$delegate});
        $addHandlers(document, {keydown:this._KeyDown$delegate});

        this._ArticlewaterMarkBehavior = $create(AjaxControlToolkit.TextBoxWatermarkBehavior, {"WatermarkCssClass":"_mcs_WM","WatermarkText":this._ArticleWatermarkText,"id":"_mcs_bhv_wm_art"}, null, null, this._ArticleTextField);
        if (!this._ArticleOnly){         
            this._waterMarkBehavior = $create(AjaxControlToolkit.TextBoxWatermarkBehavior, {"WatermarkCssClass":"_mcs_WM","WatermarkText":this._WatermarkText,"id":"_mcs_bhv_wm"}, null, null, this._TextField);
            this._AutoCompleteBehavior= $create(AjaxControlToolkit.AutoCompleteBehavior, {
                 "completionInterval":this._CompletionInterval,
                 "completionListCssClass":"_mcs_ac_ListElement",
                 "completionListItemCssClass":"_mcs_ac_ListItem",      
                 "highlightedItemCssClass":"_mcs_ac_ListItemHighlighted",
                 "completionSetCount":this._CompletionSetCount,
                 "contextKey":this._SearchType,
                 "delimiterCharacters":"",
                 "dropWidth":this._DropWidth ,
                 "enableCaching":this._EnableCaching ,
                 "id":"_mcs_bhv_ac",
                 "minimumPrefixLength":this._MinimumPrefixLength ,
                 "serviceMethod":"GetCompleteList",
                 "servicePath":this._ServiceURL + "/AutoComplete.asmx",
                 "useContextKey":true}, {"itemSelected":this._ItemSelected$delegate}, null,  this._TextField);

            this._AutoCompleteBehavior._popupBehavior._positioningMode=AjaxControlToolkit.PositioningMode.BottomRight
            this._SetWM();
        }
   
    },

    dispose : function() {
    
         if (!this._ArticleOnly){         
            $common.removeHandlers(this._rdoTypeD, {click:this._header_onclick$delegate});
            $common.removeHandlers(this._rdoTypeP, {click:this._header_onclick$delegate});
            $common.removeHandlers(this._TextField, {onkeypress:this._KeyPress$delegate});
    }
        $common.removeHandlers(document, {keydown:this._KeyDown$delegate});
        $common.removeHandlers(this._ArticleTextField, {onkeypress:this._KeyPress$delegate});
        $common.removeHandlers($get(this._element.id + "_btnSearchArt"), {click:this._ExecArtSearch$delegate});
     
        EPG.MCF.SearchControl.SearchControlBehavior.callBaseMethod(this, 'dispose');
    },

    _ItemSelected: function (s,a){
        var u=a.get_value().split('|')[0]+'?AC=1';
        try{ntptAddPair( 'val',this.get_Text())}catch(e){};    
        try{ntptAddPair( 'val2',this._SearchType)}catch(e){};    
        try{ntptAddPair( 'val3',u)}catch(e){};    
        try{ntptEventTag('ev=' + 'AC_'  + this._SearchType )}catch(e){};       
        try{pageTracker._trackEvent('AutoC', 'AC_'  + this._SearchType,this.get_Text(), u)}catch(e){};
        this._LastURL=this._DetailDomain + u
        if (this._ImmediateNav){ this._OpenURL(this._LastURL,true)}
    }  ,


    _OpenURL: function (u,b){    
        //do this to get referer on window.location calls
        var a = document.createElement("a"); 
        if(!a.click) {window.location = u;  return;} 
        a.setAttribute("href", u); 
        if (this._NewWindow && !b){a.setAttribute("target", "_blank")} 
        a.style.display = "none"; 
        document.body.appendChild(a); //prototype shortcut
        a.click();
    },

    _header_onclick : function(e) {
        var t="DEST_HOT"
        if  (this._rdoTypeP.checked){t="HOT"} 
        this.set_SearchType(t);
        this._SetWM();
        
        if (this.get_Text()!=''){
            if (this._waterMarkBehavior.get_WatermarkText()!=this.get_Text()){
                 if (this._AutoCompleteBehavior){
                    this._AutoCompleteBehavior._cache = {};
                    this._AutoCompleteBehavior._currentPrefix = null;
                    this._AutoCompleteBehavior._textBoxHasFocus = true;
                    var oldMinimumPrefixLength = this._AutoCompleteBehavior.get_minimumPrefixLength();
                    this._AutoCompleteBehavior.set_minimumPrefixLength(0);
                    this._AutoCompleteBehavior._onTimerTick(null, null);
                    this._AutoCompleteBehavior.set_minimumPrefixLength(oldMinimumPrefixLength);
                }
            }
        }


    },

    _SetWM: function (){
        this._LastURL='';this._LastText=''
    },

    _ExecSearch: function (e){
        this._cnEvt(e); var s=this.get_Text(); var se=escape(s);
        if (s!='' && s!='Facilities Search')
        {
            if (this._LastURL!='' && this._LastText==s){this._OpenURL(this._LastURL,true)}
            else if (this._SearchType=='HOT'){this._OpenURL(this._DetailDomain + "/meeting-facilities/hotels/Search?hn=" + se,true)}
            else {this._OpenURL(this._DetailDomain + "/meeting-facilities/search?pst=" + se + '&typ='+this._SearchType,true)}
        }else{
            return false;
        }
    },

    _ExecArtSearch: function (e){
        this._cnEvt(e); var s=this.get_ArticleText(); var se=escape(s);
        if (s!='' && s!='M&C Search'){        
       this._OpenURL("/search.aspx?trans=" + se,false)
       }
    
    },
    
    _KeyPress: function (e){
        if(e && e.keyCode == Sys.UI.Key.enter){this._cnEvt(e);return false;}
    } ,
    _KeyDown: function (e){
       try{
        if(e && e.keyCode == Sys.UI.Key.enter){
            if (this._TextID==e.target.id){
                this._ExecSearch(e);this._cnEvt(e);return false;
            }else if (this._ArticleTextID==e.target.id){
                this._ExecArtSearch(e);this._cnEvt(e);return false;
            }
        }}catch(err){}
     },

    get_Text : function() {return this._TextField.value;},
    set_Text : function(value) {
        this._Text = value; 
        if(this._TextField){this._TextField.value=value}
    },   

    get_ArticleText : function() {return this._ArticleTextField.value;},
    set_ArticleText : function(value) {
        this._ArticleText = value; 
        if(this._ArticleTextField){this._ArticleTextField.value=value}
    },   
    
    get_TextID : function() {return this._TextID;},
    set_TextID : function(value) {this._TextID = value;}, 
      
    get_ArticleTextID : function() {return this._ArticleTextID;},
    set_ArticleTextID : function(value) {this._ArticleTextID = value;},   
        
    
    get_WatermarkText : function() {return this._WatermarkText;},
    set_WatermarkText : function(value) {
        this._WatermarkText = value;
        if (this._waterMarkBehavior){this._waterMarkBehavior.set_WatermarkText(value);}
    },
    

    
    get_ArticleWatermarkText : function() {return this._ArticleWatermarkText;},
    set_ArticleWatermarkText : function(value) {
        this._ArticleWatermarkText = value;
        if (this._ArticlewaterMarkBehavior){this._ArticlewaterMarkBehavior.set_WatermarkText(value);}
    },
    
    get_SearchType : function() {return this._SearchType;},
    set_SearchType : function(value) {
        this._SearchType = value;
        if(this._AutoCompleteBehavior){this._AutoCompleteBehavior._contextKey=value;}
        this._setCookie(value)
    },
    
    get_ServiceURL : function() {return this._ServiceURL;},
    set_ServiceURL : function(value) {this._ServiceURL = value;},
    
    get_DetailDomain : function() {return this._DetailDomain;},
    set_DetailDomain : function(value) {this._DetailDomain = value;},
    
    get_ArticleOnly : function() {return this._ArticleOnly;},
    set_ArticleOnly: function(value) {this._ArticleOnly = value;},        

    get_EnableCaching : function() {return this._EnableCaching;},
    set_EnableCaching : function(value) {this._EnableCaching = value;},        

    get_DropWidth : function() {return this._DropWidth;},
    set_DropWidth : function(value) {this._DropWidth = value;},

    get_MinimumPrefixLength : function() {return this._MinimumPrefixLength;},
    set_MinimumPrefixLength : function(value) {this._MinimumPrefixLength = value;}, 
   
    get_CompletionInterval : function() {return this._CompletionInterval;},
    set_CompletionInterval : function(value) {this._CompletionInterval = value;}, 

    get_CompletionSetCount : function() {return this._CompletionSetCount;},
    set_CompletionSetCount : function(value) {this._CompletionSetCount = value;}, 

    get_ImmediateNav : function() {return this._ImmediateNav;},
    set_ImmediateNav : function(value) {this._ImmediateNav = value;},
    
    get_NewWindow : function() {return this._NewWindow;},
    set_NewWindow : function(value) {this._NewWindow = value;},
   
     _cnEvt: function (evt){try{evt = (evt) ? evt : window.event;evt.returnValue = false;evt.cancelBubble = true;}catch(err){};},
     _setCookie: function (v){var date = new Date();date.setTime(date.getTime()+(365*24*60*60*1000));var expires = "; expires="+date.toGMTString();document.cookie = "MCFSearchType"+"="+v+expires+"; path=/";}
         
    }

EPG.MCF.SearchControl.SearchControlBehavior.registerClass('EPG.MCF.SearchControl.SearchControlBehavior', AjaxControlToolkit.BehaviorBase);

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();