//active elements pointers array
var aPts = {"mb":0,"proc":0,"mem":0,
			"video":0,"hdd":0,"case":0,
			"mon":0,"kbd":0,"ms":0,"snd":0};
			
//elements and its attributes			
var entries = {"mb":0,"proc":0,"mem":0,
			"video":0,"hdd":0,"case":0,
			"mon":0,"kbd":0,"ms":0,"snd":0};

//left-right cases for output;			
var lrCases = {"l":0,"r":0};	

//locks recalcCosts on load
var lockRecalc = 1;

//will contain all the items which are not in price but in user's config
var itemsOff = {"mb":0,"proc":0,"mem":0,
			"video":0,"hdd":0,"case":0,
			"mon":0,"kbd":0,"ms":0,"snd":0};
var itemsOffActivity = {"mb":0,"proc":0,"mem":0,
			"video":0,"hdd":0,"case":0,
			"mon":0,"kbd":0,"ms":0,"snd":0};
			
//set active pointer
function bldr_setAPt(type,val){
	aPts[type] = val;
	//alert(aPts);
	if(type == "case"){
		bldr_setLRCases(val);
		bldr_runBckgrDyna(type,entries["case"][val][1]);	
		return;
	}
	bldr_runBckgrDyna(type,entries[type][val][2]);	
}
function bldr_getAPt(type){
    return aPts[type];
}

//set active case by itemId
function bldr_setActiveCase(itemId){
	if(!itemId){
		bldr_setAPt("case",0);
		return;
	}
	
	var i;
    for(i in entries["case"]){
    	if(entries["case"][i][1] == itemId){
    		bldr_setAPt("case",i);
    		break;
    	}
    }
}

//set left-right neighbours for active "i-th" case
function bldr_setLRCases(i){
	//alert(i);
	var left = i-1;
	if(left < 0) left = entries["case"].length-1;
	lrCases["l"] = left;
	
	var right = ++i;
	if(right > (entries["case"].length-1)) 
		right = 0;
	lrCases["r"] = right;
	
	//alert(lrCases.l + " --- " + lrCases.r);
	//alert(entries["case"]);
}

//scroll cases left by 1
function bldr_scrllCasesLeft(){
	var i = bldr_getAPt("case");
	
	if(--i < 0)
		i = entries["case"].length-1;
		
	bldr_setAPt("case",i);
	bldr_casesOut();
}
		
//scroll cases right by 1
function bldr_scrllCasesRight(){
	var i = bldr_getAPt("case");
	
	if(++i > (entries["case"].length-1))
		i = 0;
		
	bldr_setAPt("case",i);
	bldr_casesOut();
}		




//set type elements
function bldr_setEntries(type,items){
	entries[type] = items;
}

//prepare type elements(except "cases")
function bldr_prepEntries(){
	var args = bldr_prepEntries.arguments;
	var type = args[0];
	
	var prd = 4;
	var i;	
	var items = new Array();
	for(var j=0 ; j<(args.length-1)/prd; j++){
		i = j*prd+1;
		items[j] = new Array();
		items[j][0] = new Image(); //image
		items[j][0].src = args[i];
		items[j][1] = args[i+1]; //price
		items[j][2] = args[i+2]; //id
		items[j][3] = args[i+3]; //desc
		
	}	
	
//	if(type=='video'){
//		j = 10000;
//		items[j] = new Array();
//		items[j][0] = new Image(); //image
//		items[j][0].src = 'si/noimage.gif';
//		items[j][1] = 0; //price
//		items[j][2] = 0; //id
//		items[j][3] = ''; //desc
//	}

	bldr_setEntries(type,items);
}

//prepare cases
function bldr_prepCases(){
	var i = 0;
	var prd = 6;
    var args = bldr_prepCases.arguments;
	var items = new Array();	
	for(var j=0; j<args.length/prd; j++)
	{
		i = j*prd;
		items[j] = new Array();
		items[j][0] = new Image();
		items[j][0].src = args[i]; 
		items[j][1] = args[i+1]; //id
		items[j][2] = args[i+2]; //fname
		items[j][3] = args[i+3]; //price
		items[j][4] = new Image();
		items[j][4].src = args[i+4]; //large img
		items[j][5] = args[i+5]; //desc
	} 

	bldr_setEntries("case",items);
}			

