﻿    // Region: jQuery Events
var j$ = jQuery.noConflict();



j$(document).ready(function() {
    var idxPCA = j$("#pca_select").val();
    
//    if (location.href.contains('#') == true)
//    {
//        var target = get_listvalue(location.href,"#",2);
//        
//       showTarget("#" + target);
//    }
    
    SetDefaultCosts();
    
    j$("#postalcodechoose > ul").tabs({ 
    });
    
    j$("#postalcodechoose > ul").tabs("select", idxPCA);


     
     j$("#ordersummary").dialog(
    {
     autoOpen:false,
     modal:true,
     width:954,
     height:700,
     overlay: {opacity: 0.5, background: "black"}
     });
     
   j$("#mainbundleadvice").dialog(
	    {
	    autoOpen:false,
	    modal:true,
	    width:900,
	    height:560,
	    overlay: {opacity: 0.5, background: "black"}
	    });
   
   
     

    j$("a.modal").click(function(){
        jField = j$(this).attr("href");
       // alert(jField);
        //j$(jField).removeClass("displayhide");
        j$(jField).dialog("open");
        
        //alert(jField);
        return false;
    });


    
    j$(".ProductAccessoriesLine h3").click(function(){
        RecalculateProductAccessories(j$(this));
        SetOrderSums();
        ChangeProductAccessoriesLine(j$(this));
        
    });
    
    j$("input.optionalProducts").click(function(){
        var bundlePrice = j$("#SingleBundlePrice").val();
        var newAddPrice = j$(this).parent("td").find("span.prodprice").html();

        var controllist =  j$("#form_ProductControlList").val();
        
        if (j$(this).attr("checked") == true)
        {
            bundlePrice = parseFloat(bundlePrice) + parseFloat(newAddPrice);
            controllist = controllist + "," + j$(this).val();
        }
        else
        {
           bundlePrice = parseFloat(bundlePrice) - parseFloat(newAddPrice); 
           controllist = controllist.replace(j$(this).val());
           
        }
        
        j$("#SingleBundlePrice").val(bundlePrice);
        j$("#SingleOptionalProductPrice").val(newAddPrice);
        j$("#form_ProductControlList").val(controllist);
        SetOrderSums();
       
    });
    
    j$("input.contractProduct").click(function(){
        var controllist =  j$("#form_ProductControlList").val();
        j$("#form_accessories").val(j$(this).val());
        var bundlePrice = j$("#SingleBundlePrice").val();
        
	    var oldPrice = j$("#SingleSavingPrice").val();
	    var newPrice = j$(this).parent("td").find("span.prodprice").html();
	
	    j$("#SingleBundlePrice").val(parseFloat(bundlePrice) - parseFloat(oldPrice) + parseFloat(newPrice));
	    j$("#SingleSavingPrice").val(newPrice);
    	
	    j$(".savingprice").html(number_format(Math.abs(newPrice),2,",","."))
    	    	
	    SetNewOfferPrice(j$(".bestofferprice").get(),oldPrice ,newPrice);
        var newPriceDescription = j$(this).parent("td").find("span.prodname").html();
	    SetPriceDescription(j$(".BestOfferDescription").get(),newPriceDescription);
	    
	    SetOrderSums();
        
        });
        
        
        
    
    j$("#chooseProductDisplay input:radio").click(function(){
        j$("#form_products").val(j$(this).val());
        RecalculateProduct("#proddetails-" + get_listvalue(j$(this).attr("id"),"-",2));
        SetOrderSums();
        j$("#OrderForm").submit();
        
        
    });
    
    j$(".locationline").hover(function(){
            j$(this).find(".button_grey").removeClass("button_grey").addClass("button");
    },function(){
        j$(this).find(".button").removeClass("button").addClass("button_grey");
    });
    
    j$("#showPrivacyPolicyBox").addClass("displayhide");
	j$("#showTermsAndConditions").addClass("displayhide");
    
    j$("a.show").click(function(){
    var target = j$(this).attr("href");
    showTarget(target);
    });
    
    j$("a.change").click(function(){
    var source = "#" + j$(this).attr("hideid");
    var target = j$(this).attr("href");
    hideTarget(source);
    showTarget(target);
    });
    
    j$("input.orderamount").click(function(){
       
        SetOrderSums();        
    });
    
    j$("input.Getdealer").click(function(){
    
        ChooseDealer(j$(this).val());
    });
    
     j$("a.getdealer").click(function(){
       
       ChooseDealer(j$(this).attr("id"));
       checkOptionalProducts(j$("input.optionalProducts"));
       //optionalProducts
       //alert(j$(this).attr("id"));
       
       //j$("#OrderForm").submit();
       return false;
    });
    
    j$("#showOrderDealer .costdetails input:radio").click(function(){
   
        ChangeDealerCosts(j$(this));
        
    });
    
    j$(".costdetails input:radio").click(function(){
     
        ChangeCostDetails(j$(this));
        InitCosts(j$(this).parents("table").find("input:checked").get());
    });
    
    j$("a.popup").click(function(){
        showPopup(j$(this).attr("href"),1024,350);
        return false;
    });
    
    
    j$("a.modal").click(function(){
        jField = j$(this).attr("href");
      
        j$(jField).dialog("open");
        //alert(j$(this).attr("href"));
        return false;
    });
    
    
    j$("#noadvice").click(function(){
       j$("#OrderForm").submit();
    });
    
     j$(".get_advise").click(function(){
        var newid = j$(this).attr("id");       
        j$("#optional-" + newid).attr("checked","checked");        
       j$("#OrderForm").submit();
    });
    
     j$(".get_offer").click(function(){
        var newid = j$(this).attr("id");
        j$("#form_products").val(newid);
        j$("#OrderForm").submit();
    });
    
//    j$("a.adressChanging").click(function(){
//        var value = "";
//        var name = "";
//        if(j$(this).attr("hideid") == "CustomerDeliveryAdress")
//        {
//            value = "DeliveryAdress";
//            name = "Lieferadresse";
//        }
//        else
//        {
//            value = "InvoiceAdress";
//            name = "Rechnungsadresse";
//        }
//            
//        j$("#form_adressfield").val(value);
//        j$(".whichadress").html(name);
//    });
    

});

