minimize, restore, maximize and hide functionality with javascript

Inpage Popup are most used JS for website developers. Here in this article I given full detailed code for popup using javascript. Many times we need to minimize and restore functionality for our in page pop-up. In This article I will show how to achieve the minimize and maximize and restore functionality with javascript.

minimize, restore, maximize and hide functionality with javascript

minimize, restore, maximize and hide functionality with javascript
minimize, restore, maximize and hide functionality with javascript

I you want the minimize functionality for your in page pop-up use following code for minimize and restore button. Following code you can use for showing the minimize button on pop-up.

Note: Here for this example My in page popup div id name is “popup-container”. For using following example you should keep the main popup continer id name is “popup-container”.


<a id="dialog-minimize" href="#" onclick="minimize();" style="display: block;"><span>Min</span></a>

<a id="dialog-minimize-return" href="#" onclick="minimize_restore();" style="display:none;"><span>Min</span></a>

Use following javascript function in your document.

[viral-lock message=”Solution code is Hidden! It’s Visible for Users who Liked/Shared This article on Facebook or Twitter or Google+. Like or Tweet this article to reveal the content.”]

function minimize(){

 var main-containter = document.getElementById('popup-container');
 window.divh = main-containter.style.height;
 window.divw = main-containter.style.width;
 window.divtop = main-containter.style.top;
 window.divleft = main-containter.style.left;

 var hideminbutton = document.getElementById('dialog-minimize');
 hideminbutton.style.display = "none";

 var hideminbutton = document.getElementById('dialog-minimize-return');
 hideminbutton.style.display = "block";

 main-containter.style.position ="absolute";
 main-containter.style.left ="10px";
 main-containter.style.bottom ="0px";
 main-containter.style.marginBottom ="-100px";
 main-containter.style.top = "auto";
 /* css({position:"absolute", left:"10px", width: 250, height: 100, bottom:"-60px"});
 top: 389px; left: 381px; bottom: -60px;
 */
}

function minimize_restore(){
 var popup_element = document.getElementById('popup-container');
 popup_element.style.position ="absolute";
 popup_element.style.height = window.div_height;
 popup_element.style.width = window.div_width;
 popup_element.style.left = window.divleft;
 popup_element.style.top = window.divtop;

 var hideminbutton = document.getElementById('dialog-minimize');
 hideminbutton.style.display = "block";

 var hideminbutton = document.getElementById('dialog-minimize-return');
 hideminbutton.style.display = "none";
}

Above function will swap the minimize and restore button through javascript.

Using following function you can achieve the maximize and maximize restore functionality using the simple javascript. following code you need to use in your html for maximize button.


<a id="dialog-maximize" onclick="maximize();" href="#" style="display: block;"><span>Max</span></a>

<a id="dialog-maximize-return" onclick="maximize_restore();" href="#" style="display: none;"><span>Max</span></a>

following javascript code you need to use in your document.


function maximize_restore(){
 var popup_element = document.getElementById('popup-container');
 popup_element.style.position ="absolute";
 popup_element.style.left = window.divleft;
 popup_element.style.top = window.divtop;
 popup_element.style.height = window.div_height;
 popup_element.style.width = window.div_width;

 var hideminbutton = document.getElementById('dialog-maximize');
 hideminbutton.style.display = "block";

 var hideminbutton = document.getElementById('dialog-maximize-return');
 hideminbutton.style.display = "none";
}

