Add Floating Facebook Share & +1 Button Next To Posts in Blogger



floating sharing widgetEver wondered to create a Mashable type floating sharing widget for your blogger blogs? There you have it today! We released a sliding, scrolling widget last month which contained major social media sharing buttons but some of you complained that the widget do not work properly with the new blogger templates so to keep things more flexible, we are releasing yet another version of a floating widget which contains the best social buttons like Facebook Share/like, Twitter and Google +1 button. All in one. I have not used any scripts this time and this widget works purely on CSS and HTML and is fully compatible with all major browsers. You can see this sticky widget to left of my blog post. I have made sure to keep the installation process as easy as possible so be confident to try this one out to better increase your social engagement and thereby your page views.


 Did you check the Latest version? Floating Sharing With Pinterest and Others


Adding The Sticky Floating Widget Next To Blogger Posts



  1. Go To Blogger > Design

  2. Choose a HTML/JavaScript widget

  3. Paste the following code inside it,



<style>
/*-------MBT Floating Sharing Widget------------*/

#floatdiv {
  position:fixed;
bottom:15%;
margin-left:-70px;
z-index:10;
float:left;
padding-bottom:2px;

}

#mbtsidebar {
        background:#fff;
        border-top:1px solid #ddd;
        border-left:1px solid #ddd;
        border-bottom:1px solid #ddd;
        border-radius:5px;
       -moz-border-radius:5px;
       -webkit-border-radius:5px;
        padding-left:5px;
        width:60px;
        margin:0 0 0 5px;
}

.fb_share_count_top {width:52px !important;}

.fb_share_count_top, .fb_share_count_inner {-moz-border-radius:3px;-webkit-border-radius:3px;}

.FBConnectButton_Small, .FBConnectButton_RTL_Small {width:52px !important; -moz-border-radius:3px;/*bs-fsmsb*/-webkit-border-radius:3px;}

.FBConnectButton_Small .FBConnectButton_Text {padding:2px 2px 3px !important;-moz-border-radius:3px;-webkit-border-radius:3px;font-size:8px;}
</style>




<div id="floatdiv">
<div id="mbtsidebar">
    <table cellpadding="1px" cellspacing="0">


    <tr>
    <td style="padding:5px 0px 0px 0;">
<a href="http://twitter.com/share" class="twitter-share-button" data-count="vertical" data-via="mybloggertricks">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
    </td>
    </tr>

    <tr>
    <td style="padding:5px 0 2px 0;">
    <a name="fb_share" type="box_count" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>
    </td>
    </tr>
    <tr>
    <td style=" padding:5px 0px 0px 0px;">

<script src='http://apis.google.com/js/plusone.js' type='text/javascript'> {lang: &#39;en-US&#39;} </script>

<g:plusone size="Tall" expr:href="data:post.url">
    </g:plusone></td>
    </tr>
    <tr>
    <td>
<p style=" line-height:0px; font-size:10px; font-weight:bold; text-align:center;"><a style="color:#D3D3D3;" href="http://www.mybloggertricks.com">Widgets</a></p>
    </td>
    </tr>
    </table>
</div>
</div>


     4.   Save your widget and drag it just below the post body as shown below,

floating-widget

      5.   Now finally Click the save button at the top right corner and you are all done!

save-button

View your blog to see it hanging just to the left of your blog post body.


Customization


To align the widget more towards the left or right then edit this value margin-left:-70px;  Decreasing this numeric value will shift the widget to the right and increasing the value will shift it to left.

To Change the background colour of the floating widget then change this background:#fff;
Use our color generator or colour chart to select a colour.

If you wish to show the widget only on post pages and not the homepage then follow these steps.

Give this floating widget a temporary title then do this


  1. Go To Blogger > Design > Edit HTML

  2. Backup your template

  3. Check the Expand Widgets Templates Box

  4. Search for the title of the widget

  5. The code for the widget will look something similar to this one,



<b:widget id='HTML8' locked='false' title='WIDGET-TITLE-HERE'  type='HTML'>

<b:includable id='main'>

bla bla bla bla

</b:includable> </b:widget>

Once you find the title then add the following two green bolded codes just below and after the bolded black text. For example if you wish to show a widget at Homepage only then do this,




<b:widget id='HTML8' locked='false' title='WIDGET-TITLE-HERE' type='HTML'>

<b:includable id='main'>

<b:if cond='data:blog.pageType == "item"'>

bla bla bla bla

</b:if>

</b:includable> </b:widget>

Save your template and you have successfully stopped the widget display on homepage and allowed it on all post pages. For learning more about how to control the widget display then read:


If you liked this widget then please try tweeting and sharing this post using this new widget to your left. :) Peace and blessings brothers and sisters.

1000+ Google Plus Icons Free Download

+1 buttonIf there is anything I love a lot then it is designing Icons. What I had decided to do this time the guys at webdesignshock did it before me and way way better than I expected. The icon set today contains a bundle of Google+ icons featuring this new social network in its extravagant pose. This free icon set contains different color variations and sizes. The freebie includes both vector (PNG) and pixel perfect Photoshop source files (PSD). The set contains both colored and gray versions to help you use them in your web designing projects. The package also contains original Illustrator and PNG files for Google +1 Buttons, all of them at the highest quality level

If you liked the icons set then please tell your friends also by either tweeting it, FB liking it or +1 recommending it.

Where can you use Google+ Icons & +1 Buttons

Icons can be used for different graphic purposes. If you are a web designer then you will need them to give a more cutting edge and clear look to your templates. If you are a developer busy developing an Android, iPhone or any smart phone app then you will need icons with clear edges and neat pixels. So as you can see it depends on how you use them. Most importantly if you are a blogger user then you will surely need +1 Buttons to give a more neater look to your blog templates.

Download Google+ Icon Set

Click here to download the following icon set

Google Plus icons

The screenshot contains just few icon displays. The entire icon list can be seen once you download the collection.

Download +1 Buttons

Now click here to download tons of Google +1 button for giving a new edge to your design works.

image

Google Plus buttons

