var base = document.getElementsByTagName('base')[0].href;


function newCargoDialog (cargo_id) {
  var close = new LertButton('Close Window', function() {
		cargo.close();  
  });

	var avis = new LertButton('Send avis now', function() {
		if (confirm('Send avis now?')) openWin('cargo/avis/' + cargo_id);
	});

	var label = new LertButton('Print label now', function() {
		document.location.href = base + 'pdf?url=cargo/label/' + cargo_id + '&type=label';
	});

	var message = "Please select what you want to do now:";
	var cargo = new Lert(
		message,
		[avis,label,close],
		{
			defaultButton:close,
			icon:'res/img/dialog-information.png'
		});

	cargo.display();  
}


function toggleUpdateBtn (id) {
  var checked = false;
  $$('.updateCheck_' + id).each(function(el){ 
    if (el.checked) checked = true; 
  });
  
  if (!checked) {
    $('updateBtn_' + id).setStyle('display', 'none');
  }else{
    $('updateBtn_' + id).setStyle('display', 'inline');
  } 
}


function toggleCargoList (id, direction) {
  var status = $('cargoList_' + id).getStyle('display');

  if (status == 'block' && direction != 1) {
    $('cargoList_' + id).setStyle('display', 'none');
    $('cargoList_' + id).set('html', '');
    $('cargoListToggle_' + id).innerHTML = '<img src="res/img/plus.gif">';
    toggleCargoSelector();        
  }else{
    $('cargoList_' + id).setStyle('display', 'block');
    $('cargoListToggle_' + id).innerHTML = '<img src="res/img/minus.gif">';
    submitAjax('cargoList_' + id, 'cargo_list', id);
    toggleCargoSelector(1);    
  } 
}


function toggleCargoSelector(direction){
  if (!$chk($('cargoSelector')))
    return;
    
  if (direction == 1) 
    $('cargoSelector').setStyle('display', 'block');
  else {
    if ($$('.updateCheck').length == 0) 
      $('cargoSelector').setStyle('display', 'none');
  }    
}


function editPackages () {
  packages = window.prompt ('Number of packages:', '');
  if (packages) $('countPackages').innerHTML = packages;
}


function submitWarehouseReport(){
  elems = $$('.updateCheck:checked');
  if (elems.length == 0) {
    alert('No cargos selected.');
    return;
  }
  
  temp = new Array;
  for(i=0; i<elems.length;i++){
    temp[i] = 'cargoSelected[]=' + elems[i].get('value');
  }
  
  openWin('cargo/warehouse_report?' + temp.join('&'));
}


function editWeight () {
  weight = window.prompt ('Weight:', '');
  if (weight) {
    $('countWeight').innerHTML = weight;
    $('value1').innerHTML = ajaxReq('calc_value', weight + '&multiplier=27');
    $('value2').innerHTML = ajaxReq('calc_value', weight + '&multiplier=2.4');
    $('value3').innerHTML = ajaxReq('calc_value', weight + '&multiplier=10');
    $('value4').innerHTML = ajaxReq('calc_value', weight + '&multiplier=6');
  }
}


function toggleArchive () {
  var status = $('archive').getStyle('display');

  if (status == 'block') {
    $('archive').setStyle('display', 'none');
  }else{
    $('archive').setStyle('display', 'block');
  } 
}


function updateStatus (selector, cargo_id) {
  if (!confirm('Change the status of this cargo to "' + selector.value + '"?')) return false;
  
  var avis = 'no';
  if (confirm('Send avis?')) avis = 'yes';
  alert(ajaxReq('update_status', 'cargo_id=' + cargo_id + '&new_status=' + selector.value + '&avis=' + avis));
  
}


function selectManifestData(className) {
  $$('.cargoManifestInpt').each(function(el){ el.checked = false; });
  
  if (className == 'select_all') {
    $$('.cargoManifestInpt').each(function(el){ el.checked = true; });
  } else if (className != 'deselect_all') {
    $$('.' + className).each(function(el){ el.checked = true; });
  }
}


function selectCargos(action) {
  $$('.updateCheck').each(function(el){ el.checked = false; });
  $$('.updateBtn').setStyle('display', 'none');
  
  if (action == 'select') {
    $$('.updateCheck').each(function(el){ el.checked = true; });
    $$('.updateBtn').setStyle('display', 'inline');
  }
}

function toggleSearchForm () {
  var status = $('search').getStyle('display');

  if (status == 'block') {
    $('search').setStyle('display', 'none');
  }else{
    $('search').setStyle('display', 'block');
  } 
}


function openAllVessels () {
  $$('.cargoList').each(function(el){ 
    splitted = el.id.split('_');
    toggleCargoList(splitted[1], 1);
  });
}
  
  
function openWin (url) {
  if (!url.search('http') != -1) url = base + url;
  
  if (url.search('/?/')) {
    url += '&';
  }else{
    url += '?';
  }
  
  window.open(url + 'popup=1', "Data", "width=800,height=500,scrollbars=yes");
}


