// The next line enables jQuery IntelliSense in Visual Studio:
/// <reference path="/common/js/IntelliSense/jquery-1.3.1-vsdoc.js" />





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";
	}
}

/* REGULATE HEIGHT AND WIDTH INPUTS */

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 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 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 personeel_factor = getPersoneelFactor(false);
    var colortypes_id_value = getColorTypesId(false);
	var colortype_factor = getColorTypeFactor(colortypes_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 formaatkosten = 0;
    var positietoeslag = 0;
    var personeelstoeslag = 0;
    var kleurtoeslag = 0;
    var subtotaal = 0;
    
	// SET basistarief in Cents
	$("input#basistariefInCents").attr("value", basistariefInCents);	
	
	
	// SET formaatkosten
	formaatkosten = getFormaatKosten(adwidth_value, adheight_value, basistariefInCents);
	$("input#formaatkosten").attr("value", formatMoney(formaatkosten));
	// UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET positietoeslag
    positietoeslag = getPositieToeslag(false, adtype_factor, subtotaal);
    $("input#positietoeslag").attr("value", formatMoney(positietoeslag));
    // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET personeelstoeslag
    personeelstoeslag = getPersoneelsToeslag(false, personeel_factor, subtotaal);
    $("input#personeelstoeslag").attr("value", formatMoney(personeelstoeslag));
   // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET kleurtoeslag
    kleurtoeslag = getKleurToeslag(false, colortype_factor, subtotaal);
    $("input#kleurtoeslag").attr("value", formatMoney(kleurtoeslag));
     // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET aantal plaatsingen
	var aantalplaatsingen = getAantalPlaatsingen(false);
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);

     // SET SUBTOTAAL
     $("input#subtotaal").attr("value", formatMoney(subtotaal));

	// SET korting
	var kortingsPercentage = getKortingsPercentage(false, subtotaal, aantalplaatsingen, basistariefInCents);
	$("input#kortingspercentage").attr("value", kortingsPercentage + "%");
	$("input#kortingspercentage_advertentieform").attr("value", kortingsPercentage);
	
	var kortingsFactor = getKortingsFactor(kortingsPercentage);
	var korting = (subtotaal * kortingsFactor);
	$("input#korting").attr("value", formatMoney(korting));
	
    // SET tarief per plaatsing
	var tariefperplaatsing = (subtotaal - korting);
	$("input#tariefperplaatsing").attr("value", formatMoney(tariefperplaatsing));

}


function getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag)
{
    //SET subtotaal
	mySubTotal = (formaatkosten + positietoeslag + personeelstoeslag + kleurtoeslag);      
    return mySubTotal;
}

function getFormaatKosten(adwidth_value, adheight_value, basistariefInCents)
{
	var formaatkosten = (adwidth_value * adheight_value * basistariefInCents);
	return formaatkosten;
}


function getBasisTariefInCents()
{
	var basistarief = document.advertentieform.basistarief.value.replace(",", ".");
	var basistariefInCents = Math.round(100 * basistarief);
	
	return basistariefInCents;
}

/* TYPE */

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 getPositieToeslag(blnGetFromDbForm, adtype_factor, subtotaal)
{
	var myPositieToeslag;
	
	myPositieToeslag = (subtotaal * adtype_factor) - subtotaal;
	
	return myPositieToeslag;
}



/* PERSONEELSADVERTENTIE */

function getPersoneelFactor(blnGetFromDbForm)
{
	var personeelFactor;
	
	if (blnGetFromDbForm) {
		if (document.advertentieform.personeelsadvertentie.value == "1") {
			personeelFactor = 1.2;
		} else {
            personeelFactor = 1;
        }
	} else {
		if (document.advertentieform.personeelsadvertentie.checked) {
			personeelFactor = 1.2;
		} else {
            personeelFactor = 1;
        }
	}
	
	return personeelFactor;
}

function getPersoneelsToeslag(blnGetFromDbForm, personeel_factor, subtotaal)
{
	var myPersoneelToeslag;
	
	myPersoneelToeslag = (subtotaal * personeel_factor) - subtotaal;
		
	return myPersoneelToeslag;
}


/* COLOR */

function getColorTypesId(blnGetFromDbForm)
{
	var colortypes_id_value;
	
	if (blnGetFromDbForm) {
		colortypes_id_value = document.advertentieform.colortypes_id.value;
	} else {
		colortypes_id_value = getRadioValue(document.advertentieform.colortypes_id);
	}
	
	return colortypes_id_value;
}


function getColorTypeFactor(colortypes_id_value)
{
	var colortype_factor;
	
	if (colortypes_id_value == "2") { 
		colortype_factor = 1.25; 
	} else if (colortypes_id_value == "3") { 
		colortype_factor = 1.5; 
	} else {
		colortype_factor = 1;
	}

	return colortype_factor;
}

function getKleurToeslag(blnGetFromDbForm, colortype_factor, subtotaal)
{
	var myKleurToeslag;
	
	myKleurToeslag = (subtotaal * colortype_factor) - subtotaal;
		
	return myKleurToeslag;
}


/* AD WIDTH */


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 == false)) {
			objAdWidth = document.advertentieform.adwidth_redactie;
		}
		adwidth_value = objAdWidth.options[objAdWidth.selectedIndex].value;
	}
	
	return adwidth_value;
}

