var cW,cH,bW,bH,sW,sH;
function MouseEvent(e) {this.x = e.pageX;this.y = e.pageY;this.l=e.clientX;this.t=e.clientY;}

//list
(function($){
	$.fn.jqList = function(options){
		var sets = {size:8,number:0,total:0,cid:0,no:0}, isSub=false;;
		if(options) {$.extend(sets, options);};	
		sets.current=Math.floor(sets.number/sets.size);
		sets.pages=Math.ceil(sets.total/sets.size);
		page(Math.floor(sets.no/sets.size));
		function page(t){		
			var current=sets.current;
			switch (t) {
				case -1:	
					current=current<1?(sets.pages-1):(current-1);
					break;
				case 1:				
					current=current<(sets.pages-1)?(current+1):0;
					break;
				default:				
					current=t;
					break;
			}
			sets.current=current;
			$(sets.id+"Page").html((sets.current+1)+"/"+(sets.pages));
			get();
		}

		function get(){
			var mx=0,cn="#cell_name",ci="#cell_img";
			for(var i = sets.current*sets.size;i<(sets.current+1)*sets.size;i++){
				var p = [],s = productArr[i];			
				if(s){
				
								
					p.push(s.id,s.name,s.img,s.attr.count,s.attr.soldOut,s.attr.wholesale,s.attr.almost,s.salePrice,s.price,s.subName,s.attr.stockout);
					
					$(sets.id+" li").eq(mx).replaceWith($(".proList").html().replace(/{%pPrice%}/ig,p[8]).replace(/{%salePrice%}/ig,p[7]).replace(/{%pAlt%}/ig,p[1]).replace(/{%i%}/ig,i).replace(/{%pName%}/ig,p[9]).replace(/{%pOff%}/ig,p[3]));				
					if(p[3]!=-1) $("#b_arr_"+i).html(p[3]);
					$(cn+i).attr("href",rewrite_url(p[1],p[0]));
					$("#cell_link"+i).attr("href",rewrite_url(p[1],p[0]));
					loadImage(imgURL+p[2],chUrl,ci+i);
					if(p[0]==productid) {$(ci+i).addClass("allborder");}
					function showHide(a){for(var k=0;k<a.length;k++){a[k].a=="0"||a[k].a=="-1"?$(a[k].b+i).hide():$(a[k].b+i).show();}}			
					showHide([{a:p[4],b:"#a_arr_"},{a:p[3],b:"#b_arr_"},{a:p[6],b:"#c_arr_"},{a:p[5],b:"#d_arr_"},{a:p[10],b:"#e_arr_"},{a:sets.cid,b:cn},{a:sets.cid,b:"#cell_source_price"}]);
				}else{
					$(sets.id+" li").eq(mx).html("");
				}
				mx++;
			}
		}
		if(sets.pages>1){$(".recent_flash_prev").click(function(){if(isSub) return;subOk();page(-1);});$(".recent_flash_next").click(function(){if(isSub) return;subOk();page(1);});}
		function subOk(){isSub=true;window.setTimeout(function(){isSub=false;},500);};
	}
})(jQuery);


// Marquee
(function($){
	var methods = {
        marquee: function marquee(user_settings) {
            var self = $(this);            
			var sch = self.attr('scrollHeight');
			self.append(self.html());
            var settings = {
                timeout: null,                
                events: {
                    play: function(evt) {
                        var self = $(this);						
						var sct = self.scrollTop();
						if(sct>=sch)self.scrollTop(sct=sct-sch);
						self.animate({scrollTop:sct+settings.step-sct%settings.step},2000,function(){
							if(settings.timeout) clearTimeout(settings.timeout);
							settings.timeout = setTimeout(function(){self.marqueePlay()},settings.time);
						});
                    },
                    stop: function(evt) {
                        var self = $(this);
                        clearTimeout(settings.timeout);self.stop();
                    }
                }
            };
            if(self.data("marquee.settings")) {
                settings = self.data("marquee.settings");
            }
            settings = $.extend(user_settings, settings);            
            for(var event in settings.events) {
                var evt = "marquee." + event;
                self.unbind(evt);
                self.bind(evt, settings.events[event]);
            }            
            self.data("marquee.settings", settings);
			self.marqueePlay();
            return self;
        },
        marqueePlay: function() {
            $(this).trigger("marquee.play");         
        },
        marqueeStop: function() {
            $(this).trigger("marquee.stop");
        }
    };
    $.each(methods, function(i) {
        $.fn[i] = this;
    });
})(jQuery);

$(function(){
	 $(".use_round_border").each(function(){$(this).html('<em><b></b></em><div class="use_round_border_con">'+$(this).html()+'</div><b><em></em></b>')});	
	 //for product center
	  $(".attr_table_1 tr").find('td:first:not([class])').each(function(){$(this).addClass('blue_bg').width(100)});
	  //table yellow 
	  var tdArr=[];
	  $(".attr_table_yellow tr").find('td:first:not([class])').each(function(n){var row=$(this).attr("rowspan");if(row>1){for(var i=1;i<row;i++){tdArr.push(n+i);}};if(jQuery.inArray(n, tdArr)==-1) {$(this).addClass('yellow_bg g_t_l b')}});
	  $(".attr_table_yellow tr").each(function(){
			var sel = $('td:not([colspan]):not([class=yellow_bg g_t_l b])',this);
			var length = sel.size();

			sel.each(function(index){							  
				if(length%2){
					if((length-index)%2==0){
						$(this).addClass('lit_gray_bg');
					}
				}else{
					if((length-index)%2==1){
						$(this).addClass('lit_gray_bg');
					}
				}
			});	 

	  });
	$(".table_yp tr").find('td:first:not([class])').each(function(){$(this).css('background','#dfefff')})
	
//	document.domain = 'lightinthebox.com';
	var lang = $("#keyword").attr("lang");
	var qs_url = $("#keyword").attr("qs_url");
	$("#keyword").autocomplete(		
			qs_url,
			{
				delay:50,
				minChars:1,
				extraParams:{lang:lang},
				cacheLength:10,
				maxItemsToShow:10,
				formatItem:formatItem
			}
	);      
});
/**********************************/

