// The next line enables jQuery IntelliSense in Visual Studio:
/// <reference path="/common/js/IntelliSense/jquery-1.3.1-vsdoc.js" />



function regulateHeight()
{
	is_weekend_edition = (document.getElementById("is_weekend_edition").value == "true");
	is_voorpagina = document.getElementById("adtypes_id_three").checked;
	adwidthValue = document.getElementById("adwidth_advertentie").value;
		
	if ( (is_voorpagina) && (is_weekend_edition) ) {
		if ( (adwidthValue == "1") || (adwidthValue == "2") ) {
			$("div#adheight_mm_regular").slideUp();
			$("div#select_1_2_kolommen").slideDown();
			$("div#select_3_7_kolommen").slideUp();
		} else {
			$("div#adheight_mm_regular").hide();
			$("div#select_1_2_kolommen").slideUp();
			$("div#select_3_7_kolommen").slideDown();
		}
	} else {
		$("div#adheight_mm_regular").slideDown();
		$("div#select_1_2_kolommen").slideUp();
		$("div#select_3_7_kolommen").slideUp();
	}
}


function getAdresByPostcodeAndHuisnummer(postcode, huisnummer) {
        $.ajax({
            type: 'GET',
            url: "/callcenter/retrieveaddress/",
            data: {
                postcode: postcode,
                huisnummer: huisnummer
            },
            dataType: "html",
            success: function(output) {
                $("#adres-lookup").html(output)
            }
        });
}

function deleteInitialText(objInput, strInitialText)
{
	if (objInput.value == strInitialText)
	{
		objInput.value = "";
		objInput.style.color = "#000000";
	}
}

function toggleElementBySelect(strElementID, strValueToShow, objSelect)
{
	strSelectValue = objSelect.options[objSelect.selectedIndex].value;

	if (strSelectValue == strValueToShow) {
		showElement(strElementID);
	} else {
		hideElement(strElementID);
	}
}

function showElement(strElementID) 
{
	objElement = document.getElementById(strElementID);
	objElement.style.visibility = "visible";
	objElement.style.display = "block";
}

function hideElement(strElementID) 
{
	objElement = document.getElementById(strElementID);
	if (objElement != null) {
		objElement.style.visibility = "hidden";
		objElement.style.display = "none";
	}
}

function ShowUpdater()
{
	// show animation
	$("#updating").show();
	
	// remove animation	
	$("#updating").fadeOut(500);	
}


function Calculate()
{
	ShowUpdater();

	
	// GET values
	var is_weekend_edition = document.advertentieform.is_weekend_edition.value;
	var basistariefInCents = getBasisTariefInCents();
	var adtypes_id_value = getAdTypesId(false);
	var adtype_factor = getAdTypeFactor(adtypes_id_value);
	var adwidth_value = getAdWidthValue(false, adtypes_id_value, is_weekend_edition);
	var adheight_value = getAdHeightValue(adtypes_id_value, is_weekend_edition, adwidth_value, false);
	var personeelsFactor = getPersoneelsFactor(false);
	
	
	// SET basistarief in Cents
	$("input#basistariefInCents").attr("value", basistariefInCents);	
		
	// SET brutoformaatkosten
	var brutoformaatkosten = getBrutoFormaatKosten(adtype_factor, adwidth_value, adheight_value, basistariefInCents, personeelsFactor);
	$("input#brutoformaatkosten").attr("value", formatMoney(brutoformaatkosten));
	
	// SET aantal plaatsingen
	var aantalplaatsingen = getAantalPlaatsingen(false);
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);
	
	// SET kleurkosten
	var kleurkosten = getKleurKosten(false);
	$("input#kleurkosten").attr("value", formatMoney(kleurkosten));
	
	// SET contractkorting
	var kortingsPercentage = getKortingsPercentage(false, brutoformaatkosten, aantalplaatsingen, kleurkosten, basistariefInCents);
	$("input#kortingspercentage").attr("value", kortingsPercentage + "%");
	$("input#kortingspercentage_advertentieform").attr("value", kortingsPercentage);
	
	// SET korting
	var kortingsFactor = getKortingsFactor(kortingsPercentage);
	var korting = (brutoformaatkosten * kortingsFactor);
	$("input#korting").attr("value", formatMoney(korting));
	
	// SET nettoformaatkosten
	var nettoformaatkosten = (brutoformaatkosten - korting);
	$("input#nettoformaatkosten").attr("value", formatMoney(nettoformaatkosten));
	
	// SET tarief per plaatsing
	var tariefperplaatsing = (nettoformaatkosten + kleurkosten);
	$("input#tariefperplaatsing").attr("value", formatMoney(tariefperplaatsing));
	
	// SET brutotariefperplaatsing
	var brutotariefperplaatsing = (brutoformaatkosten + kleurkosten);
	$("input#brutotariefperplaatsing").attr("value", formatMoney(brutotariefperplaatsing));
	
	// SET totalebrutobesteding
	var totalebrutobesteding = (brutotariefperplaatsing * aantalplaatsingen);
	$("input#totalebrutobesteding").attr("value", formatMoney(totalebrutobesteding));
	
}