Please share this post with everyone you know. That's only favour we need in return. Peace and blessings be upon you all. Have fun. :)

4+ Image Slider Widgets For Blogger

slideshow widgetsThis year we created many image slideshows and image galleries. This widgets can be used for displaying popular posts or your featured posts. It gives great professional touch to your simple blogger blogs. They can easily be installed using a one step process without the need of any extra ordinary tech skills. These sliders users updated versions of jquery and JavaScript to produce brilliant image sliding effects. You can easily navigate between next and previous images or pictures. Pure CSS and HTML is used to give is a strong structure so that the galleries may work fine on all browsers. Following are the Image slideshows for blogger blogs released by MBT so far,

 

1. Simple Image Slider

This loads faster and is compatible with all major browsers.

 

2. Image Slideshow V1

This slideshow uses brilliant effects like brick effect, falling slices, fade in , fade out and a lot more. It is worth $20-$50 but thanks to its developer you can now install it for free. This widget is however compatible with IE7 and above and not with old versions.

3. Image Slideshow V2

To cover the loop holes of slider in V1 we released this new version which can be seen on many wordPress blogs. It is a JQuery image slider with simple navigation to help you switch between slides.

4. Blogger Picture Gallery

Just few days ago we released an extremely easy to use, plug and play gallery widget for blogger. It has a fade effect and description panel and also contains control options like play and pause. You can see it live on my blog too.

 

How did you find them so far?

I will be releasing more professional sliders and galleries soon. I hope this summary post will help you know what has been published so far on image thumbnail slideshows. Please let us know which one is your favourite and why. You can also ask us for any technical help if needed. Peace and blessings be upon you all. :)

Nofollow Blog Comments: Save Blogger From Panda Effect & Spam

nofollow-commentsAs I earlier mentioned that Panda update by Google is a new strict policy which looks for content farmers. Content farmers are people flooding the internet with useless content or republished content. Most of their blog posts are either duplicate copies or infringed material. This year Google penalized many such sites along with some reputed blogs like labnol.org. The reasons most of them shared were to keep a consisting post frequency, keep quality in mind while writing and you must nofollow category links and you should also find and delete 404 error pages. So today again we will be adding nofollow to comment count links and the comments posted by visitors.

 

What is the nofollow tag?

It is a simple HTML tag called rel="nofollow" which tells the search robots that the link is a nofollow one which means that the robot should investigate about the link and should not worry about where the link is pointing. When you link other websites you are sharing your PageRank juice with them and when you outgoing links surpass your incoming links then your PageRank drops. So you must know when to link external websites as nofollow to save PR.

Why should you Nofollow Comment Links?

There are two simple reasons,

  1. To avoid spammers who just comment in order to steal your PageRank
  2. To avoid your blog from Panda Effect which can decrease your blog traffic by 50%-70% Because comment links are harmful to blog content as it distracts the spiders from your main keywords. As a result your post will rank lower.

Let nofollow the comment links everywhere

  1. Go To Blogger > Design > Edit HTML
  2. Backup your template
  3. Click "Expand Widget Templates" box
  4. Search for this,

<a class='comment-link'

Replace it with this,

<a class='comment-link' rel="nofollow"

     5.   Now search for ,

<a expr:href='data:comment.authorUrl'>

and replace it with this,

<a expr:href='data:comment.authorUrl' rel='nofollow'>

      6.    Now finally save your template and you are done!

You may also enjoy reading these posts:

Please add nofollow Tags To all Blogger Label Links!


UPDATE:  After the Google panda effect only  useless links like comment links should be tagged as nofollow. Links pointing to your post pages should be kept dofollow like labels and archives





nofollow-labels


Google Panda effect is the name most of you might heard. It is a strict Google new algorithm that looks for content farms and link farms and completely stops indexing the publisher. If your blog contains too many irrelevant content or duplicate content or your post quantity is less than 300 words and you have too many tags/category labels on your blog that makes no sense then you can be the next target of Google panda update. Your traffic will drop significantly. If you are receiving 2-3K visitors per day, you will end up with just 400-500 visitors. It really shocked me personally when I surveyed official and un-official blogger templates and amazingly found that all category tags or label tags are dofollow. It is really sad on blogger part but I found the same problem on WordPress blogs as well. Even the tags in wordPress are dofollow but since now many expert SEOs have advised to nofollow the label tags therefore we must not delay any further else the consequences could be huge.










To get an idea of nofollow tags then read these detailed tutorial also:



Nofollow all blogger labels links or Category tags



We will nofollow the labels that appear below your post titles and also the labels appearing in your TAG Cloud.


Lets start correcting things:



  1. Go To Blogger > Design > Edit HTML



  2. Backup your template



  3. Check the "Expand widget templates" box



  4. Search for this,





<a expr:href='data:label.url' rel='tag'>



     5.   Replace it with this,



<a expr:href='data:label.url' rel='tag,nofollow'>



You have now successfully protected your links in the post labels from panda effect. Now lets correct the Label Cloud Links also.


UPDATE: This part is optional because this widget is located on the sidebar and not directly in your post body where actual crawling takes place. So even if you skip it there is no issue.


      6.    Search for this,


<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>





      7.  Replace it with this code,


<a expr:dir='data:blog.languageDirection' expr:href='data:label.url' rel='nofollow'><data:label.name/></a>

      8.   Save and you are all set!


How to know if you have done all steps correctly?


Simply highlight a label link or cloud link on your blog and then right click and choose "view selection source". You will find you label links having the rel="nofollow" tag attach to it like this,

post label link

and for label cloud it will look like this,

label cloud

I hope your blogs may grow even more and may stay protected from tech errors. We added the nofollow tags to all MBT label links also and we will be updating you more on this. Please let me know if you needed any further assistance. Peace out! :)

Announcements Widget For Blogger Blogs

announcement widgetAgain yet another MBT release of a useful blogger widget with scrolling headline links. The moment you hover the cursor on the links the scrolling stops and pauses and you can then read the headlines. These headlines can be a blog update notice, announcement or links to your featured posts. You can use it in million of ways. I found the script on dynamic drive and edited the code with some more colours and images to make it completely compatible with blogger blogs. It is several steps ahead of marquee effect because this widget uses some JavaScript to bring the dynamic effect. Again it is a one-step installation process. Please see the demo first,