Array.prototype.indexOf = function(o){for (var i=0; i<this.length; i++) if (this[i]==o) return i;return -1;}
function show(a){$("#"+a).show();}function hide(a){$("#"+a).hide();}
function back(num){history.go(num);return false;}
function findPos(obj){return[$(obj).offset().left,$(obj).offset().top];}
function loadImage(url, callback,id) {var img = new Image();img.src = url;if (img.complete) { callback.call(img,id);}else{$(img).bind("load", function(){callback.call(img,id);});}}
function rewrite_url(pname,pid){if(pid==null||pid=="undefined"){return""};var re=/[^a-zA-Z0-9]/ig;var url="";if(FRIENDLY_URLS!=null&&FRIENDLY_URLS=='true'){url=baseURL+pname.replace(re,"-")+"_p"+pid+".html";}else{url=linkURL+pid;}return url;}
function chUrl(id){$(id).attr({src:this.src});};
function isNone(str){return str==null||$.trim(str)==""?true:false;};
String.prototype.trim=function(){return this.replace(/(^[\s]*)|([\s]*$)/g,"");};String.prototype.inc=function(k1,k2){if(k2==null){k2=","};return(k2+this+k2).indexOf(k2+k1+k2)>-1?true:false;};String.prototype.sub=function(k1,k2){if(k2==null){k2=","};var tmp=k2+this+k2;var size=tmp.indexOf(k1);if(size==-1){return 0;}var i=0;while(tmp.charAt(size+3+i)!='/'){i++;}return tmp.substring(size+3,size+3+i);};
function efocu(obj){try{$(obj).focus();}catch(e){}};
function insHtm(obj,code,pos){obj=$(obj)[0];if($.browser.msie){obj.parentNode.insertAdjacentHTML(pos==null?"beforeend":"afterbegin",code);}else{var r=obj.ownerDocument.createRange();r.setStartBefore(obj);eval("obj.parentNode."+(pos==null?"appendChild":"insertBefore")+"(r.createContextualFragment(code),obj.parentNode.firstChild)");}}
function checkEmail(id){var email=$("#"+id)[0]==null?'':$("#"+id).val();if(!/(\,|^)([\w+._]+@\w+\.(\w+\.){0,3}\w{2,4})/.test(email.replace(/-|\//g,""))){$(id).focus();alert(lang_txt['checkemail']);return false;}else{return true;}}
function popupwin(url,name,width,height,options){if($.browser.msie){var win=window.showModelessDialog(url,window,"status:false;dialogWidth:"+(width)+"px;dialogHeight:"+(height+30)+"px;edge:Raised; help: 0; resizable: 0; status: 0;scroll:0;");}
else{xposition=0;yposition=0;if((parseInt(navigator.appVersion)>=4)){xposition=(screen.width-width)/2;yposition=(screen.height-height)/2;}
theproperty="width="+width+","+"height="+height+","+"screenx="+xposition+","+"screeny="+yposition+","+"left="+xposition+","+"top="+yposition+","+options;
var win=window.open(url,name,theproperty);win.focus();}
return false;}

var openShow=false;
function show_chat_div(obj){
	
	if(openShow){close_chat_div();return;}
	openShow=true;
	$('#nav_chat_sales').marqueeStop()
	var msn=$(obj).attr("msn"),skype=$(obj).attr("skype"),email=$(obj).attr("email"),yahoo=$(obj).attr("yahoo");
	var str="",s1="<li><span class='big black b'>",s2="</span><BR/> <span class='pad_1em'>",s3="</span></li>";
	str+="<ul class='gray_trangle_list'>";
	function setStr(a){for(var i=0;i<a.length;i++){if(a[i].a!=null&&a[i].a!=""){str+=s1+a[i].b+s2+a[i].a+s3;}}};
	setStr([{a:email,b:"Email"},{a:msn,b:"MSN"},{a:skype,b:"SKYPE"},{a:yahoo,b:"YAHOO"}]);
	str+="</ul>";
	
	$('#chat_div_name').html(str);
	$('#chat_div').show();
	hide_select(0,"rel","dropdown");
}
function close_chat_div(){$('#chat_div').hide();$('#nav_chat_sales').marqueePlay();openShow=false;}

function hide_select(a,b,c){
	$("select").each(function(i){
		var t=a==0?"hidden":"visible";
		var r=b==0?"":"["+b+"*='"+c+"']";
		if($.browser.version==6.0) $("select"+r).css({visibility:t});
	});
}

function toggle(el){if($("#"+el).css("display")=="none"){$("#"+el).show();}else{$("#"+el).hide();}}

function layerswich(){
	$("#boxswitch div").click(function(){
		$(this).removeClass().addClass('on').siblings().removeClass().addClass('off');		
		$("#"+$(this).attr("title")).removeClass().addClass('show').siblings().removeClass().addClass('hide');
	});
}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++)
{var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}
return null;}

function trackingChat(){
	var _loc=window.location.href;
	var _http="http";
	if(_loc.substr(0,5) == 'https') _http="https";
	var img=new Image();
	img.src = _http+'://www.lightinthebox.com/click_to_live_chat/?url='+_loc;
}

function createElem(tagName,intObject){
	intObject=intObject||{};
	var newTag = document.createElement(tagName);
	for (var i in intObject) {
		newTag[i] = intObject[i];
	}
	return newTag;
}
var cookiedomain = '.lightinthebox.com',cookiepath = '/';
function setCookie(cookieName, cookieValue, seconds, path, domain, secure) {
	if(seconds){
		var expires = new Date();
		expires.setTime(expires.getTime() + seconds * 1000);
	}
	domain = !domain ? cookiedomain : domain;
	path = !path ? cookiepath : path;
	document.cookie = escape(cookieName) + '=' + escape(cookieValue)
		+ (expires ? '; expires=' + expires.toGMTString() : '')
		+ (path ? '; path=' + path : '/')
		+ (domain ? '; domain=' + domain : '')
		+ (secure ? '; secure' : '');
}
function delCookie(name){
	setCookie(name,"",-60);
};
function getCookie(name) {
	var cookie_start = document.cookie.indexOf(name);
	var cookie_end = document.cookie.indexOf(";", cookie_start);
	return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
}
function preImages(arr){
	for(i=0;i<arr.length;i++){
		var img=new Image();
		img.src=arr[i];
	}
}

function getClientSize(){
	var dd=document.documentElement,db=document.body;
	cW=dd.clientWidth;
	cH=dd.clientHeight;
	bW=db.offsetWidth;
	bH=db.offsetHeight;
	sH=dd.scrollHeight;
	sW=dd.scrollWidth;
}
function getScrollTop(){function ieTrueBody(){return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;}return $.browser.msie ? ieTrueBody().scrollTop : window.pageYOffset;}

function loginCheckLog(options){
	var me=this,url="";
	this.sets={};
	if(options) {$.extend(me.sets, options)};
	$.each(getSum(me.sets), function(i, n){
		if(n[0]!="action") url += n[0] + "=" + n[1] + "&";
	}); 
	var len=url.length;
	url=url.substr(0,len-1);
	var bodyId=$(document.body).attr("id");
	var _loc=window.location.href;
	var _http="http";
	if(_loc.substr(0,5) == 'https') _http="https";
	var img=new Image();
	img.src = _http+'://www.linghtinthebox.com/custom_log?type='+me.sets.action+'&'+url;
}

function getSum(properties){
		var p=[];
		for(var i in properties){ 
			if(typeof(i)=="string") {
				var arr=[i,properties[i]]
				p.push(arr);
			}
		}
		return p;
}

function fixPng(obj){
	if ($.browser.version==6.0 && document.body.filters) {
		var imgs="http://image.lightinthebox.com/includes/templates/dev_v2/images/tran.gif?38955";
		var len=$(obj)[0].getElementsByTagName("img");
		for (var i=0; i<len.length; i++){
			var obj = len[i];
			var bg = obj.currentStyle.backgroundImage;
			var img = document.images[i];
			if (bg && bg.match(/\.png/i) != null) {
				var img = bg.substring(5,bg.length-2);
				var offset = obj.style["background-position"];
				obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img+"', sizingMethod='crop')";
				obj.style.backgroundImage = "url('"+imgs+"')";
				obj.style["background-position"] = offset; 
			} else if (img && img.src.match(/\.png$/i) != null) {
				var src = img.src;
			//	img.style.width = img.width + "px";
			//	img.style.height = img.height + "px";
				img.style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='crop')";
				img.src = imgs;
			}
		}
	}
}

function winOpenBox(){
	this.sets = {width:500,height:300,classs:"winHtmlDiv",close:"show"};
	var me=this , _win="" , _bg="" ,_div=".winHtmlDiv",_bg=".winHtmlBg", _skins="",_w="",_h="",_con=".winHtmlCon",_close="winHtmlClose",_pw="pngWidth",_ph="pngHeight",_ok="button_ok",sty1="height:30px;width:25px;",sty2="height:30px;width:5px;",sty3="height:46px;width:46px;";
	this.create = function(){
		var winHtmlStr='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="winHtmlTable">';
		winHtmlStr+='<tr><td width="25" height="30"><img src="'+_skins+'bg01.png?38955" style="'+sty1+'"/></td><td width="5"><img src="'+_skins+'bg02.png?##revision.img##" style="'+sty2+'"/></td><td><img src="'+_skins+'bg03.png?##revision.img##" class="'+_pw+'"/></td><td width="5"><img src="'+_skins+'bg04.png?##revision.img##" style="'+sty2+'"/></td><td width="25"><img src="'+_skins+'bg05.png?##revision.img##" style="'+sty1+'"/></td></tr>';
		winHtmlStr+='<tr><td><img src="'+_skins+'bg06.png?38955" class="'+_ph+'"/></td><td class="'+me.sets.skin+'"></td><td class="'+me.sets.skin+'"><div class="winHtmlCon pad_10px flow"></div></td><td class="'+me.sets.skin+'"></td><td><img src="'+_skins+'bg07.png?##revision.img##" class="'+_ph+'" /></td></tr>';
		winHtmlStr+='<tr><td height="30"><img src="'+_skins+'bg08.png?38955" style="'+sty1+'"/></td><td><img src="'+_skins+'bg09.png?##revision.img##" style="'+sty2+'"/></td><td><img src="'+_skins+'bg10.png?##revision.img##" class="'+_pw+'"/></td><td><img src="'+_skins+'bg11.png?##revision.img##" style="'+sty2+'"/></td><td><img src="'+_skins+'bg12.png?##revision.img##" style="'+sty1+'"/></td>';
		winHtmlStr+='</tr></table><span class="'+_close+'"><img src="'+_skins+'close.png?38955"  style="'+sty3+'"/></span>';
		_win=createElem("DIV",{className:"winHtmlDiv absolute flow"});
		_bg=createElem("DIV",{className:"winHtmlBg"});
		$(_win).html(winHtmlStr);
		$(document.body).prepend(_win).prepend(_bg);
	};
	this.show = function(options){
		if(options) {$.extend(me.sets, options)};
		_skins=CSSPagePath+"css/images/imgBox/"+me.sets.skin+"/";
		this.create();
		getClientSize();
		_w=me.sets.width+60,_h=me.sets.height+60;
		hide_select(0,0);
		$(_div).css({left:(cW-_w)/2,top:Math.max((cH-_h)/2+getScrollTop(),getScrollTop()),width:_w,height:_h}).find("."+_pw).css({width:me.sets.width,height:30}).end().find("."+_ph).css({width:25,height:me.sets.height}).end().show();
		$("."+_close).removeClass().addClass(_close+" "+me.sets.close).click(function(){me.close();});
		$(_con).css({width:me.sets.width-20,height:me.sets.height-20}).html(me.sets.html);
		fixPng(_div);
		$(_bg).css({height:Math.max(cH,bH,sH),width:Math.max(cW,bW,sW)}).css({opacity: 0}).animate({ opacity: 0.25 });
	};
	this.close = function(){
		$(_div).remove(); ;
		$(_bg).fadeOut(200,function(){$(this).remove(); });
		hide_select(1,0);
	};
	window.onresize=function(){	
		if($(_bg)[0]){
			getClientSize();
			$(_bg).css({height:Math.max(cH,bH,sH),width:Math.max(cW,bW,sW)});
			$(_div).css({left:(cW-_w)/2,top:Math.max((cH-_h)/2+getScrollTop(),getScrollTop())})
		}
	};
	this.alert = function(options){
		me.show(options);
		$(_con).append('<table width="100%"><tr><td class="g_t_c"><button type="button" id="'+_ok+'" class="margin_t b"><span>&nbsp;Ok&nbsp;</span></button></td></tr></table>'); 
		$("#"+_ok).click(function(){me.close();});
	};
}

function showCountdown(){
	var me=this;
	this.sets = {};
	this.create = function(){
		var htmlStr='<div style="position:relative;clear:both;background:url('+me.sets.bg+');width:'+me.sets.width+'px;height:'+me.sets.height+'px;"><ul style="padding:0px 0px 0px '+me.sets.padding+'px;font-size:22px;color:#000;">';
		for(var i=0;i<4;i++){var w=i<2?36:35;htmlStr+='<li class="white fl g_t_c line_30px" id="'+me.sets.id+i+'" style="width:'+w+'px;padding:13px 4px 0px 0px;">00</li>';}
		if(me.sets.link) htmlStr+='<a href="'+me.sets.link.href+'" style="display:block;background:#000;position:absolute;left:'+me.sets.link.left+'px;top:'+me.sets.link.top+'px;width:'+me.sets.link.width+'px;height:'+me.sets.link.height+'px;">ddddd</a>';
		htmlStr+='</ul></div>';
		document.write(htmlStr);
	};
	this.show = function(options){
		if(options) {$.extend(me.sets, options)};
		me.create();
		showBackTime(new Date(me.sets.endTime));
	};
	function showBackTime(endTime){
			var date=new Date();
			var startTime=new Date(date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds());
			var timer;
			var addTime = startTime - new Date(setHs);
			var t = (endTime-startTime+addTime)/1000 + 1;
			if(t<1){return;}
			(function (){
				if (--t>0){
					for(var i=0;i<4;i++){
						$("#time"+i).html(minToBackTime(t)["t"+i]);

					}
				}else{
					clearTimeout(timer);
					for(var i=0;i<4;i++){
						$("#time"+i).html("00");
					}
				}
				timer = window.setTimeout(arguments.callee,1000);
			})();
		}
		function minToBackTime(min){
			var t = Math.floor(min/86400);
			min -= 86400*t;
			var s = Math.floor(min/3600);
			min -= 3600*s;
			var f = Math.floor(min/60);
			min -= 60*f;
			return {t0:padLeft(t,10),t1:padLeft(s,10),t2:padLeft(f,10),t3:padLeft(min,10)};
		}
		function padLeft(t,l){t=(t<l)?("0"+t):t;return t;}
}

$.fn.fillet= function(options) {
	var b_arr=[],$_this=$(this),sets = {border:"#ddd",background:"#fff",noBorder:false};
	for(var i=0;i<5;i++){var _w=i==1?" w2":"";b_arr.push("<b class=\"b"+i+_w+"\"></b>");}
	var conDiv = createElem("DIV",{className:"fillet_con"});
	$(conDiv).html($_this.html());
	$_this.html("");
	var $_width=$_this.width();
	$_this.append(b_arr.join("")).append(conDiv).append(b_arr.reverse().join("")); 
	if(options) {$.extend(sets, options)};	
	sets.border=sets.noBorder?sets.background:sets.border;
	$("b",this).css({borderColor:sets.border,backgroundColor:sets.background});
	$(".b0",this).css({backgroundColor:sets.border});
	$(".fillet_con",this).css({borderColor:sets.border,backgroundColor:sets.background,width:$_width-22,padding:"5px 10px",overflow:"hidden"});
	$_this.show();
}
Array.prototype.del=function(n) {if(n<0){return this;}else{return this.slice(0,n).concat(this.slice(n+1,this.length));}}
$.fn.selectChoose= function(options) {
	var me = this;
	var $sel = $(this).find("select"),_data = options["data"],_page = options["page"];
	var _s = $sel.size();
	var _list = [],isOne = false;
	this._w = [];
	this.objIndexOf=function(obj,value){
		for(var i=0;i<obj.length;i++){if(value==obj[i]["value"]){return i;}}return -1;
	}
	this.getDelValue = function(id,value){
		me_w = [];
		for(var i=0;i<_data[0].length;i++){
			var len=isOne?1:2;
			for(var z=0;z<len;z++){
				if(isOne){
					me_w.push(_data[0][i][z]);
				}else{
					if(("attrib-"+_data[0][i][z][0])==id&&(_data[0][i][z][1])==value){
						me_w.push(_data[0][i][1-z]);
					}
				}
			}
		}
	}
	this.initValue = function(sel){
		var m=[];
		for(var z=0;z<_s;z++){
			var op = sel.eq(z).find("option");
			var _m=[];
			for(var i=0;i<op.length;i++){
				_m.push({value:op.eq(i).attr("value"),price:op.eq(i).attr("price"),text:op.eq(i).attr("text")});
			}
			m.push(_m);
		}
		_list = m;
	}
	this.delAtt = function(id,arr){
		var _arr=arr;
		for(var n=0;n<me_w.length;n++){
			if(id=="attrib-"+me_w[n][0])
			_arr=_arr.del(me.objIndexOf(_arr,me_w[n][1]));					
		}
		return _arr;
	}
	
	this.selChange = function(obj,n){
				var _sel=[];
				for(var k=0;k<_s;k++){
					_sel.push($sel.eq(k).attr("value"));
				}

				var __value = obj.attr("value"),__id=obj.attr("id");
				var __arr=[];
				for(var m=0;m<_s;m++){
					__arr.push(_list[m]);
				}
				me.getDelValue(__id,__value);
				for(var p=0;p<_s;p++){
					if(p!=n)
					__arr[p] = me.delAtt($sel.eq(p).attr("id"),__arr[p]);
				}
				for(var l=0;l<_s;l++){
					var _i=$sel.eq(l).attr("id"),_v=$sel.eq(l).attr("value");
					if(l!=n&&me.objIndexOf(__arr[l],_v)!=-1)
					me.getDelValue(_i,_v);
					for(var v=0;v<_s;v++){
						__arr[v] = me.delAtt($sel.eq(v).attr("id"),__arr[v]);
					}
				}

				for(var z=0;z<_s;z++){
					/*
					var ___html='<option is_custom="'+$sel.eq(z).find("option").eq(0).attr("is_custom")+'" price="'+$sel.eq(z).find("option").eq(0).attr("price")+'" value="'+$sel.eq(z).find("option").eq(0).attr("value")+'">'+lang_txt['TEXT_PLEASE_SELECT']+'</option>';
					for(var q=1;q<__arr[z].length;q++){
						var ___check = __arr[z][q]["value"]==_sel[z] ?'selected':"";
						___html+='<option price="'+__arr[z][q]["price"]+'" value="'+__arr[z][q]["value"]+'" '+___check+'>'+__arr[z][q]["text"]+'</option>';
					}
					if($.browser.version==6.0){$sel.eq(z)[0].options.length = 0;}
					$sel.eq(z).html(___html);
					*/
					if($.browser.version==6.0){

						var _vd = [$sel.eq(z).find("option").eq(0).attr("is_custom"),$sel.eq(z).find("option").eq(0).attr("price"),$sel.eq(z).find("option").eq(0).attr("value"),lang_txt['TEXT_PLEASE_SELECT']]

						var _id = $sel.eq(z).attr("id");	
						
						if($sel.eq(z).attr("id")!=$(obj).attr("id")){
							var _xVa=_vd[3];
							for(var x=1;x<__arr[z].length;x++){
								if(__arr[z][x]["value"]==_sel[z]){_xVa=__arr[z][x]["text"]};						
							}
							/*
							var _text = createElem("select",{className:"sel_text absolute sel_"+z});

							var sObj = $sel.eq(z)[0];
							var _et = sObj.offsetTop;
							var _el = sObj.offsetLeft;
							while(sObj=sObj.offsetParent){
								_et+=sObj.offsetTop;
								_el+=sObj.offsetLeft;
							}
							$(_text).html('<option value="">'+_xVa+'</option>').css({left:_el,top:_et});
							$(document.body).prepend(_text);
							*/
							$sel.eq(z)[0].length = 0;
							$sel.eq(z)[0].options.add(new Option(_xVa,_vd[2]));
							$sel.eq(z).find("option").attr({"price":_vd[1],"is_custom":_vd[0]});
							for(var q=1;q<__arr[z].length;q++){
								var ___check = __arr[z][q]["value"]==_sel[z] ?true:false;
								$sel.eq(z)[0].options.add(new Option(__arr[z][q]["text"],__arr[z][q]["value"]));
								$sel.eq(z).find("option").attr({"price":__arr[z][q]["price"],"selected":___check});
								
							}
							$sel.eq(z).find("option").eq(0).attr({"text":_vd[3]});

							/*
							(function(z){
								window.setTimeout(function(){$(".sel_"+z).remove();},300);
							})(z);
							*/
							 
						}

					}else{
						var ___html='<option is_custom="'+$sel.eq(z).find("option").eq(0).attr("is_custom")+'" price="'+$sel.eq(z).find("option").eq(0).attr("price")+'" value="'+$sel.eq(z).find("option").eq(0).attr("value")+'">'+lang_txt['TEXT_PLEASE_SELECT']+'</option>';
						for(var q=1;q<__arr[z].length;q++){
							var ___check = __arr[z][q]["value"]==_sel[z] ?'selected':"";
							___html+='<option price="'+__arr[z][q]["price"]+'" value="'+__arr[z][q]["value"]+'" '+___check+'>'+__arr[z][q]["text"]+'</option>';
						}
						$sel.eq(z).html(___html);
					
					}
				}
				if(_page=="product"){
					for(var y=0;y<_s;y++){
						var _sid = $sel.eq(y).attr("id");
						if(tempPrice[_sid])
							extraPrice -= tempPrice[_sid];
						var t = $sel.eq(y).find("option:selected");
						extraPrice += Number(stripPrice(t.attr("price")));
						tempPrice[_sid] = Number(stripPrice(t.attr("price")));
					}
					checkS();
				}
	}



	if(_data.length==0) return;
	me.initValue($sel);	
	if(_s==1){
		isOne = true;
		me.getDelValue($sel.attr("id"),$sel.attr("value"));
		for(var n=0;n<me_w.length;n++){
			_list[0]=_list[0].del(me.objIndexOf(_list[0],me_w[n][1]));	
		}
		var ___html='<option is_custom="'+$sel.find("option").eq(0).attr("is_custom")+'" price="'+$sel.find("option").eq(0).attr("price")+'" value="'+$sel.find("option").eq(0).attr("value")+'">'+lang_txt['TEXT_PLEASE_SELECT']+'</option>';
		for(var i=1;i<_list[0].length;i++){
			___html+='<option price="'+_list[0][i]["price"]+'" value="'+_list[0][i]["value"]+'">'+_list[0][i]["text"]+'</option>';
		}
					
		$sel.html(___html);
	}else{
		$sel.each(function(n){
			var $this = $(this);
			var __t=$(this).find("option");
			
			$(this).bind("change",function(){	

				me.selChange($this,n);


			});
			$(this).parent().find("input[id='chk_r_attr']").bind("click",function(){
				me.selChange($this,n);
			})

		});
	}

}
//专题页改版开始///
function cutOut(str,len){
	if(str.length<len){
		return str;
	}else{
		return str.substring(0,len)+'...';
	}	
}
function useSeoLink(pname,pid){
	if(pname&&pid){
		return (useSeo)?root_path+'/'+pname.replace(/[^a-zA-Z0-9]/ig,'-')+'_p'+pid+'.html':root_path+'/'+'index.php?main_page=product_info&products_id='+pid
	}else{
		return '';
	}
}
 
jQuery.fn.countDown = function(options) {
 
	nowTimers = new Date(nowTimer);
	var dayEnd=new Date(nowTimers.setDate(nowTimers.getDate()+1));
 
	var d_year = dayEnd.getFullYear();
	var d_mon = dayEnd.getMonth()+1;
	var d_day = dayEnd.getDate();
	
	//2009/09/02 00:00:00
	var dayStr = d_year + '/' + d_mon + '/' + d_day + ' 01:00:00';
	
	var settings = {startTimer:nowTimer,endTimer:dayStr,day:true};
	
	options = jQuery.extend(settings, options);
 
	if(!options) options = '()';
	if(jQuery(this).length == 0) return false;
	var obj = this;	
	 
	
	
	if(options.seconds == undefined)
	{
		options.seconds = (new Date(options.endTimer) - new Date(options.startTimer))/1000;
	};
	
	if(options.seconds < 0){
		if(options.callback) eval(options.callback);
		return null;
	};
	
	function pad2(number) {   
		return (number < 10) ? '0' + number : number;	   
	}
	/**
	 * recursive countdown
	 */
	window.setTimeout(
		function() {
			var secs = options.seconds;		
				
			var day, h, m, s
			day = Math.floor(secs/86400);
			secs -= 86400*day;
			h = Math.floor(secs/3600);
			secs -= 3600*h;
			m = Math.floor(secs/60);
			secs -= 60*m;
			
			s = Math.floor(secs);
			
			h = pad2(h);
			m = pad2(m);
			s = pad2(s);
 
			if(options.day){
				jQuery(obj).html(String(day)+' '+String(h)+':'+String(m)+':'+String(s));
			}else{
				jQuery(obj).html(String(h)+':'+String(m)+':'+String(s));
			}
		
			--options.seconds;
			jQuery(obj).countDown(options);
		}
		, 1000
	);	
    return this;
}

jQuery.fn.loadingImg = function(url) {
	var obj = this;
	var img = new Image(); //new img obj
	img.src = url;	//set src either absolute or rel to css dir
	var w = jQuery(obj).attr('width');
	var h = jQuery(obj).attr('height');
 
	
	jQuery(obj).attr({'src':static_path+'/includes/templates/dev_v2/css/images/imgBox/s.gif?38955','width':w,'height':h});
	
	$(obj).css('background', 'url('+static_path+'/includes/templates/dev_v2/css/images/imgBox/loading_img_s.gif?38955) 50% 50% no-repeat');
	//msie or not
	if(!img.complete){
		jQuery(img).bind('error load onreadystatechange', function(){jQuery(obj).attr('src',url);});
		//jQuery(img).bind('load', function(){jQuery(obj).attr('src',url);});
	} else {
		jQuery(obj).attr('src',url);
	}
};

jQuery.fn.parseProduct = function(trackUrl,p_name_len,big_tpl) {
	var obj = this;
	
	if(!p_name_len)
		p_name_len = 50;
	var ps = $(obj).children("p");
	
	var p_id = ps.eq(0).html();
	var p_img;
	
	if(big_tpl){
		p_img = static_path + 'images/f/'+ps.eq(1).html().split('*')[1];
	}else{
		p_img = static_path + 'images/m/'+ps.eq(1).html().split('*')[1];
	}
	
	var p_name = ps.eq(2).html();
	var url = useSeoLink(p_name,p_id)+'?'+trackUrl;
	
	var p_wholesale_price = ps.eq(3).html();
	var P_retail_price = ps.eq(4).html();
	
	
	var p_freeShipping = ps.eq(6).html();
	var p_discount = ps.eq(5).html();
	

	var p_str = '';

	if(p_discount>0){
		p_str = lang_txt['save']+' '+p_discount+'%';
	}

	if(p_freeShipping>0){
		p_str = lang_txt['freeshipping'];
	}

	if(p_discount>0&&p_freeShipping>0){
		p_str = lang_txt['save']+' '+p_discount+'%' + '+' + lang_txt['freeshipping'];
	}

	var html = '';
	html += '<li>';
	html += '<div><a href="'+url+'" title="'+p_name+'" class="ih big"><img src="'+p_img+'" /></a></div>';
	html += '<div class="margin_t" style="height:30px;"><a href="'+url+'" title="'+p_name+'">'+cutOut(p_name,p_name_len)+'</a></div>';
	html += '<div class="red b margin_t" style="font-size:16px;">'+p_wholesale_price+'</div>';
	html += '<div class="red b" style="height:20px;">'+p_str+'</div>';
	html += '<div><nobr>'+lang_txt['retailprice']+': <span class="b del">'+P_retail_price+'</span></nobr></div>';
	html += '<a href="'+url+'"><div class="margin_t buy_btn"></div></a>';
	html += '</li>';        
	return html;
};
 
//专题页改版强束///

$.fn.showText= function(options) {
			var $me = $(this),me=this;
			this.sets = {width:100,top:50,left:0,arrow:"left",backcolor:"#fff",cssName:"ws_a",img:"png",close:true};
			if(options) {$.extend(me.sets, options)};
			var html = '<div class="'+ me.sets.cssName +' relative">';
			if(me.sets.close) {html += '<div class="absolute close hand" style="top:7px;right:10px;"></div>';}
			html += '<div class="absolute '+ me.sets.cssName +'_arrow"></div><div class="clear"></div>';
			html += '<div class="' + me.sets.cssName + '_t_l"></div><div class="w_c h_t ' + me.sets.cssName + '_t_c"></div><div class="' + me.sets.cssName +'_t_r"></div>';
			html += '<div class="' + me.sets.cssName +'_c_l"><div class="' + me.sets.cssName +'_c_r"><div class="w_c h_c w_w"></div></div></div>';
			html += '<div class="' + me.sets.cssName +'_b_l"></div><div class="w_c h_b ' + me.sets.cssName +'_b_c"></div><div class="' + me.sets.cssName +'_b_r"></div>';
			html += '</div>';
			var obj = $(me)[0];
			var et = obj.offsetTop;
			var el = obj.offsetLeft;
			while(obj=obj.offsetParent){
				et+=obj.offsetTop;
				el+=obj.offsetLeft;
			}
			var arrow_l = me.sets.arrow == "left" ? (el+20) : (el - me.sets.width-65);
			var arrow_t = et-60;
			if(me.sets.arrow == "top"){
				arrow_t = et + $(this).height() + 17;
				arrow_l = el - me.sets.width;
			}
	
			var _win=createElem("DIV",{className:"absolute z9999 wintextcon hide"});
			$(_win).html(html).css({left:arrow_l,top:arrow_t,width:me.sets.width+30});
			$(_win).find("."+me.sets.cssName).css({width:me.sets.width+30,left:16});	
			$(_win).find(".w_c").css({width:me.sets.width}).end()
				.find("."+me.sets.cssName +"_c_l").css({width:me.sets.width+15}).end()
				.find("."+me.sets.cssName +"_c_r").css({width:me.sets.width}).end()
				.find(".w_w").css({background:me.sets.backcolor}).html(me.sets.html);	
			if(me.sets.height){
				$(_win).css({height:me.sets.height+30});
				$(_win).find("."+me.sets.cssName).css({height:me.sets.height+30});
				$(_win).find(".h_c").css({height:me.sets.height});
			}
			$(_win).find("."+me.sets.cssName+"_arrow").addClass(me.sets.cssName +'_'+ me.sets.arrow);
			$(_win).find(".close").click(function(){me.close();});
			if(me.sets.out) $me.mouseout(function(){me.close();});
			$(".wintextcon").remove();
			$(document.body).prepend(_win);
			var _isb = me.sets.arrow == "bottom";
			$(_win).css({left:(_isb?(arrow_l+me.sets.width+35):arrow_l),top:(_isb ? (arrow_t - $(_win).height() + 47) : arrow_t)});
			if(me.sets.arrow == "bottom") {$(_win).find("." + me.sets.cssName +"_"+ me.sets.arrow).css({top:$(_win).height()-5});}

			$(_win).show();
			this.close = function(){
				$(_win).remove();
				hide_select(1,0);
			}
}

$.fn.showElement= function(options) {
			var $me = $(this),me=this;
			this.sets = {action:"click",left:0,top:0};
			if(options) {$.extend(me.sets, options)};
			var obj = $(me.sets.elm)[0];
			var et = obj.offsetTop;
			var el = obj.offsetLeft;
			while(obj=obj.offsetParent){
				et+=obj.offsetTop;
				el+=obj.offsetLeft;
			}
			$(me.sets.obj).find(".close").click(function(){me.close();});
			switch (me.sets.action) {
				case "mouse":	
					$me.mouseover(function(){me.show();}).mouseout(function(){me.close();});
					break;
				case "click":				
					$me.click(function(){if($(me.sets.obj).css("display")=="none") {me.show();}else{me.close();}});
					break;
			}
			this.show = function(){
				$(me.sets.obj).css({left:el+me.sets.left,top:et+me.sets.top}).show();
			}
			this.close = function(){
				$(me.sets.obj).hide();
			}
}

function addFavor(title,url){if (document.all) window.external.AddFavorite(url, title); else if (window.sidebar) window.sidebar.addPanel(title, url, "") ;}
//专题页改版强束///

function newsletter_check_box(language,checkbox_name1,checkbox_name2,hidden1,hidden2){

 var checkbox1 = document.getElementById(checkbox_name1).checked;
 var checkbox2 = document.getElementById(checkbox_name2).checked;
 if(language=='en'){
  
  if(checkbox1){
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1AQAZ04";
    document.getElementById(hidden2).value="-421280147";
    
   }else{
	
    document.getElementById(hidden1).value="S7Y1AgAg79";
    document.getElementById(hidden2).value="1575980073";
   }
  }else{
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1BgAw13";
    document.getElementById(hidden2).value="2025216077";
   }else{
    document.getElementById(hidden1).value="S7Y1AQAZ04";
    document.getElementById(hidden2).value="-421280147";
   }
  }
  //alert(document.getElementById("hidden1").value);
  //alert(document.getElementById("hidden2").value);
 }else if(language=='fr'){
  if(checkbox1){
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1BwAA04";
    document.getElementById(hidden2).value="-1989778655";
    
   }else{
    document.getElementById(hidden1).value="S7Y1BQAt03";
    document.getElementById(hidden2).value="2132780631";
   }
  }else{
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1AwAt47";
    document.getElementById(hidden2).value="57262292";
   }else{
    document.getElementById(hidden1).value="S7Y1BwAA04";
    document.getElementById(hidden2).value="-1989778655";
   }
  }
 }else if(language=='es'){
  if(checkbox1){
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1NAAAw35";
    document.getElementById(hidden2).value="-1348823863";
    
   }else{
    document.getElementById(hidden1).value="S7a1AAAO49";
    document.getElementById(hidden2).value="1543548970";
   }
  }else{
   if(checkbox2){
    document.getElementById(hidden1).value="S7a1BAAa54";
    document.getElementById(hidden2).value="-1759438396";
   }else{
    document.getElementById(hidden1).value="S7Y1NAAAw35";
    document.getElementById(hidden2).value="-1348823863";
   }
  }
 }else if(language=='de'){
  if(checkbox1){
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1tAAAg06";
    document.getElementById(hidden2).value="-2037886563";
    
   }else{
    document.getElementById(hidden1).value="S7Y1NAMAA88";
    document.getElementById(hidden2).value="-1347646214";
   }
  }else{
   if(checkbox2){
    document.getElementById(hidden1).value="S7Y1NAcAf31";
    document.getElementById(hidden2).value="1394718603";
   }else{
    document.getElementById(hidden1).value="S7Y1tAAAg06";
    document.getElementById(hidden2).value="-2037886563";
   }
  }
 }
}
var check_login_box = 0;
function check_login_address(){
	if($('#shipping_address_checkbox')[0].checked){
		check_login_box= 1
	}else{
		check_login_box= 0;
	}
}
function check_login_from(obj){
	if(!$("#termofuse").attr("checked")) {
		alert($("#termofuse").attr("chkName"))
		return false;
	}

	if(check_login_box==1) {
		if(($('#reg-password')[0].value == $('#reg-re-password')[0].value) && $('#reg-password')[0].value){
			var status = fmChk(obj);
		}else if(($('#reg-password')[0].value == $('#reg-re-password')[0].value) && !$('#reg-password')[0].value){
			var status = fmChk_More_Reason(obj,'termofuse,');
		}else{
			var status = fmChk(obj);
		}
	}
	else {
		if(($('#reg-password')[0].value == $('#reg-re-password')[0].value) && $('#reg-password')[0].value){
			var status = fmChk_More_Reason(obj,'b_firstname,b_lastname,b_street-address,b_city,b_country,b_postcode,b_phone,');
		}else if(($('#reg-password')[0].value == $('#reg-re-password')[0].value) && !$('#reg-password')[0].value){
			var status = fmChk_More_Reason(obj,'b_firstname,b_lastname,b_street-address,b_city,b_country,b_postcode,b_phone,termofuse,');

		}else{
			var status = fmChk_More_Reason(obj,'b_firstname,b_lastname,b_street-address,b_city,b_country,b_postcode,b_phone,');

		}
	}
	return status;
  
}
//affilate 2010.3
	