function maximize(){

 var popup_element = document.getElementById('popup-container');
 window.div_height = popup_element.style.height;
 window.div_width = popup_element.style.width;
 window.divtop = popup_element.style.top;
 window.divleft = popup_element.style.left;

 var hideminbutton = document.getElementById('dialog-maximize');
 hideminbutton.style.display = "none";

 var hideminbutton = document.getElementById('dialog-maximize-return');
 hideminbutton.style.display = "block";

 var myWidth = 0, myHeight = 0;
 if( typeof( window.innerWidth ) == 'number' ) {
 //Non-IE
 myWidth = window.innerWidth;
 myHeight = window.innerHeight;
 } else if( document.documentElement &&
 ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
 //IE 6+ in 'standards compliant mode'
 myWidth = document.documentElement.clientWidth;
 myHeight = document.documentElement.clientHeight;
 } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
 //IE 4 compatible
 myWidth = document.body.clientWidth;
 myHeight = document.body.clientHeight;
 }
 myWidth = myWidth -25;
 myHeight = myHeight -20;
 var popup_element = document.getElementById('popup-container');
 popup_element.style.position ="absolute";
 popup_element.style.left ="10px";
 popup_element.style.height = myHeight +"px";
 popup_element.style.width = myWidth +"px";
 popup_element.style.top = "5px";
}

[/viral-lock]
If you having any issue with this script please get back to me. Please write email to me on support@purabtech.in

If you need the more information about Javascript and Jquery then please refer the following articles.

wordpress and jquery conflicts – How to solve that
100+ jquery and CSS techniques and Tips and tutorials
jquery tips for wordpress theme developers
Fadein and Fadeout effect through javascript
minimize, restore, maximize and hide functionality with javascript without using jquery
Complete Javascript form Validation now easy ( Checkbox, Websites, Email, Maxlength)

Active Model in Rails

The technique we used was quite a hack as this is something that ActiveRecord wasn’t designed to do but now in Rails 3.0 we have a new feature called ActiveModel which makes doing something like this a lot easier.

Active Model in Rails

Before we get into the details of ActiveModel we’ll first describe the part of the application that we’re going to modify to use it.

Active Model in Rails 3.0
Active Model in Rails 3.0

The screenshot above shows a contact form that has been created using Rails’ scaffolding. The application has a model called Message that is currently backed by ActiveRecord which means that we’re managing messages through the database. We’re going to change the way this form works so that it just sends emails and doesn’t store messages in a database table.

When you’re thinking of doing something like this it’s always a good idea to first consider your requirements and make sure that you really don’t want to store the data from the form in a database as there are often good side-effects to doing this. A database can act as a backup and also makes it easier to move the message-sending into a queue in a background process. For the purposes of this example, however, we don’t want any of that functionality so we’re free to go ahead and make our model tableless.

The code for the Message class looks like this:

File name: /app/models/message.rb


class Message < ActiveRecord::Base
 validates_presence_of :name
 validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
 validates_length_of :content, :maximum => 500
end

Message inherits from ActiveRecord::Base as you would expect a model class to, but as we don’t want this model to have a database back-end we’re going to remove that inheritance. As soon as we do this, though, our form will no longer work as the validators are provided by ActiveRecord. Fortunately, we can restore this functionality by using ActiveModel.

If we take a look at the Rails 3 source code we’ll see the that there are activerecord and activemodel directories. The core Rails team has taken everything from ActiveRecord that wasn’t specific to the database backend and moved it out into ActiveModel. ActiveRecord still relies heavily on ActiveModel for the functionality that isn’t specific to the database and as ActiveModel is full-featured and thoroughly tested it’s great for use outside ActiveRecord.

It we take a look in the directory that contains the code for ActiveModel we can see the functionality that it provides.

We can see from the list above that ActiveModel includes code to handle callbacks, dirty tracking, serialization and validation, among other things. The last of these is exactly what we’re looking for.

The code for validations has the following comment near the top and we can see from it that it’s fairly easy to add validations to a model. All we need to do is include the Validations module and provide getter methods for the attributes that we’re calling validators on.

Now that we know this we can apply it to our Message model.

File name: /app/models/message.rb


class Message
 include ActiveModel::Validations

 attr_accessor :name, :email, :content

 validates_presence_of :name
 validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
 validates_length_of :content, :maximum => 500
end

Message inherits from ActiveRecord::Base as you would expect a model class to, but as we don’t want this model to have a database back-end we’re going to remove that inheritance. As soon as we do this, though, our form will no longer work as the validators are provided by ActiveRecord. Fortunately, we can restore this functionality by using ActiveModel.

