fadeInTransparent = function(obj, duration, callback) {
    var $ = jQuery;
    if (!$.browser.msie) obj.fadeIn(duration, callback);
    else {
       obj.show();
       if (callback) callback.call(obj);
    }
    return obj;
};
fadeOutTransparent = function(obj, duration, callback) {
    var $ = jQuery;
    if (!$.browser.msie) obj.fadeOut(duration, callback);
    else {
       obj.hide();
       if (callback) callback.call(obj);
    }
    return obj;
};

function loadPhoneNavigatorPhones(pathToJSON) {	
    var $ = jQuery;
    $.getJSON(pathToJSON, function(data) {
       $('.phonenavigator').each(function(i, nav) {
          nav = $(nav);
          prefix = getPrefix();
          var menus = nav.find('div.menucontainer'),
          manufacturers = $('<ul />').appendTo(nav.find('div.manufacturers')),
          platforms = $('<ul />').appendTo(nav.find('div.platforms')),
          menuitems = $([]),
          container = nav.children('.phonescontainer').children('.grid'),
          viewGroup = function(group) {
             menus.hide();
             if (group == '#manufacturers') {
                selectFirstManufacturer();
                manufacturers.parent().show();
             }
             else if (group == '#platforms') {
                selectFirstPlatform();
                platforms.parent().show();
             }
          },
          viewPhones = function(field, id) {
             container.empty();
             $.each(data.phones, function(i, item) {
                if (item[field] == id) {
                   var img = $('<img />').load(function() {
                      if ($.browser.msie && parseInt($.browser.version) <= 6) {
                         $('<div class="fakeimage" />')
                         .css('width', $(this).width() + 'px').css('height', $(this).height())
                         .prependTo($(this).parent())
                         .get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + item.image + "', sizingMethod='scale')";
                         $(this).hide().attr('src', '');
                      }
                      fadeInTransparent($(this).parent().css('visibility', 'visible').hide(), 200);
                   });
                   url = '/' + prefix + item.url;
                   $('<a class="phone" />').attr('href', url).text(item.name).css('visibility', 'hidden')
                   .prepend(img)
                   .appendTo(container);
                   img.attr('src', item.image).attr('alt', item.name);
                }
             });
             $('<div class="breaker" />').appendTo(container);
          },
          selectFirstManufacturer = function() {
             menuitems.removeClass('selected');
             if (manufacturers.children('li').length) {
                var item = $(manufacturers.children('li')[0]);
                item.addClass('selected');
                viewPhones('manufacturer', item.children('a').attr('href'));
             }
          },
          selectFirstPlatform = function() {
             menuitems.removeClass('selected');
             if (platforms.children('li').length) {
                var item = $(platforms.children('li')[0]);
                item.addClass('selected');
                viewPhones('platform', item.children('a').attr('href'));
             }
          };
          $.each(data.manufacturers, function(i, item) {
             menuitems = menuitems.add($('<li />').append($('<a />').attr('href', item.id).text(item.name).click(function(e) {
                e.preventDefault();
                menuitems.removeClass('selected');
                $(this).parent().addClass('selected');
                viewPhones('manufacturer', item.id);
             })).appendTo(manufacturers));
          });
          $.each(data.platforms, function(i, item) {
             menuitems = menuitems.add($('<li />').append($('<a />').attr('href', item.id).text(item.name).click(function(e) {
                e.preventDefault();
                menuitems.removeClass('selected');
                $(this).parent().addClass('selected');
                viewPhones('platform', item.id);
             })).appendTo(platforms));
          });
          nav.find('a.switch').click(function(e) {
             e.preventDefault();
             viewGroup($(this).attr('href'));
          });
          selectFirstManufacturer();
       });
    });
}

function loadPhonesByBrand( pathToJSON , brand ) {
    var $ = jQuery;
    prefix = getPrefix();
    $.getJSON(pathToJSON, function(data) {
       $.each(data.phones, function(i, item) {
          if( item.manufacturer == brand ) {
             url = '/' + prefix + item.url;
             $('<li class="handset"><a href="'+url+'"><img alt="'+item.name+'" src="'+item.image+'" /><div class="name">'+item.name+'</div></a></li>').prependTo(".handsetcontainer");
          }
       });
    });
} 

function getPrefix() {
    var pathname = window.location.pathname;
    var path = pathname.split('/');
    return path[1];
}

