/********************************************************************************************************************
	Globala variabler
********************************************************************************************************************/
var myArray;

/********************************************************************************************************************
	Allmänna funktioner
********************************************************************************************************************/
// Cross Browser DOM
// copyright Stephen Chapman, 4th Jan 2005
// you may copy this code but please keep the copyright notice as well
var aDOM = 0, ieDOM = 0, nsDOM = 0; var stdDOM = document.getElementById;
if (stdDOM) aDOM = 1; else {ieDOM = document.all; if (ieDOM) aDOM = 1; else {
var nsDOM = ((navigator.appName.indexOf('Netscape') != -1)
&& (parseInt(navigator.appVersion) ==4)); if (nsDOM) aDOM = 1;}}
function xDOM(objectId, wS) {
if (stdDOM) return wS ? document.getElementById(objectId).style:
document.getElementById(objectId);
if (ieDOM) return wS ? document.all[objectId].style: document.all[objectId];
if (nsDOM) return document.layers[objectId];
}    

// Object Functions
// copyright Stephen Chapman, 4th Jan 2005
//  you may copy these functions but please keep the copyright notice as well
function objWidth(objectID) {
	var obj = xDOM(objectID,0); 
	if(obj.offsetWidth) 
	return  obj.offsetWidth; 
	if (obj.clip) 
	return obj.clip.width; 
	return 0;
}        

function objHeight(objectID) {
	var obj = xDOM(objectID,0); 
	if(obj.offsetHeight) 
	return  obj.offsetHeight; 
	if (obj.clip) 
	return obj.clip.height; 
	return 0;
}


//Tar reda på vart någonstans på sidan som lagret anropas.
function findPos(obj, returnType) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	if(returnType == "x"){
		return curleft;
	} else {
		return curtop;
	}
	//return [curleft,curtop];
}

// Browser Window Size and Position
// copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
// you may copy these functions but please keep the copyright notice as well
function pageWidth() {
	return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
} 
function pageHeight() {
	return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}

function toggleDisplay(toggleID){
	var obj = document.getElementById(toggleID);
	if(obj.style.display == 'none'){
		obj.style.display = 'block';
	} else {
		obj.style.display = 'none';
	}
}

function loadWorker_deprecated(userID, languageID){
	xajax_getMyWorker(userID, languageID);
}

function setDragPosition(myId, x,y, height, width){
	if(x){
		document.getElementById(myId).style.left = (x - (width/2)) + 'px';
		document.getElementById(myId).style.top = (y - (height/2)) + 'px';
	} else {
		document.getElementById(myId).style.left = (pageWidth()/2) + 'px';
		document.getElementById(myId).style.top = (pageHeight()/2) + 'px';
	}
	
}

function buildFieldList(fieldArray, totalRows, totalColumns){
	var countRows = 0;
	var countColumns = 0;
	var returnThis = '<!--start--><br /><br />';
	
	while(countRows < totalRows){
		returnThis += '<div id="priorInvoices[row' + countRows + ']" class="fieldListRow';
		if(countRows % 2){
			returnThis += '_colored';
		}
		returnThis += '" >';
		while(countColumns < totalColumns){
			returnThis += '<div id="priorInvoices[row' + countRows + '][column' + countColumns + ']" class="' + fieldArray[countRows][countColumns]['class'] + '">' + fieldArray[countRows][countColumns]['value'] + '</div>';
			countColumns++;
		}
		countColumns = 0;
		returnThis += '</div><br />\r\n';
		countRows++;
	}
	returnThis += '<!--end-->';
	document.getElementById('spantest').innerHTML = returnThis;
}

function buildFieldTable(fieldArray, totalRows, totalColumns){
	var countRows = 0;
	var countColumns = 0;
	var returnThis = '<!--start--><table>';
	
	while(countRows < totalRows){
		returnThis += '<tr id="priorInvoices[row' + countRows + ']" class="fieldTableRow';
		if(countRows % 2){
			returnThis += '_colored';
		}
		returnThis += '" >';
		while(countColumns < totalColumns){
			returnThis += '<td id="priorInvoices[row' + countRows + '][column' + countColumns + ']" class="' + fieldArray[countRows][countColumns]['class'] + '">' + fieldArray[countRows][countColumns]['value'] + '</td>';
			countColumns++;
		}
		countColumns = 0;
		returnThis += '</tr>\r\n';
		countRows++;
	}
	returnThis += '</table><!--end-->';
	document.getElementById('spantest').innerHTML = returnThis;
}