function checkOptionalProducts(fields)
{
   
   if (fields.length == 0)
    { 
        j$("#OrderForm").submit();
    }
    else
    {
     for (var i = 0; i < fields.length; i++) 
     {
        if (fields[i].checked==true)
        {
           j$("#OrderForm").submit();
           break;
        }
        else
         {
            
            j$("#mainbundleadvice").dialog("open");
            
            
        }
     }
        
    }
}



function showTarget(target)
{
j$(target).removeClass("displayhide");
j$(target).addClass("displayshow");
}

function hideTarget(target)
{
j$(target).addClass("displayhide");
j$(target).removeClass("displayshow");
}

function SetChecklist(item)
{
   j$(item).removeClass("noChecklist").addClass("checklist"); 
}

function MoveChecklist(item)
{
   j$(item).removeClass("checklist").addClass("noChecklist"); 
}

function ChangeProductAccessoriesLine(j)
{
    //j.parent("li").parent("ul").find("div.innercontent").slideUp("normal");
	j.parent("li").parent("ul").find("h3").removeClass("active");
	//j.next("div.innercontent").slideDown("normal");
	j.addClass("active");
	var AccProdID = j.attr("prodid");
	j$("#form_accessories").val(j.attr("prodid"));
	var fields = j$(":input.tosave").serializeArray();
	j.find("input:radio").attr("checked","checked")
//	SaveData(j$,fields);
	SetChecklist("#check_AccProd");
	
	return false;
}