If we take a look at the Rails 3 source code we’ll see the that there are activerecord and activemodel directories. The core Rails team has taken everything from ActiveRecord that wasn’t specific to the database backend and moved it out into ActiveModel. ActiveRecord still relies heavily on ActiveModel for the functionality that isn’t specific to the database and as ActiveModel is full-featured and thoroughly tested it’s great for use outside ActiveRecord.

It we take a look in the directory that contains the code for ActiveModel we can see the functionality that it provides.

We can see from the list above that ActiveModel includes code to handle callbacks, dirty tracking, serialization and validation, among other things. The last of these is exactly what we’re looking for.

The code for validations has the following comment near the top and we can see from it that it’s fairly easy to add validations to a model. All we need to do is include the Validations module and provide getter methods for the attributes that we’re calling validators on.

Now that we know this we can apply it to our Message model.

File name: /app/models/message.rb


class Message
 include ActiveModel::Validations

 attr_accessor :name, :email, :content

 validates_presence_of :name
 validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
 validates_length_of :content, :maximum => 500
end

This isn’t enough to get our model to behave as the controller expects it to, though. There are two problems in the create method. Firstly the call to Message.new won’t work as our Message model no longer has an initializer that takes a hash of attributes as an argument. Secondly, save won’t work as we don’t have a database backend to save the new message to.

Filename : /apps/controllers/messages_controller.rb


class MessagesController < ApplicationController
 def new
 @message = Message.new
 end

def create
 @message = Message.new(params[:message])
 if @message.save
 # TODO send message here
 flash[:notice] = "Message sent! Thank you for contacting us."
 redirect_to root_url
 else
 render :action => 'new'
 end
 end
end

We’ll fix the second of these problems first. While we can’t save a message we can check that it is valid, so we’ll replace @message.save with @message.valid?.

File name :/app/controllers/messages_controllers.rb


def create
 @message = Message.new(params[:message])
 if @message.valid?
 # TODO send message here
 flash[:notice] = "Message sent! Thank you for contacting us."
 redirect_to root_url
 else
 render :action => 'new'
 end
end

We can solve the first problem by writing an initialize method in the Message model that takes a hash as a parameter. This method will loop through each item in the hash and assign the value to the appropriate attribute for the message using the send method.

File name: /app/models/message.rb


class Message
 include ActiveModel::Validations

attr_accessor :name, :email, :content
 validates_presence_of :name
 validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
 validates_length_of :content, :maximum => 500
 def initialize(attributes = {})
 attributes.each do |name, value|
 send("#{name}=", value)
 end
 end
end

If we reload the form now we’ll see that we’re not quite there yet, however.

This time the error is caused by a missing to_key method in the Message model. The error is thrown by the form_for method so it seems that Rails itself is expecting our model to have functionality that it doesn’t yet support. Let’s add that functionality now.

Rather than guessing everything that Rails expects the model to have there’s a nice lint test included with ActiveModel that allows us to check whether our custom model behaves as Rails expects it to. If we include the ActiveModel::Lint::Tests module in a tests for the model it will check that the model has all of the required functionality.

The source code for the Lint::Tests module shows the methods that the model needs to respond to in order for it to work as it should, including to_key. We can make our model work by including a couple of ActiveRecord modules. The first of these is Conversion, which provides that to_key method and several others. The other module is the Naming module, but in this case we extend it in our class rather than including it as it includes some class methods.

As well as including the Conversion module we need to define a persisted? method in our model, which needs to return false as our model isn’t persisted to a database. With these changes in place our Message model now looks like this:

File name: /app/models/message.rb


class Message
 include ActiveModel::Validations
 include ActiveModel::Conversion
 extend ActiveModel::Naming
 attr_accessor :name, :email, :content
 validates_presence_of :name
 validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
 validates_length_of :content, :maximum => 500
 def initialize(attributes = {})
 attributes.each do |name, value|
 send("#{name}=", value)
 end
 end
 def persisted?
 false
 end
end

