﻿/* needed by classifieds/editDetails.aspx */


/**********************************/
/* Dropdownlists Makes and Models */
/**********************************/


function initMakesModels() {
  var ddlMakes = GetElemNet("listMake");

  loadMakes(ddlMakes);
  selectMakeModelFromSession();
}


function onChangeListMakes() {
  var ddlMakes    = GetElemNet("listMake");
  var ddlModels   = GetElemNet("listModel");
  var hdnMakeName = GetElemNet("hdnMakeName");
  var hdnMakeID   = GetElemNet("hdnMakeID");
  
  loadModels(ddlMakes, ddlModels);
  
  // store Name and ID of the Make in hidden fields
  if (SelectedValue(ddlMakes) != "-1") {
    hdnMakeName.value = SelectedText(ddlMakes);
    hdnMakeID.value   = SelectedValue(ddlMakes);
  }
}


function onChangeListModels() {
  var ddlModels    = GetElemNet("listModel");
  var hdnModelName = GetElemNet("hdnModelName");
  var hdnModelID   = GetElemNet("hdnModelID");

  // store Name and ID of the Model in hidden fields
  hdnModelName.value = SelectedText(ddlModels);
  hdnModelID.value   = SelectedValue(ddlModels);
}


function selectMakeModelFromSession() {
  var ddlMakes   = GetElemNet("listMake");
  var ddlModels  = GetElemNet("listModel");
  var hdnMakeID  = GetElemNet("hdnMakeID");
  var hdnModelID = GetElemNet("hdnModelID");
  
  if (hdnMakeID.value != "" && hdnMakeID.value != "-1") {
    // select the make
    for (var i = 0, len = ddlMakes.length; i < len; i++) {
      if (ddlMakes.options[i].value == hdnMakeID.value) ddlMakes.options[i].selected = true;
    }
    // load models for the selected make
    loadModels(ddlMakes, ddlModels);
  }
  
  if (hdnModelID.value != "" && hdnModelID.value != "-1") {
    // select the model
    for (var i = 0, len = ddlModels.length; i < len; i++) {
      if (ddlModels.options[i].value == hdnModelID.value) ddlModels.options[i].selected = true;
    }
  }
}


/*************************/
/* Mag Preview functions */
/*************************/


function initMagPreview() {
  SelectboxesToHiddenField();
  // hidden field for checkboxes is set by editDetails.aspx.cs code in putSessionValuesIntoEditMask()
  AdditionalToHiddenField();
  HiddenFieldsToPreview();
}


function SelectboxesChanged() {
  SelectboxesToHiddenField();
  HiddenFieldsToPreview();
}


function CheckboxesChanged(checkbox) {
  CheckboxesToHiddenField(checkbox);
  HiddenFieldsToPreview();
}


function AdditionalChanged() {
  AdditionalToHiddenField();
  HiddenFieldsToPreview();
}


