/*================================================================

	gsGoodsGrpMap.js
	rev.1.1
	
						Author	:shopex.cn
						Modifier:groovesync, inc.
						copyright (c)2008 groovesync, inc.

================================================================*/


/* ====== MODIFIED BY GROOVESYNC >> ====== */

$( function() {
	gs.$('nextBtn').onclick = goodsGrpMap.action.buy;
	goodsGrpMap.setCurrent();
	
	if( $(".itembox_info TD").length > 0 ) {
		$(".sub").html('<img src="'+src+'btn_sub_of.gif" width="16" height="16" alt="-" title="" />');
		$(".add").html('<img src="'+src+'btn_add_of.gif" width="16" height="16" alt="+" title="" />');
		$(".sub IMG, .add IMG").each( function(){ gs.setRollOver(this); this.parentNode.parentNode.className ="n_btns"; } );
		$(".itembox_info").show();
	}
	if( $(".itembox_adjunct TD").length > 0 ) $(".itembox_adjunct").show();
	$(".itembox_wait").hide();
	gs.invalidate();
} );

/* ====== << MODIFIED BY GROOVESYNC ====== */



var goodsGrpMap = {
	current:[],
	lang:{},
	storage:0,
	number_format:function(s)
	{
		if(/[^0-9\.\-]/.test(s)) return "invalid value";
		s=s.replace(/^(\d*)$/,"$1.");
		s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
		s=s.replace(".",",");
		var re=/(\d)(\d{3},)/;
		while(re.test(s))
			s=s.replace(re,"$1,$2");
		s=s.replace(/,(\d\d)$/,".$1");
		s=s.replace(/^\./,"0.");
		return s.replace(".00","");
	},
	c:function(obj){
		if(obj){
			goodsGrpMap.setImg(obj);
			var e =  document.getElementsByTagName('input');
			goodsGrpMap.current[obj.getAttribute('depth')] = obj.value;

			for(var i=0;i<e.length;i++){
				if(e[i].getAttribute('depth') && e[i].type=='radio'){
					if(goodsGrpMap.d(e[i].getAttribute('depth'),e[i].value)){
						e[i].disabled=false;
						e[i].className='enabled';
					}else{
						e[i].className='disabled';
						e[i].disabled=true;
					}
				}
			}

			var itemStr='propmap';
			for(var j=0;j<goodsGrpMap.current.length;j++){
				itemStr+='['+goodsGrpMap.current[j]+']';
			}
			var grpInfo = eval(itemStr);
			if(grpInfo){
				goodsGrpMap.price.base = grpInfo.p;
				goodsGrpMap.price.market = grpInfo.m;
				goodsGrpMap.setNextStep(grpInfo.s>0);
				gs.$('FORM_GOODS_GRP').value = grpInfo.g;
				goodsGrpMap.price.rePrice();
			}else{
				gs.$('nextBtn').style.display='none';
				gs.$('favBtn').style.display='none';
				gs.$('nogoods').style.display='';
			}
		}
	},
	setImg:function(obj){
		var imgsrc = obj.getAttribute('img');
		if(obj.getAttribute('adjunct') && obj.type=='checkbox' && !obj.checked){
			var imgsrc = obj.getAttribute('img');
			while(obj.tagName!='TR'){
				obj = obj.parentNode;
			}
			var current = obj.getElementsByTagName('INPUT');
			for(var i=0;i<current.length;i++){
				if((current[i].type=='checkbox'
					&& current[i].getAttribute('adjunct')
					&& current[i].checked) || (current[i].type=='hidden' && current[i].getAttribute('img'))){
					var imgsrc = current[i].getAttribute('img');
				}
			}
		}else{
			if(obj.parentNode.tagName == 'SELECT' && obj.parentNode.getAttribute('adjunct')){
				obj.parentNode.nextSibling.childNodes[2].name = 'adjnum['+obj.value+']';
			}
			while(obj.tagName!='TR'){
				obj = obj.parentNode;
			}
		}

		var imgs = obj.getElementsByTagName('img');
		if(imgsrc){
			imgs[0].src = imgsrc;
			imgs[1].src = imgsrc;
			imgs[0].style.display= '';
		}else{
			imgs[0].style.display= 'none';
		}
	},
	action:{
		buy:function(){
			gs.$('FORM_NEXT_STEP').value='addshopcart.do';
			gs.$('FORM_TPL_GOODSINFO').submit();
		},
		nobuy:function(){
			gs.$('FORM_NEXT_STEP').value='goodsnotify.dwt';
			gs.$('FORM_TPL_GOODSINFO').submit();
		},
		fav:function(){
			gs.$('FORM_NEXT_STEP').value='addmembergoods.do';
			gs.$('FORM_TPL_GOODSINFO').submit();
		},
		sendfrd:function(addinfo){
			gs.$('FORM_NEXT_STEP').value='sendtofriend.dwt';
			gs.$('FORM_TPL_GOODSINFO').submit();
		}
	},
	setNextStep:function(d){
		gs.$('nextBtn').style.display=d?'':'none';
		gs.$('nextNoBtn').style.display=d?'none':'';
		gs.$('favBtn').style.display='';
		gs.$('nogoods').style.display='none';
		
		gs.$('nextBtn').onclick=goodsGrpMap.action.buy;
		gs.$('nextNoBtn').onclick=goodsGrpMap.action.nobuy;
	},
	setPrice:function(){
		goodsGrpMap.price.base + goodsGrpMap.price.adjunct;
	},
	d:function(depth,value){
		var itemStr='propmap';
		for(var j=0;j<goodsGrpMap.current.length;j++){
			itemStr+='['+(j==depth?value:goodsGrpMap.current[j])+']';
		}
		try{
			var info = eval(itemStr);
			return typeof(info)=='object';
		}catch(e){ return false }
	},
	setCurrent:function(){
		if (goodsGrpMap.current.length < 1){
			goodsGrpMap.setNextStep(goodsGrpMap.storage);
			return;
		}
		var currentProp=[];
		for(var i=0;i<goodsGrpMap.current.length;i++){
			currentProp[goodsGrpMap.current[i]] = 1;
		}
		
		var e =  document.getElementsByTagName('input');
		for(var i=0;i<e.length;i++){
			if(e[i].getAttribute('depth')){
				if(currentProp[e[i].value]){
					goodsGrpMap.setImg(e[i]);
					e[i].checked = true;
					var objSelected = e[i];
				}
			}else if(e[i].getAttribute('adjunct') == 'true'){
				goodsGrpMap.setImg(e[i]);
			}
		}

		var e =  document.getElementsByTagName('select');
		for(var i=0;i<e.length;i++){
			if(e[i].getAttribute('depth')){
				for(var j=0,k=0;j<e[i].childNodes.length;j++){
					if(currentProp[e[i].childNodes[j].value]){
						e[i].selectedIndex = k;
						var objSelected = e[i].childNodes[k];
					}
					if(e[i].childNodes[j].tagName == 'OPTION')k++;
				}
			}else if( e[i].getAttribute('adjunct')){
				goodsGrpMap.setImg(e[i].childNodes[e[i].selectedIndex]);
			}
		}
		goodsGrpMap.c(objSelected);
	},
	price:{/*{{{*/
		base:0,
		adjunct:0,
		market:0,
		save:0,
		oPrice:function(obj, mark){
			if (mark == 'add')
				var strnum = Number(obj.previousSibling.value);
			else
				var strnum = Number(obj.nextSibling.value);
			if (obj.parentNode.previousSibling){
				var objSelected = obj.parentNode.previousSibling;
				if (objSelected.tagName == "SELECT"){
					var objStr = objSelected.childNodes[objSelected.selectedIndex];
					/*====== MODIFIED BY GROOVESYNC >> ======*/
					ss = objStr.innerHTML.match(/^(.+)\[ (..)[\d,]+ \]$/);
					//var p = (objStr.getAttribute('price') * strnum).toFixed();
					//while( p != ( p = p.replace(/^(\d+)(\d{3})/, "$1,$2") ) );
					var p = goodsGrpMap.number_format( (objStr.getAttribute('price') * strnum).toString() );
					objStr.innerHTML = ss[1]+"[ "+ss[2]+p+" ]";
					/*====== << MODIFIED BY GROOVESYNC ======*/
				}
			}else{
				var objStr = obj.parentNode.nextSibling.nextSibling.firstChild.nextSibling.nextSibling;
				objStr.innerHTML = (goodsGrpMap.price.oInput(obj).getAttribute('price') * strnum).toFixed(2);				
			}
		},
		oInput:function(obj){
			if (obj.parentNode.previousSibling){
				var objSelected = obj.parentNode.previousSibling;
				if (objSelected.tagName == "SELECT"){
					return objSelected.childNodes[objSelected.selectedIndex];
				}
			}else{
				return obj.parentNode.nextSibling;
			}
		},
		add:function(obj){
			if(Number(obj.previousSibling.value) < Number(goodsGrpMap.price.oInput(obj).getAttribute('maxnum'))){
				obj.previousSibling.value = Number(obj.previousSibling.value)+1;
				goodsGrpMap.price.oPrice(obj, 'add');
				goodsGrpMap.price.rePrice();
			}
			obj.previousSibling.focus();
		},
		subtraction:function(obj){
			if(Number(obj.nextSibling.value) > ((Number(goodsGrpMap.price.oInput(obj).getAttribute('minnum')) > 0)?Number(goodsGrpMap.price.oInput(obj).getAttribute('minnum')):0)){
				obj.nextSibling.value = Number(obj.nextSibling.value)-1;
				goodsGrpMap.price.oPrice(obj, 'sub');
				goodsGrpMap.price.rePrice();
			}
			obj.nextSibling.focus();
		},
		change:function(obj){
			if(Number(obj.value) > Number(goodsGrpMap.price.oInput(obj).getAttribute('maxnum'))){
				obj.value=goodsGrpMap.price.oInput(obj).getAttribute('maxnum');
			}else if(Number(obj.value) < Number(goodsGrpMap.price.oInput(obj).getAttribute('minnum'))){
				obj.value=goodsGrpMap.price.oInput(obj).getAttribute('minnum');
			}
			goodsGrpMap.price.rePrice();
		},
		rePrice:function(){
			var e = document.getElementsByTagName('input');
			var p_adj =0;
			for(var i=0;i<e.length;i++){
				if(e[i].getAttribute('adjunct')){
					if(e[i].checked || e[i].type=='hidden'){
						if (e[i].previousSibling.tagName == 'INPUT'){
							var nInput = e[i].previousSibling;
						}else{
							var nInput = e[i].previousSibling.getElementsByTagName('INPUT')[0];
						}
						p_adj+=Number(e[i].getAttribute('price'))*Number(nInput.value);
					}
				}
			}
			var e =  document.getElementsByTagName('select');
			for(var i=0;i<e.length;i++){
				if(e[i].getAttribute('adjunct')){
					if(Number(e[i].nextSibling.childNodes[2].value) < Number(e[i].childNodes[e[i].selectedIndex].getAttribute('minnum')))
						e[i].nextSibling.childNodes[2].value = Number(e[i].childNodes[e[i].selectedIndex].getAttribute('minnum'));
					if(Number(e[i].nextSibling.childNodes[2].value) > Number(e[i].childNodes[e[i].selectedIndex].getAttribute('maxnum')))
						e[i].nextSibling.childNodes[2].value = Number(e[i].childNodes[e[i].selectedIndex].getAttribute('maxnum'));
					p_adj+=Number(e[i].childNodes[e[i].selectedIndex].getAttribute('price'))*Number(e[i].nextSibling.childNodes[2].value);
				}
			}
			
			/*
			gs.$('newprice').innerHTML=(goodsGrpMap.price.base + p_adj);
			gs.$('FORM_GOODS_PRICE').value=(goodsGrpMap.price.base + p_adj);
			if(gs.$('mktprice')) gs.$('mktprice').innerHTML=(goodsGrpMap.price.base + p_adj + goodsGrpMap.price.save);
			*/
			if (gs.$('setsaveprice'))
				var discount_percent = 1;
			else
				var discount_percent = 0;
			var newprice = String(goodsGrpMap.price.base + p_adj);
			gs.$('newprice').innerHTML=goodsGrpMap.number_format(newprice);
			var FORM_GOODS_PRICE = String(goodsGrpMap.price.base + p_adj)
			gs.$('FORM_GOODS_PRICE').value=goodsGrpMap.number_format(FORM_GOODS_PRICE);
			if(gs.$('mktprice') && gs.$('save_price') && gs.$('save_price').innerHTML != ""){
				var mktprice = String(goodsGrpMap.price.market);
				gs.$('mktprice').innerHTML=goodsGrpMap.number_format(mktprice);
				if (discount_percent)
					var saveprice = (goodsGrpMap.price.market - goodsGrpMap.price.base - p_adj)>0?(((goodsGrpMap.price.market - goodsGrpMap.price.base - p_adj)*100/goodsGrpMap.price.market)):0;
				else
					var saveprice = (goodsGrpMap.price.market - goodsGrpMap.price.base - p_adj)>0?(goodsGrpMap.price.market - goodsGrpMap.price.base - p_adj):0;
				var endsaveprice = String(saveprice);
				if(discount_percent)
					gs.$('save_price').innerHTML=goodsGrpMap.number_format(endsaveprice)+'%';
				else
					gs.$('save_price').innerHTML=goodsGrpMap.number_format(endsaveprice);
			}
		}
	}
};