Live Demo

Add Scrolling Headline Widget to your Blogs

  1. Go To Blogger > Design
  2. Choose HTML/JavaScript Widget
  3. Paste the following code inside it,

<style type="text/css">

/*Example CSS for the two demo scrollers*/

#pscroller2{
background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Eqdn1G2stulL2fvvK-Fsk49jlwGHnCDWa1eianBjNIj1NRJ_exaohcTrVw_PZ3ag7Ksao2yuMPJtzD7S9TEeLmg943lXJHubKMlWgtKeLvr8JJL6_gEHmbMn7tARjn8IMkJ0ST440Uw/s400/updates1.gif) no-repeat top left;
width: 430px;
height: 20px;
border: 1px solid #ddd;
padding: 3px 3px 3px 40px;
margin:10px 0;
}

#pscroller2 a{
text-decoration: none;
color:#0080ff;
}

#pscroller2 a:hover{
text-decoration: underline;
}

.someclass{
}

</style>

<script type="text/javascript">

/*Example message arrays for the two demo scrollers*/


var pausecontent2=new Array()
pausecontent2[0]='<a href="#">HEADLINE TEXT</a>'
pausecontent2[1]='<a href="#">HEADLINE TEXT</a>'
pausecontent2[2]='<a href="#">HEADLINE TEXT</a>'
pausecontent2[3]='<a href="#">HEADLINE TEXT</a>'

</script>

<script type="text/javascript">
function pausescroller(content, divId, divClass, delay){
this.content=content //message array content
this.tickerid=divId //ID of ticker div to display information
this.delay=delay //Delay between msg change, in miliseconds.
this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
this.hiddendivpointer=1 //index of message array for hidden div
document.write('<div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><div class="innerDiv" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="innerDiv" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div>')
var scrollerinstance=this
if (window.addEventListener) //run onload in DOM2 browsers
window.addEventListener("load", function(){scrollerinstance.initialize()}, false)
else if (window.attachEvent) //run onload in IE5.5+
window.attachEvent("onload", function(){scrollerinstance.initialize()})
else if (document.getElementById) //if legacy DOM browsers, just start scroller after 0.5 sec
setTimeout(function(){scrollerinstance.initialize()}, 500)
}

// -------------------------------------------------------------------
// initialize()- Initialize scroller method.
// -Get div objects, set initial positions, start up down animation
// -------------------------------------------------------------------

pausescroller.prototype.initialize=function(){
this.tickerdiv=document.getElementById(this.tickerid)
this.visiblediv=document.getElementById(this.tickerid+"1")
this.hiddendiv=document.getElementById(this.tickerid+"2")
this.visibledivtop=parseInt(pausescroller.getCSSpadding(this.tickerdiv))
//set width of inner DIVs to outer DIV's width minus padding (padding assumed to be top padding x 2)
this.visiblediv.style.width=this.hiddendiv.style.width=this.tickerdiv.offsetWidth-(this.visibledivtop*2)+"px"
this.getinline(this.visiblediv, this.hiddendiv)
this.hiddendiv.style.visibility="visible"
var scrollerinstance=this
document.getElementById(this.tickerid).onmouseover=function(){scrollerinstance.mouseoverBol=1}
document.getElementById(this.tickerid).onmouseout=function(){scrollerinstance.mouseoverBol=0}
if (window.attachEvent) //Clean up loose references in IE
window.attachEvent("onunload", function(){scrollerinstance.tickerdiv.onmouseover=scrollerinstance.tickerdiv.onmouseout=null})
setTimeout(function(){scrollerinstance.animateup()}, this.delay)
}


// -------------------------------------------------------------------
// animateup()- Move the two inner divs of the scroller up and in sync
// -------------------------------------------------------------------

pausescroller.prototype.animateup=function(){
var scrollerinstance=this
if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5+"px"
this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5+"px"
setTimeout(function(){scrollerinstance.animateup()}, 50)
}
else{
this.getinline(this.hiddendiv, this.visiblediv)
this.swapdivs()
setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
}
}

// -------------------------------------------------------------------
// swapdivs()- Swap between which is the visible and which is the hidden div
// -------------------------------------------------------------------

pausescroller.prototype.swapdivs=function(){
var tempcontainer=this.visiblediv
this.visiblediv=this.hiddendiv
this.hiddendiv=tempcontainer
}

pausescroller.prototype.getinline=function(div1, div2){
div1.style.top=this.visibledivtop+"px"
div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px"
}

// -------------------------------------------------------------------
// setmessage()- Populate the hidden div with the next message before it's visible
// -------------------------------------------------------------------

pausescroller.prototype.setmessage=function(){
var scrollerinstance=this
if (this.mouseoverBol==1) //if mouse is currently over scoller, do nothing (pause it)
setTimeout(function(){scrollerinstance.setmessage()}, 100)
else{
var i=this.hiddendivpointer
var ceiling=this.content.length
this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1
this.hiddendiv.innerHTML=this.content[this.hiddendivpointer]
this.animateup()
}
}

pausescroller.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
if (tickerobj.currentStyle)
return tickerobj.currentStyle["paddingTop"]
else if (window.getComputedStyle) //if DOM2
return window.getComputedStyle(tickerobj, "").getPropertyValue("padding-top")
else
return 0
}

</script>


<script type="text/javascript">

//new pausescroller(name_of_message_array, CSS_ID, CSS_classname, pause_in_miliseconds)
new pausescroller(pausecontent2, "pscroller2", "someclass", 1000)

</script>