function RecalculateProductAccessories(j)
{
    var bundlePrice = j$("#SingleBundlePrice").val();
	var oldPrice = j$("#SingleSavingPrice").val();
	var newPrice = parse_number(j.parent("li").find("div.innercontent").find("span.addPrice").html());
	
	j$("#SingleBundlePrice").val(bundlePrice - oldPrice + newPrice);
	j$("#SingleSavingPrice").val(newPrice);
	
	j$(".savingprice").html(number_format(Math.abs(newPrice),2,",","."))
	
	
	SetNewOfferPrice(j$(".bestofferprice").get(),oldPrice ,newPrice);
    var newPriceDescription = j.find("label").find(".productname").html();
	SetPriceDescription(j$(".BestOfferDescription").get(),newPriceDescription);
	return false;
}

function RecalculateProduct(item)

{
    
    var newPrice = parseFloat(j$(item).find(".bestofferprice").html());
    var amount = parseFloat(j$("#form_amount").val());
    
    
    j$("#SingleBundlePrice").val(newPrice);
    j$("#SumBundlePrice").val(newPrice * amount);
    
    


//	var newPrice = parse_number(j.parent("li").find("div.innercontent").find("span.addPrice").html());
//	
//	j$("#SingleBundlePrice").val(bundlePrice - oldPrice + newPrice);
//	j$("#SingleSavingPrice").val(newPrice);
//	
//	j$(".savingprice").html(number_format(Math.abs(newPrice),2,",","."))
//	
//	
//	SetNewOfferPrice(j$(".bestofferprice").get(),oldPrice ,newPrice);
//    var newPriceDescription = j.find("label").html();
//	SetPriceDescription(j$(".BestOfferDescription").get(),newPriceDescription);
	return false;
}

function SetOrderSums()
{
    var amount = j$("input.orderamount:checked").attr("value");
    if (amount == undefined) amount = 1;
    
    amount = parseFloat(amount);
    
    var bundlePrice = parseFloat(j$("#SingleBundlePrice").val());
    var oldsum = parseFloat(j$("#SumBundlePrice").val());
    var savingprice = parseFloat(j$("#SingleSavingPrice").val());
    var ordersum = amount * bundlePrice;
    
    var savingsum = Math.abs(amount * savingprice);
    var mainproductprice = parseFloat(j$("#SingleMainProductPrice").val());
    var optionalproductprice = parseFloat(j$("#SingleOptionalProductPrice").val());
    var mainproductsum = amount * mainproductprice;
    var optionalproductsum = amount * optionalproductprice;
    
    j$(".orderproductsum").html(number_format(ordersum,2,",","."));
    j$(".mainsavingprice").html(number_format(savingsum,2,",","."));
    j$(".mainproductprice").html(number_format(mainproductsum,2,",","."));
    j$(".mainoptionalsprice").html(number_format(optionalproductsum,2,",","."));
    
    
    j$(".ordersumprice_costs").each(function(i){
    
        var thissum = parse_number(this.innerHTML);
        var newsum = thissum - oldsum + ordersum;
        
        this.innerHTML = number_format(newsum,2,",",".");
        
     });
     j$(".ordersumprice").each(function(i){
        
        var thissum = parse_number(this.innerHTML);
        var newsum = thissum - oldsum + ordersum;
        
        this.innerHTML = number_format(newsum,2,",",".");
        
     });
     j$("#SumBundlePrice").val(ordersum);
     j$("#SumSavingPrice").val(savingsum);
}

function SetPriceDescription(fields,text){
 for (var i = 0; i < fields.length; i++) {
         fields[i].innerHTML = text;
        }
}

function SetNewOfferPrice(fields,addDown,addUp){
    
    for (var i = 0; i < fields.length; i++) {
        oldprice = fields[i].innerHTML;
       // alert(oldprice + " - " + addDown " + " + addUp)
       
      var newprice = parseFloat(parse_number(oldprice)) - parseFloat(addDown) + parseFloat(addUp);
      
        fields[i].innerHTML = number_format(newprice,2,",",".");
    }
}

