var newspapers = Array();
var newspaper_name;
var color = 0;
var color_name;
var extras = Array();
var page = 0;
var page_name;
var modules = 0;
var module_name;
var repeats = 1;
// This count keeps track of how many discount enabling products have been
// selected. 0 means no discount should be applied.
var discount = 0;
var enable_discount_counter = 0;
var fullpage = false;

var surface_size = 0;
var zett_extra = false;
var finn_extra = false;
var materials_extra = false;

function changeNewspaper(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;

   newspapers = Array();
   enable_discount_counter = 0;
   var o = document.getElementById('notes-field');
   o.innerHTML = '';
   for(i = 0; i < src.options.length; i++) {
      if(src.options[i].selected) {
         newspapers = newspapers.concat(i);         
         o.innerHTML += notes[i] + "<br><br>";         
         if(enable_discount[i]) {
            enable_discount_counter++;
         }
      }
   }
   calcPrice();
}

function setNewspaperProxy(objName,checked){
	
	arrSplit = objName.split("[");
	name = arrSplit[1];
	pos  = name.indexOf("]"); 
	newspaper = name.substr(0,pos);
	//alert(objName);
	//alert(newspaper);	
	//alert(checked);
	objNewsOriginal = document.getElementById('calc[newspaper]');
	
	objNewsOriginal.options[newspaper].selected = checked;
	
	//On IE
	if(objNewsOriginal.fireEvent)
	{
		objNewsOriginal.fireEvent('onchange');
	}
	
	//On Gecko based browsers
	if(document.createEvent)
	{
		var evt = document.createEvent('HTMLEvents');
		if(evt.initEvent)
		{
			evt.initEvent('change', true, true);
		}
		
		if(objNewsOriginal.dispatchEvent)
		{
			objNewsOriginal.dispatchEvent(evt);
		}
	}
	
	
}


function changeAd(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
  
	obj = document.getElementById('calcreal[ad]');
	//src.name = 1,2,3 : zett,finn,prod
	if(src.checked){
		obj.value = obj.value + src.name + ';';
		if(src.name == 1){			
			zett_extra	= true;
		}else if(src.name == 2){
			finn_extra	= true;
		}else if(src.name == 3){
			materials_extra	= true;
		}
	}else{
		obj.value = obj.value.replace(src.name + ';','');
		if(src.name == 1){
			zett_extra	= false;
		}else if(src.name == 2){
			finn_extra	= false;
		}else if(src.name == 3){
			materials_extra	= false;
		}
	}
		 
	calcPrice();	
}

function changeRepeats(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
  repeats = src.value;
  calcPrice();
}

function changeDiscount() {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
  discount = src.value;
  calcPrice();
}

function changeMaterials(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
   materials_extra = src.checked;
   calcPrice();
}

function changePage(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
  resetTable('page' + page);
  var o = document.getElementById('page' + page);
  o.style.display = 'none';
  page = src.value;
  page_name = src.options[src.selectedIndex].text;
  o = document.getElementById('page' + page);
  o.style.display = 'block';
  o=document.getElementById('calcreal[module]');
  o.value = '';
  calcPrice();
}

function changeColor(e) {
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
  color = src.value;
  color_name = src.options[src.selectedIndex].text;
  calcPrice();
}

function changeExtras(e) {
   extras = Array();
	var eo = (window.event)?window.event:e;
	var src = (eo.target)?eo.target:eo.srcElement;
   for(i = 0; i < src.options.length; i++) {
      if(src.options[i].selected) {
         extras = extras.concat(i);
      }
   }
   calcPrice();
}

function resetTable(id) {
  table = document.getElementById(id);
  for(r = 0; r < table.rows.length; r++) {
    for(c = 0; c < table.rows[r].cells.length; c++) {
      if(table.rows[r].cells[c].className != 'unselectable') {
        table.rows[r].cells[c].className = 'selectable';
      }
    }
  }
  modules = 0;
  surface_size = 0;
  fullpage = false;
}

function prepareOrder() {

	var oModule = document.getElementById('calcreal[module]');
	var oCrColors = document.getElementById('calcreal[colors]');
	var oCColors = document.getElementById('calc[colors]');
	var oCrPlacement = document.getElementById('calcreal[placement]');
	var oCCPlacement = document.getElementById('calc[placement]');
	var oCrNewspapers = document.getElementById('calcreal[newspapers][]');
	var oCrPrices = document.getElementById('calcreal[prices][]');
	var oCrNewspaper = document.getElementById('calcreal[newspaper]');
	var oCCNewspaper = document.getElementById('calc[newspaper]');
	
   if(!oModule.value) {
      alert('Ingen modul valgt!');      
   }
   oCrColors.value = oCColors.options[oCColors.selectedIndex].innerHTML;
   oCrPlacement.value = oCCPlacement.options[oCCPlacement.selectedIndex].innerHTML;
   for(i = 0; i < newspapers.length; i++) {
      product = newspapers[i];
      oCrNewspapers.options[product].selected = true;
      oCrPrices.options[product].selected = true;
   }
   oCrNewspaper.value = oCCNewspaper.options[oCCNewspaper.selectedIndex].innerHTML;
   
}