If we reload the form now it will work again which means that the Message model now satisfies all of the requirements that Rails 3 relies on for a model. If we try to submit the form we’ll see that the validators are working, too.

We’ve only covered a little of what ActiveModel provides in this episode but this should have been enough to whet your appetite and give you a reason to look more deeply into its source code to see what it can do. The code is well documented and structured so if you see something you might find useful then there should be enough information in the comments for that file to get you started using it.

how to add facebook like button to wordpress site

Facebook Like button released on Apr. 21st 2010. Facebook’s social plugins were integrated into more than millions of  websites. wordpress tutorial for, how to add facebook like button to wordpress site.

This number will increase by the time.

how to add facebook like button to wordpress site

If you want to add the facebook like button in your wordpress website, I recommend not to use any plugin because that will be very easy without adding any plugin.

how to add facebook like button to wordpress site
how to add facebook like button to wordpress site

Just open your theme folder and in that you will find the single.php and index.php file. Open that files and put following code in that file.

Before following title line you can put the code. Like as follows:

<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:30px"></iframe>

Following are the custom setting for changing the facebook like UI. You change that as per your requirement.
if you like to show the faces of your friends, change the part “show_faces=false” to “show_faces=true”

If you like to show the label of the button as “Recommend“, change the part of the code “action=like” to “action=recommend”

I hope this will help you to implement the “Like” button on your WordPress Posts! Have fun and drop me a line at twitter or you can click on the “Like” button on the top of this post

Phone blogging is future of WordPress

Matt is announced the new feature of wordpress which is phone blogging by wordpress. This is really great news for bloggers. In future you can write post by phone.

 

Phone blogging is future of WordPress

The future is now, folks. You can now go to your My Blogs tab, enable Post by Voice, and get a special number and code to call your blog. After you’re done, the audio file from your phone call will be posted to your blog for all to listen to and enjoy. (And added to your RSS feed for podcast support.)

So now you can post to your WordPress via the web, email, iPhone, Android, Blackberry, desktop clients, and now any telephone in the world. Of course when you post it can be pushed to Facebook, Twitter, and more using the Publicize feature. What more could you want?

Right now this is completely free, but we’ll charge you money to take down posts. Just kidding! We’re making it free and allowing recording lengths up to sixty minutes, but that limit may go down without a paid upgrade in the future. Mostly we’re just curious to see how people use this.

Post by Voice is a way to publish audio posts to your blog from your phone. You call a phone number, enter a secret code, record a message, and we handle the rest.

Enable Post by Voice

In order to use Post by Voice you need to enable the feature on your blog and generate a secret code. The secret code is unique to you and your blog so it is important to keep it secret.

  1. Visit Dashboard->My Blogs

    Phone blogging is future of WordPress
    Phone blogging is future of WordPress
  2. Locate the blog that you wish to post to and click on Enable.

↑ Table of Contents ↑

Sending a Post by Voice

Call the phone number listed on the My Blogs screen, enter your secret code when prompted, and follow the instructions.

↑ Table of Contents ↑

Example Recording

↑ Table of Contents ↑

Regenerate Secret Key

If your secret key is compromised, others will be able to publish audio posts to your blog. Go to the My Blogs screen and use the Regenerate link below the secret key to create a different one.

↑ Table of Contents ↑

Disable Post by Voice

If you would like to disable the feature, use the Delete link below the secret key.

↑ Table of Contents ↑

Additional Info

  • Post by Voice is powered by the Twilio API.
  • The maximum length of a recording is 1 hour. We will probably decrease this after we have a chance to watch usage stats.
  • If there is 10 seconds of silence, the recording will end.
  • You do not need a space upgrade to use Post by Voice.
  • Normal calling rates will apply for the phone call.

WordPress completed 100th Million Plugin Download

WordPress has just announced the 100th million plugin has now been downloaded. It’s a smaller milestone but just as impressive if not even more so, since blogging tools are not going to have the same mainstream audience or appeal as a web browser. WordPress is also celebrating a smaller milestone, the newly launched WordPress 3.0 has just passed three million downloads.