//outs images for main details(except "case")
function bldr_entriesOut(type){
	var imgLbl = document.getElementById(type + "ImgLabel");
	var active = document.getElementById(type + "Select").options.selectedIndex;
	bldr_setAPt(type,active);
	var add = '';
	//alert(entries[type][active][0].src);
	if(entries[type][active][0].src.indexOf("si/noimage.gif") == -1)
		add = 'title="увеличить" onclick="picZoomIn(' +entries[type][active][2]+ ',1)" style="cursor: pointer;"';
	imgLbl.innerHTML = '<img src="' +entries[type][active][0].src+ '" width="63" ' +add+ '/>';
}

//outs images with cases
function bldr_casesOut(){
	var cases = entries["case"];
	var qty = cases.length;
	if(!qty) return;
	var pane;
	var nameLbl;
	var priceLbl;
	var imgLrgLbl;
	var inner = "";

	if(qty>=2){
		inner += '<td><a href="javascript:void(0);"><img onclick="bldr_scrllCasesLeft();" align="bottom" src="' + cases[lrCases['l']][0].src + '" width="50"></a></td>';
	}
	if(qty>=1){
		pane = document.getElementById("cases_choice");
		nameLbl = document.getElementById("caseNameLabel");
		priceLbl = document.getElementById("casePriceLabel");
		imgLrgLbl = document.getElementById("caseImgLrgLabel");
		inner += '<td id="case_chosen"><a href="javascript:void(0);"><img src="' + cases[aPts['case']][0].src + '" width="50"></a></td>';
	}
	if(qty>=3){
		inner += '<td><a href="javascript:void(0);"><img onclick="bldr_scrllCasesRight();" src="' + cases[lrCases['r']][0].src + '" width="50"></a></td>';
	}
	if(qty>3){
		inner = '<td width="14px"><a href="javascript:void(0);"><img onclick="bldr_scrllCasesLeft();" src="./si/comp/btn_oneCaseLeft.gif"/></a></td>' + 
				inner + 
				'<td width="14px"><a href="javascript:void(0);"><img onclick="bldr_scrllCasesRight();" src="./si/comp/btn_oneCaseRight.gif"/></a></td>';
	}
	if(qty>=1){
		inner = '<table width="100%" height="100%"><tr valign="middle" align="center">' + inner + '</tr></table>';
		pane.innerHTML = inner;
		nameLbl.innerHTML = cases[aPts['case']][2];
		priceLbl.innerHTML = cases[aPts['case']][3];
		imgLrgLbl.innerHTML = '<img src="' +cases[aPts['case']][4].src+ '" width="63" title="увеличить" onclick="picZoomIn(' +cases[aPts['case']][1]+ ',1)" style="cursor: pointer;"/>';
	}
	
	bldr_casesSetForm();
}

//set form value for "case"
function bldr_casesSetForm(){
    var inp = document.getElementById("compCase");
    inp.value = entries["case"][aPts["case"]][1];
    //alert(inp.value);
}



//outs the list with peripherals - to choose
function bldr_choosePrph(id){
	//window.open("http://offline/builder/choosePrph/" + id,"win_bldrPrph",
	//window.open("http://demotnt/builder/choosePrph/" + id,"win_bldrPrph",
	window.open("http://www.tntmarket.com/builder/choosePrph/" + id,"win_bldrPrph",
				"location=0,height=500,width=500,menubar=0,toolbar=0,resizable=1,scrollbars=1");
}

function bldr_choosePrphItem(){
    var args = bldr_choosePrphItem.arguments;
    var prefix;
    switch(args[2]){
    	case 32:
    		prefix = 'mon';
    		break;
    	case 20:
    		prefix = 'ms';
    		break;
    	case 19:
    		prefix = 'kbd';
    		break;
    }
    window.opener.document.getElementById(prefix + "NameLabel").innerHTML = args[1];
    window.opener.document.getElementById("comp" + prefix).checked = true;
    window.opener.document.getElementById("comp" + prefix).value = args[0];
    window.opener.bldr_asyncLoadImg(prefix);
    //window.opener.hihi(prefix);
    
    window.close();
    return false;
}


function bldr_asyncLoadImg(prefix) {
    var itemId = document.getElementById("comp" + prefix).value;
	//alert(itemId);
    var req = new Subsys_JsHttpRequest_Js();
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
        	//alert("response got");
            if (req.responseJS) {
  				bldr_setActivePrph(prefix,req.responseJS.imgg,req.responseJS.fname,req.responseJS.price,itemId,1);
  				bldr_runBckgrDyna(prefix,itemId);
  				//bldr_recalcCosts();
            }
            else{
                //alert("but no data got");
            }
        }
        else{
        	alert(req.readyState);
        	document.getElementById(prefix + "ImgLabel").innerHTML = '...Пожалуйста подождите...';
        }
    }
    req.caching = true;
    //req.open('POST', 'http://offline/builder/setPrphImg/' + itemId, true);
    //req.open('POST', 'http://demotnt/builder/setPrphImg/' + itemId, true);
    req.open('POST', 'http://www.tntmarket.com/builder/setPrphImg/' + itemId, true);
    req.send({test:303 });
}