function createMultiArray(totalRows, totalColumns){
var i;
var j;
   var multiArray = new Array(totalRows);
   for (i=0; i < totalRows; i++)
   {
       multiArray[i] = new Array(totalColumns);
       for (j=0; j < totalColumns; j++)
       {
           multiArray[i][j] = 'notSet';
           multiArray[i][j] = new Array();
           multiArray[i][j]['value'] = 'notSet';
       }
   }
   return(multiArray);
}

function getPriorInvoices_deprecated(userID, type){
	//var myArray = new Array();
	feed = importXML('includes/xml_common.inc.php?action=getPriorInvoices&userID=' + userID);
	if(feed){
		var countFrom = 0;
		var countTo = feed.getElementsByTagName('posts')[0].getAttribute('value');
		var createRows = countTo + 1;
		myArray = createMultiArray(createRows, 5);
		
		myArray[countFrom][0]['value'] = 'Faktura#';
		myArray[countFrom][0]['class'] = 'fieldListTableHead50';
		myArray[countFrom][1]['value'] = 'Uppdragsgivare';
		myArray[countFrom][1]['class'] = 'fieldListTableHead250';
		myArray[countFrom][2]['value'] = 'Ort';
		myArray[countFrom][2]['class'] = 'fieldListTableHead100';
		myArray[countFrom][3]['value'] = 'Arbetsdatum';
		myArray[countFrom][3]['class'] = 'fieldListTableHead100';
		myArray[countFrom][4]['value'] = 'Status';
		myArray[countFrom][4]['class'] = 'fieldListTableHead100';
		countFrom++;
		
		while(countFrom < countTo){
			myArray[countFrom][0]['value'] = '<a href="t_show.invoice.php?invoiceID=' + feed.getElementsByTagName('invoiceID' + countFrom)[0].getAttribute('value') + '">' + feed.getElementsByTagName('invoiceID' + countFrom)[0].getAttribute('value') + '</a>';
			myArray[countFrom][0]['class'] = 'fieldListTable50';
			if(countFrom % 2){myArray[countFrom][0]['class'] += '_colored';}
			myArray[countFrom][1]['value'] = feed.getElementsByTagName('name' + countFrom)[0].getAttribute('value');
			myArray[countFrom][1]['class'] = 'fieldListTable250';
			if(countFrom % 2){myArray[countFrom][1]['class'] += '_colored';}
			myArray[countFrom][2]['value'] = feed.getElementsByTagName('city' + countFrom)[0].getAttribute('value');
			myArray[countFrom][2]['class'] = 'fieldListTable100';
			if(countFrom % 2){myArray[countFrom][2]['class'] += '_colored';}
			myArray[countFrom][3]['value'] = feed.getElementsByTagName('descriptionDate' + countFrom)[0].getAttribute('value');
			myArray[countFrom][3]['class'] = 'fieldListTable100';
			if(countFrom % 2){myArray[countFrom][3]['class'] += '_colored';}
			myArray[countFrom][4]['value'] = feed.getElementsByTagName('invoiceUserStatusName' + countFrom)[0].getAttribute('value');
			myArray[countFrom][4]['class'] = 'fieldListTable100';
			if(countFrom % 2){myArray[countFrom][4]['class'] += '_colored';}
			countFrom++;
		}
		buildFieldTable(myArray, countTo, 5);
	}
}