Make these customizations:

  • To change the Loud speaker image change

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Eqdn1G2stulL2fvvK-Fsk49jlwGHnCDWa1eianBjNIj1NRJ_exaohcTrVw_PZ3ag7Ksao2yuMPJtzD7S9TEeLmg943lXJHubKMlWgtKeLvr8JJL6_gEHmbMn7tARjn8IMkJ0ST440Uw/s400/updates1.gif

  • If you wish to increase the scroller width size then edit this width: 430px;
  • Replace 0080ff with your link colour.
  • Replace HEADLINE TEXT with anything you wish to write as announcement or updates. Write any text description you want.
  • Replace # with headline page link/url. On clicking this link the visitors will be taken to the headline related page. If you don't want to link your Headlines then simply delete # next to each HEADLINE TEXT  that you don't wish to hyperlink.
  • To change the scroll change delay time kindly edit 1000 . The more your decrease this value the faster will the links scroll up and down.

           4.  Finally save your widget and you are all set!

Visit your blogs to see it scrolling beautifully.

How do you find this new widget?

Please let me know whether you liked this new widget or not. Also feel free to ask any related question. Would be a pleasure to help you out. Peace buddies.

The only favour I need is to kindly like it and +1'd it. :)

Create Image Gallery For Blogger With Control Options

blogger image galleryI never thought we could have a light, fast loading, cute and yet extremely controllable Image Gallery or slideshow with play and pause options. Using Jquery, JavaScript and my beloved CSS and HTML and thanks to dynamic drive we were able to create a blogger compatible widget that will display your featured posts, photos, pictures etc. in a beautiful way. Again I tried my level best to make it a one step installation. So you just need to copy and paste the code inside a blogger widget to let things work. Kindly view the demo on this blog towards the bottom right sidebar.

 

 

Installing Image Gallery in Blogger

  1. Log in to your Blogger account
  2. Go To Design > Page Elements
  3. Select HTML/JavaScript widget
  4. Paste the following code inside it,

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>

<style type="text/css">

/*Make sure your page contains a valid doctype at the top*/
#simplegallery1{ //CSS for Simple Gallery Example 1
position: relative; /*keep this intact*/
visibility: hidden; /*keep this intact*/
border: 1px solid #666;
}

#simplegallery1 .gallerydesctext{ //CSS for description DIV of Example 1 (if defined)
text-align: left;
padding: 2px 5px;
font: 10px normal verdana, arial;
}

</style>

<script type="text/javascript" >

var simpleGallery_navpanel={
    loadinggif: 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-2fJD8MLDOBY9XgsJu7nJCrQGxKHxCqWzZXS91do4IJ6uacAbGIAa-njcnHJzFd4_7m3EdTdFXrKzW748wz8uYNDRu2lUKLWT4j0NmbD-J3YOUwmFredjLlnsR6YeyK2E4wUswkprg_Q/s400/ajaxload.gif', //full path or URL to loading gif image
    panel: {height:'45px', opacity:0.5, paddingTop:'5px', fontStyle:'bold 11px Verdana'}, //customize nav panel container
    images: [ 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb_WsnHTL8eTLiSVegS24oMYlOmFdiaVU-DfZGK3WDWQBatJ6tytKz261rmV0BUzCb3PHSPI6RmE3Hid0jVqmXp2T7_tehxl5XwLirGVqcCb_4uRXrOCeZKGP8lpsbgnJ1a7aTXqlZE0k/s400/left.gif', 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNxyrIeXgVWxvbMOOp2sskkwT7HVHlj01wkvTtfn3DkwOpbA_yxwOeoqGQg-uq9WA7PiwUnn_ZR-sTUUlCsaQ40s6d8m_SW9E7dEBJNt6Qipc4eWml71WRpDOwziXjGlTfEXmhHigY0Mo/s400/play.gif', 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpt629YsAwoZbX5IsoCTTC7RhT8dgWMiMuCBBdYEvLBlmURkfVcTWsisxS0vhxfNEV6cH9phY0TgbVwrQqhCLwAzqww-CmiVUidkOFqGmC41KpperHXv3ZHF59lB0DNZOEcbf_HijVQdg/s400/right.gif', 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8y-gxbWGXVclOO-GKyBeQXr7wq-IuGI094UIReAzRTY1G44BObT_yu0ziq9HerkFStnCgSOEHHhhSeKbAOSbYQW-SLY7sXpob-IbV6FfDENwA4agKvaMkbN8ZNHoW_ID6xg80Ur65ooA/s400/pause.gif'], //nav panel images (in that order)
    imageSpacing: {offsetTop:[-4, 0, -4], spacing:10}, //top offset of left, play, and right images, PLUS spacing between the 3 images
    slideduration: 500 //duration of slide up animation to reveal panel
}