function CalculateWithDbForm()
{
	var is_weekend_edition = document.advertentieform.is_weekend_edition.value;
	var basistariefInCents = getBasisTariefInCents();
	var adtypes_id_value = getAdTypesId(true);
	var adtype_factor = getAdTypeFactor(adtypes_id_value);
	var adwidth_value = getAdWidthValue(true, adtypes_id_value, is_weekend_edition);
	var adheight_value = getAdHeightValue(adtypes_id_value, is_weekend_edition, adwidth_value, true);
	var personeelsFactor = getPersoneelsFactor(true);
	
	// SET brutoformaatkosten
	var brutoformaatkosten = getBrutoFormaatKosten(adtype_factor, adwidth_value, adheight_value, basistariefInCents, personeelsFactor);
	$("input#brutoformaatkosten").attr("value", formatMoney(brutoformaatkosten));
	
	// SET aantal plaatsingen
	var aantalplaatsingen = getAantalPlaatsingen(true);
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);
	
	// SET kleurkosten
	var kleurkosten = getKleurKosten(true);
	$("input#kleurkosten").attr("value", formatMoney(kleurkosten));
	
	// SET korting
	var kortingsPercentage = getKortingsPercentage(true, brutoformaatkosten, aantalplaatsingen, kleurkosten, basistariefInCents);
	$("input#kortingspercentage").attr("value", kortingsPercentage + "%");
	
	// SET korting
	var kortingsFactor = getKortingsFactor(kortingsPercentage);
	var korting = (brutoformaatkosten * kortingsFactor);
	$("input#korting").attr("value", formatMoney(korting));
	
	// SET nettoformaatkosten
	var nettoformaatkosten = (brutoformaatkosten - korting);
	$("input#nettoformaatkosten").attr("value", formatMoney(nettoformaatkosten));
	
	// SET tarief per plaatsing
	var tariefperplaatsing = (nettoformaatkosten + kleurkosten);
	$("input#tariefperplaatsing").attr("value", formatMoney(tariefperplaatsing));
	
	
}

function getAdTypesId(blnGetFromDbForm)
{
	var adtypes_id_value;
	
	if (blnGetFromDbForm) {
		adtypes_id_value = document.advertentieform.adtypes_id.value;
	} else {
		adtypes_id_value = getRadioValue(document.advertentieform.adtypes_id);
	}
	
	return adtypes_id_value;
}

function getAdTypeFactor(adtypes_id_value)
{
	var adtype_factor;
	
	if (adtypes_id_value == "2") { 
		adtype_factor = 2.5; 
	} else if (adtypes_id_value == "3") { 
		adtype_factor = 6; 
	} else {
		adtype_factor = 1;
	}

	return adtype_factor;
}


function getAdWidthValue(blnGetFromDbForm, adtypes_id_value, is_weekend_edition)
{
	var adwidth_value;
	var is_weekend_voorpagina = false;
	if ((adtypes_id_value == "3") && (is_weekend_edition == "true")) { 
		is_weekend_voorpagina = true;
	}
	
	if (blnGetFromDbForm) {
		adwidth_value = document.advertentieform.adwidth_columns.value;
	} else {
		var objAdWidth = document.advertentieform.adwidth_advertentie;
		if ((adtypes_id_value != "1") || (is_weekend_voorpagina)) {
			objAdWidth = document.advertentieform.adwidth_redactie;
		}
		adwidth_value = objAdWidth.options[objAdWidth.selectedIndex].value;
	}
	
	return adwidth_value;
}



function getAdHeightValue(adtypes_id_value, is_weekend_edition, adwidth_value, blnGetFromDbForm)
{
	var adheight_value = document.getElementById("adheight_mm").value;
	
	/* uitzonderingen voor voorpagina weekenduitgaven */
	if ( (blnGetFromDbForm == false) && (adtypes_id_value == "3") && (is_weekend_edition == "true") ) {
		if ( (adwidth_value == "1") || (adwidth_value == "2") ) {
			adheight_value = document.getElementById("adheight_mm_voorpagina_weekend_1_2_kolommen").value;
		} else {
			adheight_value = document.getElementById("adheight_mm_voorpagina_weekend_3_7_kolommen").value;
		}
	}
	
	if ((!isNaN(adheight_value)) && (adheight_value >= 25) && (adheight_value <= 390)) {
		// this is ok
	} else {
		alert("'"+ adheight_value + "' is geen geldige hoogte!\nHoogte is minimaal 25 mm en maximaal 390 mm");
		$("input#adheight_mm").attr("value", "25");
		adheight_value = "25";
	}
	
	return adheight_value;
}