WordPress completed 100th Million Plugin Download

WordPress completed 100th Million Plugin Download
WordPress completed 100th Million Plugin Download

What wordpress is saying?

WordPress 3.0 Thelonious passed 3 million downloads yesterday, and today the plugin directory followed suit with a milestone of its own: 100 million downloads.

The WordPress community’s growth over the years has been tremendous, and we want to reinvest in it. So we’re taking the next two months to concentrate on improving WordPress.org. A major part of that will be improving the infrastructure of the plugins directory. More than 10,000 plugins are in the directory, every one of them GPL compatible and free as in both beer and speech. Here’s what we have in mind:

We want to provide developers the tools they need to build the best possible plugins. We’re going to provide better integration with the forums so you can support your users. We’ll make more statistics available to you so you can analyze your user base, and over time we hope to make it easier for you to manage, build, and release localized plugins.

We want to improve how the core software works with your plugin and the plugin directory. We’re going to focus on ensuring seamless upgrades by making the best possible determinations about compatibility, and offer continual improvements to the plugin installer. And we also want to give you a better developer tool set like SVN notifications and improvements to the bug tracker.

We’re also going to experiment with other great ideas to help the community help plugin authors. We want it to be easy for you to offer comments to plugin authors and the community, including user reviews and better feedback. We may experiment with an adoption process for abandoned plugins as a way to revitalize hidden gems in the directory. I’m not sure there is a better way to show how extendable WordPress is and how awesome this community is at the same time.

As Matt said in the 3.0 release announcement, our goal isn’t to make everything perfect all at once. But we think incremental improvements can provide us with a great base for 3.1 and beyond, and for the tens of millions of users, and hundreds of millions of plugin downloads to come.

There are now a little over 10,000 plugins in the WordPress directory which really puts the 100 million downloads number in perspective. Of course, some plugins are more popular than others, but it does indicate that bloggers are very interested in the added functionality these plugins provide.

The most popular plugin is the antispam tool Akismet with over 8.5 million downloads to date. The tool comes pre-installed with WordPress, so that may explain its popularity, although, these installs may not be counted as downloads. However, later updates are probably counted. Other popular plugins are the All in One SEO Pack with five million downloads and Google XML Sitemaps with close to four million.

Given the popularity of WordPress plugins, it’s no surprise that they are now getting some attention from the development team. Having wrapped up WordPress 3.0, the team decided to focus on some of the things surrounding WordPress rather than the software itself.

“The WordPress community’s growth over the years has been tremendous, and we want to reinvest in it. So we’re taking the next two months to concentrate on improving WordPress.org. A major part of that will be improving the infrastructure of the plugins directory,” Andrew Nacin, a WordPress developer, announced.

“We’re going to provide better integration with the forums so you can support your users. We’ll make more statistics available to you so you can analyze your user base, and over time we hope to make it easier for you to manage, build, and release localized plugins,” he explained.

20 online websites every graphic designer should follow


Notice: Undefined index: width in /var/www/html/purabtech.in/wp-includes/media.php on line 1612

Notice: Undefined index: height in /var/www/html/purabtech.in/wp-includes/media.php on line 1613

Need an extra boost in creativity? Follow these 20 websites(and some development) ways to learn, grow, and become inspired. Here we created list of 20 online websites every graphic designer should follow.

But, with so many of them to browse through, it can be difficult to know where to start. So to make things easy for you, we’ve done the hard work and picked 28 of the top graphic design portfolios that are definitely worth a look…Regardless of if you’re about to go into college or if you’ve been running your own business for years, there are a few sites you should know about to ensure you’re game is in check. Check out our list of 20 Online Resources Every Graphic Design Should Know. Your life is about to get a whole lot easier.

20 online websites every graphic designer should follow

1:Smashing Magazine

20 online websites every graphic designer should follow
20 online websites every graphic designer should follow

2: Web Designer Depot

20 online websites every graphic designer should follow

3: Web Design Dev

4: Spoon Graphics

20 online websites every graphic designer should follow

5: Line25