function simpleGallery(settingarg){
    this.setting=settingarg
    settingarg=null
    var setting=this.setting
    setting.panelheight=(parseInt(setting.navpanelheight)>5)? parseInt(setting.navpanelheight) : parseInt(simpleGallery_navpanel.panel.height)
    setting.fadeduration=parseInt(setting.fadeduration)
    setting.curimage=(setting.persist)? simpleGallery.routines.getCookie("gallery-"+setting.wrapperid) : 0
    setting.curimage=setting.curimage || 0 //account for curimage being null if cookie is empty
    setting.preloadfirst=(!jQuery.Deferred)? false : (typeof setting.preloadfirst!="undefined")? setting.preloadfirst : true //Boolean on whether to preload all images before showing gallery
    setting.ispaused=!setting.autoplay[0] //ispaused reflects current state of gallery, autoplay[0] indicates whether gallery is set to auto play
    setting.currentstep=0 //keep track of # of slides slideshow has gone through
    setting.totalsteps=setting.imagearray.length*setting.autoplay[2] //Total steps limit: # of images x # of user specified cycles
    setting.fglayer=0, setting.bglayer=1 //index of active and background layer (switches after each change of slide)
    setting.oninit=setting.oninit || function(){}
    setting.onslide=setting.onslide || function(){}
    var preloadimages=[], longestdesc=null, loadedimages=0
    var dfd = (setting.preloadfirst)? jQuery.Deferred() : {resolve:function(){}, done:function(f){f()}} //create real deferred object unless preloadfirst setting is false or browser doesn't support it
    setting.longestdesc="" //get longest description of all slides. If no desciptions defined, variable contains ""
    setting.$loadinggif=(function(){ //preload and ref ajax loading gif
        var loadgif=new Image()
        loadgif.src=simpleGallery_navpanel.loadinggif
        return jQuery(loadgif).css({verticalAlign:'middle'}).wrap('<div style="position:absolute;text-align:center;width:100%;height:100%" />').parent()
    })()
    for (var i=0; i<setting.imagearray.length; i++){  //preload slideshow images
        preloadimages[i]=new Image()
        preloadimages[i].src=setting.imagearray[i][0]
        if (setting.imagearray[i][3] && setting.imagearray[i][3].length>setting.longestdesc.length)
            setting.longestdesc=setting.imagearray[i][3]
        jQuery(preloadimages[i]).bind('load error', function(){
            loadedimages++
            if (loadedimages==setting.imagearray.length){
                dfd.resolve() //indicate all images have been loaded
            }
        })
    }
    var slideshow=this
    jQuery(document).ready(function($){
        var setting=slideshow.setting
        setting.$wrapperdiv=$('#'+setting.wrapperid).css({position:'relative', visibility:'visible', background:'black', overflow:'hidden', width:setting.dimensions[0], height:setting.dimensions[1]}).empty() //main gallery DIV
        if (setting.$wrapperdiv.length==0){ //if no wrapper DIV found
            alert("Error: DIV with ID \""+setting.wrapperid+"\" not found on page.")
            return
        }
        setting.$gallerylayers=$('<div class="gallerylayer"></div><div class="gallerylayer"></div>') //two stacked DIVs to display the actual slide
            .css({position:'absolute', left:0, top:0})
            .appendTo(setting.$wrapperdiv)
        setting.$loadinggif.css({top:setting.dimensions[1]/2-30}).appendTo(setting.$wrapperdiv) //30 is assumed height of ajax loading gif
        setting.gallerylayers=setting.$gallerylayers.get() //cache stacked DIVs as DOM objects
        setting.navbuttons=simpleGallery.routines.addnavpanel(setting) //get 4 nav buttons DIVs as DOM objects
        if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
            setting.descdiv=simpleGallery.routines.adddescpanel(setting)
        $(setting.navbuttons).filter('img.navimages').css({opacity:0.8})
            .bind('mouseover mouseout', function(e){
                $(this).css({opacity:(e.type=="mouseover")? 1 : 0.8})
            })
            .bind('click', function(e){
                var keyword=e.target.title.toLowerCase()
                slideshow.navigate(keyword) //assign behavior to nav images
            })
        dfd.done(function(){ //execute when all images have loaded
            setting.$loadinggif.remove()
            setting.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidenavpanel('show')})
            setting.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidenavpanel('hide')})
            slideshow.showslide(setting.curimage) //show initial slide
            setting.oninit.call(slideshow) //trigger oninit() event
            $(window).bind('unload', function(){ //clean up and persist
                $(slideshow.setting.navbuttons).unbind()
                if (slideshow.setting.persist) //remember last shown image's index
                    simpleGallery.routines.setCookie("gallery-"+setting.wrapperid, setting.curimage)
                jQuery.each(slideshow.setting, function(k){
                    if (slideshow.setting[k] instanceof Array){
                        for (var i=0; i<slideshow.setting[k].length; i++){
                            if (slideshow.setting[k][i].tagName=="DIV") //catches 2 gallerylayer divs, gallerystatus div
                                slideshow.setting[k][i].innerHTML=null
                            slideshow.setting[k][i]=null
                        }
                    }
                    if (slideshow.setting[k].innerHTML) //catch gallerydesctext div
                        slideshow.setting[k].innerHTML=null
                    slideshow.setting[k]=null
                })
                slideshow=slideshow.setting=null
            })
        }) //end deferred code
    }) //end jQuery domload
}

simpleGallery.prototype={

    navigate:function(keyword){
        clearTimeout(this.setting.playtimer)
        this.setting.totalsteps=100000 //if any of the nav buttons are clicked on, set totalsteps limit to an "unreachable" number
        if (!isNaN(parseInt(keyword))){
            this.showslide(parseInt(keyword))
        }
        else if (/(prev)|(next)/i.test(keyword)){
            this.showslide(keyword.toLowerCase())
        }
        else{ //if play|pause button
            var slideshow=this
            var $playbutton=$(this.setting.navbuttons).eq(1)
            if (!this.setting.ispaused){ //if pause Gallery
                this.setting.autoplay[0]=false
                $playbutton.attr({title:'Play', src:simpleGallery_navpanel.images[1]})
            }
            else if (this.setting.ispaused){ //if play Gallery
                this.setting.autoplay[0]=true
                this.setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, this.setting.autoplay[1])
                $playbutton.attr({title:'Pause', src:simpleGallery_navpanel.images[3]})
            }
            slideshow.setting.ispaused=!slideshow.setting.ispaused
        }
    },

    showslide:function(keyword){
        var slideshow=this
        var setting=slideshow.setting
        var totalimages=setting.imagearray.length
        var imgindex=(keyword=="next")? (setting.curimage<totalimages-1? setting.curimage+1 : 0)
            : (keyword=="prev")? (setting.curimage>0? setting.curimage-1 : totalimages-1)
            : Math.min(keyword, totalimages-1)
        setting.gallerylayers[setting.bglayer].innerHTML=simpleGallery.routines.getSlideHTML(setting.imagearray[imgindex])
        setting.$gallerylayers.eq(setting.bglayer).css({zIndex:1000, opacity:0}) //background layer becomes foreground
            .stop().css({opacity:0}).animate({opacity:1}, setting.fadeduration, function(){ //Callback function after fade animation is complete:
                clearTimeout(setting.playtimer)
                setting.gallerylayers[setting.bglayer].innerHTML=null  //empty bglayer (previously fglayer before setting.fglayer=setting.bglayer was set below)
                try{
                    setting.onslide.call(slideshow, setting.gallerylayers[setting.fglayer], setting.curimage)
                }catch(e){
                    alert("Simple Controls Gallery: An error has occured somwhere in your code attached to the \"onslide\" event: "+e)
                }
                setting.currentstep+=1
                if (setting.autoplay[0]){
                    if (setting.currentstep<=setting.totalsteps)
                        setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.autoplay[1])
                    else
                        slideshow.navigate("play/pause")
                }
            }) //end callback function
        setting.gallerylayers[setting.fglayer].style.zIndex=999 //foreground layer becomes background
        setting.fglayer=setting.bglayer
        setting.bglayer=(setting.bglayer==0)? 1 : 0
        setting.curimage=imgindex
        setting.navbuttons[3].innerHTML=(setting.curimage+1) + '/' + setting.imagearray.length
        if (setting.imagearray[imgindex][3]){ //if this slide contains a description
            setting.$descpanel.css({visibility:'visible'})
            setting.descdiv.innerHTML=setting.imagearray[imgindex][3]
        }
        else if (setting.longestdesc!=""){ //if at least one slide contains a description (feature is enabled)
            setting.descdiv.innerHTML=null
            setting.$descpanel.css({visibility:'hidden'})

        }
    },

    showhidenavpanel:function(state){
        var setting=this.setting
        var endpoint=(state=="show")? setting.dimensions[1]-setting.panelheight : this.setting.dimensions[1]
        setting.$navpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
        if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
            this.showhidedescpanel(state)
    },

    showhidedescpanel:function(state){
        var setting=this.setting
        var endpoint=(state=="show")? 0 : -setting.descpanelheight
        setting.$descpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
    }
}