function bldr_saveConfig(){
	var frm = document.getElementById("compForm");
	frm.action += "&op=save";
	frm.submit();
}

function bldr_addToCart(formID){
	var frm = document.getElementById("comp"+formID+"Form");
	makeCart();
	var trg_tmp = frm.target;
	frm.target = 'cart';
	frm.submit();
	frm.target = trg_tmp;
	if(!formID)
		formID = document.getElementById("comp_id").value;
	//frm.action = 'http://demotnt/comp/'+formID;
	frm.action = 'http://www.tntmarket.com/comp/'+formID;
}

function hihi(prefix){
    //alert(document.getElementById("comp" + prefix).value);
}

function bldr_setActivePrph(){
	var args = bldr_setActivePrph.arguments;
	/**
	*  0 - type
	*  1 - picture
	*  2 - fullName
	*  3 - price
	*  4 - itemId
	*  5 - check
	**/ 
	var prefix = args[0];
	
	var imgg = new Image();
	imgg.src = args[1];
	
    document.getElementById(prefix + "NameLabel").innerHTML = args[2];
    if(args[5]){
	    document.getElementById("comp" + prefix).checked = true;
    }
    document.getElementById("comp" + prefix).value = args[4];	
    
    var add = '';
	if(args[1].indexOf("si/noimage.gif") == -1)
		add = 'title="увеличить" onclick="picZoomIn(' +args[4]+ ',1)" style="cursor: pointer;"';
		    
    document.getElementById(prefix + "ImgLabel").innerHTML = '<img src="'+ args[1] +'" width="63" ' +add+ '/>';
    
    entries[prefix] = {"0":args[4],"1":parseFloat(args[3]),"2":(args[2].substr(0,20) + "&hellip;")}; // id -- price
}
    

function bldr_recalcCosts(){
	var args = bldr_recalcCosts.arguments;

	if(!args[0] || args[0] == 'main'){
		var active = 0;
		var cost1 = 0;
		active = bldr_getAPt("mb");
		cost1 += entries["mb"][active][1];
		//alert(entries["mb"][active][1] + '_' + cost1);
		//alert(entries["mb"][active]);
		active = bldr_getAPt("proc");
		cost1 += entries["proc"][active][1];
		//alert(entries["proc"][active][1] + '_' + cost1);
		active = bldr_getAPt("mem");
		cost1 += entries["mem"][active][1];
		//alert(entries["mem"][active][1] + '_' + cost1);
		//duplicate if memQnt == 2
		if(document.getElementById("memQnt").value == 2)
			cost1 += entries["mem"][active][1];
		active = bldr_getAPt("hdd");
		cost1 += entries["hdd"][active][1];
		//alert(entries["hdd"][active][1] + '_' + cost1);
		active = bldr_getAPt("video");
		cost1 += entries["video"][active][1];
		//alert(entries["video"][active][1] + '_' + cost1);
		active = bldr_getAPt("case");
		cost1 += entries["case"][active][3];
		//alert(entries["case"][active][3] + '_' + cost1);
		
		document.getElementById("cost1").innerHTML = bldr_cutFloat(cost1);
	}

	
	if(!args[0] || args[0] == 'prph'){
		var i = 0;
		var cost2 = 0;
		var prphs = {"0":"mon","1":"kbd","2":"ms"};
		//...TODO: continue with peripherals
		for(i in prphs)
			cost2 += ((entries[prphs[i]][1] && 
						document.getElementById("comp" + prphs[i]).checked) ? entries[prphs[i]][1] : 0);
	
		document.getElementById("cost2").innerHTML = bldr_cutFloat(cost2);
	}	
		
	var total = bldr_cutFloat(cost2 + cost1);
	document.getElementById("compCost").innerHTML = total;
	document.getElementById("compCost_").innerHTML = total;
}

function bldr_cutFloat(num){
	num = num.toString();
	var pnt_indx = num.indexOf(".");
	if( pnt_indx != -1)
		 return num.substring(0,pnt_indx+3);
	else
		 return num;
}