function SelectboxesToHiddenField() {
  // from the required section
  var ddlMake     = GetElemNet2("MakesDropDownList");
  var ddlModel    = GetElemNet2("ModelsDropDownList");
  var ddlDeriv    = GetElemNet2("DerivativeDropDownList");
 // var txtDeriv    = GetElemNet2("textDerivative");
  var txtPrice    = GetElemNet("textPrice");
  //var chkOno      = GetElemNet("chkOno");
  var ddlCounties = GetElemNet("listCounties");
  var txtPhone    = GetElemNet("textPhone");
  var txtReg      = GetElemNet("textRegistration");
  
  // from the additional information section
  var ddlYear           = GetElemNet("listYear");
  var ddlEngine         = GetElemNet("listEngine");
  var ddlCondition      = GetElemNet("listCondition");
  var ddlTransmission   = GetElemNet("listTransmission");
  var ddlPreviousOwners = GetElemNet("listPreviousOwners");
  var ddlFuelType       = GetElemNet("listFuelType");
  var txtMileage        = GetElemNet("textMileage");
  var ddlClockUnits     = GetElemNet("listClockUnits");
  var ddlBodyType       = GetElemNet("listBodyType");
  var txtColour         = GetElemNet("textColour");
  var ddlDoors          = GetElemNet("listDoors");
  var ddlNctMonth       = GetElemNet("listNCTMonth");
  var ddlNctYear        = GetElemNet("listNCTYear");
  var ddlTaxMonth       = GetElemNet("listTaxMonth");
  var ddlTaxYear        = GetElemNet("listTaxYear");
  
  var value = ""; // a temp var
  var words = ""; // the string for the hidden field 'hdnTextSelectboxes'
  
  if (ddlMake.selectedIndex > 0) { words += SelectedText(ddlMake) + Separator; }
  
  if (ddlDeriv.selectedIndex > 0) { words += SelectedText(ddlDeriv) + Separator; }
  else {
  if (ddlModel.selectedIndex > 0) { words += SelectedText(ddlModel) + Separator; }
  }
  
//  value = Trim(LeaveOnlySingleBlanks(txtDeriv.value));
//  if (value.length > 0) { words += value + Separator; }
//  
  value = Trim(txtPrice.value);
  if (value.length > 0) {
    var strVal = ProcessPrice(value);          // format the price
    txtPrice.value = strVal.replace(/,/g, ""); // put the formatted value back into the input field
    words += "€" + strVal + Separator;
  }
  
  //if (chkOno.checked) { words += "ono" + Separator; }
  
//  if (ddlCounties.selectedIndex > 0) { words += SelectedText(ddlCounties) + Separator; }
  
  value = Trim(LeaveOnlySingleBlanks(txtPhone.value));
  if (value.length > 0) { words += value + Separator; }

//  value = Trim(LeaveOnlySingleBlanks(txtReg.value));
//  if (value.length > 0) { words += value + Separator; }
  
  if (ddlYear.selectedIndex > 0) { words += SelectedText(ddlYear) + Separator; }
  
  if (ddlEngine.selectedIndex > 0) { words += SelectedValue(ddlEngine) + "cc" + Separator; }
  
  if (ddlCondition.selectedIndex > 0) { words += SelectedText(ddlCondition) + Separator; }
  
  if (ddlTransmission.selectedIndex > 0) { words += SelectedText(ddlTransmission) + Separator; }
  
//  if (ddlPreviousOwners.selectedIndex > 0) {
//    value = SelectedText(ddlPreviousOwners);   
//    words += value + (value == "1" ? " owner" : " owners") + Separator;
//  }

  if (ddlFuelType.selectedIndex > 0) { words += SelectedText(ddlFuelType) + Separator; }
  
  value = Trim(txtMileage.value);
  if (value.length > 0) { words += value + " " + SelectedText(ddlClockUnits) + Separator; }
  
  if (ddlBodyType.selectedIndex > 0) { words += SelectedText(ddlBodyType) + Separator; }
  
  value = Trim(LeaveOnlySingleBlanks(txtColour.value));
  if (value.length > 0) { words += value + Separator; }
  
  if (ddlDoors.selectedIndex > 0) { words += SelectedText(ddlDoors) + " drs" + Separator; }
  
  if (ddlNctYear.selectedIndex > 0) {
    words += "NCT ";
    if (ddlNctMonth.selectedIndex > 0) { words += SelectedValue(ddlNctMonth) + "/"; }
    words += SelectedText(ddlNctYear) + Separator;
  }
  
  if (ddlTaxYear.selectedIndex > 0) {  
    words += "Tax ";
    if (ddlTaxMonth.selectedIndex > 0) { words += SelectedValue(ddlTaxMonth) + "/"; }
    words += SelectedText(ddlTaxYear) + Separator;
  }
  
  GetElemNet("hdnTextSelectboxes").value = Trim(LeaveOnlySingleBlanks(words)); // store in hidden field
  //alert(GetElemNet("hdnTextSelectboxes").value); // for debugging
}


function CheckboxesToHiddenField(checkbox) {
  var term = checkbox.parentNode.title + Separator;
  var hdnCheckboxes = GetElemNet("hdnTextCheckboxes");
  var BoxesText = hdnCheckboxes.value;
  
  if (checkbox.checked) {
    BoxesText += term;
  } else {
    BoxesText = BoxesText.replace(term, "");
  }
  hdnCheckboxes.value = BoxesText;
  //alert(hdnCheckboxes.value); // for debugging
}