/*
	Skickar med XML/AJAX e-postadressen till en funktion som kontrollerar ifall den nya e-postadressen
	är godkänd att använda.
*/
function approveEmail(userID){
	email = document.getElementById('updateUser[email]').value;
	if(validateEmail('updateUser[email]')){
		feed = importXML('includes/xml_common.inc.php?action=approveEmail&email=' + email + '&userID=' + userID);
		if(feed){
			if(feed.getElementsByTagName('approveEmail')[0].getAttribute('value') == 1){
				//E-postadressen är godkänd, ingenting behöver göras.
				document.getElementById('alertEmail').innerHTML = '';
			} else {
				//E-postadressen är inte godkänd, meddela användaren om detta.
				document.getElementById('alertEmail').innerHTML = '* (' + getTranslation("emailNotApproved") + ')';
			}
		}
	} else {
		//E-postadressen godkändes inte som e-postadress.
		document.getElementById('alertEmail').innerHTML = '* (' + getTranslation("emailNotApprovedFormat") + ')';
		return false;
	}
	
	
}

/********************************************************************************************************************
	Valideringar
********************************************************************************************************************/
function validatePassword(firstPassword, secondPassword){
	firstPassword = document.getElementById(firstPassword).value;
	secondPassword = document.getElementById(secondPassword).value;
	
	//Kontrollerar så att lösenordet inte är för kort.
	if(firstPassword.length < 5 && secondPassword.length < 5){
		return false;
	}
	
	if(firstPassword == secondPassword){
		return true;
	} else {
		return false;
	}
}

function validateField(thisField, formOkey){
	if(document.getElementById(thisField).value.length < 1){
		document.getElementById(thisField).style.backgroundColor = '#ff0000';
		document.getElementById(thisField).style.color = '#ffffff';
		document.getElementById(thisField).style.fontWeight = 'bold';
		return false;
	} else {
		document.getElementById(thisField).style.backgroundColor = '';
		document.getElementById(thisField).style.color = '';
		document.getElementById(thisField).style.fontWeight = '';
		return formOkey;
	}
}

function editUserListener()
{
	var formOkey = true;
	formOkey = validateField('updateUser[firstName]', formOkey);
	formOkey = validateField('updateUser[lastName]', formOkey);
	formOkey = validateField('updateUser[street]', formOkey);
	formOkey = validateField('updateUser[zip]', formOkey);
	formOkey = validateField('updateUser[city]', formOkey);
	formOkey = validateField('updateUser[accountClearingNr]', formOkey);
	formOkey = validateField('updateUser[accountNr]', formOkey);
	formOkey = validateField('updateUser[email]', formOkey);
	
	if(formOkey == true){
		document.getElementById('submit').disabled = false;
	} else {
		document.getElementById('submit').disabled = true;
	}
}

//En funktion som ser till att man inte kan fylla i annat än siffror i textfältet. ASCII
function onlyNumbers(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	return ((k > 47 && k < 58) || k == 8);
}

//En extra funktionalitet/kontroll. Ifall man klistrar in otillåtet tecken raderas dem från fältet.
function extractAlpha(str) {
	return str.replace(/[^0-9]/gi,"");
}

//En funktion som ser till att man inte kan fylla i annat än siffror i textfältet. ASCII
function allowAsPassword(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	return ( k == 33 || (k >= 35 && k <= 38) || k == 45 || k == 46 || (k >= 48 && k <= 57) || (k >= 63 && k <= 90) || (k >= 97 && k <= 122) || k == 8);
}

function allowAsZip(e) {
	var k;
	document.all ? k = e.keyCode : k = e.which;
	return ((k > 47 && k < 58) || k == 8 || k == 32);
}

function validateEmail(validateThis) {
 	text=document.getElementById(validateThis).value;
	if(text==""){
		return false;
	} else {
		var r = /^([-_a-zA-Z0-9]+(\.?[-_a-zA-Z0-9]+)*)+@[-a-zA-Z0-9]+(\.[-a-zA-Z0-9]+)*\.[a-zA-Z]{2,6}$/
		return r.test(text); // Returnerar true eller false
	}
	return false;
 }
 