function bldr_checkPriceOffs(){
	var offs = 0;
	for(var i in itemsOffActivity)
		if(itemsOffActivity[i])
			offs++;

	var submt = document.getElementById("compBuy");
	var dsbld = document.getElementById("compBuyDsbld");
	//var chgs = document.getElementById("chgsHppnd");
	
	if(offs > 0){
		submt.style.display = "none";
		dsbld.style.display = "block";
		//chgs.style.display = "block";
	}
	else{
		submt.style.display = "block";
		dsbld.style.display = "none";
		//chgs.style.display = "none";
	}
}

function bldr_addItemOff(type,id){
    itemsOff[type] = id;
    itemsOffActivity[type] = 1;
}

function bldr_checkEntryOff(type,id){
	if(!itemsOff[type]) return;
	
	var lbl = document.getElementById("itemOff" + itemsOff[type]);
	
    if(itemsOff[type] == id){
    	itemsOffActivity[type] = 1;
    	lbl.style.display = "block";	
    }
    else{
    	itemsOffActivity[type] = 0;
    	lbl.style.display = "none";
    }
    
    bldr_checkPriceOffs();
}

function bldr_checkPrphOff(type,val){
	if(!itemsOff[type]) return;
	
	var lbl = document.getElementById("itemOff" + itemsOff[type]);
	var elt = document.getElementById("comp" + type);
	
	if(!elt.checked){
		lbl.style.display = "none";
    	itemsOffActivity[type] = 0;
	}else{
		if(elt.value == itemsOff[type]){
	    	itemsOffActivity[type] = 1;
	    	lbl.style.display = "block";	
		}
		else{
	    	itemsOffActivity[type] = 0;
	    	lbl.style.display = "none";
		}
	}
		
	bldr_checkPriceOffs();
}

function bldr_runBckgrDyna(type,val){
	if(lockRecalc) return;
	
	switch(type){
		case 'mb':
		case 'proc':
		case 'mem':
		case 'hdd':
		case 'video':
		case 'case':
			bldr_checkEntryOff(type,val);
			break;
		default:
			bldr_checkPrphOff(type,val);
	}
		
	bldr_recalcCosts();
	bldr_setDesc();
}

function bldr_setDesc(){
	var desc = '';
	for(var type in aPts){
		switch(type){
			case 'mb':
			case 'proc':
			case 'mem':
			case 'hdd':
			case 'video':
				//special pointer 1000, miss it
				//alert(entries[type][aPts[type]][2]);
				//if(type=='video' && entries[type][aPts[type]][2] == 'onboard_video') break;
				if(desc) desc += ' / ';
				if((type == 'mem') && (document.getElementById("memQnt").value == 2)){
					desc += '2 x ';
				}
				desc += entries[type][aPts[type]][3];		
				break;
			case 'case':
				desc += ' / ';
				desc += entries[type][aPts[type]][5];		
				break;
			case 'mon':
			case 'kbd':
			case 'ms':
			//...TODO: continue list
				if(entries[type] && document.getElementById("comp" + type).checked){
					desc += ' / ';
					desc += entries[type][2];						
				}
		}
	}
	
	var dv = document.getElementById("compDesc");
	dv.innerHTML = desc;
}

/**
 *  checks whether to submit form or not
 */
function bldr_checkSubmit(){
	var frm = document.forms["tune"];
	var msg = "";
	for(var i=0; i<frm.length; i++){
		if(frm[i].type == 'text' && frm[i+1].type == 'checkbox'){
			if(!frm[i].value  && frm[i+1].checked){
				alert("Выбирая товар, необходимо указать его краткое описание!");
				return false;
			}
		}
	}
	
	return true;
}

//var saveVidPt = -1;

//function bldr_invertVideoRow(){
//	var aPt = bldr_getAPt('video');
//	if(aPt < 10000){
//		saveVidPt = aPt;
//		bldr_setAPt('video',10000);
//	}
//	else{
//		bldr_setAPt('video',saveVidPt);
//	}
//	var videoSel = document.getElementById("videoSelect");
//	videoSel.disabled = !videoSel.disabled;
//	videoSel.style.textDecorationLineThrough = !videoSel.style.textDecorationLineThrough;
//}
//
//function bldr_startupVideoRow(){
//	var vidChs = document.getElementById("dcompVidChs");
//	vidChs.checked = false;
//	
//	//fucking fake
//	if(bldr_getAPt('video') == 10000){
//		bldr_setAPt('video',0);
//		vidChs.checked = true;
//		bldr_invertVideoRow();
//	}
//}
