// config
var cPackMax	= 9; 			// maximum count of packs in place
var cSelColor	= '#A4BFF6';	// color active column
var cPosColor	= '#660033';	// color position price
var price_layout;				// price layout (template)
var prices;						// array prices (template)
var prices_pos;					// array prices_pos (template)
var packs						// array packs (template)
var lines		= new Array;	// array lines html (template)
var lines_p		= new Array;	// array lines print (template)
var terms		= new Array;	// array terms (template)
var mPlan		= new Array;	// mPlan array
var mNum		= 0;			// mPlan number
var mSum		= 0;			// mPlan sum
var mWindow;					// popup window mediaplan
var oldBrauser;					// brauser old version

// config part 1
var lineIdStart	= 1;			// line_id start
var lineIdEnd	= 10;			// line_id end
var cPlaceCnt	= 5;			// count place
var cPlaceAct	= 1;			// active place default
var term_sel;					// selected term value (template)
var cnt_sel;					// selected count value (template)
var places		= new Array;	// array places (template)
var places_p	= new Array;	// array places (template)

// config part 2
var lineIdStart2 = 11;
var lineIdEnd2	 = 11;
var cPlaceCnt2	 = 7;
var cPlaceAct2	 = 1;
var term_sel2;
var cnt_sel2;
var places2		= new Array;
var places2_p	= new Array;

// init calculator
function initCalc() {
	calcSelCol(cPlaceAct, 1);
	calcSelCol(cPlaceAct2, 2);
	// msie version
	if (navigator.userAgent.indexOf ("MSIE 6") >= 0) {
		oldBrauser = true;
	}
}

// price change
function calcPriceChange(part) {
	var price, elem, pos, start, end;
	var prt = (part == 1) ? "" : part;
	if (part == 2) {
		start = lineIdStart2;
		end = lineIdEnd2;
		place = cPlaceCnt2;
	} else {
		start = lineIdStart;
		end = lineIdEnd;
		place = cPlaceCnt;
	}
	if (document.getElementById("setPricePos" + prt).checked) {
		pos = true;
	}
	for (var x = start; x <= end; x++){
		for (var y = 1; y <= place; y++){
			price = pos ? prices_pos[x-1][y-1] : prices[x-1][y-1];
			elem = document.getElementById("pr" + prt + "_" + x + "_" + y);
			elem.innerHTML = (price) ? price : '--';
			elem.style.color = pos ? cPosColor : 'black';
		}
	}
	calcResultReset(part);
}


// position change
function calcPosChange(pos, part) {
	var line, rPacks, start, end;
	var prt = (part == 1) ? "" : part;
	if (part == 2) {
		start = lineIdStart2;
		end = lineIdEnd2;
	} else {
		start = lineIdStart;
		end = lineIdEnd;
	}
	for (var x = start; x <= end; x++){
		line = '';
		rPacks = packs[x-1][pos-1];
		if (rPacks) {
			for (var y = 0; y <= rPacks.length; y++) {
				if (rPacks[y]) {
					line += '<input type="radio" ';
					line += 'id="pk' + prt + '_' + x + '_' + y +'" ';
					line += 'name="pk' + prt + '_' + x + '" ';
					line += 'value="' + rPacks[y] + '" ';
					line += 'onclick="calcResult(this, ' + x + ', ' + part + ')">';
					line += rPacks[y] + '<br>';
				}
			}
		}
		if (!line) {
			line = '<div style="margin-left: 20px">--</div>';
		}
		document.getElementById("pack"	+ prt + "_" + x).innerHTML	= line;
		document.getElementById("res"	+ prt + "_" + x).innerHTML	= '';
		document.getElementById("pAdd"	+ prt + "_" + x).style.visibility = "hidden";
	}
	if (part == 2) {
		cPlaceAct2 = pos;
	} else {
		cPlaceAct = pos;
	}
	calcPriceChange(part);
	calcSelCol(pos, part);
}

// select column color
function calcSelCol(pos, part) {
	var start, end, place;
	var prt = (part == 1) ? "" : part;
	if (part == 2) {
		start = lineIdStart2;
		end = lineIdEnd2;
		place = cPlaceCnt2;
	} else {
		start = lineIdStart;
		end = lineIdEnd;
		place = cPlaceCnt;
	}
	for (var x = start; x <= end; x++) {
		for (var y = 1; y <= place; y++) {
			var cell	 = document.getElementById("pr" + prt + "_" + x + "_" + y);
			var cellHead = document.getElementById("ph" + prt + "_" + y);
			if (y == pos) {
				cell.style.backgroundColor = cSelColor;
				cellHead.style.backgroundColor = cSelColor;
			} else {
				cell.style.backgroundColor = "";
				cellHead.style.backgroundColor = "";
			}
		}
	}
}

