// prototypes; misc functions
Array.prototype.in_array = function(needle) {
  for(var i=0; i<this.length; i++) {
    if(this[i] == needle) {
      return true;
    }
  }
  return false;
}

// shared mobile functions
var mobile = {};

mobile.spaceids = {
  demo: {
    yahoo: '151500372',
    mail: '151500374',
    search: '151500182'
  },
  video: {
    yahoo: '151500360',
    mail: '151500373',
    search: '151500376'
  }
};

mobile.cleanWSOutput = function(text) {
  return text.replace(/<\!--.+-->/gim, '');
};

mobile.getUrlHash = function() {
  var h = location.hash.split('#');
  return h[1] ? h[1] : ''; 
};

mobile.showList = function(e, params) {
  var country = params[0];
  var data = params[1];
  var list = params[2];
  var count = params[3];
  var current = params[4];
  for (var i=1; i<=count; i++) {
    var d = data+i;
    if (i == current) {
      mobile.toggleTable(d);
      //mobile.toggleList(list+i);
      mobile.toggleClass(country+i, 'hideTrigger');
    } else {
      YAHOO.util.Dom.addClass(d,'hideElem');
      YAHOO.util.Dom.addClass(country+i, 'hideTrigger');
      YAHOO.util.Dom.removeClass(list+i, 'selected');
    }
};
                                     }
mobile.toggleElementDisplay = function(Y, ev, el, d) {
  if (!d) {
    d = 'block';
  }

  if (Y.get('#' + el)) {
    ev.preventDefault();
    var el = Y.get('#' + el);
    if (el.getStyle('display') == d) {
      el.setStyle('display', 'none');
    } else {
      el.setStyle('display', d);
    }
  }
};

mobile.showElementDisplay = function(Y, el) {
  if (Y.get('#' + el)) {
    var el = Y.get('#' + el);
    el.setStyle('display', 'block');
  }
};

mobile.hideElementDisplay = function(Y, el) {
  if (Y.get('#' + el)) {
    var el = Y.get('#' + el);
    el.setStyle('display', 'none');
  }
};

mobile.toggleClass = function(Y, cName) {
  var el = Y;
  if (!YAHOO.util.Dom.hasClass(el,cName)) {
    YAHOO.util.Dom.addClass(el,cName);
  } else {
    YAHOO.util.Dom.removeClass(el,cName);
  }
};

mobile.toggleTable = function(e) {
  if (document.getElementById(e)) {
    mobile.toggleClass(e,'hideElem');
  }
};


mobile.initSmsCta = function(Y) {
  if (window.mws) {
    mws.initInput();
  }

  if (Y.get('#cta2') && typeof mws != "undefined") {
    Y.on('click', function(e) { mws.procSMSForm(); }, '#cta2');
  }

  if (Y.get('#charges')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal');
      mobile.toggleElementDisplay(Y, e, 'charges');
    }, '#charges');
  }

  if (Y.get('#charges_close_link')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal');
      mobile.toggleElementDisplay(Y, e, 'charges');
    }, '#charges_close_link');
  }

  if (Y.get('#charges2')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal2');
      mobile.toggleElementDisplay(Y, e, 'charges2');
    }, '#charges2');
  }

  if (Y.get('#charges_close_link2')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal2');
      mobile.toggleElementDisplay(Y, e, 'charges2');
    }, '#charges_close_link2');
  }

  if (Y.get('#charges_ver')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal_ver');
      mobile.toggleElementDisplay(Y, e, 'charges_ver');
    }, '#charges_ver');
  }

  if (Y.get('#charges_close_link_ver')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'legal_ver');
      mobile.toggleElementDisplay(Y, e, 'charges_ver');
    }, '#charges_close_link_ver');
  }

  if (Y.get('#cta_close_btn')) {
    //Y.on('click', function(e) {
    //  mobile.toggleElementDisplay(Y, e, 'ctamodule');
    //  mobile.toggleElementDisplay(Y, e, 'number_flyout');
    //}, '#cta_close_btn');
  }

  if (Y.get('#change_data_link')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'thankyou');
      mobile.toggleElementDisplay(Y, e, 'ctamodule');
      mws.showSMSForm();
    }, '#change_data_link');
  }

  if (Y.get('#change_data_link_badcarrier')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'sorry');
      mobile.toggleElementDisplay(Y, e, 'sorry_badcarrier');
      mobile.toggleElementDisplay(Y, e, 'ctamodule');
      mws.resetSMSForm();
    }, '#change_data_link_badcarrier');
  }

  if (Y.get('#change_data_link_badnumber')) {
    Y.on('click', function(e) {
      mobile.toggleElementDisplay(Y, e, 'sorry');
      mobile.toggleElementDisplay(Y, e, 'sorry_badnumber');
      mobile.toggleElementDisplay(Y, e, 'ctamodule');
      mws.resetSMSForm();
    }, '#change_data_link_badnumber');
  }
};

mobile.playVideo = function(vid, sid) {
  document.getElementById('video').style.margin = '20px 0';
  document.getElementById('video_info').style.display = 'none';
  document.getElementById('video_snapshot').style.display = 'none';
  document.getElementById('video_close').style.display = 'block';
  document.getElementById('video_wrapper').style.display = 'block';

  var so = new SWFObject('http://d.yimg.com/m/up/ypp/default/player.swf', 'onnetwork_videoplayer', '300', '200', '10.0.22.87', '#000');
  so.addVariable('vid', vid);
  so.addVariable('pageSpaceId', sid);
  so.addVariable('referrerDomain', 'mobile.yahoo.com');
  so.addVariable('eventHandler', 'mediaPlayerInterface');
  so.addVariable('autoPlay', 1);
  so.addParam("allowScriptAccess", "always");
  so.addParam("wmode", "transparent");
  so.addParam("allowFullScreen", "true");
  so.write('video_player');
}


