$(document).ready(function (){

// image preload
var fileServer = fileServer || 'http://files.smarter.com/';
var preloadImg = ['images/v5/header_popup_bg.gif','images/v5/header_bg.gif',
                  'images/v5/header_icons.gif','images/v5/hp_icons.gif',
                  'images/v5/product_icons.gif','images/v5/content_icons.gif'];
for (var i=0;i<preloadImg.length;i++) {
    var image = new Image();
    image.src = fileServer+preloadImg[i];
}

//whats hot, all categories --- these codes will be changed later -alix
var whTimer = null;
$('#topinfo > a.hot').nextAll('div.hotbox').andSelf().mouseover(function(){
    window.clearTimeout(whTimer);
    $(this).addClass('over').nextAll('div.hotbox').show()
}).mouseout(function(){
    var hot = $('#topinfo > a.hot');
    whTimer = window.setTimeout(function(){
    	hot.removeClass('over').nextAll('div.hotbox').hide();
    },80);
});

var acTimer = null;
$('#header > div.CBS > ul > li:eq(0) , div.Categories').mouseover(function(){
    window.clearTimeout(acTimer);
    $(this).addClass('over');
    $('div.Categories').filter('div.'+$(this).children('a').html()).html(tcHtml).show();
}).mouseout(function(){
    var allcat = $('#header > div.CBS > ul > li:eq(0)');
    acTimer = window.setTimeout(function(){
		allcat.removeClass('over');
		$('div.Categories').filter('div.'+allcat.children('a').html()).hide();
    },80);
}).find('a:first').click(function(){
	return false;
});

var bcTimer = null;
$('#header > div.CBS > ul > li:eq(1) , div.Brands').mouseover(function(){
    window.clearTimeout(bcTimer);
    $(this).addClass('over');
    $('div.Brands').filter('div.'+$(this).children('a').html()).html(tbHtml).show();
}).mouseout(function(){
    var allcat = $('#header > div.CBS > ul > li:eq(1)');
    bcTimer = window.setTimeout(function(){
		allcat.removeClass('over');
		$('div.Brands').filter('div.'+allcat.children('a').html()).hide();
    },80);
});

var ccTimer = null;
$('#header > div.CBS > ul > li:eq(2) , div.Stores').mouseover(function(){
    window.clearTimeout(ccTimer);
    $(this).addClass('over');
    $('div.Stores').filter('div.'+$(this).children('a').html()).html(tsHtml).show();
}).mouseout(function(){
    var allcat = $('#header > div.CBS > ul > li:eq(2)');
    ccTimer = window.setTimeout(function(){
			    allcat.removeClass('over');
			    $('div.Stores').filter('div.'+allcat.children('a').html()).hide();
              },80);
});

//search box suggestion
$('div.search :text[name="qq"]:first').val('enter keyword')
.focus(function(){
	if($(this).val()=='enter keyword') $(this).val('').addClass('txtonfocus');
})
.blur(function(){
    window.setTimeout(function(){$('div.searchsuggestion').hide();},250);
})
.keyup(function(event){
    var isChar = /\w/.test(String.fromCharCode(event.keyCode));
    if (!isChar) {
        var idx = $('div.searchsuggestion li:not(.tit)').index($('div.searchsuggestion li.over'));
        var l = $('div.searchsuggestion li:not(.tit)').length;
        switch(event.keyCode){
            case 27://ESC
                return $('div.searchsuggestion').hide();
            break;
            case 38://up
                $('div.searchsuggestion').show().find('li').removeClass('over');
                if(idx<1) idx = l;
                var val = $('div.searchsuggestion li:eq('+idx+')').addClass('over').attr('data');
                if(val) $('div.search :text[name="qq"]').val(val);
                return;
            break;
            case 40://down
                $('div.searchsuggestion').show().find('li').removeClass('over');
                if(idx==(l-1)) idx=-1;
                var val = $('div.searchsuggestion li:eq('+(idx+2)+')').addClass('over').attr('data');
                if(val) $('div.search :text[name="qq"]').val(val);
                return;
            break;
        }
    }
	var k = $.trim($(this).val());
	var sug = $('div.searchsuggestion');
	if(k.length<1) return false;
	$.get('/async_suggest.php','id='+k,function(d,s){
		if(s!='success') return sug.html('').hide();
		var allWords = new Array();
			$(d).find('pname').each(function(){
			allWords.push($(this).text());
		});
		if(!allWords || allWords.length==0) return sug.html('').hide();
		//console.log(allWords);
		var sugHtml = "<ul><li class=\"tit\">search suggestions</li>";
		for(var i=0;i<allWords.length;i++){
		  var val = allWords[i];
		  if(val.indexOf(k)==0) val = '<b>'+k+'</b>'+val.substring(k.length);
		  sugHtml += "<li data=\""+allWords[i]+"\">"+val+"</li>";
		}
		sugHtml += "</ul>";
		return sug.html(sugHtml).show()
		.find('li:not(.tit)').css('cursor','pointer')
		.mouseover(function(){
		    $(this).addClass('over').siblings('.over').removeClass('over');
		})
		.mouseout(function(){
            $(this).removeClass('over');
        })
        .click(function(){
            $('div.search :text[name="qq"]:first').val($(this).attr('data'))
            .next('input.but').click();
        });
	},'xml');
}).next('input.but').click(function(){
	var k = $.trim($(this).blur().prev('input.txt').val());
	if(k==''||k=='enter keyword') return false;
});

//prevent empty keyword submit
$('div.search input.but').click(function(){
	var k = $.trim($(this).blur().prev('input.txt').val());
	if(k==''||k=='enter keyword') return false;
});

if(typeof(keyWord)!="undefined") $('div.search :text[name="qq"]:first').val(keyWord).addClass('txtonfocus')

$('div.search > form').submit(function(){$('div.searchsuggestion').hide();});

//For Google AFS
$('a[href$=.html]:not(a:has(img))').each(function(){
    var cookieOpt = {path: '/', domain: 'smarter.com'};
    var ao = $(this);
	var txt = ao.get(0).innerHTML;
	var url = ao.attr('href');
	var e0 = /deleted/;
	var e1 = /^\s*(\d+|\s+|Coupon|Video|Compare Prices|Save to Wish List|read full review|Prev|Next|All Reviews|Love it!|Hate it!|On the Fence|Write a product review|Write a review)\s*$/;
	var e2 = /((Reviews|Stores|Deals|Videos|>>|strong>|spec)\s*$|^\s*(<strong|<span|\$|more|see more|deleted))/i;
	var e3 = /(\/se--qq-|\d+.html$)/;
	if (!url.match(e3)||txt.match(e0)||txt.match(e1)||txt.match(e2)) return;
	ao.click(function(){
	   $.cookie('qry_link', txt, cookieOpt);
	});
});

//For Permuto tracking
var getPermutoIds = function(regexp, limit) {
    var pids = new Array();
    var cids = new Array();
    $('img').each(function(){
        var m = this.src.match(regexp);
        if (pids.length < limit && m && -1 == jQuery.inArray(m[2], pids)) { 
            pids.push(m[2]);
            cids.push(m[1]);
        }
    });
    return {'cids':cids, 'pids':pids};
}
if (pty && pulse) {
	pulse.setPartnerId("1211");
	pulse.setSite("smarter.com");
	pulse.set("prf",referUrl);
	pulse.set("pty",pty);
	pulse.set("pce","0");
	var limit = 3;
	if (pty=='pp') limit = 1;
	var x = getPermutoIds(/^http:\/\/images.smarter.com\/[^\/]+\/(\d+)\/\d+\/(\d+)\.jpg$/i, limit);
	if (x.cids.length>0 && x.pids.length>0) {
        jQuery.each(x.cids, function(){pulse.add("cid", this);});
        jQuery.each(x.pids, function(){pulse.add("pid", this);});
        pulse.pulse();
	}
}
//end Permuto tracking
}); // end of documnet.onload

/* Common JS functions object */
var SMUS_GO = new Object();
//truncate string without cut any word
SMUS_GO.truncate = function(str, len, ext){
    var l = len||40;
    var e = ext||' ...';
    var t = str.substr(0, l);
    if(t.substr(t.length-2)==' ' || str.substr(l,1)==' ') return t+e;
    var spos = t.lastIndexOf(' ');
    return t.substr(0, spos)+e;
};
//msg box close action
SMUS_GO.closeMsgBox = function(o){
    $(o).parents('div.addokboxcontent , div.addfailboxcontent').fadeOut('fast',function(){$(this).parent().remove();});
    return false;
};