20 online websites every graphic designer should follow

6: Vandelay Design Blog

7: WordPressAPI

8: DesignM.ag

9: I Love Typography

10: You The Designer

11: Fuel Your Creativity

12: Inspiredology

13: Web Design Ledger

14: Six Revisions

15: Build Internet

16: Web Designer Wall

17: Bitt Box

18: Just Creative Design

19: Outlaw Design Blog

20: Abduzeedo

I hope you’ll enjoy & this list will help you to improve your skills.

Thank You!

how to make a dotted border in photoshop

In this tutorial you will learn how to create a spotted border effect using the Pixelate filter. Tutorial for, how to make a dotted border in photoshop.

how to make a dotted border in photoshop

Step 1: Open Photoshop & open your image in Photoshop which you want to create spotted border. Double click on the Background Layer & press OK to work on it.

how to make a dotted border in photoshop
how to make a dotted border in photoshop

Step 2: Select the Rectangular Marquee Tool and make a selection around the image like below. The closer you place the Rectangular Marquee to the centre of the image the greater the spotted border effect, and the further away to place the Marquee the smaller the border.

Step 3: Choose Select > Modify > Feather (Alt+Ctrl+D) and give a feather radius of 5 pixels. You can increase the radius if you wish to create a more rounded border.

Step 4: Hit the Q key on the keyboard to enter the quick mask, and you see a red border around your image like below.

Step 5: Select Filter > Pixelate > Colour Halftone and set the max radius to 10 pixels. If you wish to have larger spots on your border then increase the size of the radius.

Step 6: Exit the quick mask mode with the Q key then choose Select > Inverse (Shift+Ctrl+I) and hit the delete the key, don’t do deselect the selection.You should get a spotted border like below.

Step 7: Now fill the selection with any color you like & deselect the selection(Ctrl+D), I filled it with white color:

And you done it..

Here’s my final result:

Thank You!

how do you schedule tweets on twitter

Want to tweet day and night without touching the computer? Well now you can. how do you schedule tweets on twitter, Its good thing to schedule tweets at least once every hour. This will keep your twitter followers happy and informed.

how do you schedule tweets on twitter

Here’s websites to create a schedule of your future tweets. Have fun..

how do you schedule tweets on twitter
how do you schedule tweets on twitter

twuffer.com

Twuffer was developed for anyone who has a need to schedule pre-written, post-dated tweets, you can use it for different purposes, like tweeting hourly/daily/monthly announcements, running time based contests and so on.

autotweeter

A java based cross platform twitter desktop client that will allow you to schedule future tweets without using any external service.

futuretweets.com

Future Tweets is a free service that lets you schedule your Twitter messages. Send it at a specific time in the future or send a recurring tweet daily, weekly, monthly or yearly!

twitrobot.com

TwitRobot allows schedule your Twitter messages. Send status updates to Twitter even when your away from your phone or computer.

tweetlater.com

TweetLater allows you to schedule tweets that will be sent out in the future. Pretty simple and easy to use.

Thank You!

free fonts for logo design download

Here are some resources for you to find free fonts that you can use without having to pay any royalty for both Windows and Mac OSX. This list represents the free fonts for logo design download, we’ve found in a variety of styles. However, for specialist fonts that won’t cost you a penny. royalty free professional and good looking fonts for graphic and web designers.

free fonts for logo design download

free fonts for logo design download
free fonts for logo design download

fawnt.com

Fawnt is a font resource for designers, developers, and anyone that appreciates the web’s highest quality fonts. It currently has 9348 free fonts you can use and download for Windows and Max OSX.

abstractfonts.com

Abstract Fonts has a listing of 11849 free fonts in their database. The site has a nice navigation and user experience with proper categorization of fonts.

freefonts.co.in

Free fonts has over 12000 free fonts which you can download and use for Windows or Mac OSX. The site has a clean navigation making it easier to browse the fonts.

dafont.com

dafont is another nice site to find free fonts, they list over 10000 fonts, most of which are free to use for personal use on Windows and Mac OSX. Licensing terms are clearly marked above the download buttons.