simpleGallery.routines={

    getSlideHTML:function(imgelement){
        var layerHTML=(imgelement[1])? '<a href="'+imgelement[1]+'" target="'+imgelement[2]+'">\n' : '' //hyperlink slide?
        layerHTML+='<img src="'+imgelement[0]+'" style="border-width:0" />'
        layerHTML+=(imgelement[1])? '</a>' : ''
        return layerHTML //return HTML for this layer
    },

    addnavpanel:function(setting){
        var interfaceHTML=''
        for (var i=0; i<3; i++){
            var imgstyle='position:relative; border:0; cursor:hand; cursor:pointer; top:'+simpleGallery_navpanel.imageSpacing.offsetTop[i]+'px; margin-right:'+(i!=2? simpleGallery_navpanel.imageSpacing.spacing+'px' : 0)
            var title=(i==0? 'Prev' : (i==1)? (setting.ispaused? 'Play' : 'Pause') : 'Next')
            var imagesrc=(i==1)? simpleGallery_navpanel.images[(setting.ispaused)? 1 : 3] : simpleGallery_navpanel.images[i]
            interfaceHTML+='<img class="navimages" title="' + title + '" src="'+ imagesrc +'" style="'+imgstyle+'" /> '
        }
        interfaceHTML+='<div class="gallerystatus" style="margin-top:1px">' + (setting.curimage+1) + '/' + setting.imagearray.length + '</div>'
        setting.$navpanel=$('<div class="navpanellayer"></div>')
            .css({position:'absolute', width:'100%', height:setting.panelheight, left:0, top:setting.dimensions[1], font:simpleGallery_navpanel.panel.fontStyle, zIndex:'1001'})
            .appendTo(setting.$wrapperdiv)
        $('<div class="navpanelbg"></div><div class="navpanelfg"></div>') //create inner nav panel DIVs
            .css({position:'absolute', left:0, top:0, width:'100%', height:'100%'})
            .eq(0).css({background:'black', opacity:simpleGallery_navpanel.panel.opacity}).end() //"navpanelbg" div
            .eq(1).css({paddingTop:simpleGallery_navpanel.panel.paddingTop, textAlign:'center', color:'white'}).html(interfaceHTML).end() //"navpanelfg" div
            .appendTo(setting.$navpanel)
        return setting.$navpanel.find('img.navimages, div.gallerystatus').get() //return 4 nav related images and DIVs as DOM objects
    },

    adddescpanel:function(setting){
        setting.$descpanel=$('<div class="gallerydesc"><div class="gallerydescbg"></div><div class="gallerydescfg"><div class="gallerydesctext"></div></div></div>')
            .css({position:'absolute', width:'100%', left:0, top:-1000, zIndex:'1001'})
            .find('div').css({position:'absolute', left:0, top:0, width:'100%'})
            .eq(0).css({background:'black', opacity:simpleGallery_navpanel.panel.opacity}).end() //"gallerydescbg" div
            .eq(1).css({color:'white'}).end() //"gallerydescfg" div
            .eq(2).html(setting.longestdesc).end().end()
            .appendTo(setting.$wrapperdiv)
        var $gallerydesctext=setting.$descpanel.find('div.gallerydesctext')
        setting.descpanelheight=$gallerydesctext.outerHeight()
        setting.$descpanel.css({top:-setting.descpanelheight, height:setting.descpanelheight}).find('div').css({height:'100%'})
        return setting.$descpanel.find('div.gallerydesctext').get(0) //return gallery description DIV as a DOM object
    },

    getCookie:function(Name){
        var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
        if (document.cookie.match(re)) //if cookie found
            return document.cookie.match(re)[0].split("=")[1] //return its value
        return null
    },

    setCookie:function(name, value){
        document.cookie = name+"=" + value + ";path=/"
    }
}

</script>

<script type="text/javascript">

var mygallery=new simpleGallery({
    wrapperid: "simplegallery1", //ID of main gallery container,
    dimensions: [300, 200], //width/height of gallery in pixels. Should reflect dimensions of the images exactly
    imagearray: [
        ["IMAGE LINK 1", "#", "_new", "DESCRIPTION"],

        ["IMAGE LINK 2", "#", "_new", "DESCRIPTION"],


        ["IMAGE LINK 3","#", "_new", "DESCRIPTION"],


        ["IMAGE LINK 4", "#", "_new", "DESCRIPTION"],


        ["IMAGE LINK 5", "#", "_new", "DESCRIPTION"]

    ],
    autoplay: [true, 2000, 20], //[auto_play_boolean, delay_btw_slide_millisec, cycles_before_stopping_int]
    persist: false, //remember last viewed slide and recall within same session?
    fadeduration: 500, //transition duration (milliseconds)
    oninit:function(){ //event that fires when gallery has initialized/ ready to run
        //Keyword "this": references current gallery instance (ie: try this.navigate("play/pause"))
    },
    onslide:function(curslide, i){ //event that fires after each slide is shown
        //Keyword "this": references current gallery instance
        //curslide: returns DOM reference to current slide's DIV (ie: try alert(curslide.innerHTML)
        //i: integer reflecting current image within collection being shown (0=1st image, 1=2nd etc)
    }
})