// result
function calcResult(pack, line_id, part) {
	var price, res;
	var prt = (part == 1) ? "" : part;
	if (document.getElementById("setPricePos" + prt).checked) {
		if (part == 2) {
			price = prices_pos[line_id-1][cPlaceAct2-1];
		} else {
			price = prices_pos[line_id-1][cPlaceAct-1];
		}
	} else {
		if (part == 2) {
			price = prices[line_id-1][cPlaceAct2-1];
		} else {
			price = prices[line_id-1][cPlaceAct-1];
		}
	}
	if (part == 2) {
		res = price * pack.value * term_sel2 * cnt_sel2;
	} else {
		res = price * pack.value * term_sel * cnt_sel;
	}
	if (document.getElementById("setPriceLayout" + prt).checked) {
		res += price_layout;
	}
	var pAdd = document.getElementById("pAdd" + prt + "_" + line_id);
	if (res) {
		pAdd.style.visibility = "visible";
	} else {
		res = "";
		pAdd.style.visibility = "hidden";
	}
	document.getElementById("res" + prt + "_" + line_id).innerHTML = res;
	calcStatusAdd(line_id, part);
}

// result reset
function calcResultReset(part) {
	var pack, start, end;
	var prt = (part == 1) ? "" : part;
	if (part == 2) {
		start = lineIdStart2;
		end = lineIdEnd2;
	} else {
		start = lineIdStart;
		end = lineIdEnd;
	}
	for (var x = start; x <= end; x++){
		for (var y = 0; y < cPackMax; y++) {
			pack = document.getElementById("pk" + prt + "_" + x + '_' + y);
			if (pack && pack.checked) {
				calcResult(pack, x, part);
			}
		}
	}
}

// term selected
function calcTermSel(term, part) {
	term = term.options[term.selectedIndex].value;
	if (part == 2) {
		term_sel2 = term;
	} else {
		term_sel = term;
	}
	calcResultReset(part);
}

// count selected
function calcCntSel(cnt, part) {
	cnt = cnt.options[cnt.selectedIndex].value;
	if (part == 2) {
		cnt_sel2 = cnt;
	} else {
		cnt_sel = cnt;
	}
	calcResultReset(part);
}