function ChooseDealer(value)
{
    j$("#form_dealer").val(value);
    var locationid = get_listvalue(value,"-",4);
    var oldstring = new RegExp(locationid,"g");
    var newstring = locationid + "_set";
    
    var thislineID = "#locationdetails-" + locationid; 
    
    var dealeradress = j$(thislineID).find(".dealeradress").html();
    var dealercalculation_showfirst = j$(thislineID).find(".showfirst").find(".calculation_table").html().replace(oldstring,newstring);
    var dealercalculation_showonchange = j$(thislineID).find(".showonchange").find(".calculation_table").html().replace(oldstring,newstring);
   
    j$("#showOrderDealer").find(".dealeradress_inbox").html(dealeradress);
    j$("#showOrderDealer").find(".dealercalculation_inbox").find(".showfirst").html(dealercalculation_showfirst);
    j$("#showOrderDealer").find(".dealercalculation_inbox").find(".showonchange").html(dealercalculation_showonchange);
    
    j$("#showOrderDealer .costdetails input:radio").click(function(){
    
         ChangeCostDetails(j$(this));
    });
  

   
//    hideTarget("#showDealerDialog");
//    showTarget("#showOrderDealer");


//    var fields = j$(":input.tosave").serializeArray();
////    SaveData(j$,fields);
//    SetChecklist("#check_Location");

    if (j$("#form_costs") == '')
    {
        SetDefaultCosts();
        }
    //showTarget("#location_sumofferline");
    
    var CostArray = j$("#form_costs").val().split(",");
     for (var i = 0; i < CostArray.length; i++) 
     {
        j$("#showOrderDealer").find(".showonchange").find("input:radio").each(function(j){
            if (this.value == CostArray[i])
            { 
                this.checked = "checked";
            }
        });
     }
     
     
     
     

    return false;
}

function SetDefaultCosts()
{
    //Default-Kosten übernehmen
    var coststrings = new Array();
    j$("#showOrderDealer").find(".showfirst").find(".costsetting").each(function(i){
        coststrings[i] = get_listvalue(this.innerHTML,"|",1);
    });
    if (coststrings.length > 0)
        {
            j$("#form_costs").val(coststrings.join(","));
            SetChecklist("#check_Costs");
        }
}

function ChangeDealerCosts(j)
{
    
    
    InitCosts(j.parents("table").find("input:checked").get());
    //var fields = j$(":input.tosave").serializeArray();
//	SaveData(j$,fields);
    SetChecklist("#check_Costs");
}

function ChangeCostDetails(j)
{
    
    var Costtype = j.attr("name");
    var jTable = j.parent("td").parent("tr").parent("tbody").parent("table");
    var oldPrice = parse_number(j.parent("td").parent("tr").parent("tbody").parent("table").find(".setPrice_" + Costtype).html());
    var newPrice = parse_number(j.parent("td").parent("tr").find(".additionalCostPrice").html());
    var sum = parse_number(jTable.find(".ordersumprice_costs").html());
    sum = sum - oldPrice + newPrice;
    var loc = get_listvalue(j.attr("id"),"_",3);
    var costtype = get_listvalue(j.attr("id"),"_",1);
    
    ChangeCostShowArea(loc,costtype,j.next("label").html(),newPrice,sum);
    
    
    
    j.parent("td").parent("tr").parent("tbody").parent("table").find(".setPrice_" + Costtype).parent("td").empty();
    j.parent("td").parent("tr").find(".addonPrice").html("<span class=\"setPrice_" + Costtype + " orderposprice\">" + j.parent("td").parent("tr").find(".additionalCostPrice").html() + "</span> EUR");
    j.parents("table").find(".ordersumprice_costs").html(number_format(sum,2,",","."));
    j$(".sumofferline").find(".ordersumprice").html(number_format(sum,2,",","."));
    
}