</script>

<div id="simplegallery1"></div>

 

Now carefully make these changes:

  1. Resize all your images to a fixed size. To change the image size edit 300, 200 where 300 is the width and 200 is the height. If your images are of bigger size then they will be clipped rather resized. So its better that you manually first resize your images in Photoshop and then proceed.
  2. Upload your images in blogger and then replace  IMAGE LINK 1, IMAGE LINK 2 ,...., so on with your Image links in that order.
  3. Replace # with the Page Link. The visitors will click the image to land on a page so mention the URL of that page. If you don't want to link the image then simply delete  #
  4. Replace DESCRIPTION with some information about the image. This image decription will appear at the top when a user hovers cursor on it. If you don't want to write any description then simply delete  DESCRIPTION
  5. If you don't want the images to play automatically then turn off auto play. Turn true to false.
  6. To change the time interval between next and previous slide then edit 2000
  7. That's it! You are all done! :)

You can do a lot more but I am not sharing every thing here for simplicity. Yes you can change its entire look, colors, fonts and all. If you need any further customization then just post your query and I will reply the earliest possible.

Need help?

If you needed any further help let me know. I have tried to keep the installation as easy as possible and I have made sure that the slideshow loads fast and works on all major browsers. Do let me know how you liked this new widget. :)

You may also like these,

What are Google +Snippets and Inline annotations?

+snippets and inline annotationsFinally Google+ released the most awaited feature and that was sharing site content with your circles. Now whenever your +1 a page you will be provided with a share on Google+ option, by choosing which you can post on your profile a thumbnail image, description and link to that website. It works similar to Facebook like button now. This new option is named +snippets. Google released this new feature just few hours ago and they have also released Google+ inline Inline annotations which are simple display of your friend's profile images next to the +1 button. Lets know more about these two new features.

What are +Snippets?

Now whenever you share content from the +1 button, you’ll notice that the button automatically includes a link, an image and a description in the sharebox. Take an example below. If you +1 the button at the top-right-corner of this page you will notice an option that says "Share on Google+" clicking this option will create the following display:

Note: At present only registered members can see new features like +Snippets. First submit your ID at our Google+ Platform Preview and then come back and +1 the button on our blog to see the effect.

+snippets

Just like how Facebook does, you can now see an image, Page title link and description. Its indeed a great new functionality for web owners and bloggers who want to increase their website traffic. It will indeed increase site pageviews and thus revenue.

What are Inline Annotations

This feature help increase visitors engagement after users see a friend’s recommendation right on your page. The visitor will see profile pics of his friends next to your +1 button. The visitor will indeed now pay more attention to your site and will spend more time reading your blog posts which will surely decrease your bounce rate and bring a significant PageViews boost.

image

What do you think?

This two new added brilliant features is again a response to Facebook like button and like box plugins. I am sure we have a lot more to see. I am really enjoying the way Google is developing their social network bomb. Kindly share your views on this latest development. 

Easy DNS Settings For Blogger Domains


UPDATE: Please read a Far easy one step process by clicking this link -> Blogger Domain Settings Simplfied





DNS setttingsAfter purchasing a domain from a hosting service you need to make some DNS settings in order to associate your new custom domain with your blogger blog. If you have bought the domain from blogger then you don't need to read this post but you have bought the domain from a different hosting company then keep reading.




DNS stands for Domain Name System. It is the management system that controls domain use. Inside your DNS management page you will find two records entitled as CNAME records and A-Records. We will need to set up a CNAME record only in order to connect your domain to your blog. So lets get to work.





Creating a CNAME Record For Your Custom Domain



Kindly follow these easy steps:



  1. Log in to your Hosting Service's Website account



  2. Go To DNS Management page. You will have to locate this link or tab yourself. Look here and there unless you find the DNS page on your dashboard.



  3. Click on Enable Advance Settings if you see any such link else proceed



  4. Now Find the CNAME tab and go there



  5. Inside your CNAME window where it asks for Name then simply enter "www" and where it asks for Host Name/Alias then enter  ghs.google.com



  6. If you found some data filled  then replace it with the data in step#5



  7. Save your settings and you are all set!







Creating A-Records



This option will redirect your visitors from a naked domain (mybloggertricks.com) to your full domain (www.MybloggerTricks.com) Most visitors don't type the www before your domain and if you don't create a A-record your visitors will see an error page. So you must create a A-Record.



  1. Inside your Hosting Service Dashboard find A-records under DNS



  2. Inside the A-record page enter your domain name as mybloggertricks.com without the www



  3. Now list the I.P. addresses given below in the "A" section . Remember that you will have to create a new A-record for each I.P address that means 4 A-records.





216.239.32.21
216.239.34.21
216.239.36.21
216.239.38.21






     4.  You are finally done!


Now wait for 10-15 minutes till your DNS settings are activated and then jump to the next part of the tutorial.





Setting up Domain on blogger




  1. Now log in to your Blogger account and go to Settings > Publishing



  2. Click the link that says switch to custom domain




custom domain settings


      3.   Now enter your full Domain URL inside the box (like www.mybloggertricks.com)


submit url


       4. Done! You have successfully redirected your .blogspot.com domain to your custom .com domain. It will take at most 48 hours for all DNS servers to get updated and then you can happily access your blog with your full fresh new branded name. :)





DNS Settings for Godaddy and 1and1



If you have purchased the domain from these services then you can try this direct method.