mobile.stampPage = function(Y, spaceid, params) {
  // spaceid is the space id used to stamp the page with
  // params is format: 'key1:value1;key2:value2:'
  if (!params) {
    params = '';
  }

  var uri = '/bin/stampPage.mw?spaceid='+spaceid+'&params='+params; 
  Y.io(uri, {
    on: {
      success: function(id, o, args) {
        Y.get('#pagetracking').set('innerHTML', o.responseText);
      },
      failure: function(id, o, args) {
        Y.get('#pagetracking').set('innerHTML', o.responseText);
      }
    }
  });
}

mobile.trackBeacon = function(Y, beacon) {
  if (Y.get('#beacontracking') && beacon) {
    var img = '<img width="1" height="1" border="0" src="http://pclick.internal.yahoo.com/p/s='+beacon+'&t='+Math.random();+'" />';
    Y.get('#beacontracking').set('innerHTML', img);
  } else {
    Y.get('#beacontracking').set('innerHTML', '');
  }
}

// main js starts here
YUI().use('node', 'node-menunav', 'event', 'io', 'json', 'anim-base', function(Y) {
  var init = function() {
    var intl = '';
    var lang = '';
    if (window.ymobpage && ymobpage.intl) {
      if (ymobpage.intl == 'cf') {
        intl = 'cafr.';
      } else if (ymobpage.intl == 'e1') {
        intl = 'us.';
        lang = 'es-us';
      } else if (ymobpage.intl != 'us') {
        intl = ymobpage.intl + '.';
      }
    }
    // global var section
    var emulatorUrl = 'http://'+intl+'new.m.yahoo.com/';
    var emulatroParams = '.ignore=emulator&.lang='+lang ;
    var emulatorSearchText = 'Yahoo! Search';
    
    if (window.ymobpage && ymobpage.emul_search_text) {
      emulatorSearchText = ymobpage.emul_search_text;
    }

    /*
    if (Y.get('#navbar')) {
      Y.on('contentready', function() {
        this.plug(Y.Plugin.NodeMenuNav, {mouseOutHideDelay:1000});
        Y.get('#nav_dropdown').removeClass('position_hidden');
      }, '#navbar');
    } // END #navbar
    */

    // global nav
    if (Y.get('#navbar')) {
      Y.on('mouseover', function (e) {
        Y.get('#nav_dropdown').removeClass('position_hidden');
        Y.get('#navbar .yui-menu-label-services').addClass('yui-menu-label-menuvisible');
        Y.get('#navbar .yui-menu-label-services').addClass('yui-menu-label-active');
        Y.get('#nav_dropdown').setXY([Y.get('#nav_services').getX(), Y.get('#nav_services').getY()+27]);
      }, '#nav_services');

      Y.on('mouseout', function (e) {
        Y.get('#nav_dropdown').addClass('position_hidden');
        Y.get('#navbar .yui-menu-label-services').removeClass('yui-menu-label-menuvisible');
        Y.get('#navbar .yui-menu-label-services').removeClass('yui-menu-label-active');
      }, '#nav_services');
    } // END #navbar


    // devcenter nav
    if (Y.get('#dcnav_bar')) {
      var oMenuBar = new YAHOO.widget.MenuBar('dcnav_bar', { autosubmenudisplay: true,lazyload: 750,iframe: true,constraintoviewport:false,showdelay: 10,clicktohide:false });
    } // END #dcnav_bar

    if (Y.get('#alacarte_services')) {
       var subnavEl = YAHOO.util.Dom.get('alacarte_services').getElementsByTagName('li').length;
      if (subnavEl <= 11) {
        Y.get('.yui-nav').addClass('small_subnav');
      }
    } // alacarte subnavigation

    // messenger-carousel 
    if (Y.get('#messenger-carousel')) {
      // this is whole block is old v3 code; must rewrite
      if(YAHOO.util.Dom.get('carousel-options')) {
        var listItems=YAHOO.util.Dom.get('carousel-options').getElementsByTagName('li').length;
      }

      if(YAHOO.util.Dom.get('messenger-carousel')) {
        var mc = document.getElementById('mycarousel');
        var pa = document.getElementById('prev-arrow');
        var na = document.getElementById('next-arrow');
      }

      var handlePrevButtonState = function (type, args) {
        var enabling = args[0];
        var leftImage = args[1];
        if(enabling) {
          leftImage.src = "http://l.yimg.com/a/i/us/cl/mob/v3/gen/sms_mess/btn_back_on_1_1.png";
        } else {
          leftImage.src = "http://l.yimg.com/a/i/us/cl/mob/v3/gen/sms_mess/btn_back_disabled_1_1.png";
        }
      }

      var handleNextButtonState = function (type, args) {
        var enabling = args[0];
        var rightImage = args[1];
        if(enabling) {
          rightImage.src = "http://l.yimg.com/a/i/us/cl/mob/v3/gen/sms_mess/btn_next_on_1_1.png";
        } else {
          rightImage.src = "http://l.yimg.com/a/i/us/cl/mob/v3/gen/sms_mess/btn_next_disabled_1_1.png";
        }
      }

      if(pa && na && listItems) {
        carousel = new YAHOO.extension.Carousel("mycarousel", {
          numVisible:  3,
          animationSpeed:  0.45,
          scrollInc:  3,
          navMargin:  0,
          prevElement:  "prev-arrow",
          nextElement:  "next-arrow",
          size:  listItems,
          wrap:  false,
          revealAmount: 0,
          prevButtonStateHandler:  handlePrevButtonState,
          nextButtonStateHandler:  handleNextButtonState
        })  //caorousel
      } else {
        if(mc) {
          //mc.style.display = "block";
          //mc.style.paddingLeft = "0px";
        }
      }

      if (Y.get('#next-arrow')) {
        Y.on('click', function (e) {
          var targetNo = document.getElementById('curr_page');
          var allEls = YAHOO.util.Dom.getElementsByClassName('carousel_desc');
          if (targetNo) {
            var currNo = parseInt(targetNo.innerHTML);
            if (currNo < 4) {
              for (var i=0; i < allEls.length; i++) {
                YAHOO.util.Dom.setStyle(allEls[i], 'display', 'none');
              }
              nextNo = currNo+1;
              targetNo.innerHTML = nextNo;
              showElem = document.getElementById('carousel_message' + nextNo);
              if (showElem) {
                  YAHOO.util.Dom.setStyle(showElem, 'display', 'block');
              }
            }
          }
        }, '#next-arrow'); 
      }

      if (Y.get('#prev-arrow')) {
        Y.on('click', function (e) {
          var targetNo = document.getElementById('curr_page');
          var allEls = YAHOO.util.Dom.getElementsByClassName('carousel_desc');
          if (targetNo) {
            var currNo = parseInt(targetNo.innerHTML);
            if (currNo > 1) {
              for (var i=0; i < allEls.length; i++) {
                YAHOO.util.Dom.setStyle(allEls[i], 'display', 'none');
              }
              prevNo = currNo-1;
              targetNo.innerHTML = prevNo;
              showElem = document.getElementById('carousel_message' + prevNo);
              if (showElem) {
                YAHOO.util.Dom.setStyle(showElem, 'display', 'block');
              }
            }
          }
        }, '#prev-arrow'); 
      }
    } // END #messenger-carousel

    //tab view
    if (Y.get('#page-features')) {
      Y.all('#page-features').setStyle('display', 'block');
    }//end tab view

    // messenger nav 
    if (Y.get('#messenger_nav')) {
      Y.all('.yui-gc').setStyle('visibility', 'visible');
      var oMenuBar = new YAHOO.widget.MenuBar('messenger_nav', {
                        autosubmenudisplay:true,
                        lazyload:800,
                        iframe:true,
                        constraintoviewport:false,
                        showdelay:0,
                        hidedelay:0,
                        submenuhidedelay:0,
                        clicktohide:false,
                        zindex:20
                    });
    } // END #messenger_nav
    
    // core services tabview mod
    if (Y.get('#r-cnr-mod-tabview')) {
      if (mobile.getUrlHash()) {
        var hash = mobile.getUrlHash();
        if (Y.get('#tab_' + hash)) {
          Y.all('#page-features ul.yui-nav li').each(function (n) {
            if (n.get('id') == 'tab_' + hash) {
              n.addClass('selected');
            } else {
              n.removeClass('selected');
            }
          });
        }
      }
      var secondaryContentTabview = new YAHOO.widget.TabView('r-cnr-mod-tabview');
    } // END #r-cnr-mod-tabview

    // messenger-client page
    if (Y.get('#connecting_blurb_btn')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'connecting_blurb_exp'); }, '#connecting_blurb_btn');
    }

    if (Y.get('#other_services_btn')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'services'); }, '#other_services_btn');
    }
    // END messenger-client page

    if (Y.get('#pageredirect')) {
	   setTimeout("window.location.href = 'http://www.ymobileblog.com'", 15000);
    } //EU timed page redirect to mobile blog

    // messenger-sms pages
    if (Y.get('#pricing_popup')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'pricing_popup', 'inline'); }, '#pricing_link');
    }

    if (Y.get('#pricing_close_btn')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'pricing_popup', 'inline'); }, '#pricing_close_btn');
    } 

    if (Y.get('#country_note')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'list_of_countries'); }, '#see_countries');
    } 

    if (Y.get('#see_example')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'see_example_popup'); }, '#see_example');
    } 

    if (Y.get('#close_example')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'see_example_popup'); }, '#close_example');
    } 

    if (Y.get('#auto_signin_link')) {
      Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'auto_signin_text'); }, '#auto_signin_link');
    } 

    if (Y.get('#mess_carrier_list')) {
      //var carrierList = Y.get('.carrier_data');
      var carrierList = YAHOO.util.Dom.getElementsByClassName('carrier_data');
      for (var i=1; i<=carrierList.length; i++) {
        var c = 'country1c'+i;
        //Y.on('click', function(e) { mobile.toggleElementDisplay(Y, e, 'pricing_popup', 'inline'); }, '#pricing_link');
        if (YAHOO.util.Dom.get(c)) {
          YAHOO.util.Event.addListener(c, 'click', mobile.showList, ['country1c', 'country1d', 'country1l', carrierList.length, i]);
        }
      }
    }
    // END messenger-sms pages

    // newsroom management
    if (Y.get('#ebio')) {
      // open bio
      Y.on('click', function (e) {
        e.preventDefault();

        // hide all with class desc
        Y.all('#ebio .desc').each(function (n) {
          mobile.hideElementDisplay(Y, n.get('id'));
        });

        // show the one clicked on
        mobile.showElementDisplay(Y, 'hid'+e.target.get('id'));
      }, '#ebio a.bio_link'); 

      // close bio
      Y.on('click', function (e) {
        e.preventDefault();

        // hide all with class desc
        Y.all('#ebio .desc').each(function (n) {
          mobile.hideElementDisplay(Y, n.get('id'));
        });
      }, '#ebio a.link_closebio'); 
    }
    // END newsroom management

    // poll stuff
    if (Y.get('#poll_submit')) {
      Y.on('click', function (e) {
          e.preventDefault();
          var choice = false;
          Y.all('#poll li input').each(function (n) {
            if (!choice && n.get('checked')) {
              choice = n.get('value');
            }
          });
          if (!choice) {
            return false;
          }
          var uri = '/bin/votePoll.mw?choice='+choice+'&pid=' + Y.get('#poll_id').get('value'); 
          Y.io(uri, {
            on: {
              success: function(id, o, args) {
                Y.get('#poll .bd').set('innerHTML', o.responseText);
              }
            }
          });
      }, '#poll_submit'); 
    }
    // END poll stuff

    //pop up on iphone alacarte 
    if (Y.get('#yicon_modal')) {
      var yiconPopup =  new YAHOO.widget.Panel('yicon_modal', {
          width:'550px',
          height:'auto',
          fixedcenter:true,
          close:false,
          draggable:false,
          zIndex:35,
          modal:true,
          visible:false,
          monitorresize:true,
          underlay:'none'
      });
      yiconPopup.render(document.body);
      Y.all('#yicon_modal').setStyle('display', 'block');

      if (Y.get('.yicon_link')) {
        Y.on('click', function(e) {
            yiconPopup.show();
            }, '.yicon_link');
      } // END add_yicon 

      if (Y.get('#web_close_button')) {
        Y.on('click', function(e) {
            yiconPopup.hide();
            }, '#web_close_button');
      } // END #web_close_button
    } //END yicon_modal

    if (Y.get('#universalph_panel')) {
      var gblphPopup =  new YAHOO.widget.Panel('universalph_panel', {
        width:'437px',
        height:'auto',
        fixedcenter:false,
        close:false,
        draggable:false,
        modal:false,
        zIndex:15,
        visible:false,
        underlay:'none'
      });
      gblphPopup.render(document.body);

      var univphPosition = function() {
        gblphPopup.cfg.setProperty('context', ["sub_mail_for_phone", "tr", "tr",['windowResize']]);
      };

      if(Y.get('#learn_global_phone')) {
        Y.on('click', function(e) {
          if (Y.get('#works_everywhere').getStyle('visibility') == 'hidden') {
            Y.get('#works_everywhere').removeClass('hide');
            univphPosition();
            gblphPopup.show();

            var h = e.currentTarget.getAttribute('href').split('#');
            if (h[1]) {
              mobile.trackBeacon(Y, h[1]);
            }
          }
        }, '#learn_global_phone');
      }  // END learn_global_phone

      if(Y.get('#download_itunes')) {
        Y.on('click', function(e) {
          mobile.trackBeacon(Y,'2143037506');
        }, '#download_itunes');
       } // END download_itunes, sketch a search cta


      if(Y.get('#panel_close_button')) {
        Y.on('click', function(e) {
          gblphPopup.hide();
          Y.get('#universalph_panel_c').removeClass('universalpanel_position');
        }, '#panel_close_button');
      } // END #web_close_button
    } //END works_everywhere

    //pop up on mobile internet page
    if (Y.get('#mobile_web')) {
      var infoPopup =  new YAHOO.widget.Panel('mobile_web', {
          width:'550px',
          height:'auto',
          fixedcenter:true,
          close:false,
          draggable:false,
          zIndex:35,
          modal:true,
          visible:false,
          monitorresize:true,
          underlay:'none'
      });
      infoPopup.render(document.body);

      if (Y.get('#link_mobile_web')) {
        Y.on('click', function(e) {
            infoPopup.show();
            }, '#link_mobile_web');
      } // END link_mobile_web

      if (Y.get('#web_close_button')) {
        Y.on('click', function(e) {
            infoPopup.hide();
            }, '#web_close_button');
      } // END #web_close_button
    } //END mobile_web

    if (Y.get('#video_close')) {
      Y.on('click', function(e) {
        mobile.hideElementDisplay(Y, 'video_close');
        mobile.hideElementDisplay(Y, 'video_wrapper');
        mobile.showElementDisplay(Y, 'video_snapshot');
        Y.get('#video_player').set('innerHTML', '');
        Y.get('#video_info').setStyle('display', 'block');
        Y.get('#video').setStyle('margin', '20px 15px 15px 20px');
      }, '#video_close');
    }      

    if (Y.get('#mobile_apps')) {
      var appsPopup =  new YAHOO.widget.Panel('mobile_apps', {
        width:'550px',
        height:'auto',
        fixedcenter:true,
        zIndex:35,
        close:false,
        draggable:false,
        modal:true,
        visible:false,
        monitorresize:true,
        underlay:'none'
      });
      appsPopup.render(document.body);

      if (Y.get('#link_mobile_apps')) {
        Y.on('click', function(e) {
          appsPopup.show();
        }, '#link_mobile_apps');
      } // END link_mobile_apps

      if (Y.get('#apps_close_button')) {
        Y.on('click', function(e) {
          appsPopup.hide();
        }, '#apps_close_button');
      } // END #apps_close_button
    } //END mobile_apps

    if (Y.get('#mobile_sms')) {
      var smsPopup =  new YAHOO.widget.Panel('mobile_sms', {
        width:'550px',
        height:'auto',
        fixedcenter:true,
        zIndex:35,
        close:false,
        draggable:false,
        modal:true,
        visible:false,
        monitorresize:true,
        underlay:'none'
      });
      smsPopup.render(document.body);

      if (Y.get('#link_mobile_sms')) {
        Y.on('click', function(e) {
          smsPopup.show();
        }, '#link_mobile_sms');
      } // END link_mobile_sms

      if (Y.get('#sms_close_button')) {
        Y.on('click', function(e) {
          smsPopup.hide();
        }, '#sms_close_button');
      } // END #sms_close_button
    } //END mobile_sms

    // use to turn on the popup in cta 
    var getProduct = function() {
      if (Y.get('#areacode')) {
        Y.get('#areacode').focus();
      } // END #areacode

      if (Y.get('#number_flyout')) {
        Y.get('#number_flyout').setStyle('display', 'block');
      } // END #number_flyout
    };

    if (Y.get('#ctacontainer')) {
      if (window.ymobpage && ymobpage.get_product) {
        getProduct();
      }
    } // END #ctacontainer

    var cleanCannedSearchQuery = function(q) {
      if (q.match(/\(/)) {
        q = q.replace(/^.*\(/, '');
        q = q.replace(/\).*/, '');
        return q;
      } else {
        return q;
      }
    };

    // emulator 2.0
    if (Y.get('#emulator')) {
      var search_count = 0;
      var emulatorV2 = new YAHOO.widget.Panel('emulator', {
        width:'950px',
        height:'auto',
        fixedcenter:false,
        close:false,
        draggable:false,
        zIndex:1,
        modal:true,
        visible:false,
        underlay:'none',
        constraintoviewport:false,
        monitorresize:true
      });
      emulatorV2.render(document.body);
      Y.get('#emulator_c').addClass('hide');
      
      // tabview
      var emuTabview = new YAHOO.widget.TabView('tabview');

      
      var emuPosition = function() {
        emulatorV2.cfg.setProperty('context', ["nav_footer", "tl", "tl",['windowResize']]);
        Y.get('#emulator').addClass('emu_position');
      };

      /* Emulator functions definition */
      var showDialogDefault = function(Y) {
        if (search_count < 2) {
          Y.get('#get_ysearch').addClass('hide');
        }
        Y.get('#dialog_default').removeClass('hide');
        Y.get('#dialog_generic').addClass('hide');
      };

      var showDialogGeneric = function(Y) {
        ++search_count;
        if (search_count >= 2) {
          Y.get('#get_ysearch').removeClass('hide');
        }
        Y.get('#dialog_default').addClass('hide');
        Y.get('#dialog_generic').removeClass('hide');
      };

      var showDefaultFrontpage = function() {
        if (Y.get('#emu_frame')) {
          Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/onesearch?'+emulatroParams);
        }
      };

      var checkRelatedSearch = function() {
        var uri = '/bin/search_related_query.mw?q=' + encodeURIComponent(Y.get('#search_field').get('value')); 
        Y.io(uri, {
          on: {
            success: function(id, o, args) {
              var data = Y.JSON.parse(mobile.cleanWSOutput(o.responseText));
              if (data.related) {
                Y.get('#popular_search_item').set('innerHTML', data.related);
                Y.on('click', tabviewLinkClick, '#tabview div div li a');
              }
            }
          }
        });
      };
 
      var searchQuery = function(Y) {
        Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/onesearch?p='+encodeURIComponent(Y.get('#search_field').get('value'))+'&'+emulatroParams);
        checkRelatedSearch(); 
      };

      var handlePopSearch = function(e) {
        Y.get('#search_field').set('value', cleanCannedSearchQuery(e.target.get('innerHTML')));
        checkRelatedSearch(); 
      };

      var tabviewLinkClick = function(e) {
        if (Y.get('#search')) {
          showDialogGeneric(Y);
          if (e.target.get('id') != 'search_again' && !e.target.ancestor('#search_button')) {
            Y.get('#search_field').set('value', cleanCannedSearchQuery(e.target.get('innerHTML')));
            Y.get('#emu_frame').setAttribute('src', e.currentTarget.getAttribute('href'));
          }
        }
      };

      var openEmulator = function(Y) {
        // have to set src here because stupid Safari crashes if src is set onpageload
        if (Y.get('#yahoo_home')) {
          Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/ygo-frontpage/home.bp?view=today&'+emulatroParams);
        }

        Y.all('#emulator').setStyle('display', 'block');
        Y.get('#emulator_c').removeClass('hide');
        emuPosition();
        if (Y.get('#yahoo_mail')) {
          Y.get('#emu_mail_signin').removeClass('hide');
        }
        emulatorV2.show();
        Y.get('#emulator_mask').setStyle('zIndex', '98');
        Y.get('#emulator_c').setStyle('zIndex', '99');

        // only stamp the popup if user doesn't go straight to emulator
        if (!window.ymobpage || !ymobpage.emul_open) {
          mobile.stampPage(Y, mobile.spaceids.demo[ymobpage.service]);
        }
      };

      var closeEmulator = function(Y) {
        // if user went straight to emulator, closing the popup redirects them back to the parent page
        // so we can restamp the parent page with it's own spaceid instead of the popup spaceid
        if (window.ymobpage && ymobpage.emul_open) {
          window.location = location.pathname + '?get=1';
        }

        if (Y.get('#search')) {
          search_count = 0;
          showDialogDefault(Y);
          showDefaultFrontpage();
          Y.get('#search_field').set('value', emulatorSearchText);
        } else if (Y.get('#yahoo_home')) {
          Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/ygo-frontpage/home.bp?view=today&'+emulatroParams);
        } else if (Y.get('#yahoo_mail')) {
          Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/login/logout?'+emulatroParams);
          Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/login/user?_done=widget%3Aygo-mail%2Fhome.bp&amp;'+emulatroParams);
        }
        Y.get('#emulator').removeClass('emu_position');
        emulatorV2.hide();
      };
      /* END Emulator function definition */

      // Binding Try It button listener
      if (Y.get('#demo_button')) {
        Y.on('click', function(e) { openEmulator(Y); }, '#demo_button');
      }      

      // open the emulator manually
      if (window.ymobpage && ymobpage.emul_open) {
        openEmulator(Y);
        getProduct();
      }

      if (Y.get('#navback')) {
        Y.on('click', function(e) { 
          Y.get('#navback').setAttribute('href', 'javascript:history.go(-1)');
          showDialogDefault(Y);
        }, '#navback');
      } // END #navback

      if (Y.get('#search_form')) {
        Y.on('submit', function(e) { 
          e.preventDefault();
          searchQuery(Y);
          showDialogGeneric(Y);
          Y.get('#search_field').blur();
        }, '#search_form');
      } // END #search_form

      if (Y.get('#search_field')) {
        var searchContent = Y.get('#search_field');
        Y.on('focus', function(e) {
          searchContent.set('value', '');
          showDialogDefault(Y);
        }, '#search_field');
        Y.on('blur', function(e) {
          if (searchContent.get('value') == "") {
            searchContent.set('value', emulatorSearchText);
          }
        }, '#search_field');
      } // END #search_field

      if (Y.get('#tabview')) {
        Y.on('click', tabviewLinkClick, '#tabview div div a');
      } // END #tabview

      if (Y.get('#search_button')) {
        Y.on('click', function(e) {
          searchQuery(Y);
        }, '#search_button');
      } // END #search_button

      if (Y.get('#search_again')) {
    	  Y.on('click', function(e) {
	        showDialogDefault(Y);
          Y.get('#search_field').focus();
       	}, '#search_again');
      } // END #search_again

      if (Y.get('#close_button')) {
        Y.on('click', function(e) {
          closeEmulator(Y);
        }, '#close_button');
      } // END #close_button
      
      if (Y.get('#get_button')) {
        Y.on('click', function(e) {
          closeEmulator(Y);
          getProduct();
        }, '#get_button');
        
        if (Y.UA.ie > 0 && Y.UA.ie < 7) {
          Y.on('mouseover', function(e) {
            Y.get('#get_button').addClass('mouse_over');
          }, '#get_button');
          Y.on('mouseout', function(e) {
            Y.get('#get_button').removeClass('mouse_over');
          }, '#get_button');
        }
      } // END #get_button

      if (Y.get('#get_ysearch')) {
        Y.on('click', function(e) {
          closeEmulator(Y);
          getProduct();
        }, '#get_ysearch');
      } // END #get_ysearch

      if (Y.get('#signin_close_button')) {
        Y.on('click', function(e) {
          Y.get('#emu_mail_signin').addClass('hide');
        }, '#signin_close_button');
      } // END #Signin_close_button

    } // END #emulator


    // /search-demo page; similar to /search's emulator but without popup 
    if (Y.get('#search-demo')) {
      var searchQuery = function(Y) {
        Y.get('#emu_frame').setAttribute('src', emulatorUrl+'w/onesearch?p='+encodeURIComponent(Y.get('#search_field').get('value'))+'&'+emulatroParams);
      };

      var setSearchText = function(Y) {
        if (Y.get('#search_box .search_for')) {
          Y.get('#search_box .search_for').set('innerHTML', Y.get('#search_field').get('value'));
        }
        var href = Y.get('#cta_link').getAttribute('href');
        href = href.replace(/\?.*$/, '');
        Y.get('#cta_link').setAttribute('href', href+'?get=1&q=' + encodeURIComponent(Y.get('#search_field').get('value')));
      };

      var showSearchTitle = function(Y, show) {
        Y.all('#search_box h2 span').each(function (n) {
          var id = n.get('id');
          if (id.match(/^sbt_/)) {
            if (id == show) {
              Y.get('#'+id).replaceClass('hide', 'showinline');
            } else {
              Y.get('#'+id).replaceClass('showinline', 'hide');
            }
          }
        });
        setSearchText(Y);
      };

      if (Y.get('#popular_search')) {
        Y.on('click', function(e) {
          Y.get('#search_field').set('value', cleanCannedSearchQuery(e.target.get('innerHTML')));
          showSearchTitle(Y, 'sbt_clicked');
            searchContent.setStyle('color', '#333');
        }, '#popular_search li a');
      } // END #popular_search

      if (Y.get('#search_box')) {
        if (window.ymobpage && ymobpage.emul_search_demo_query) {
          showSearchTitle(Y, 'sbt_clicked');
        } else {
          showSearchTitle(Y, 'sbt_say');
        }
      } // END #search_box

      if (Y.get('#search_button')) {
        Y.on('click', function(e) {
          e.preventDefault();
          searchQuery(Y);
          showSearchTitle(Y, 'sbt_searched');
        }, '#search_button');
      } // END #search_button

      if (Y.get('#search_form')) {
        Y.on('submit', function(e) { 
          e.preventDefault();
          searchQuery(Y);
          showSearchTitle(Y, 'sbt_searched');
        }, '#search_form');
      } // END #search_form

      if (Y.get('#search_field')) {
        var searchContent = Y.get('#search_field');
        Y.on('focus', function(e) {
          searchContent.set('value', '');
            searchContent.setStyle('color', '#333');
        }, '#search_field');
        Y.on('blur', function(e) {
          if (searchContent.get('value') == "") {
            searchContent.set('value', emulatorSearchText);
            searchContent.setStyle('color', '#999');
          }
        }, '#search_field');
      }

    } // END #search-demo


    var getTabHash = function(tabviewName) {
      var hash = tabviewName.get('activeTab').toString().substring(4).replace(/_tab/, "");
      location.hash = hash;
      // fade the phone
      var anim = new Y.Anim({
        node: '#'+hash+'_phone',
        from: { opacity: 0 },
        to: { opacity: 1 },
        duration: 1
      });
      anim.run();
      Y.all('#ctacontainer .ctatitle').each(function (n) {
        var id = n.get('id');
        var ft = id.replace(/title/, 'footer');
        if (id.match(new RegExp('_' + hash + '$'))) {
          // show cta title for the selected service
          // since there are multiple cta footers; need to show the correct footer for each screen
          // need to redo the html to only have 1 cta footer but now is this hack
          Y.get('#'+id).replaceClass('hide', 'show');
          Y.get('#'+ft).replaceClass('hide', 'show');

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_thankyou'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_thankyou')).replaceClass('hide', 'show');
          }

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_error'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_error')).replaceClass('hide', 'show');
          }

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_captcha'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_captcha')).replaceClass('hide', 'show');
          }

          // update id of verizon url in cta for styling
          if (Y.get('#verizoncta .verizon_url')) {
            var vzurlid = Y.get('#verizoncta .verizon_url').get('id');
            Y.get('#verizoncta .verizon_url').set('id', vzurlid.replace(/_[a-z]+$/, '_'+hash));
          }

          // update display url in cta
          if (tracking.durls) {
            Y.all('#ctacontainer .displayurl').each(function (n) {
              n.set('innerHTML', tracking.durls[hash]);
            });
          }
          
          // re-show the cta front screen
          mws.showSMSForm();

          // update tracking stuff
          if (tracking.subnav) {
            tracking.subnav = hash;
          }


          // beacon tracking
          if (Y.get('#'+hash+'_tab') && Y.get('#'+hash+'_tab').getAttribute('class').match(/track_\d+_beacon/i)) {
            var beacon = Y.get('#'+hash+'_tab').getAttribute('class').replace(/^.*track_(\d+)_beacon.*$/, '$1');
            mobile.trackBeacon(Y, beacon);
          }
        } else {
          Y.get('#'+id).replaceClass('show', 'hide');
          Y.get('#'+ft).replaceClass('show', 'hide');

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_thankyou'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_thankyou')).replaceClass('show', 'hide');
          }

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_error'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_error')).replaceClass('show', 'hide');
          }

          if (Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_captcha'))) {
            Y.get('#'+ft.replace(/cta_footer/, 'cta_footer_captcha')).replaceClass('show', 'hide');
          }
        }
      });
    };

    var alacarteTabview;
    if (Y.get('#alacarte_services')) {
      alacarteTabview = new YAHOO.widget.TabView('alacarte_services', {orientation:'left'});
      var alacarteUrl = location.pathname.toLowerCase();
      var alacarteUrlHash = Y.get('#alacarte_services ul li').get('id').replace(/_[a-z]+$/, '');
      if (location.hash.substring(1)) {
        alacarteUrlHash = location.hash.substring(1).toLowerCase();
        if (alacarteUrlHash.indexOf('?') != -1) {
          alacarteUrlHash = alacarteUrlHash.split('?')[0]; 
        }
      }
var alacarteUrl2=alacarteUrl;
if(alacarteUrl.indexOf(';_ylt=')!=-1)
{
alacarteUrl2=alacarteUrl.substring(0,alacarteUrl.indexOf(';_ylt='));
}
      if ( (alacarteUrl2 == "/android" || alacarteUrl2 == "/blackberry" || alacarteUrl2 == "/iphone" || alacarteUrl2 == "/services" || alacarteUrl2 == "/ipad") && alacarteUrlHash != "") {
        var selectedTab = "Tab " + alacarteUrlHash + "_tab";
        var selectedTabIndex = alacarteTabview.getTabIndex(selectedTab);
        if (selectedTabIndex) {
          alacarteTabview.deselectTab(0);
          alacarteTabview.selectTab(selectedTabIndex);
          getTabHash(alacarteTabview);
        } else if (selectedTabIndex == 0) {
          alacarteTabview.selectTab(0);
          getTabHash(alacarteTabview);
        } else {
          Y.get('#alacarte_services').addClass('hide');
        }
      } else {
        getTabHash(alacarteTabview);
      }
      alacarteTabview.on('activeTabChange', function(e) {
        getTabHash(alacarteTabview);
      }, '#alacarte_services');
    }// END #alacarte_services
    
    // add event listeners for sms cta
    mobile.initSmsCta(Y);

    // CTA panel
    if (Y.get('#cta_panels')) {
      var ctaPanels =  new YAHOO.widget.Panel('cta_panels', {
        width:'758px',
        height:'auto',
        fixedcenter:false,
        close:false,
        draggable:false,
        zIndex:20,
        modal:false,
        visible:false,
        underlay:'none'
      });
      ctaPanels.render(document.body);

      var ctaPanelPosition = function() {
        ctaPanels.cfg.setProperty('context',["explain_cta", "tr", "br",['windowResize']]);
      };

      if (Y.get('#explain_cta')) {
        Y.on('click', function(e) {
          if (Y.get('#what_is_cta').getStyle('visibility') == 'hidden') {
            Y.get('#what_is_cta').removeClass('hide');
            ctaPanelPosition();
            ctaPanels.show();
          }
        }, '#explain_cta');
      } // END #explain_cta

      if (Y.get('#panel_close_button')) {
        Y.on('click', function(e) {
          ctaPanels.hide();
          Y.get('#cta_panels_c').removeClass('cta_panels_position');
        }, '#panel_close_button');
      } // END #panel_close_button
    } // END #cta_panels

    // rapid tracking: http://i13n.corp.yahoo.com/rapid_api/rapid_api.php
    if (window.ymobpage && ymobpage.spaceid_offset && ymobpage.intl && ymobpage.service) {
      var apn =  ymobpage.intl + '.' + ymobpage.service;
      if (ymobpage.subnav) {
        apn +=  ('.' + ymobpage.subnav); 
      }
      (new YAHOO.i13n.Track({spaceid:ymobpage.spaceid_offset, tracked_mods:['hd', 'bd', 'ft'], keys:{A_pn:apn}})).init();
    }
  }; // END init()
  Y.on('domready', init);
});



