var mpUrl='modality/modality_pages.php';
var mDiv='modalityDIV';
var checkTXT='';

function ahah(url,vars, target) {
	document.getElementById(target).innerHTML =  'Verzoek wordt verwerkt.';
   if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {ahahDone(target);};
        req.open("POST", url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.send(vars);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {ahahDone(target);};
            req.open("POST", url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            req.send(vars);
        }
    }
}

function ahahDone(target) {
   // only if req is "loaded"
   if (req.readyState == 4) {
       // only if "OK"
       if (req.status == 200 || req.status == 304) {
           results = req.responseText;
           document.getElementById(target).innerHTML =  results;
       } else {
           document.getElementById(target).innerHTML="ahah error:\n" +
               req.statusText;
       }
   }
}

function ahahTXT(url) {
   if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {ahahDoneTXT();};
        req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {ahahDoneTXT();};
            req.open("GET", url, true);
            req.send();
        }
    }
	
}

function ahahDoneTXT() {
   // only if req is "loaded"
   if (req.readyState == 4) {
       // only if "OK"
       if (req.status == 200 || req.status == 304) {
           checkTXT = req.responseText;
       } 
   }
}


function ZMGetVal(el){
	var ret;
	field=document.getElementById(el);
	ret=eval('field.value');	
	return ret;
}

function ZMLogin(){
	var usercode=ZMGetVal('usercode');
	var password=ZMGetVal('password');
	if(usercode==''){
		alert('Vul uw gebruikersnaam in');
	} else if(password==''){
		alert('Vul uw wachtwoord in');
	} else{
		ahah(mpUrl, 'usercode=' + usercode + '&password=' + password, mDiv);
	}
}

function ZMStorage(numCon){
	var cargocardid=ZMGetVal('cargocardid');
	var inldate=ZMGetVal('inldate');
	var invref=ZMGetVal('invref');
	var conError=''; var urlAdd='';
	for(k=1;k<=numCon;k++){
		cntrF='cntr' + k;
		unittypeF='unittype' + k;
		var cntr=ZMGetVal(cntrF);
		var unittype=ZMGetVal(unittypeF);
		conError+=checkId('', cntr, document.getElementById(cntrF), k);
		var cntr=ZMGetVal(cntrF);
		urlAdd+='&' + cntrF + '=' + cntr + '&' + unittypeF + '=' + unittype;
	}
	if(cargocardid!=''){
		conError += checkCardId(cargocardid);
	}
	if((ZMCheckDate(inldate))!=1){
		conError += 'Ingegeven datum niet correct.\n';
	}
	if(invref==''){
		conError += 'Alle blauw gekleurde velden zijn verplicht.\n';
	}
	if(conError==''){
		vars = 'p=11&num=' + numCon + '&cargocardid=' + cargocardid + '&inldate=' + inldate + '&invref=' + invref + urlAdd;
		ahah(mpUrl, vars, mDiv);
	} else {
		alert(conError);
	}
}

function ZMImportBarge(numCon){
	var cargocardid=ZMGetVal('cargocardid');
	var invref=ZMGetVal('invref');
	var exmv=ZMGetVal('exmv');
	var etadate=ZMGetVal('etadate');
	var address_imp=ZMGetVal('address_imp');
	var inldate=ZMGetVal('inldate');
	var conError=''; var urlAdd='';
	for(k=1;k<=numCon;k++){
		cntrF='cntr' + k;
		unittypeF='unittype' + k;
		var cntr=ZMGetVal(cntrF);
		var unittype=ZMGetVal(unittypeF);
		conError+=checkId('', cntr, document.getElementById(cntrF), k);
		var cntr=ZMGetVal(cntrF);
		urlAdd+='&' + cntrF + '=' + cntr + '&' + unittypeF + '=' + unittype;
	}
	if(cargocardid!=''){
		conError += checkCardId(cargocardid);
	}
	if((ZMCheckDate(inldate))!=1){
		conError += 'Ingegeven datum (inland transportdatum) niet correct.\n';
	}
	if((ZMCheckDate(etadate))!=1){
		conError += 'Ingegeven datum (ETA) niet correct.\n';
	}
	if(invref=='' || exmv=='' || address_imp==''){
		conError += 'Alle blauw gekleurde velden zijn verplicht.\n';
	}
	if(conError==''){
		vars = 'p=41&num=' + numCon + '&cargocardid=' + cargocardid + '&invref=' + invref  +  '&exmv=' + exmv + '&etadate=' + etadate + '&address_imp=' + address_imp +  '&inldate=' + inldate + urlAdd;
		ahah(mpUrl, vars, mDiv);
	} else {
		alert(conError);
	}
}