GoDaddy.com




  1. Log in to your account at www.godaddy.com.



  2. Open the Domains tab and select My Domain Names. You'll be directed to the Domain Manager page.



  3. Click the domain that you'd like to use with your blog.



  4. Click the Total DNS Control And MX Records link at the bottom of the section entitled Total DNS.



  5. Click Add New CNAME Record in the box labelled CNAMES (aliases). If you've already created a CNAME record for your blog's address, click the pencil icon next to the existing CNAME record.



  6. For the Name, enter only the subdomain of the address you want to use for your blog. For example, if you picked www.mydomain.com as your address, enter www here.



  7. Enter ghs.google.com as the Host Name. Specify a TTL or use the default setting of 1 hour.



  8. Click OK, and then click OK again.





1and1




  1. Log in to your account at https://admin.1and1.com



  2. If it's not already selected, click the Administration tab.



  3. Click Domains. The Domain Overview page appears.



  4. From the New drop-down menu, select Create Subdomain. (If you've already created a subdomain for your blog's address, skip to step six.)



  5. Enter only the subdomain you want to use, and click OK. For example, if you chose www.mydomain.com for your blog's address, you should enter www here.



  6. Select the checkbox next to the subdomain that you will be using. (Example: www.mydomain.com)



  7. From the DNS menu, select Edit DNS Settings.



  8. Click the radio button next to CNAME.



  9. Enter ghs.google.com next to Alias.



  10. Click OK.











Please let me know if you needed any further assistance. Would be a pleasure to answer your queries. Stay safe. :>


Don't have a Credit Card? How To Buy a Blogger Domain?

credit cardsProbably most of you are students or housewives. The problems that we all often face while entering into online business is how to get paid? How to receive a payment when you don't have a bank account or you don't hold an online account like PayPal? Now lets discuss a possible way through which you could buy something online like for instance if you wish to buy a domain from blogger then how do you do that.

 

Approach a Person who has a Credit Card

This is of course the most easiest thing to do. You can ask a friend or relative to let you use their Master Card or visa Card. I know it would be difficult to convince someone to let you use their credit card but most often this tip works. It worked for me!

You must get your personal PayPal account as soon as possible. Again in this case you can take the help of your closed ones. If you have a brother or sister abroad then I am sure they will be generous enough to help you in this case.

For using PayPal in banned countries you can read this post

Why are you buying a domain from Blogger?

I wonder why people buy domain from blogger at such an expensive rate while they can buy it themselves for less than $10. Most people buy a domain from blogger because of automatic DNS settings but honestly speaking it takes just 2 minutes to set your DNS and CName records. I will write a post on it today. Blogger takes commission from its registrars for the domains that it sells to its users. Normally domains are cheap as low as $5-$7 if you approach a local domain host company. I have hosted MBT at a local domain web hosting company and I am pretty comfortable with them. I have many options to pay them. I can pay online, through PayPal, credit card, Bank deposit, Cheque and of course Direct Payment (CASH).

So if you are a student and don't have any friend to help you out and neither a family member to create a PayPal account for you then I guess you must try the local way which is payment through CASH. Always choose a local host and choose one that has some reputation and is recognized locally. You can Google for best Domain hosting companies in your country and I am sure you will be able to find a good host easily.

I will conclude this post with one friendly advice and that is please get a PayPal account as soon as possible. Nothing is more worth than PayPal. It is trusted worldwide and many advertising companies accept PayPal only as the safest money transaction service.

Facebook Webcam settings For Quality Video & Audio Calling

Facebook video settingsFacebook video calling is a great functionality added to FB and it is still under development. Zukerberg joined hands with Skype network to avail its users with not just a chat option anymore but real face-to-face video chat. I already mentioned in a post how to set up a video chat in Facebook and today we will be focusing more on how to improve the video and audio quality. If you are a user of Skype then you will find the tips extremely easy.

Install a Webcam

Facebook webcam settingsFirst you need a quality webcam which is a must. Choose a webcam that may make video calls in Hi-Definition i.e.  1280 x 720 pixel resolution at up to 30 frames per second. Put up some money and get a high resolution camera. It would cost less than $50. I would recommend that you buy one from Skype itself. See the varieties by clicking here. A good webcam will have a built-in microphone so you wont need to wear a bulky headphone to talk.

After you have purchased a camera simply do this:

  1. Run the webcam software CD before plugging the webcam into USB cord..
  2. Plug in webcam when prompted.
  3. Now follow the easy instructions provided by software
  4. Right click on webcam icon in system tray.
  5. Click on "Check for updates".
  6. Download and install updates.
  7. Reboot computer.
  8. You are done!

Your webcam is now installed and you can now take pictures with it and make videos on your computer but first we will need to download and install Skype video calling application for things to work. Now jump to next step

Facebook Settings For Best HD Display and Audio Quality

The video settings are the same as that for Skype. We will adjust our webcam to give best results in Skype. If it gives quality result on a Skype video call so will it on Facebook because both platforms use the same software.

  1. Install Skype. If you already have it then skip this step.
  2. In the upper right of the Skype window, click on Tools > Options > Video Settings. Click "Enable Skype video" and "Start my video automatically when I call". Use the dropdown box to select your specific webcam model.
  3. Click "Save".

Now to make a Skype video call do this:

  1. Click on a contact.
  2. Turn on your speakers. 
  3. Click on green button to initiate a call. Both ends will hear a ringing.
  4. Accept the call and start the conversation
  5. During the call ask your friend if your video is clear and voice sounds clear. If you he says yes then Bingo and if he said that the results are not so good then adjust your webcam audio volume and brightness control option. Play around the webcam options like contrast, zoom, brightness until and unless you hear a YES from your buddy.
  6. Finally you are now all ready to make a clear, quality video call on Facebook.

You have successfully purchased and installed a camera and you also adjusted the best HD video settings. Now you must log into your Facebook account and confidently make a video call by following the easy steps mentioned on this tutorial:

I just hope this little help proves useful for most of you and you may enjoy the new FB fun. Stay safe and take care. Peace! :>