// SCRIPTS FOR GUIDE.HTM

var pageInitialised = false;


function initialisePage(pageID)
{
InitialiseDHTML();
initialiseUtilMenu(pageID);
setupContactPanelAnims();
SetDHTMLElementVisibility(samplepricesHeader, true);
SetDHTMLElementVisibility(guideHeader, true);
SetDHTMLElementVisibility(infoLinkTable, true);
pageInitialised = true; 
precacheNonCommonImages();
}


function refreshAnimation()
{
document.images['dynamicImage'].src = 'images/dynamicImage.gif';
}


function hideAllPopups(event)
{
HidePopup('samplepricesPopup', event);
HidePopup('guidePopup', event);
HidePopup('domainPopup', event);
HidePopup('hostingPopup', event);
HidePopup('graphicsPopup', event);
HidePopup('digitizationPopup', event);
HidePopup('pageDesignPopup', event);
HidePopup('copywritingPopup', event);
HidePopup('navigationPopup', event);
HidePopup('dynamicPopup', event);
HidePopup('formsPopup', event);
HidePopup('visitorRegPopup', event);
HidePopup('eShopPopup', event);
HidePopup('publishingPopup', event);
HidePopup('searchEnginePopup', event);
HidePopup('maintenancePopup', event);
refreshAnimation();
}


function showNewIntroPopup(popupID, inlineElemID, evt)
{
if (pageInitialised)
       {
       hideAllPopups(evt); 
       ShowPopup(popupID, 4, LeftXOfInlineElem(inlineElemID)+8, TopYOfInlineElem(inlineElemID)-4, evt);
       }
  else alert('Please refresh/reload this page and wait until      \nit has fully loaded before clicking a link.\n');
}



function showNewPopup(popupID, inlineElemID, evt)
{
if (pageInitialised)
       {
       hideAllPopups(evt); 
       ShowPopup(popupID, 4, LeftXOfInlineElem(inlineElemID)-132, TopYOfInlineElem(inlineElemID)-4, evt);
       }
  else alert('Please refresh/reload this page and wait until      \nit has fully loaded before clicking a link.\n');
}


function validateInteger(fieldName)
{
valid = fieldIsInteger(document.forms['guideForm'].elements[fieldName], 0, 999999, 'Invalid Number', true);
return(true);
}


function roundEstimate(est)
{
var R = 1;
     if (est > 100000) R = 10000;
else if (est > 10000) R = 1000;
else if (est > 1000) R = 100;
else if (est > 100) R = 10;
return(R * Math.round(est/R));
}