// add in mediaplan
function calcPlanAdd(line_id, part) {
	var packElem, pack, price, ppos, layout, result;
	var prt = (part == 1) ? "" : part;
	// pack
	for (var y = 0; y < cPackMax; y++) {
		packElem = document.getElementById("pk" + prt + "_" + line_id + '_' + y);
		if (packElem && packElem.checked) {
			pack = packElem.value;
			break;
		}
	}
	// price and ppos
	if (document.getElementById("setPricePos" + prt).checked) {
		if (part == 2) {
			price = prices_pos[line_id - 1][cPlaceAct2 - 1];
		} else {
			price = prices_pos[line_id - 1][cPlaceAct - 1];
		}
		ppos = "Да";
	} else {
		if (part == 2) {
			price = prices[line_id - 1][cPlaceAct2 - 1];
		} else {
			price = prices[line_id - 1][cPlaceAct - 1];
		}
		ppos = "Нет";
	}
	// layout
	layout = document.getElementById("setPriceLayout" + prt).checked ? "Да" : "Нет";
	// result
	result = document.getElementById("res" + prt + "_" + line_id).innerHTML;
	// add to mPlan
	mPlan[mNum] = new Array();
	mPlan[mNum]["num"]		= mNum;
	mPlan[mNum]["part"]		= part;
	mPlan[mNum]["line"]		= line_id;
	mPlan[mNum]["place"]	= (part == 2) ? cPlaceAct2 - 1 : cPlaceAct - 1;
	mPlan[mNum]["term"]		= (part == 2) ? term_sel2	: term_sel;
	mPlan[mNum]["cnt"]		= (part == 2) ? cnt_sel2	: cnt_sel;
	mPlan[mNum]["pack"]		= pack;
	mPlan[mNum]["price"]	= price;
	mPlan[mNum]["ppos"]		= ppos;
	mPlan[mNum]["layout"]	= layout;
	mPlan[mNum]["result"]	= result;
	// make visible block
	if (!mNum) {
		document.getElementById("mPlanBlock").style.display = "block";
		document.getElementById("mPlanBlock").style.margin = "30px 0 15px";
	}
	// add row
	var mRow = document.getElementById("mPlanTBody").insertRow(mNum);
	// row class
	// var mRowClass = (mNum % 2) ? 'mRowEven' : 'mRowEvenNo';
	// mRow.setAttribute("class", mRowClass);
	mRow.setAttribute("class", "mRowEven");
	mRow.setAttribute("id", "mRowNum_" + mNum);
	// add cells
	var mCell = new Array();
	for (var x = 0; x < 11; x++) {
		mCell[x] = mRow.insertCell(x);
	}
	// cells content
 	mCell[0].innerHTML = mNum + 1 + ".";
    mCell[1].innerHTML = lines[line_id];
    mCell[2].innerHTML = (part == 2) ? places2[cPlaceAct2 - 1] : places[cPlaceAct - 1];
    mCell[3].innerHTML = pack;
    mCell[4].innerHTML = (part == 2) ? terms[term_sel2] : terms[term_sel];
    mCell[5].innerHTML = ((part == 2) ? cnt_sel2 : cnt_sel) + " шт.";
    mCell[6].innerHTML = ppos;
    mCell[7].innerHTML = layout;
    mCell[8].innerHTML = price;
    mCell[9].innerHTML = result;
    if (!oldBrauser) {
	    mCell[10].innerHTML = '<a href="javascript:void(0)" onclick="calcPlanDel(' + mNum + ')" ' +
	    	'title="Удалить расчет">' +
	    	'<img src="' + imgCalcDel.src + '" width="10" height="10" border="0" alt="Удалить расчет"></a>';
    } else {
	    mCell[10].innerHTML = '<strong><big><a href="javascript:void(0)" onclick="calcPlanDel(' + mNum + ')" ' +
	    	'title="Удалить расчет" style="text-decoration: none">x</a></big></strong>';
    }
    // cell style
    mCell[1].style.textAlign = "left";
    mCell[4].style.whiteSpace = "nowrap";
    mCell[9].setAttribute("class", "calcRes");
    mCell[10].style.width = "10px";
    // edit sum
    calcPlanSum();
    // change status
    calcStatusOk(line_id);
    mNum++;
}

// set status ok
function calcStatusOk(line_id) {
	var info = "Расчет добавлен в медиаплан";
    // img
    var imgAdd = document.getElementById("mImgAdd_" + line_id);
    imgAdd.src = imgCalcOk.src;
    imgAdd.setAttribute("alt", info);
    // link
    var linkAdd = document.getElementById("mLinkAdd_" + line_id);
    linkAdd.setAttribute("title", info);
    linkAdd.setAttribute("onclick", "");
    if (oldBrauser) {
    	linkAdd.href = "javascript:void(0)";
    }
}

// set status add
function calcStatusAdd(line_id, part) {
	var info = "Добавить в медиаплан";
    // img
    var imgAdd = document.getElementById("mImgAdd_" + line_id);
    imgAdd.src = imgCalcAdd.src;
    imgAdd.setAttribute("alt", info);
    // link
    var linkAdd = document.getElementById("mLinkAdd_" + line_id);
    linkAdd.setAttribute("title", info);
    linkAdd.setAttribute("onclick", "calcPlanAdd(" + line_id + ", " + part + ")");
    if (oldBrauser) {
    	linkAdd.href = "javascript:calcPlanAdd(" + line_id + "," + part + ")";
    }
}

// set status add for all string
function calcStatusAddAll() {
	for (var x = lineIdStart; x <= lineIdEnd; x++) {
		calcStatusAdd(x, 1);
	}
	for (var x = lineIdStart2; x <= lineIdEnd2; x++) {
		calcStatusAdd(x, 2);
	}
}


// delete from mediaplan
function calcPlanDel(rowNum) {
	var mRow = document.getElementById("mRowNum_" + rowNum);
	mRow.style.display = "none";
	delete mPlan[rowNum];
	calcPlanSum();
	calcStatusAddAll();
}

// calculate sum
function calcPlanSum() {
	var sum = 0;
	for (var x = 0; x < mPlan.length; x++) {
		if (mPlan[x]) {
			sum += parseInt(mPlan[x]["result"]);
		}
	}
	document.getElementById("mSumValue").innerHTML = sum;
	mSum = sum;
}