function previewAdd(){
	var oCCPlacement = document.getElementById('calc[placement]');
	
	/*
	 * 0 = tekstside
	 * 	path= TXTmoduler
	 * 1 = almplass
	 *   path= ANNmoduler
	 * 2 = arbeidsmarked
	 *   path= ANNmoduler
	 * 3 = arbeidsmarked_henv
	 *   path= ANNmoduler
	 * 4 = spesialside
	 *   path= TXTmoduler
	 * 5 = sisteside
	 *   path= TXTmoduler
	 * 6 = forsteside
	 *   path= Forsidemoduler
	 */
	placement = oCCPlacement.options[oCCPlacement.selectedIndex].value;	
	module = document.getElementById('calcreal[module]').value;
	
	path = "/img/medianor160909/";
	if(placement == 0 || placement == 4 || placement == 5)
		path = path + 'TXTmoduler/';
	else if(placement == 1 || placement == 2 || placement == 3 )
		path = path + 'ANNmoduler/';
	else if(placement == 6)
		path = path + 'Forsidemoduler/';
	
	if(placement == ''){
		alert('Du må velge plassering!');
		return false;
	}
		
	
	if(module == '')
		alert('Du må huske å velge en modul!');
	else
		window.open(path + module + '.pdf','Preview')
}

function calcPrice() {
   
   output = document.getElementById('calc-price');

   // Clear old calculation
   output.style.display = 'block';
   while(output.rows.length) {
      output.deleteRow(0);
   }

   // Recalculate price
   //newspaper_name = document.all['calc[newspaper]'].options[document.all['calc[newspaper]'].selectedIndex].text;
   totalPrice = 0;
   if(fullpage) {
      price = 0;
      for(i = 0; i < newspapers.length; i++) {
         product = newspapers[i];
         var oCNewspaper = document.getElementById('calc[newspaper]');
         productName = oCNewspaper.options[product].text;
         productPrice = fullpage_prices[product][page][color] * repeats;
         if(discounts[product] && enable_discount_counter) {
            productPrice *= ((100 - discounts[product]) / 100.0);
            productName += " (-" + discounts[product] + "%)";
         }
         var oCrPrices = document.getElementById('calcreal[prices][]');
         oCrPrices.options[product].value = productPrice;
         totalPrice += productPrice;
         printPrice(productName, Math.round(productPrice));
      }
   } else {
      price = 0;
      for(i = 0; i < newspapers.length; i++) {
         product = newspapers[i];
         var oCNewspaper = document.getElementById('calc[newspaper]');
         productName = oCNewspaper.options[product].text;
         productPrice = 0;
         // Figure out how many modules
         //alert(color);
         //alert(page);
         var placement = document.getElementById('calc[placement]');
         
         colorModules = 0;         
         if(color != 0) {
            
            if(placement.length == 6){ //Mediasite
	            if(page == 1 || page == 2){//Ref: Modulkart element 2 dvs annonse         		
	         			newcolor =  parseInt(color) + 2;          		
	            }else if(page == 5){//Ref: Modulkart element 6 dvs førsteside
	            	newcolor =  parseInt(color) + 4;          		
	            }else{
		            newcolor = color;	           
		          }
		        }else if(placement.length == 7){ //Medianor
		        	if(page == 1 || page == 2 || page == 3){//Ref: Modulkart element 2 dvs annonse         		
	         			newcolor =  parseInt(color) + 2;          		
	            }else if(page == 6){//Ref: Modulkart element 6 dvs førsteside
	            	newcolor =  parseInt(color) + 4;          		
	            }else{
		            newcolor = color;	           
		          }
		        }
		        
		        
	          if(color == 1 || color == 3) { // 1 Color selected
	              minPos = 0;
	              maxPos = 1;
	          } else if(color == 2 || color == 4) { // 3 Colors selected
	              minPos = 2;
	              maxPos = 3;
	          }
            colorModules = Math.min(Math.max(modules, module_limits[product][minPos]), module_limits[product][maxPos]);
         }else
         	newcolor = color;	 
                                    
         productPrice = ((prices[product][page] * modules) + (color_prices[product][newcolor] * colorModules)) * repeats;
         if(discounts[product] && enable_discount_counter) {
            productPrice *= ((100 - discounts[product]) / 100.0);
            productName += " (-" + discounts[product] + "%)";
         }
         var o = document.getElementById('calcreal[prices][]');
         o.options[product].value = productPrice;
         totalPrice += productPrice;
         printPrice(productName, Math.round(productPrice));
      }
   }
   
   if(zett_extra) {	      
	   $('calcreal[zett]').value =  Math.round(zett_price);
	   printPrice(txtZett, Math.round(zett_price));
	   totalPrice += zett_price;
   }else
	   $('calcreal[zett]').value =  '';
   
   if(finn_extra) {
	   $('calcreal[finn]').value =  Math.round(finn_price);
	   printPrice(txtFinn, Math.round(finn_price));
	   totalPrice += finn_price;
   }else
	   $('calcreal[finn]').value =  '';
   
   if(materials_extra) {
      productPrice = materials_price * surface_size;
      $('calcreal[prod]').value =  Math.round(productPrice);
      printPrice(txtProduction, Math.round(productPrice));
      totalPrice += productPrice;
   }else
	   $('calcreal[prod]').value =  '';
  
   
   //Add discount on total price
   if(discount != 0)
   		totalPrice = totalPrice - (totalPrice * 	discount/100);   
   
   var obj = document.getElementById('calc-price-sum');
   obj.innerHTML = Math.round(totalPrice) + ' ' + txtCurrency;
}