function popupForm (myform, windowname){
  if (!window.focus) return true;
  window.open('', windowname, "width=800,height=500,scrollbars=yes");
  myform.target = windowname;
  return true;
}


function handleFormField (name) {
  window.open(base + 'data/add/' + name + '?popup=1', "Data", "width=400,height=250");
}


function returnToHome () {
  if (confirm('Return to home screen?'))
    document.location.href = 'home?cf=1';
}


function replaceInOpener(id, value) {
  opener.submitAjax(id, 'load_data', value);
}


function reloadData(id) {
  submitAjax(id, 'load_data', id);
}


function loadCargoCounts () {
  var elems = $$('.cargoCount');
  var i = 0;
  
  elems.each(function(el){    
    el.set('html', '<img src="res/img/loader.gif">');
    splitted = el.id.split('_');

    var req = new Request({
        method: 'post', 
        async: true,
        url: base + 'ajax.php', 
        onSuccess: function(html,elem,plain) {
          i++;
    			el.set('text', '');
    			el.set('html', html);
          
          percent = Math.ceil(i / elems.length * 100);
          if (percent >= 100) {
            $('cargoCountStatusWrap').setStyle('display', 'none');
          }else{
            $('cargoCountStatus').setStyle('width', percent + '%');
          }
    		}
  	  });
  	  
  	req.send('job=cargo_count&val=' + splitted[1]);
  });
}


function loadVessels (id) {
  submitAjax('ships', 'load_vessel_selector', id + ';' + $('privilege').value + ';' + $('company_id').value);
}


function submitCompany (companyId) {
  document.location.href= base + 'companies/edit/' + companyId;
}


function submitData (type, dataId) {
  document.location.href=base + 'data/edit/' + type + '/' + dataId;
}


function submitUser (userId) {
  document.location.href=base + 'users/edit/' + userId;
}


function submitVessel (vesselId) {
  document.location.href=base + 'vessels/edit/' + vesselId;
}


function checkCompanyName () {
  var companyName = $('company').value;
  return ajaxReq('check_company_name', companyName);
}


function IsNumeric(sText) {
  var ValidChars = "0123456789.";
  var IsNumber = true;
  var Char;

  for (i = 0; i < sText.length && IsNumber == true; i++) {
    Char = sText.charAt(i);
    if (ValidChars.indexOf(Char) == -1) {
      IsNumber = false;
    }
  }
  return IsNumber;

}


function hoch(zahl, faktor) {
  var ergebnis = zahl;
  for (var i = 2; i <= faktor; i++) {
    ergebnis = ergebnis * zahl;
  }
  return ergebnis;
}


function round_float(no, n) {
  return Math.round(no * hoch(10, n)) / hoch(10, n);
}


function calcCubic () {
  var dimensions = $('dimensions').value;
  var lines = dimensions.split("\n");
  
  var cubic = 0;
  var error = '';
    
  lines.each(function(line){ 

    var vals = line.replace(new RegExp( "\\r|\\n", "g" ), "").split('x');
    var cur_error = false;
    var $amount = 1;
    
    if (!vals[0] || !IsNumeric(vals[0])) cur_error = true;
    if (!vals[1] || !IsNumeric(vals[1])) cur_error = true;
    if (!vals[2] || !IsNumeric(vals[2])) cur_error = true;
    if (vals[3] && IsNumeric(vals[3])) $amount = vals[3];
    
    if (cur_error) 
      error += 'Line "' + line + '" is incorrect<br>';
    else
      cubic += vals[0] * vals[1] * vals[2] * $amount;
  });
  
  $('cubic').innerHTML = (error ? error : '') + round_float(cubic / 1000000, 2);
}


function checkLogin () {
  var login = $('login').value;
  return ajaxReq('check_login', login);
}


function checkCompanyInput () {
  if (checkCompanyName() == 1) {
    alert('Company name already taken.'); 
    return false;
  }
  
  if (checkLogin() == 1) {
    alert('Login already taken.'); 
    return false;
  }
}


function submitAjax(id, job, val) { 
  $(id).set('text', '');
  $(id).set('html', '<img src="res/img/loader.gif">');

  var req = new Request({
      method: 'post', 
      async: true,
      url: base + 'ajax.php', 
      onSuccess: function(html,elem,plain) {
  			$(id).set('text', '');
  			$(id).set('html', html);
  		}
	  });
	  
	req.send('job=' + job + '&val=' + val);
}


function ajaxReq (job, val) {
  var req = new Request({url:base + 'ajax.php',
      method: 'post', 
      async: false,

      onSuccess: function(html) {
  			ajaxVal = html;
  		}
	  });
    
  req.send('job=' + job + '&val=' + val);
	return ajaxVal; 
}