function getBasisTariefInCents()
{
	var basistarief = document.advertentieform.basistarief.value.replace(",", ".");
	var basistariefInCents = Math.round(100 * basistarief);
	
	return basistariefInCents;
}


function getPersoneelsFactor(blnGetFromDbForm)
{
	var personeelsFactor = 1;
	
	if (blnGetFromDbForm) {
		if (document.advertentieform.personeelsadvertentie.value == "1") {
			personeelsFactor = 1.2;
		}
	} else {
		if (document.advertentieform.personeelsadvertentie.checked) {
			personeelsFactor = 1.2;
		}
	}
	
	return personeelsFactor;
}

function getBrutoFormaatKosten(adtype_factor, adwidth_value, adheight_value, basistariefInCents, personeelsFactor)
{
	var brutoformaatkosten = (adtype_factor * adwidth_value * adheight_value * (basistariefInCents * personeelsFactor));
	return brutoformaatkosten;
}

function getKleurKosten(blnGetFromDbForm)
{
	var kleurkosten = 0;
	var colortypes_id_value;
	
	if (blnGetFromDbForm) {
		colortypes_id_value = document.advertentieform.colortypes_id.value;
	} else {
		colortypes_id_value = getRadioValue(document.advertentieform.colortypes_id);
	}
	
	var kleurtarief = document.advertentieform.kleurtarief.value;
	var kleurtariefInCents = (100 * kleurtarief);
	if (colortypes_id_value == "1") { kleurkosten = 0; }
	if (colortypes_id_value == "2") { kleurkosten = 1 * kleurtariefInCents; }
	if (colortypes_id_value == "3") { kleurkosten = 3 * kleurtariefInCents; }
	
	return kleurkosten;
}


function getAantalPlaatsingen(blnGetFromDbForm)
{
	var objAantalPlaatsingen = document.advertentieform.nr_of_placements;
	var aantalplaatsingen;
	
	if (blnGetFromDbForm) {
		aantalplaatsingen = objAantalPlaatsingen.value;
	} else {
		aantalplaatsingen = objAantalPlaatsingen.options[objAantalPlaatsingen.selectedIndex].value;
	}
	
	return aantalplaatsingen;
}

function getKortingsPercentage(blnGetFromDbForm, brutoformaatkosten, aantalplaatsingen, kleurkosten, basistariefInCents)
{
	var kortingsPercentage;
	
	if (blnGetFromDbForm) {
		
		kortingsPercentage = document.advertentieform.kortingspercentage_advertentieform.value;
	
	} else {
		
		var customContractKortingsPercentage = document.prijsindicatieform.contractkorting_custom.value;
		if ( (customContractKortingsPercentage != "") && (customContractKortingsPercentage != "0") && (isValidKorting(customContractKortingsPercentage)) ) {
			kortingsPercentage = customContractKortingsPercentage;
		} else {
			kortingsPercentage = getKwantumKortingsPercentage(brutoformaatkosten, aantalplaatsingen, kleurkosten, basistariefInCents);
		}
	}
	
	return kortingsPercentage;
}

function getKwantumKortingsPercentage(brutoformaatkosten, aantalplaatsingen, kleurkosten, basistariefInCents)
{
	var returnPercentage = 0;
	
	var brutoBedrag16Procent = 1000 * basistariefInCents;
	var brutoBedrag20Procent = 2500 * basistariefInCents;
	var brutoBedrag24Procent = 5000 * basistariefInCents;
	var brutoBedrag28Procent = 10000 * basistariefInCents;
	var brutoBedrag32Procent = 25000 * basistariefInCents;
	var brutoBedrag36Procent = 50000 * basistariefInCents;
	var brutoBedrag40Procent = 100000 * basistariefInCents;
	
	var brutoBedrag = ((brutoformaatkosten + kleurkosten) * aantalplaatsingen)
	
	if (brutoBedrag >= brutoBedrag40Procent) {
		returnPercentage = 40;
	} else if (brutoBedrag >= brutoBedrag36Procent) {
		returnPercentage = 36;
	} else if (brutoBedrag >= brutoBedrag32Procent) {
		returnPercentage = 32;
	} else if (brutoBedrag >= brutoBedrag28Procent) {
		returnPercentage = 28;
	} else if (brutoBedrag >= brutoBedrag24Procent) {
		returnPercentage = 24;
	} else if (brutoBedrag >= brutoBedrag20Procent) {
		returnPercentage = 20;
	} else if (brutoBedrag >= brutoBedrag16Procent) {
		returnPercentage = 16;
	}
		
	return returnPercentage;
}