function AdditionalToHiddenField() {
  var txtAdditional = GetElemNet("txtAdditional");
  var valText = LeaveOnlySingleBlanks(txtAdditional.value);
  valText = TrimLeft(valText);
  txtAdditional.value = valText;
  valText = Trim(valText);
  var arrText = valText.split(" ");
  

  var AdditionalText = "";  
  for (var i = 0, len = arrText.length; i < len; i++) {
    AdditionalText += arrText[i] + Separator;
  }
  
  var hdnAdditional = GetElemNet("hdnTextAdditional");
  hdnAdditional.value = AdditionalText;
  //alert(hdnAdditional.value); // for debugging
}


function HiddenFieldsToPreview() {
  var HiddenTextSelectboxes = GetElemNet("hdnTextSelectboxes");
  var HiddenTextCheckboxes = GetElemNet("hdnTextCheckboxes");
  var HiddenTextAdditional = GetElemNet("hdnTextAdditional");
  var HiddenTextAll = HiddenTextSelectboxes.value + HiddenTextCheckboxes.value + HiddenTextAdditional.value;  
  HiddenTextAll = HiddenTextAll.replace(/^\x7c+|\x7c+$/, ""); // remove all '|' from start and end
  HiddenTextAll = Trim(LeaveOnlySingleBlanks(HiddenTextAll)); // remove all unnecessary blanks

  var wordsLimit = GetElemNet("hdnWordsLimit");
  var wordsLeft = Number(wordsLimit.value);
  var preview = "";
  var HiddenWords = HiddenTextAll.split("|");
  
  for (var i = 0, len = HiddenWords.length; i < len; i++) {
    if (wordsLeft > 0) {
      preview += HiddenWords[i] + " ";
      wordsLeft--;
    } else {
      break;
    }
  }
  
  var wordsCounter = GetElemNet("textCounter");  
  wordsCounter.innerHTML = String(wordsLeft);
  checkMagLimit();
  
  var txtPreviewMag = GetElemNet("txtPreviewMag");
  txtPreviewMag.value = Trim(preview);
}


/********************/
/* Helper Functions */
/********************/


var Separator = "|";
function RemoveSeparator(elem) { elem.value = elem.value.replace(/\x7c/g, ""); } // \x7c is the hex code for '|'

function GetElem(id)    { return document.getElementById(id); }                   // gets Element by ID
function GetElemNet(id) { return document.getElementById("ctl00_ContentPlaceHolder1_" + id); } // gets Element by .Net ID
function GetElemNet2(id) { return document.getElementById("ctl00_ContentPlaceHolder1_AllMakesAndModels_" + id); }
function SelectedValue(ddl) { return ddl.options[ddl.selectedIndex].value; } // gets the selected value of a dropdownlist
function SelectedText(ddl)  { return ddl.options[ddl.selectedIndex].text; }  // gets the selected text of a dropdownlist

function Trim(str)      { return str.replace(/^\s+|\s+$/g, ""); }
function TrimLeft(str)  { return str.replace(/^\s+/, ""); }
function TrimRight(str) { return str.replace(/\s+$/, ""); }

function LeaveOnlySingleBlanks(str) { return str.replace(/\s{2,}/g, " "); }
function DigitsOnly(elem) { elem.value = elem.value.replace(/\D/g, ""); }


function ProcessPrice(price) {
  var val = Number(price);
  if (!isNaN(val)) {
    val = Math.round(val);                    // round the price to integer
    var strVal = FormatPrice(val);            // format the price
    strVal = strVal.replace(/^0+/, "");       // remove leading zeroes
    if (strVal.length == 0) { strVal = "1"; } // if the price is 0 set it to 1    
    return strVal;
  }
}


function FormatPrice(value) {
  if (value > 999) {    
    return FormatPrice(Math.floor(value / 1000)) + "," + FormatPrice(value % 1000);
  } else {
    var valStr = String(value);    
    if (valStr.length == 1) {
      valStr = "00" + valStr;
    } else if(valStr.length == 2) {
      valStr = "0" + valStr;
    }
    return valStr;
  }
}


function checkMagLimit() {
  var wordsLimit = GetElemNet("textLimit");
  var wordsCounter = GetElemNet("textCounter");
  var wordsLeft = Number(wordsCounter.innerHTML);
    
  if (wordsLeft > 0) {
    wordsLimit.innerHTML = "";
  } else {
    wordsLimit.innerHTML = "Mag Ad Limit!";
  }
}