// mediaplan print
function mPlanPrint() {
	if (mWindow && !mWindow.closed) {
		mWindow.focus();
		return;
	}
	// vars
	var place;
	var cnt = 1; // number string
	// param window
	var winTitle	= 'Медиаплан. Агентство метрорекламы "Проспект М"';
	var winWidth	= 800;
	var winHeight	= 600;
	// param image logo
	var imgLogoPath		= '/img/logo_p.jpg';
	var imgLogoTitle	= 'Агентство метрорекламы "Проспект М"';
	var imgLogoWidth	= 750;
	var imgLogoHeight	= 111;
	// top code
	var s1 = "";
	s1 += '<html><head><title>' + winTitle + '</title>';
	s1 += '<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">';
	s1 += '<link rel="stylesheet" href="/css/calc_p.css" type="text/css">';
	s1 += '</head><body>';
	// logo code
	var s2 = "";
	s2 += '<div id="imgLogo">';
	s2 += '<img src="'	+ imgLogoPath	+ '" ';
	s2 += 'width="'		+ imgLogoWidth	+ '" ';
	s2 += 'height="'	+ imgLogoHeight	+ '" ';
	s2 += 'alt="'		+ imgLogoTitle	+ '">';
	s2 += '</div>';
	// body code
	var s3 = "";
	s3 += '<h1>Выполненные расчеты стоимости проведения рекламной компании</h1>';
	s3 += '<table width="100%"  cellpadding="3" cellspacing="0" border="1">';
	s3 += '<tr>';
	s3 += '<th>№</th>';
	s3 += '<th class="mData">Линия</th>';
	s3 += '<th class="mData">Место размещения</th>';
	s3 += '<th>Пакет</th>';
	s3 += '<th>Срок</th>';
	s3 += '<th>Кол-во</th>';
	s3 += '<th>Позиц.</th>';
	s3 += '<th>Макет</th>';
	s3 += '<th>Цена</th>';
	s3 += '<th>Стоимость</th>';
	s3 += '</tr>';
	for (var x = 0; x < mPlan.length; x++) {
		if (mPlan[x]) {
			// get place
			if (mPlan[x]["part"] == 2) {
				place = places2_p[mPlan[x]["place"]];
			} else {
				place = places_p[mPlan[x]["place"]];
			}
			// write string
			s3 += '<tr class="mRow">';
			s3 += '<td>'				+ cnt++ + '.'					+ '</td>';
			s3 += '<td class="mData">'	+ lines_p[mPlan[x]["line"]]		+ '</td>';
			s3 += '<td class="mData">'	+ place							+ '</td>';
			s3 += '<td>'				+ mPlan[x]["pack"]				+ '</td>';
			s3 += '<td nowrap>' 		+ terms[mPlan[x]["term"]]		+ '</td>';
			s3 += '<td>'				+ mPlan[x]["cnt"]				+ '</td>';
			s3 += '<td>'				+ mPlan[x]["ppos"]				+ '</td>';
			s3 += '<td>'				+ mPlan[x]["layout"]			+ '</td>';
			s3 += '<td class="mRes">'	+ mPlan[x]["price"]  + ' руб.'	+ '</td>';
			s3 += '<td class="mRes">'	+ mPlan[x]["result"] + ' руб.'	+ '</td>';
			s3 += '</tr>';
		}
	}
	s3 += '<tr>';
	s3 += '<td class="mSum" colspan="9">Итого:</td>';
	s3 += '<td class="mSum">' + mSum + ' руб.</td>';
	s3 += '</tr>';
	s3 += '</table>';
	// form code
	var s4 = "";
	s4 += '<form id="printForm">';
	s4 += '<input type="button" value="Печать" onclick="print()" id="printButton">';
	s4 += '</form>';
	// help code
	var s5 = "";
	s5 += '<p id="mHelp">';
	s5 += 'Пакет - пакеты ракламных мест<br>';
	s5 += 'Срок - срок аренды<br>';
	s5 += 'Кол-во - количество стикеров в вагоне<br>';
	s5 += 'Позиц. - позиционирование рекламного места<br>';
	s5 += 'Макет - разработка оригинал-макета';
	s5 += '</p>';
	// bottom code
	var s6 = '</body></html>';
	// make window
	var left = (screen.availWidth - winWidth)/2;
	var top = (screen.availHeight - winHeight)/2;
	var winParam = "";
		winParam += 'width=' + winWidth + ',height=' + winHeight + ',';
		winParam += 'scrollbars=yes,screenX='+left+',screenY='+top+',left='+left+',top='+top;
	mWindow = window.open("", "mPlan", winParam);
	mWindow.focus();
	mWindow.document.write(s1 + s2 + s3 + s4 + s5 + s6);
	mWindow.document.close();
	return false;
}