/* contents copied from ULT javascript
   from http://l.yimg.com/d/lib/ult/strip_1.12.js */

if(!YAHOO.ULT){YAHOO.ULT={};}
if(!YAHOO.ULT.CONF){YAHOO.ULT.CONF={};}
if(!YAHOO.ULT.BEACON){YAHOO.ULT.BEACON="http://geo.yahoo.com/t";}
if(!YAHOO.ULT.DOMAIN){YAHOO.ULT.DOMAIN=".yahoo.com";}
if(!YAHOO.ULT.IMG){YAHOO.ULT.IMG=new Image();}
if(typeof(YAHOO.ULT.DEBUG)==="undefined"){YAHOO.ULT.DEBUG=0;}
YAHOO.ULT.DELIMITERS={'/':'P',';':'1','?':'P','&':'1','#':'P'};(function(){var YLT=YAHOO.ULT;YLT.strip_rd=function(u,data){var idx=u.indexOf('/**');if(idx!=-1){data.clean=u.substr(idx+3);data.clean=decodeURIComponent(data.clean);}return data;};YLT.strip=function(u){var delims=YLT.DELIMITERS;var data={url:u,clean:'',cookie:'',keys:[]};var idx=0;while(u.indexOf('_yl',idx)!=-1){var start=u.indexOf('_yl',idx);if(idx<start){data.clean+=u.slice(idx,start-1);}
idx=start+3;if(delims[u.charAt(start-1)]&&u.charAt(start+4)==='='){data.ult=1;var key="_yl"+u.charAt(start+3);var value="";for(start=start+5;start<u.length&&!delims[u.charAt(start)];start++){value+=u.charAt(start);}
data.keys.push(key);data[key]=value;if(key!='_ylv'){data.cookie+="&"+key+"="+value;}
if(delims[u.charAt(start)]&&delims[u.charAt(start)]=='P'){data.clean+=u.charAt(start);}
idx=start+1;}else{data.clean+=u.slice(start-1,idx);}}
if(data.ult){data.cookie=data.cookie.substr(1);data.clean+=u.substr(idx);if(data._ylv==0){YLT.strip_rd(u,data);}}
return data;};YLT.click_token=function(e,u,t,i){if(!i){i=YLT.IMG;}
var src=YLT.BEACON+"?"+t+'&t='+Math.random();YLT.IMG.onerror=YLT.IMG.onload=function(){location=u;};YAHOO.util.Event.preventDefault(e);i.src=src;};YLT.beacon_token=function(t,i){if(!i){i=YLT.IMG;}
var src=YLT.BEACON+"?"+t+'&t='+Math.random();i.src=src;};YLT.click_beacon=function(e,u,d,i){if(!i){i=YLT.IMG;}
if(d){var src=YLT.track_click(YLT.BEACON,d);src+='?t='+Math.random();YLT.IMG.onerror=YLT.IMG.onload=function(){location=u;};YAHOO.util.Event.preventDefault(e);i.src=src;}};})();(function(){var YLT=YAHOO.ULT;YLT.set_href=function(el,data,keyname){if(data.html){el.href=data[keyname];el.innerHTML=data.html;}else{el.href=data[keyname];}};YLT.clicked=function(e,data){var el=e.target||e.srcElement;if(el.nodeName!=="A"){if(el.parentNode.nodeName==="A"){el=el.parentNode;}}
 if(data._ylv==3){YLT.set_href(el,data,"clean");var cook="D="+data.cookie+"; Max-Age=10; Path=/; Domain="+YLT.DOMAIN;document.cookie=cook;}else if(data._ylv==8||data._ylv==9){}else if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey||data.target=="_blank"){YLT.set_href(el,data,"clean");YLT.beacon_token(data.cookie);}else{YLT.set_href(el,data,"clean");YLT.click_token(e,data.clean,data.cookie);}};YLT.revert=function(e,data){var el=e.target||e.srcElement;if(el.nodeName==="A"){YLT.set_href(el,data,"url");}else{if(el.parentNode.nodeName==="A"){el.parentNode.href=data.url;}}};YLT.clean=function(){YLT.isIE=(typeof(ActiveXObject)=='function');if(navigator.userAgent.toLowerCase().indexOf("safari")!=-1){YLT.isSafari=true;}
var el,data,name;for(var i=0;i<document.links.length;i++){el=document.links[i];if(el.className.indexOf('yltasis')!=-1){continue;}
data=YLT.strip(el.getAttribute('href',2));if(!data.ult){continue;}else if(YLT.CONF.force_beacon&&data._ylv!=8&&data._ylv!=9){data._ylv='X';}else if(YLT.isSafari&&data._ylv!=3){continue;}
for(name=0;name<data.keys.length;name++){if(data.keys[name]!='_ylv'){delete data[data.keys[name]];}}
delete data.keys;delete data.ult;data.target=el.target;if(YLT.isIE&&(el.innerHTML.indexOf('http')===0||el.innerHTML.indexOf('www')===0||el.innerHTML.indexOf('@')!==-1||el.className.indexOf('yltiefix')!=-1)){data.html=el.innerHTML;}
YLT.set_href(el,data,"clean");YAHOO.util.Event.addListener(el,'click',YLT.clicked,data);if(!YLT.CONF.cleanest){YAHOO.util.Event.addListener(el,'mousedown',YLT.revert,data);}}};})();window.setTimeout(function(){YAHOO.ULT.clean();},1);

/* END of ULT code */


