画像をオンマウスでずっと横回転風にアニメーションする。

<p>例として、画像は79px × 79pxサイズのもの。裏と表の二枚を用意。</p>

// html
<div id="item01" class="item">
  <a href="" class="">
    <span class="img_box">
      <img class="back" src="back.png" alt="" style="width: 0; margin-left: 39.5px;">
      <img class="front" src="front.png" alt="">
    </span>
  </a>
</div>
// css
.item {
	float: left;					
	width: 20%;
	margin: 12px 0 6px;
}
.item a {
	display: block;
	text-align: center;
}
.item a .img_box {
	width: 79px;
	height: 79px;
	position: relative;
	display: inline-block;
}
.item a .img_box img {
	position: absolute;
	left: 0;
	height: 79px;
}
// javascript
var rote = null; // 後で停止できるようIDを保存
var item_id = null; // オンマウスしている画像の保存
var count = 0; // 回転のフラグ用として

$(".item").hover(function() {
	item_id = $(this).attr("id");
	// 回転開始
	item_rote(item_id);
}, function() {
	// 回転ストップ
	item_stop()
});
// 回転の処理
function item_rote(item_id) {
	var flag = $('#'+item_id+' a').attr("class");
	if(flag == "" || flag == "reverse") {
		rote_front(item_id);	
	} else {
		rote_back(item_id);	
	}
	
	rote = setTimeout(function() {
        item_rote(item_id);
    }, 1000);
}
// 回転停止
function item_stop() {
	clearTimeout(rote);
	var flag = $('#'+item_id+' a').attr("class");
	if(flag == "" || flag == "reverse") {
		rote_back(item_id);	
	}
    $('#'+item_id+' a').attr("class", "");
}
// 表から裏
function rote_front(item_id) {
	// 表面の非表示
    $('#'+item_id+' .front').animate({
        width: 0,
        marginLeft: "39.5px"
    }, '500');
    // 裏面の表示
    $('#'+item_id+' .back').delay('500').animate({
        width: "79px",
        marginLeft: '0'
    }, '500');
    $('#'+item_id+' a').attr("class", "obverse");
}
// 裏から表
function rote_back(item_id) {
	// 裏面の非表示
    $('#'+item_id+' .back').animate({
        width: 0,
        marginLeft: "39.5px"
    }, '500');
    // 表面の表示
    $('#'+item_id+' .front').delay('500').animate({
        width: "79px",
        marginLeft: '0'
    }, '500');
    $('#'+item_id+' a').attr("class", "reverse");
}