/* AD HEIGHT */


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;
}



/* AANTAL PLAATSINGEN */

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;
}

/* KORTING */


function getKortingsPercentage(blnGetFromDbForm, subtotaal, aantalplaatsingen, 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(subtotaal, aantalplaatsingen, basistariefInCents);
		}
	}
	
	return kortingsPercentage;
}

function getKwantumKortingsPercentage(subtotaal, aantalplaatsingen, 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 = (subtotaal * 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;
	}
}


/* UITLEG */

function SetValuesForExplanation() {
    var subtotaal = window.parent.document.prijsindicatieform.subtotaal.value;
    $("input#subtotaal").attr("value", subtotaal);
//	
//	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", formatMoney((subtotaal.replace(",", ".") * 100) * aantalplaatsingen));
	
	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 CalculateWithDbForm()
{
    
  
    // GET values
	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 personeel_factor = getPersoneelFactor(true);
    var colortypes_id_value = getColorTypesId(true);
	var colortype_factor = getColorTypeFactor(colortypes_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 formaatkosten = 0;
    var positietoeslag = 0;
    var personeelstoeslag = 0;
    var kleurtoeslag = 0;
    var subtotaal = 0;
    
    
	// SET formaatkosten
	formaatkosten = getFormaatKosten(adwidth_value, adheight_value, basistariefInCents);
	$("input#formaatkosten").attr("value", formatMoney(formaatkosten));
	// UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET positietoeslag
    positietoeslag = getPositieToeslag(false, adtype_factor, subtotaal);
    $("input#positietoeslag").attr("value", formatMoney(positietoeslag));
    // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET personeelstoeslag
    personeelstoeslag = getPersoneelsToeslag(false, personeel_factor, subtotaal);
    $("input#personeelstoeslag").attr("value", formatMoney(personeelstoeslag));
   // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET kleurtoeslag
    kleurtoeslag = getKleurToeslag(false, colortype_factor, subtotaal);
    $("input#kleurtoeslag").attr("value", formatMoney(kleurtoeslag));
     // UPDATE SUBTOTAAL
	subtotaal = getSubTotaal(formaatkosten, positietoeslag, personeelstoeslag, kleurtoeslag);

    // SET aantal plaatsingen
	var aantalplaatsingen = getAantalPlaatsingen(true);
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);

     // SET SUBTOTAAL
     $("input#subtotaal").attr("value", formatMoney(subtotaal));

	// SET korting
	var kortingsPercentage = getKortingsPercentage(true, subtotaal, aantalplaatsingen, basistariefInCents);
	$("input#kortingspercentage").attr("value", kortingsPercentage + "%");
	$("input#kortingspercentage_advertentieform").attr("value", kortingsPercentage);
	
	var kortingsFactor = getKortingsFactor(kortingsPercentage);
	var korting = (subtotaal * kortingsFactor);
	$("input#korting").attr("value", formatMoney(korting));
	
    // SET tarief per plaatsing
	var tariefperplaatsing = (subtotaal - korting);
	$("input#tariefperplaatsing").attr("value", formatMoney(tariefperplaatsing));
}

function CalculateWithDbFormOld()
{
	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 personeelsfactor_id_value = getPersoneelsFactorId(true);
	var personeel_factor = getPersoneelFactor(personeelfactor_id_value);
    var colortypes_id_value = getColorTypesId(true);
	var colortype_factor = getColorTypeFactor(colortypes_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);

	// SET formaatkosten
	var formaatkosten = getFormaatKosten(adwidth_value, adheight_value, basistariefInCents);
	$("input#formaatkosten").attr("value", formatMoney(formaatkosten));

	// SET aantal plaatsingen
	var aantalplaatsingen = getAantalPlaatsingen(true);
	$("input#aantalplaatsingen").attr("value", aantalplaatsingen);

    // SET positietoeslag
    var positietoeslag = getPositieToeslag(true, adtype_factor, formaatkosten);
    $("input#positietoeslag").attr("value", formatMoney(positietoeslag));
    
     // SET personeelstoeslag
    var personeelstoeslag = getPersoneelsToeslag(true, personeel_factor, formaatkosten, positietoeslag);
    $("input#personeelstoeslag").attr("value", formatMoney(personeelstoeslag));
    
     // SET kleurtoeslag
    var kleurtoeslag = getKleurToeslag(true, colortype_factor, formaatkosten, positietoeslag, personeelstoeslag);
    $("input#kleurtoeslag").attr("value", formatMoney(kleurtoeslag));
    
    //SET subtotaal
	var subtotaal = (formaatkosten + positietoeslag + personeelstoeslag + kleurtoeslag);


	// SET korting
	var kortingsPercentage = getKortingsPercentage(true, subtotaal, aantalplaatsingen);
	$("input#kortingspercentage").attr("value", kortingsPercentage + "%");
	$("input#kortingspercentage_advertentieform").attr("value", kortingsPercentage);
	
	var kortingsFactor = getKortingsFactor(kortingsPercentage);
	var korting = (subtotaal * kortingsFactor);
	$("input#korting").attr("value", formatMoney(korting));
	
    // SET tarief per plaatsing
	var tariefperplaatsing = (subtotaal - korting);
	$("input#tariefperplaatsing").attr("value", formatMoney(tariefperplaatsing));
	
}



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 "";
}