function InitCosts(fields)
{
   var newValue = "";
   for (var i = 0; i < fields.length; i++) {
  
     if (i == 0) {newValue = fields[i].value;}
     else {newValue = newValue + "," + fields[i].value;}
   
 }
    
   j$("#form_costs").val(newValue);
   
}

function ChangeCostShowArea(id,type,str,price,sum)
{
    var div = "#calc-" + id;
    var line = ".tr-" + type;
    j$(div).find(line).find(".showcostname").html(str);
    j$(div).find(line).find(".selectedAdditionalCostPrice").html(number_format(price,2,",","."));
    j$(div).find(".ordersumprice_costs").html(number_format(sum,2,",","."));
}

// Region: Helper Funktionen

function /*out: String*/ number_format( /* in: float   */ number,
                                        /* in: integer */ laenge,
                                        /* in: String  */ sep,
                                        /* in: String  */ th_sep ) {

  number = Math.round( number * Math.pow(10, laenge) ) / Math.pow(10, laenge);
  str_number = number+"";
  arr_int = str_number.split(".");
  if(!arr_int[0]) arr_int[0] = "0";
  if(!arr_int[1]) arr_int[1] = "";
  if(arr_int[1].length < laenge){
    nachkomma = arr_int[1];
    for(i=arr_int[1].length+1; i <= laenge; i++){  nachkomma += "0";  }
    arr_int[1] = nachkomma;
  }
  if(th_sep != "" && arr_int[0].length > 3){
    Begriff = arr_int[0];
    arr_int[0] = "";
    for(j = 3; j < Begriff.length ; j+=3){
      Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
      arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
    }
    str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
    arr_int[0] = str_first + arr_int[0];
  }
  return arr_int[0]+sep+arr_int[1];
}


function parse_number(numberString)
{
    if (numberString != undefined){
        var ns = numberString.replace(".","").replace(",","");
        ns = ns / 100;
        return ns
    
    }
    else return 0
}


function get_listvalue(str,delim,idx)
{
    
    strArray = str.split(delim);
    
    if (strArray.length >= idx) return strArray[idx-1];
    else return "";
}

// END Region: Helper Funktionen


// Popup

function showPopup(url, width, height) {
	// BACKGROUND
	var popupOverlay = document.createElement('div');
	popupOverlay.id = 'popupOverlay';
	j$(popupOverlay).css('height', j$(window).height() > j$(document).height() ? j$(window).height() : j$(document).height());
	j$(popupOverlay).opacity(0.7);
	j$(popupOverlay).click(hidePopup);
	j$('body').append(popupOverlay);
	
	// IFRAME FOR CONTENT
	var popupBoxContent = document.createElement('iframe');
	popupBoxContent.id = 'popupBoxContent';
	popupBoxContent.src = url;
	popupBoxContent.setAttribute('frameBorder','no');
	popupBoxContent.setAttribute('border','0');
	j$(popupBoxContent).css('height', height);
	j$(popupBoxContent).css('width', '100%');
	j$(popupBoxContent).css('border', 'none');
	if (j$.browser.mozilla) {
		j$(popupBoxContent).css('margin-bottom', -5);
	}
	
	// CLOSE BUTTON
	var popupBoxClose = document.createElement('div');
	popupBoxClose.id = 'popupBoxClose';
	popupBoxClose.innerHTML = '<!-- SPACER -->';
	j$(popupBoxClose).click(hidePopup);
	
	// CONTAINER DIV
	var popupBox = document.createElement('div');
	popupBox.id = 'popupBox';
	j$(popupBox).css('position', 'absolute');
	j$(popupBox).css('left', '50%');
	j$(popupBox).css('margin-left', -(width /2));
	j$(popupBox).css('width', width);
	j$(popupBox).css('top', j$(document).scrollTop());
	j$(popupBox).append(popupBoxContent);
	j$(popupBox).append(popupBoxClose);
	j$('body').append(popupBox);
	j$(popupBox).show();
	
	return false;
}

function hidePopup(url) {
	j$("#popupOverlay").remove();
	j$("#popupBox").remove();
}