function ZMExportBarge(numCon){
	var cargocardid=ZMGetVal('cargocardid');
	var invref=ZMGetVal('invref');
	var tomv=ZMGetVal('tomv');
	var deldate=ZMGetVal('deldate');
	var address_exp=ZMGetVal('address_exp');
	var conError=''; var urlAdd='';
	for(k=1;k<=numCon;k++){
		cntrF='cntr' + k;
		unittypeF='unittype' + k;
		var cntr=ZMGetVal(cntrF);
		var unittype=ZMGetVal(unittypeF);
		conError+=checkId('', cntr, document.getElementById(cntrF), k);
		var cntr=ZMGetVal(cntrF);
		urlAdd+='&' + cntrF + '=' + cntr + '&' + unittypeF + '=' + unittype;
	}
	if(cargocardid!=''){
		conError += checkCardId(cargocardid);
	}
	if((ZMCheckDate(deldate))!=1){
		conError += 'Ingegeven datum (Closing) niet correct.\n';
	}
	if(invref=='' || tomv=='' || address_exp==''){
		conError += 'Alle blauw gekleurde velden zijn verplicht.\n';
	}
	if(conError==''){
		vars = 'p=51&num=' + numCon + '&cargocardid=' + cargocardid + '&invref=' + invref  +  '&tomv=' + tomv + '&deldate=' + deldate + '&address_exp=' + address_exp +  urlAdd;
		ahah(mpUrl, vars, mDiv);
		
	} else {
		alert(conError);
	}
}

function ZMLeegInleveren(){
	var cargocardid=ZMGetVal('cargocardid');
	var inldate=ZMGetVal('inldate');
	var depotinref=ZMGetVal('depotinref');
	var address_shipcom=ZMGetVal('address_shipcom');
	var cntr=ZMGetVal('cntr');
	var unittype=ZMGetVal('unittype');
	conError=checkId('', cntr, document.getElementById('cntr'), '');
	var cntr=ZMGetVal('cntr');
	if(cargocardid!=''){
		conError += checkCardId(cargocardid);
	}
	if((ZMCheckDate(inldate))!=1){
		conError += 'Ingegeven datum niet correct.\n';
	}
	if(depotinref=='' || address_shipcom=='' || unittype==''){
		conError += 'Alle blauw gekleurde velden zijn verplicht.\n';
	}
	if(conError==''){
		vars = 'p=21&cargocardid=' + cargocardid + '&inldate=' + inldate + '&depotinref=' + depotinref + '&address_shipcom=' + address_shipcom + '&cntr=' + cntr + '&unittype=' + unittype;
		ahah(mpUrl, vars, mDiv);
		
	} else{
		alert(conError);
	}
	
}

function ZMLeegUithalen(){
	var cargocardid=ZMGetVal('cargocardid');
	var inldate=ZMGetVal('inldate');
	var depotoutref=ZMGetVal('depotoutref');
	var address_shipcom=ZMGetVal('address_shipcom');
	var cntr=ZMGetVal('cntr');
	var unittype=ZMGetVal('unittype');
	conError=checkId('', cntr, document.getElementById('cntr'), '');
	var cntr=ZMGetVal('cntr');
	if(cargocardid!=''){
		conError += checkCardId(cargocardid);
	}
	if((ZMCheckDate(inldate))!=1){
		conError += 'Ingegeven datum niet correct.\n';
	}
	if(depotoutref=='' || address_shipcom=='' || unittype==''){
		conError += 'Alle blauw gekleurde velden zijn verplicht.\n';
	}
	if(conError==''){
		vars='p=31&cargocardid=' + cargocardid + '&inldate=' + inldate + '&depotoutref=' + depotoutref + '&address_shipcom=' + address_shipcom + '&cntr=' + cntr + '&unittype=' + unittype;
		ahah(mpUrl, vars, mDiv);
		
	} else{
		alert(conError);
	}
	
}


function ZMshowPage(id){
	ahah(mpUrl, 'p=' + id, mDiv);
}

function ZMNext(id){
	num=ZMGetVal('zmnum');
	ahah(mpUrl, 'p=' + id + '&num=' + num , mDiv);
}