function printPrice(desc, price) {
   row = output.insertRow(output.rows.length);
   descCell = row.insertCell(0);
   priceCell = row.insertCell(1);

   descCell.width = '100%';
   descCell.innerHTML = desc;
   priceCell.innerHTML = price;
   priceCell.align = 'right';
}

function calcFullPrice() {

}


function selectModule(e) {

	var eo = (window.event)?window.event:e;
	var cell = (eo.target)?eo.target:eo.srcElement;

	var par = cell;

	while(cell.tagName != 'TD') {
		cell = cell.parentNode;
	}

  while(par.tagName != 'TR') {
	  par = par.parentNode;
  }

	cls = par.cells;
	for (i=0; i< cls.length; i++) {
		c = cls[i];
		if (c == cell) {
			break;
		}
	}
	colPos = i;

  if(cell.id.indexOf('a') != -1) {
    module = cell.id.substr(1, cell.id.length - 2);
  } else {
    module = cell.id.substr(1);
  }

  cell = cell.parentNode;
	rowPos = cell.rowIndex;

  module_name = module;
  var obj = document.getElementById('calcreal[module]');
  obj.value = module;
  table = cell.parentNode;
  while(table.tagName != 'TABLE' && table.parentNode) {
    table = table.parentNode;
  }

  // Clear old selection
  resetTable(table.id);

  /*  Overflaten beregnes som høyde * antall spalter, antallet spalter er gitt
      ved antall celler i bredden - posisjonen til valgt celle...
   */
  var cn = cell.childNodes[1];
	if (cn.childNodes.length == 5) {
		cn = cn.childNodes[3];
	} else {
		cn = cn.childNodes[1];
	}
	surface_size = cn.innerHTML.split('x');
  surface_size = surface_size[0] * (table.rows[0].cells.length - colPos);

  modules = 0; // Holds number of modules selected
  // Color all modules from the selected one and two the bottom righthand corner of the map.
  for(r = rowPos; r < table.rows.length; r++) {
    for(c = colPos; c < table.rows[r].cells.length; c++) {
      if(table.rows[r].cells[c].className != 'unselectable') {
        table.rows[r].cells[c].className = 'selected';
        // If module id contains 'a' or 'b' the cell is a half module
        if(table.rows[r].cells[c].id.indexOf('b') != -1 || table.rows[r].cells[c].id.indexOf('a') != -1) {
          modules += 0.5;
        } else {
          modules++;
        }
      }
    }
  }
  if(colPos == 0 && rowPos == 0) {
    fullpage = true;
  } else {
    fullpage = false;
  }
  calcPrice();
}

function Validate_Email_Address(email_address)
         {
         if(email_address == "")
         	return true;
         
         //Assumes that valid email addresses consist of user_name@domain.tld
         at = email_address.indexOf('@');
         dot = email_address.indexOf('.');
         
         if(at == -1 || 
            dot == -1 || 
            dot <= at + 1 ||
            dot == 0 || 
            dot == email_address.length - 1)
            return(false);
            
         user_name = email_address.substr(0, at);
         domain_name = email_address.substr(at + 1, email_address.length);                  
         
         if(Validate_String(user_name) === false || 
            Validate_String(domain_name) === false)
            return(false);                     
         
         return(true);
         }