function getParam(param) {
         var str = window.location.search;
        
         var r = new RegExp("\\?(?:.+&)?" + param + "=(.*?)(?:&.*)?$");  
         var m = str.match(r);  
         return m ? m[1] : "";
}
function if_html(){
	var str = window.location.href;
	var reg=new RegExp("/html/", "gi");
	return reg.test(str);
}
if(if_html()){

	
        var affi_value = getParam("utm_campaign");
        
        
        if(affi_value=="gan"){
            setCookie("affi","664b08e55c41be35e1e822fee3b61691",60*60*24*30);
        }else if(affi_value=="cj"){
            setCookie("affi","6775622d9bf52a43ec02a1834a9fced6",60*60*24*30);
        }else if(affi_value=="webgains"){
            setCookie("affi","1bc328b5a9d17a23cefbcc73244c3de9",60*60*24*30);	
        }
}


$.fn.showWin= function(options) {
	var $me = $(this),me=this;
	this.sets = {width:100,top:50,left:0,arrow:"left",backcolor:"#fff",cssName:"ws_a",img:"png",close:true,isShow:false};
	if(options) {$.extend(me.sets, options)};
	var html = '<div class="'+ me.sets.cssName +' relative">';
	if(me.sets.title){html += '<h5>'+ me.sets.title +'</h5>';}
	html += '<div class="absolute '+ me.sets.cssName +'_arrow"></div><div class="clear"></div>';
	html += '<div class="' + me.sets.cssName + '_t_l"></div><div class="w_c h_t ' + me.sets.cssName + '_t_c"></div><div class="' + me.sets.cssName +'_t_r"></div>';
	html += '<div class="' + me.sets.cssName +'_c_l"><div class="' + me.sets.cssName +'_c_r"><div class="w_c h_c w_w"></div></div></div>';
	html += '<div class="' + me.sets.cssName +'_b_l"></div><div class="w_c h_b ' + me.sets.cssName +'_b_c"></div><div class="' + me.sets.cssName +'_b_r"></div>';
	html += '</div>';
	var obj = $(me)[0];
	var et = obj.offsetTop;
	var el = obj.offsetLeft;
	//var arrow_l = $(".contest_details").parent().offset().left/100;
	var arrow_l = $(".contest_details").parent().width()-32;
	var arrow_t = 35;
	var _win=createElem("DIV",{className:"absolute z9999 wintextcon_win hide"});
	$(_win).html(html).css({left:arrow_l,top:arrow_t,width:me.sets.width+30});
	$(_win).find("."+me.sets.cssName).css({width:me.sets.width+30,left:16});
	$(_win).find(".w_c").css({width:me.sets.width}).end()
	.find("."+me.sets.cssName +"_c_l").css({width:me.sets.width+15}).end()
	.find("."+me.sets.cssName +"_c_r").css({width:me.sets.width}).end()
	.find(".w_w").css({background:me.sets.backcolor}).html(me.sets.html);
	$(_win).find(".close").click(function(){me.close();});
	$(_win).mouseout(function(){me.sets.isShow = true;}).mouseover(function(){me.sets.isShow = false;});
	$me.mouseout(function(){me.sets.isShow = true;}).mouseover(function(){me.sets.isShow = false;});
	$(".wintextcon_win").remove();
	$("#mar").prepend(_win);
	$(_win).css({left:arrow_l,top:arrow_t});
	$(_win).show();
	window.setTimeout(function(){me.sets.isShow = true;},1000);
	this.close = function(){
		if(me.sets.isShow){
			$(_win).remove();
			hide_select(1,0);
			me.sets.isShow = false;
			$(document.body).unbind("click");
		}
	}
	$(document.body).click(function(){me.close();});
}
//autocomplete begin   @author: ch
//////////////////////////////////////////////////////////////////
jQuery.autocomplete = function(input, options) {
	// Create a link to self
	var me = this;

	// Create jQuery object for input element
	var $input = $(input);
	var inputWidth = $input.css("width");
	inputWidth = inputWidth.substring(0,inputWidth.length-2)-0+3+"px";
	// Apply inputClass if necessary
	if (options.inputClass) $input.addClass(options.inputClass);

	// Create results
	var results = document.createElement("div");
	// Create jQuery object for results
	var $results = $(results);
	$results.css("z-index","99");
	$results.hide().addClass(options.resultsClass).css("position", "absolute");
	$results.css("width", inputWidth);

	// Add to body element
	$("body").append(results);

	input.autocompleter = me;

	var timeout = null;
	var prev = "";
	var active = -1;
	var cache = {};
	var keyb = false;
	var hasFocus = false;
	var lastKeyPressCode = null;

	// flush cache
	function flushCache(){
		cache = {};
		cache.data = {};
		cache.length = 0;
	};

	// flush cache
	flushCache();

	$input
	.keydown(function(e) {
		// track last key pressed
		hasFocus = true;
		lastKeyPressCode = e.keyCode;
		switch(e.keyCode) {
			case 38: // up
				e.preventDefault();
				moveSelect(-1);
				break;
			case 40: // down
				e.preventDefault();
				moveSelect(1);
				break;
			case 9:  // tab
			case 13: // return
				break;
			default:
				active = -1;
				if (timeout) clearTimeout(timeout);
				timeout = setTimeout(function(){onChange();}, options.delay);
				break;
		}
	})
	.focus(function(){
		// track whether the field has focus, we shouldn't process any results if the field no longer has focus
		hasFocus = true;
	})
	.blur(function() {
		// track whether the field has focus
		hasFocus = false;
		hideResults();
	});

	hideResultsNow();

	function onChange() {
		// ignore if the following keys are pressed: [del] [shift] [capslock]
		if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ) return $results.hide();
		var v = $input.val();
		if (v == prev) return;
		prev = v;
		if (v.length >= options.minChars) {
			$input.addClass(options.loadingClass);
			requestData(v);
		} else {
			$input.removeClass(options.loadingClass);
			$results.hide();
		}
	};

 	function moveSelect(step) {

		var lis = $("li", results);
		if (!lis) return;

		active += step;

		if (active < 0) {
			active = lis.size() - 1;
		} else if (active >= lis.size()) {
//			active = lis.size() - 1;
			active = 0;
		}

		lis.removeClass("ac_over");

		$(lis[active]).addClass("ac_over");
		$input.val(lis[active].selectValue)
		// Weird behaviour in IE
		// if (lis[active] && lis[active].scrollIntoView) {
		// 	lis[active].scrollIntoView(false);
		// }

	};

	function selectItem(li) {
		if (!li) {
			li = document.createElement("li");
			li.extra = [];
			li.selectValue = "";
		}
		var v = $.trim(li.selectValue ? li.selectValue : li.innerHTML);
		input.lastSelected = v;
		prev = v;
		$results.html("");
		$input.val(v);
		hideResultsNow();
		$('#quick_find_header')[0].submit();
		if (options.onItemSelect) setTimeout(function() { options.onItemSelect(li) }, 1);
	};

	// selects a portion of the input string
	function createSelection(start, end){
		// get a reference to the input element
		var field = $input.get(0);
		if( field.createTextRange ){
			var selRange = field.createTextRange();
			selRange.collapse(true);
			selRange.moveStart("character", start);
			selRange.moveEnd("character", end);
			selRange.select();
		} else if( field.setSelectionRange ){
			field.setSelectionRange(start, end);
		} else {
			if( field.selectionStart ){
				field.selectionStart = start;
				field.selectionEnd = end;
			}
		}
		field.focus();
	};

	// fills in the input box w/the first match (assumed to be the best match)
	function autoFill(sValue){
		// if the last user key pressed was backspace, don't autofill
		if( lastKeyPressCode != 8 ){
			// fill in the value (keep the case the user has typed)
			$input.val($input.val() + sValue.substring(prev.length));
			// select the portion of the value not typed by the user (so the next character will erase)
			createSelection(prev.length, sValue.length);
		}
	};

	function showResults() {
		// get the position of the input field right now (in case the DOM is shifted)
		var pos = findPos(input);
		// either use the specified width, or autocalculate based on form element
		var iWidth = (options.width > 0) ? options.width : inputWidth;
		// reposition
		$results.css({
			width: parseInt(iWidth) + "px",
			top: (pos.y + input.offsetHeight) + "px",
			left: pos.x + "px"
		}).show();
	};

	function hideResults() {
		if (timeout) clearTimeout(timeout);
		timeout = setTimeout(hideResultsNow, 200);
	};

	function hideResultsNow() {
		if (timeout) clearTimeout(timeout);
		$input.removeClass(options.loadingClass);
		if ($results.is(":visible")) {
			$results.hide();
		}
		if (options.mustMatch) {
			var v = $input.val();
			if (v != input.lastSelected) {
				selectItem(null);
			}
		}
	};

	function receiveData(q, data) {
		if (data) {
			$input.removeClass(options.loadingClass);
			results.innerHTML = "";

			// if the field no longer has focus or if there are no matches, do not display the drop down
			if( !hasFocus || data.length == 0 ) return hideResultsNow();

			if ($.browser.msie) {
				// we put a styled iframe behind the calendar so HTML SELECT elements don't show through
				$results.append(document.createElement('iframe'));
			}
			results.appendChild(dataToDom(data));
			// autofill in the complete box w/the first match as long as the user hasn't entered in more data
			if( options.autoFill && ($input.val().toLowerCase() == q.toLowerCase()) ) autoFill(data[0][0]);
			showResults();
		} else {
			hideResultsNow();
		}
	};

	function parseData(data) {
		if (!data) return null;
		var parsed = [];
		var rows = data.split(options.lineSeparator);
		for (var i=0; i < rows.length; i++) {
			var row = $.trim(rows[i]);
			if (row) {
				parsed[parsed.length] = row.split(options.cellSeparator);
			}
		}
		return parsed;
	};

	function dataToDom(data) {
		var ul = document.createElement("ul");
		var num = data.length;
		// limited results to a max number
		if( (options.maxItemsToShow > 0) && (options.maxItemsToShow < num) ) num = options.maxItemsToShow;

		for (var i=0; i < num; i++) {
			var row = data[i];
			if (!row) continue;
			var li = document.createElement("li");
			if (options.formatItem) {
				li.innerHTML = options.formatItem(row, i, num);
				li.selectValue = row[0];
			} else {
				li.innerHTML = row[0];
				li.selectValue = row[0];
			}
			var extra = null;
			if (row.length > 1) {
				extra = [];
				for (var j=1; j < row.length; j++) {
					extra[extra.length] = row[j];
				}
			}
			li.extra = extra;
			ul.appendChild(li);
			$(li).hover(				//
				function() { $("li", ul).removeClass("ac_over"); $(this).addClass("ac_over"); active = $("li", ul).indexOf($(this).get(0)); },
				function() { $(this).removeClass("ac_over"); }
			).click(function(e) { selectItem(this); e.preventDefault(); e.stopPropagation(); });
		}
		return ul;
	};
	var once = false;
	function requestData(q) {
		if (!options.matchCase) q = q.toLowerCase();
		var data = options.cacheLength ? loadFromCache(q) : null;
		// recieve the cached data
		if (data) {
			receiveData(q, data);
		// if an AJAX url has been supplied, try loading the data now
		} else if( (typeof options.url == "string") && (options.url.length > 0) ){
			$.get(makeUrl(q), function(data) {
				data = parseData(data);
				addToCache(q, data);
				receiveData(q, data);
			});
		// if there's been no data found, remove the loading class
		} else {
			$input.removeClass(options.loadingClass);
		}
	};

	function makeUrl(q) {
		var url = options.url + "?q=" + encodeURI(q);
		for (var i in options.extraParams) {
			url += "&" + i + "=" + encodeURI(options.extraParams[i]);
		}
		return url;
	};

	function loadFromCache(q) {
		if (!q) return null;
		if (cache.data[q]) return cache.data[q];
		if (options.matchSubset) {
			for (var i = q.length - 1; i >= options.minChars; i--) {
				var qs = q.substr(0, i);
				var c = cache.data[qs];
				if (c) {
					var csub = [];
					for (var j = 0; j < c.length; j++) {
						var x = c[j];
						var x0 = x[0];
						if (matchSubset(x0, q)) {
							csub[csub.length] = x;
						}
					}
					return csub;
				}
			}
		}
		return null;
	};

	function matchSubset(s, sub) {
		if (!options.matchCase) s = s.toLowerCase();
		var i = s.indexOf(sub);
		if (i == -1) return false;
		return i == 0 || options.matchContains;
	};

	this.flushCache = function() {
		flushCache();
	};

	this.setExtraParams = function(p) {
		options.extraParams = p;
	};

	function addToCache(q, data) {
		if (!data || !q || !options.cacheLength) return;
		if (!cache.length || cache.length > options.cacheLength) {
			flushCache();
			cache.length++;
		} else if (!cache.data[q]) {			//------------------------------------cache[q]
			cache.length++;
		}
		cache.data[q] = data;
	};

	function findPos(obj) {
		var curleft = obj.offsetLeft || 0;
		var curtop = obj.offsetTop || 0;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
		return {x:curleft,y:curtop};
	}
}