function checkCardId(cardId){
	var errortext = '';
	if(cardId.length != 6){
		errortext = 'Card-ID moet 6 cijfers bevatten.\n';
	} else{
		for(var j = 0; j < 6; j++){
			w = cardId.substr( j, 1);
			var code = w.charCodeAt(0);
			if((code<48) || code>57){
				errortext = 'Card-ID mag alleen uit cijfers bestaan.\n';
			}
		}
	}
	return errortext;
}

function checkId(t, waarde, veld, nr) { //v3.0
  var i = 1, errortext ='', cw = new Array();
  cw['0']=0, cw['1']=1, cw['2']=2, cw['3']=3, cw['4']=4, cw['5']=5, cw['6']=6, cw['7']=7; cw['8']=8, cw['9']=9;
  cw['A']=10, cw['B']=12, cw['C']=13, cw['D']=14, cw['E']=15, cw['F']=16, cw['G']=17, cw['H']=18, cw['I']=19, cw['J']=20;
  cw['K']=21, cw['L']=23, cw['M']=24, cw['N']=25, cw['O']=26, cw['P']=27, cw['Q']=28, cw['R']=29, cw['S']=30, cw['T']=31;
  cw['U']=32, cw['V']=34, cw['W']=35, cw['X']=36, cw['Y']=37, cw['Z']=38;
  if(nr!=''){
	nr='(' + nr + ') ';
  }
  while(waarde.length > 10 && i < 6){
        waarde = waarde.replace(' ','');
        i++;
        }
  // even mooi opmaken
  waarde = waarde.toUpperCase();
  var netjes = waarde.substr(0,4) + ' ' + waarde.substr(4,6) + ' ' + waarde.substr(10,1);
  veld.value=netjes;

  // als aantal in string groter dan 11 is dan waarschuwen
  if(waarde.length > 11)
          errortext += 'Het container nummer ' + nr + 'moet uit 11 characters bestaan. \n';
  else if(waarde.length < 11)
          errortext += 'Het container nummer ' + nr + 'moet uit 11 characters bestaan.  \n';
  else {

  	var multiply = 1, totSum = 0, w, begin = 0;

 	// review HLCU containers
  	if(waarde.substr(0,4)=='HLCU'){
		totSum += 84;
		begin = 4;
		multiply = 16;
		}

  	for(var j = begin ; j < 10; j++){
         w = waarde.substr( j, 1);
         totSum += multiply * cw[w];
         multiply *= 2;
         }

  	var controlegetal = totSum - 11 * Math.floor(totSum/11);
  	// regel: indien controlegetal gelijk is aan 10 dan 0 nemen
  	if(controlegetal == 10)
     	controlegetal=0;
  	w = waarde.substr( j, 1);
  	if(controlegetal != cw[w])
     	errortext += 'Container nummer ' + nr + 'voldoet niet aan de standaard. \n Het laatste getal zou ' + controlegetal + ' moeten zijn\n' ;

	// bekijk of de juiste letters / cijfers gebruikt zijn
    for(var k = 10 ; k >= 0; k--){
		w = waarde.substr(k,1);
		if(k >= 4){
			var code = w.charCodeAt(0);
			if((code<48) || code>57){
				errortext = 'Container nummer ' + nr + 'voldoet niet aan de standaard. \n De laatste 7 characters moeten numeriek zijn (0-9) \n' ;
				}
			}
		else{
		    // waarde moet character zijn
			var code = w.charCodeAt(0);
			if((code<65) || (code>90 && code<97) || code>122){
				errortext = 'Container nummer ' + nr + 'voldoet niet aan de standaard. \n De eerste 4 characters moeten letters zijn (A-Z) \n' ;
				}
		    }
		}
	}
  // bereken de formule
  // geef error indien nodig
  if( '' < errortext){
  	if(t == 'alert'){
		alert(errortext);
		}
	else{
		return errortext;
		}
	}
  else{
    //even juiste opmaak maken
    return '';
    }
}// einde function checkId()

function ZMCheckDate(d){
	var ret=0;
	if(d.length==8){
		var dag=parseInt(d.substring(0,1))*10 + parseInt(d.substring(1,2));
		var maand=parseInt(d.substring(2,3))*10 + parseInt(d.substring(3,4));
		var jaar=parseInt(d.substring(4,8));
		if(dag>0 && dag < 32 && maand >0 && maand < 13 && jaar>2006){
			ret=1;
		}
	}
	return ret;
}