urbanfonts.com

Another site which lists over 8000 free fonts. The fonts are segregated into different easy to find categories, and can also be alphabetically browsed.

fontreactor.com – Font Reactor lists freeware fonts in graffiti, gothic font, old English fonts etc. Most of the fonts are freeware, but there is no clear indication before downloading, so this adds to a bit of hassle.

dailyfreefonts.com

Daily Free Font is a site that has over 4500 freeware fonts listed in its directory. The licensing terms for font usage is clearly marked.

fontfreak.com

Font Freak has a database of 5000 free fonts, they store a mix of both free and commercial fonts, so check the licensing before you download the fonts.

simplythebest.net

This site lists thousands of free fonts in well segregated categories, the licensing if clearly marked, telling you whether a font is free or not.

free-fonts.com

This site is more like a search engine for fonts and lists over 55000 fonts in their database, the only problem with the site is that, there is no option to browse the fonts and you need to remember the names of the font to search for it.

Thank you!

iPhone 4 Technical Specifications

Here in this article we given the iPhone 4 Technical Specifications with their screen shots and images. We given full detailed information about iphone 4 and there specifications.

iPhone 4 Technical Specifications

Size and weight

Height: 4.5 inches (115.2 mm)
Width: 2.31 inches (58.6 mm)
Depth: 0.37 inch (9.3 mm)
Weight: 4.8 ounces (137 grams)
iPhone 4 Technical Specifications
iPhone 4 Technical Specifications

Capacity

16GB or 32GB flash drive

Cellular and wireless

  • UMTS/HSDPA/HSUPA (850, 900, 1900, 2100 MHz)
  • GSM/EDGE (850, 900, 1800, 1900 MHz)
  • 802.11b/g/n Wi-Fi (802.11n 2.4GHz only)
  • Bluetooth 2.1 + EDR wireless technology

Location

  • Assisted GPS
  • Digital compass
  • Wi-Fi
  • Cellular
Power and battery
  • Built-in rechargeable lithium-ion battery
  • Charging via USB to computer system or power adapter
  • Talk time: Up to 7 hours on 3G
    Up to 14 hours on 2G
  • Standby time: Up to 300 hours
  • Internet use: Up to 6 hours on 3G
    Up to 10 hours on Wi-Fi
  • Video playback: Up to 10 hours
  • Audio playback: Up to 40 hours

Mac system requirements

  • Mac computer with USB 2.0 port
  • Mac OS X v10.5.8 or later
  • iTunes Store account
  • Internet access

Windows system requirements

  • PC with USB 2.0 port
  • Windows 7; Windows Vista; or Windows XP Home or Professional with Service Pack 3 or later
  • iTunes Store account
  • Internet access

Environmental requirements

  • Operating temperature: 32° to 95° F
    (0° to 35° C)
  • Nonoperating temperature: -4° to 113° F (-20° to 45° C)
  • Relative humidity: 5% to 95% noncondensing
  • Maximum operating altitude: 10,000 feet (3000 m)

Color

White or black

Display

  • Retina display
  • 3.5-inch (diagonal) widescreen Multi-Touch display
  • 960-by-640-pixel resolution at 326 ppi
  • 800:1 contrast ratio (typical)
  • 500 cd/m2 max brightness (typical)
  • Fingerprint-resistant oleophobic coating on front and back
  • Support for display of multiple languages and characters simultaneously

Audio playback

  • Frequency response: 20Hz to 20,000Hz
  • Audio formats supported: AAC (8 to 320 Kbps), Protected AAC (from iTunes Store), HE-AAC, MP3 (8 to 320 Kbps), MP3 VBR, Audible (formats 2, 3, 4, Audible Enhanced Audio, AAX, and AAX+), Apple Lossless, AIFF, and WAV