function calculateEstimate()
{
var dDiscount = 0.6;
var mDiscount = 1.0;

var form = document.forms['guideForm'];
var dR   = parseFloat(form.elements['rateDesign'].value);
var mR   = parseFloat(form.elements['rateMaint'].value);
var V    = 0;
var dT   = 0;
var mT   = 0;
var dF   = 0;
var mF   = 0;

dT = dT + parseFloat(form.elements['domainReg'].value);
dT = dT + parseFloat(form.elements['webHosting'].value);

dT = dT + parseFloat(form.elements['bespokeGraphicsComplex'].value) * 6;
dT = dT + parseFloat(form.elements['bespokeGraphicsAverage'].value) * 2;
dT = dT + parseFloat(form.elements['bespokeGraphicsSimple'].value) * 0.5;

dT = dT + parseFloat(form.elements['bespokeDiagramsComplex'].value) * 4;
dT = dT + parseFloat(form.elements['bespokeDiagramsAverage'].value) * 1.5;
dT = dT + parseFloat(form.elements['bespokeDiagramsSimple'].value) * 0.5;

dT = dT + parseFloat(form.elements['bespokePhotoDistance'].value);

dT = dT + parseFloat(form.elements['digitalScanning'].value) * 0.25;
dT = dT + parseFloat(form.elements['digitalGraphicEditing'].value) * 0.75;
dT = dT + parseFloat(form.elements['digitalPhotoEnhancement'].value) * 0.35;
dT = dT + parseFloat(form.elements['digitalPhotoEffects'].value) * 0.5;

var numPages = parseFloat(form.elements['pageNumber'].value);

if (numPages < 1)
       alert('To calculate a price for your web site, it must have        \nat least one page.\n\nPlease enter the approximate number of web pages        \nyou envisage in the Page Design & Layout section,       \nthen click the Calculate button again.');
  else {
       dT = dT + parseFloat(form.elements['pageComplexity'].value) * (2 + (numPages * 0.3));

       var numOrigWords = parseFloat(form.elements['textOriginalWords'].value);
       dT = dT + parseFloat(form.elements['textOriginalFormat'].value) * (numOrigWords / 300); 
       dT = dT + parseFloat(form.elements['textDensity'].value) * numPages;

       var menuAnimFactor = parseFloat(form.elements['navigationMenuAnimation'].value);
       dT = dT + (parseFloat(form.elements['navigationMenu'].value) + (0.15 * numPages)) * menuAnimFactor;

       dT = dT + parseFloat(form.elements['effectsDHTMLComplex'].value) * 8;
       dT = dT + parseFloat(form.elements['effectsDHTMLAverage'].value) * 2.5;
       dT = dT + parseFloat(form.elements['effectsDHTMLSimple'].value) * 1.5;

       dT = dT + parseFloat(form.elements['effectsAnimGIFComplex'].value) * 6;
       dT = dT + parseFloat(form.elements['effectsAnimGIFAverage'].value) * 3;
       dT = dT + parseFloat(form.elements['effectsAnimGIFSimple'].value) * 1.5;

       dT = dT + parseFloat(form.elements['formsIndependentComplex'].value) * 14;
       dT = dT + parseFloat(form.elements['formsIndependentAverage'].value) * 10;
       dT = dT + parseFloat(form.elements['formsIndependentSimple'].value) * 4;

       V = parseFloat(form.elements['formsDatabaseComplex'].value); if (V > 0) dT = dT + (V * 10) + 30;
       V = parseFloat(form.elements['formsDatabaseAverage'].value); if (V > 0) dT = dT + (V * 8) + 22;
       V = parseFloat(form.elements['formsDatabaseSimple'].value);  if (V > 0) dT = dT + (V * 6) + 14;

       dT = dT + parseFloat(form.elements['visitorRegistration'].value);
       dT = dT + parseFloat(form.elements['securePurchasing'].value);
       dT = dT + parseFloat(form.elements['databaseType'].value);
       dT = dT + parseFloat(form.elements['publishingWeb'].value) * (numPages * 0.05);

       var sePromPages = numPages;
       if (sePromPages > 10) sePromPages = 10;
       var seProm = parseFloat(form.elements['searchEnginePromotion'].value);
       var sePromTime = seProm * sePromPages;
       dT = dT + sePromTime;

       if (dT < 8) dT = dT * 0.7;
       else if (dT < 12) dT = dT * 0.8;
       else if (dT < 16) dT = dT + 0.95;
       else if (dT > 150) dT = dT * 1.05;
 
       dF = dT * dR * dDiscount;
       if (dF < 130) dF = 130;
       form.elements['resultWebDesignFee'].value = roundEstimate(dF);


       var updateRate = parseFloat(form.elements['maintenanceFrequency'].value);
       if (updateRate > 0)
         {
         mT = 1.5;
         mT = mT + parseFloat(form.elements['maintenanceNumNonBespokeImages'].value) * 0.4;
         mT = mT + parseFloat(form.elements['maintenanceNumBespokeWords'].value) * (7 / 300);
         mT = mT + parseFloat(form.elements['maintenanceNumNonBespokeWords'].value) * (0.5 / 300);
         mT = mT * updateRate;

         if (parseFloat(form.elements['maintenanceSearchEngineResubmission'].value) > 0)
           {
           if (seProm > 0)
                  {
                  var seResubRate = updateRate; 
                  if (seResubRate > 6)
                    {
                    seResubRate = 6;
                    alert('PLEASE NOTE\n\nThe maintenance fee will include search-engine resubmission at      \nthe maximum recommended rate of once every two months.\n\n');
                    }
                  mT = mT + (seResubRate * sePromTime * 0.4);
                  }
             else alert('PLEASE NOTE\n\nSearch-engine resubmission as part of your maintenance contract     \nrequires search-engine promotion to be included in your initial design contract.  \n\nSearch-engine resubmission has been excluded from the maintenance fee.\n');
           }

         if (mT > 1500) mT = mT * 0.75;
         else if (mT > 1000) mT = mT * 0.85;
         else if (mT > 500) mT = mT * 0.95;
         else if (mT < 25) mT = mT * 1.5;
         if (mT < 16) mT = mT * 0.7;
         }

       mF = mT * mR * mDiscount;
       form.elements['resultAnnualMaintenanceFee'].value = roundEstimate(mF);
       }

return(true);
}