function getKortingsFactor(kortingsPercentage)
{
	myFactor = 0;
	if (kortingsPercentage != "0") {
		myFactor = (kortingsPercentage / 100);
	}
	return myFactor;
}


function isValidKorting(customContractkortingPercentage)
{
	if (isNaN(customContractkortingPercentage)) {
		alert("Dit is geen geldig percentage!");
		$("input#contractkorting_custom").attr("value", "");
		return false;
	} else {
		return true;
	}
}



function SetValuesForExplanation()
{
	var brutoformaatkosten = window.parent.document.prijsindicatieform.brutoformaatkosten.value;
	$("input#brutoformaatkosten").attr("value", brutoformaatkosten);
	
	var kleurkosten = window.parent.document.prijsindicatieform.kleurkosten.value;
	$("input#kleurkosten").attr("value", kleurkosten);
	
	var brutotariefperplaatsing = window.parent.document.prijsindicatieform.brutotariefperplaatsing.value;
	$("input#brutotariefperplaatsing").attr("value", brutotariefperplaatsing);
	
	var aantalplaatsingen = window.parent.document.prijsindicatieform.aantalplaatsingen.value;
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);
	
	var totalebrutobesteding = window.parent.document.prijsindicatieform.totalebrutobesteding.value;
	$("input#totalebrutobesteding").attr("value", totalebrutobesteding);
	
	var kortingspercentage = window.parent.document.prijsindicatieform.kortingspercentage.value;
	$("input#kortingspercentage").attr("value", kortingspercentage);
	
	var basistariefInCents = window.parent.document.prijsindicatieform.basistariefInCents.value;
	
	var brutoBedrag16Procent = 1000 * basistariefInCents;
	$("input#brutoBedrag16Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag16Procent));
	var brutoBedrag20Procent = 2500 * basistariefInCents;
	$("input#brutoBedrag20Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag20Procent));
	var brutoBedrag24Procent = 5000 * basistariefInCents;
	$("input#brutoBedrag24Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag24Procent));
	var brutoBedrag28Procent = 10000 * basistariefInCents;
	$("input#brutoBedrag28Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag28Procent));
	var brutoBedrag32Procent = 25000 * basistariefInCents;
	$("input#brutoBedrag32Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag32Procent));
	var brutoBedrag36Procent = 50000 * basistariefInCents;
	$("input#brutoBedrag36Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag36Procent));
	var brutoBedrag40Procent = 100000 * basistariefInCents;
	$("input#brutoBedrag40Procent").attr("value", formatMoneyWithDotNoCents(brutoBedrag40Procent));
}




function formatMoney(amountInCents)
{
	formattedAmount = (amountInCents / 100); 
	formattedAmountString = formattedAmount + "";
	formattedAmountString = formattedAmountString.replace(".", ",");
	
	// amounts without comma
	if (formattedAmountString.lastIndexOf(",") == -1) {
		formattedAmountString = formattedAmountString + ",00"
	}
	
	// check how many digits after comma
	endOfString = formattedAmountString.substring(formattedAmountString.lastIndexOf(",")+1);
	
	if (endOfString.length == 1) {
		formattedAmountString = formattedAmountString + "0";
	} else {
		formattedAmountString = formattedAmountString.substring(0, formattedAmountString.lastIndexOf(",")+3)
	}
	
	return formattedAmountString;
}
	
function formatMoneyWithDotNoCents(amountInCents)
{
	var myReturnValue = ""+ (amountInCents / 100);
	var myLength = myReturnValue.length;
	
	if (myLength > 3) 
	{
		beforeDot = myReturnValue.substring(0, (myLength-3));
		afterDot = myReturnValue.substring((myLength-3));
		myReturnValue = beforeDot + "." + afterDot;
	}
	
	
	return myReturnValue; 
}

function SetWidthSelect()
{
	var adtypes_id_value = getRadioValue(document.advertentieform.adtypes_id);
	var is_weekend_edition = (document.getElementById("is_weekend_edition").value == "true");
	var is_weekend_voorpagina = ((adtypes_id_value == "3") && (is_weekend_edition));
	
	if ((adtypes_id_value == "1") || (is_weekend_voorpagina)) {
		$("select#adwidth_advertentie").show();
		$("select#adwidth_redactie").hide();
	} else {
		$("select#adwidth_advertentie").hide();
		$("select#adwidth_redactie").show();
	}
}	
	
	

function getRadioValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