jQuery.fn.autocomplete = function(url, options, data) {
	// Make sure options exists
	options = options || {};
	// Set url as option
	options.url = url;
	// set some bulk local data
	options.data = ((typeof data == "object") && (data.constructor == Array)) ? data : null;

	// Set default values for required options
	options.inputClass = options.inputClass || "ac_input";
	options.resultsClass = options.resultsClass || "ac_results";
	options.lineSeparator = options.lineSeparator || "\n";
	options.cellSeparator = options.cellSeparator || "|";
	options.minChars = options.minChars || 1;
	options.delay = options.delay || 400;
	options.matchCase = options.matchCase || 0;
	options.matchSubset = options.matchSubset || 0;
	options.matchContains = options.matchContains || 0;
	options.cacheLength = options.cacheLength || 1;
	options.mustMatch = options.mustMatch || 0;
	options.extraParams = options.extraParams || {};
	options.loadingClass = options.loadingClass || "ac_loading";
	options.selectFirst = options.selectFirst || false;
	options.selectOnly = options.selectOnly || false;
	options.maxItemsToShow = options.maxItemsToShow || -1;
	options.autoFill = options.autoFill || false;
	options.width = parseInt(options.width, 10) || 0;

	this.each(function() {
		var input = this;
		new jQuery.autocomplete(input, options);
	});

	// Don't break the chain
	return this;
}

jQuery.fn.indexOf = function(e){
	for( var i=0; i<this.length; i++ ){
		if( this[i] == e ) return i;
	}
	return -1;
};

function formatItem(row) { 
	var word = $("#keyword").val();
	return "<b>" + word + "</b>" + row[0].substring(word.length);
}
//////////////////////////////////////////////////////////////////////
//autocomplete end