TV and video

  • Video formats supported: H.264 video up to 720p, 30 frames per second, Main Profile level 3.1 with AAC-LC audio up to 160 Kbps, 48kHz, stereo audio in .m4v, .mp4, and .mov file formats; MPEG-4 video, up to 2.5 Mbps, 640 by 480 pixels, 30 frames per second, Simple Profile with AAC-LC audio up to 160 Kbps per channel, 48kHz, stereo audio in .m4v, .mp4, and .mov file formats; Motion JPEG (M-JPEG) up to 35 Mbps, 1280 by 720 pixels, 30 frames per second, audio in ulaw, PCM stereo audio in .avi file format
  • Support for 1024 by 768 pixels with Dock Connector to VGA Adapter; 576p and 480p with Apple Component AV Cable; 576i and 480i with Apple Composite AV Cable (cables sold separately)

Languages

  • Language support for English (U.S.), English (UK), French (France), German, Traditional Chinese, Simplified Chinese, Dutch, Italian, Spanish, Portuguese (Brazil), Portuguese (Portugal), Danish, Swedish, Finnish, Norwegian, Korean, Japanese, Russian, Polish, Turkish, Ukrainian, Hungarian, Arabic, Thai, Czech, Greek, Hebrew, Indonesian, Malay, Romanian, Slovak, Croatian, Catalan, and Vietnamese
  • Keyboard support for English (U.S.), English (UK), French (France), French (Canadian), French (Switzerland), German, Traditional Chinese (Handwriting, Pinyin, Zhuyin, Cangjie, Wubihua), Simplified Chinese (Handwriting, Pinyin, Wubihua), Dutch, Italian, Spanish, Portuguese (Brazil), Portuguese (Portugal), Danish, Swedish, Finnish, Norwegian, Korean, Japanese (Romaji), Japanese (Kana), Russian, Polish, Turkish, Ukrainian, Estonian, Hungarian, Icelandic, Lithuanian, Latvian, Flemish, Arabic, Thai, Czech, Greek, Hebrew, Indonesian, Malay, Romanian, Slovak, Croatian, Bulgarian, Serbian (Cyrillic/Latin), Catalan, and Vietnamese
  • Dictionary support (enables predictive text and autocorrect) for English (U.S.), English (UK), French, German, Traditional Chinese, Simplified Chinese, Dutch, Italian, Spanish, Portuguese (Brazil), Portuguese (Portugal), Danish, Swedish, Finnish, Norwegian, Korean, Japanese (Romaji), Japanese (Kana), Russian, Polish, Turkish, Ukrainian, Hungarian, Lithuanian, Flemish, Arabic, Thai, Czech, Greek, Hebrew, Indonesian, Malaysian, Romanian, Slovak, Croatian, Catalan, and Vietnamese

Camera, photos, and video

  • Video recording, HD (720p) up to 30 frames per second with audio
  • 5-megapixel still camera
  • VGA-quality photos and video at up to 30 frames per second with the front camera
  • Tap to focus video or still images
  • LED flash
  • Photo and video geotagging

External buttons and controls

Sensors

Three-axis gyro

Accelerometer

Proximity sensor

Ambient light sensor

Connectors and input/output

Headphones

Apple Earphones with Remote and Mic

Frequency response: 20Hz to 20,000Hz

Impedance: 32 ohms

Rating for Hearing Aids

3G network – 850/1900MHz: M4, T4

2G network – 850MHz: M3, T3

2G network – 1900MHz: M2, T3

In the box

Mail attachment support

Viewable document types: .jpg, .tiff, .gif (images); .doc and .docx (Microsoft Word); .htm and .html (web pages); .key (Keynote); .numbers (Numbers); .pages (Pages); .pdf (Preview and Adobe Acrobat); .ppt and .pptx (Microsoft PowerPoint); .txt (text); .rtf (rich text format); .vcf (contact information); .xls and .xlsx (Microsoft Excel)

Bumpers for iPhone 4

Dress up your iPhone 4 with a Bumper. Choose one of six colors — white, black, blue, green, orange, or pink — and slip it around the edge of your iPhone 4. With metal buttons for volume and power, two-tone colors, and a combination of rubber and molded plastic, Bumpers add a touch of style to any iPhone 4.