var aryTitles = new Array();
var aryObjPrice = new Array();

function selectItems (strType) {
	var elForm = document.getElementById("frmScheduleGenerator");
	var aryFormField = elForm["State" + strType];
	var elBorder = document.getElementById("border" + strType);
	var elHeader = document.getElementById("header" + strType);
	var elTitles = document.getElementById("titles" + strType);
	var blnItemsExist = false;
	dropAllItems(elTitles, strType);
	for (var i = 0; i < aryFormField.length; i++) {
		if (aryFormField[i].checked) {
			for (var t = 0; t < aryTitles.length; t++) {
				if (aryTitles[t]["blnIs" + strType] && aryTitles[t]["blnIs" + aryFormField[i].value]) {
					blnItemsExist = addItem(elTitles, aryTitles[t], strType) || blnItemsExist;
				}
			}
		}
	}
	if (blnItemsExist) {
		elBorder.className = "none-border";
		elHeader.className = "none-border";
		elTitles.className = "none-border";
	} else {
		elBorder.className = "none-border schedule-generator-hidden";
		elHeader.className = "none-border schedule-generator-hidden";
		elTitles.className = "none-border schedule-generator-hidden";
	}
}

/* DOM methods */

function addItem (elContainer, objItem, strFieldName) {
	if (!objItem[strFieldName + "Visible"] == true) {
		// create items
		elChild = document.createElement("DIV");
		elTitle = document.createElement("LABEL");
		elCheckbox = document.createElement("INPUT");
		// set title
		elTitle.innerHTML = objItem.name;
		elTitle.setAttribute("for", "chk" + strFieldName + objItem.objectID);
		// set field
		elCheckbox.setAttribute("type", "checkbox");
		elCheckbox.setAttribute("value", objItem.objectID);
		elCheckbox.setAttribute("name", strFieldName);
		elCheckbox.setAttribute("id", "chk" + strFieldName + objItem.objectID);
		// set class for item
		elChild.className = "schedule-generator-item";
		// create hierarchy in DOM
		elChild.appendChild(elCheckbox);
		elChild.appendChild(elTitle);
		elContainer.appendChild(elChild);
		// IE hack
		if (objItem[strFieldName + "Checked"] == true) {
			elCheckbox.setAttribute("checked", true);
		}
		// set as visible
		objItem[strFieldName + "Visible"] = true;
		return true;
	}
	return false;
}

function dropAllItems (elContainer, strFieldName) {
	for (var t = 0; t < aryTitles.length; t++) {
		var elItem = document.getElementById("chk" + strFieldName + aryTitles[t].objectID);
		if (elItem != null) {
			aryTitles[t][strFieldName + "Checked"] = elItem.checked;
			aryTitles[t][strFieldName + "Visible"] = false;
		}
	}
	elContainer.innerHTML = "";
}

function setInsertions () {
	var intCount = document.getElementById("selCampaignDuration").value;
	if (intCount == 0) {
		document.getElementById("weeksBorder").className = "none-border schedule-generator-hidden";
		document.getElementById("weeksHeader").className = "none-border schedule-generator-hidden";
		document.getElementById("weeksContainer").className = "none-border schedule-generator-hidden";
	} else {
		document.getElementById("weeksBorder").className = "none-border";
		document.getElementById("weeksHeader").className = "none-border";
		document.getElementById("weeksContainer").className = "none-border";
		i = 1;
		while (document.getElementById("elWeek"+i) != undefined) {
			if (i <= intCount) {
				document.getElementById("elWeek"+i).style.visibility = "visible";
			} else {
				document.getElementById("elWeek"+i).style.visibility = "hidden";
			}
			i++;
		} 	
	}
}

/* GENERIC FUNCTIONS */
function isIE () {
	return navigator.userAgent.indexOf("MSIE") >= 0;
}


/* CALCULATE PRICES */
function reCalculatePrices(numIndex){	

	var elForm = document.getElementById("scheduleForm");

	var inpNewspaperId = elForm["hdNewspaper_" + numIndex];
	var inpDayType = elForm["hdDayType_" + numIndex];
	var inpRate = elForm["hdRate_" + numIndex];
	var selAdSize = elForm["drpAdSize_" + numIndex];
	var selAdColour = elForm["drpAdColour_" + numIndex];
	var selWeek;
	var elRate = document.getElementById("spRate_" + numIndex);
	var elInsert = document.getElementById("spInsert_" + numIndex);

	var elTotalInsert = document.getElementById("spTotalInserts");
	var elTotalPrice = document.getElementById("spTotalPrice");

	var numWeeks = elForm["numWeeks"].value;
	var numRows = elForm["numRows"].value;
	var numTotalInsertsThisRow = 0;
	var numTotalInserts = 0;
	var aryTotalInserts = new Array();
	var numTotalPrice = 0;

	// update inserts
	for (var w = 1; w <= numWeeks; w++) {
		numTotalInsertsThisRow += parseInt(elForm["drpWeek" + w + "_" + numIndex].value);
	}
	elInsert.innerHTML = numTotalInsertsThisRow;
	
	// calculate price
	var strKey = inpNewspaperId.value + "_" + inpDayType.value + "_" + selAdSize.value + "_" + selAdColour.value;
	if (aryObjPrice[strKey]) {
		inpRate.value = aryObjPrice[strKey];
	} else {
		inpRate.value = 0;
	}
	
	// update price
	if (inpRate.value > 0) {
		elRate.innerHTML = formatFloat(inpRate.value);
	} else {
		elRate.innerHTML = "N/A";
		elInsert.innerHTML = "N/A";
	}

	// calculate totals
	for (var w = 1; w <= numWeeks; w++) {
		aryTotalInserts[w] = 0;
	}
	for (var r = 1; r <= numRows; r++) {
		if (document.getElementById("spInsert_" + r).innerHTML * 0 == 0) {
			numTotalInserts += parseInt(document.getElementById("spInsert_" + r).innerHTML);
			numTotalPrice += parseFloat(elForm["hdRate_" + r].value) * parseFloat(document.getElementById("spInsert_" + r).innerHTML);
		}
		for (var w = 1; w <= numWeeks; w++) {
			selWeek = elForm["drpWeek" + w + "_" + r];
			aryTotalInserts[w] += parseInt(selWeek.options[selWeek.selectedIndex].value);
		}
	}
	
	// update total inserts
	elTotalInsert.innerHTML = numTotalInserts;
	for (var w = 1; w <= numWeeks; w++) {
		document.getElementById("spTotalWeeks" + w).innerHTML = aryTotalInserts[w];
	}
	
	// update total price
	elTotalPrice.innerHTML = formatFloat(numTotalPrice);

}

function getShortDayType(strDayType)
{
	var strReturn = "N/A";
	switch(strDayType)
	{
		case("Weekdays"):
			strReturn = "MonFri";
			break;
		case("Saturday"):
			strReturn = "Sat";
			break;
		case("Sunday"):
			strReturn = "Sun";
			break;
	}
	return strReturn;
}

/* FORMAT 10 OR 10.00000 TO '$10.00' */
function formatFloat(f)
{ 
    f = Math.round(f*100)/100; 
    if(/^\d+$/.test( f))     
        return '$'+f+'.00';   
    if(/^\d+\.\d$/.test( f))    
        return '$'+f+'0'; 
    return f;
}