function validateSocialSecurityNr(sPNum)
{
	//Tar bort bindestreck ifall man har lagt in det.
	sPNum = sPNum.replace('-', '');
	
	//Lägger till 19 framför ifall det saknas.
	if(sPNum.length < 11){
  		sPNum = '19' + sPNum;
  	}
	
  	if(sPNum == '198001011535' || sPNum == '198002021425' || sPNum == '197003035465' || sPNum == '197504041647' || sPNum == '198705022426' || sPNum == '198009097485' || sPNum == '196505048462' || sPNum == '196709018561' || sPNum == '197208046147' || sPNum == '198601056431' || sPNum == '195708097615' || sPNum == '196107134613' || sPNum == '194910209015' || sPNum == '198503057089' || sPNum == '198112068431' || sPNum == '197610141642' || sPNum == '197412141614' || sPNum == '195508079084' || sPNum == '198504068545' || sPNum == '197810171243'){
  		return true;
  	}
	
  var numbers = sPNum.match(/^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/);
  var checkSum = 0;
  
  var d = new Date();
//  alert(sPNum.substring(0,4)+":"+sPNum.substring(4,6)+":"+sPNum.substring(6,8));
  if (!isDate(sPNum.substring(0,4),sPNum.substring(4,6),sPNum.substring(6,8))) {
    //alert("Datumet " + sPNum.substring(0,8) + " är inte korrekt.");
    return false;
  };

  if (numbers == null) { return false; }

  var tmp;
  for (var i = 3; i <= 12; i++)
  {
    if (i % 2 == 0) {
      checkSum+=parseInt(numbers[i]);
    } else {
      checkSum+=(parseInt(numbers[i])*2)%9
    }
  }

  if (checkSum%10==0) { return true;}
  return false;
}

function getYear(y) {
	return (y < 1000) ? y + 1900 : y;
}

function isDate(year, month, day) {
  month = month - 1; // 0-11 in JavaScript
  var tmpDate = new Date(year,month,day);
  if ( (getYear(tmpDate.getYear()) == year) &&
  (month == tmpDate.getMonth()) &&
  (day == tmpDate.getDate()) )
    return true;
  else
    return false;
}
 
 function getPassword_deprecated(){
 	var myString = document.getElementById('emailOrSSNr').value;
 	if(myString.length < 1){
 		document.getElementById('getPasswordMessage').innerHTML = getTranslation('stringTooShort');
 	} else {
 		if(validateEmail('emailOrSSNr')){
 			//Användaren har skrivit in en e-postadress.
 			xajax_getPasswordEmail(document.getElementById('emailOrSSNr').value);
 		} else if(validateSocialSecurityNrMiddle(myString)){
 			//Användaren har skrivit in ett personnummer
 			xajax_getEmailFromSSNrX(myString);
 		} else {
 			//Användaren har skrivit in något som inte stämmer in alls
 			document.getElementById('getPasswordMessage').className = 'alertMessageError';
 			document.getElementById('getPasswordMessage').innerHTML = getTranslation('notEmailOrSSNr');
 		}
 	}
 }
 
 function validateSocialSecurityNrMiddle(socialSecurityNr){
 	feed = importXML('includes/xml_common.inc.php?action=checkSSNr&socialSecurityNr=' + socialSecurityNr);
 	return feed.getElementsByTagName('isValid')[0].getAttribute('value');
 }

/*
	Returnerar värdet av en input med ett specifikt ID.
*/
function getValue(id){
 	return document.getElementById(id).value;
 }

/*
	Returnerar en specifik GET-variabel
*/
function jsGet(type){
	if(location.href.match(type)){
		return location.href.split(type+'=')[1].split('&')[0];
	}
}

function makeSocialSecurityNr(socialSecurityNr){
	return socialSecurityNr.substr(0,6) + '-' + socialSecurityNr.substr(6,4);
}

/********************************************************************************************************************
	Valideringsscript
********************************************************************************************************************/
function popUpAgreement(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=400,height=600,left = 390,top = 225');");
}

function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=800,height=600,left = 390,top = 225');");
}

function getFormValue(getThis){
	alert(document.getElementById(getThis).value);
	return document.getElementById(getThis).value;
}

function isNumeric(obj){
	var numericExpression = /^[0-9]+$/;
	if(obj.match(numericExpression)){
		return true;
	}else{
		return false;
	}
}

