
/////////////////////////////////////////////////////////////////////////////
//
// UPDATED 2001-04-03 Peter:
//	Datumchecken buggade på XXXX-XX-08 och -09.. Sjukt.
//
// UPDATED 2001-05-02 Peter:
//	OK. Samma fel som förut.. fast nu i startstoporder()..
//	Tydligen så funkar inte parseInt() så bra i alla webläsare.. 
//
/////////////////////////////////////////////////////////////////////////////

// ===========================================
//	Auto center window script- Eric King (http://redrival.com/eak/index.shtml)
//	Permission granted to Dynamic Drive to feature script in archive
//	For full source, usage terms, and 100's more DHTML scripts, visit http://dynamicdrive.com
// ===========================================

//NewWindow() modified 2004-06 by Henric Öberg - Added support for extra settings
var win = null;
function NewWindow(mypage,myname,w,h,scroll,extraSettings){
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable';
	if (extraSettings){
		settings += ','+extraSettings;
	}
	win = window.open(mypage,myname,settings);

	return win;
}

var win = null;
function NewFileWindow(mypage,myname,w,h,scroll){
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable,status'
	win = window.open(mypage,myname,settings)
} // NewWindow()


var win = null;
function TaskWindow(mypage,myname,scroll){
	w = '540';
	h = '365';

	var ieVer = getIEVersionNumber();
	if(ieVer==6 || ieVer==7){
		h = '385';
	}

	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	settings ='height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'
	win = window.open(mypage,myname,settings)
} // NewWindow()

// ===========================================
//	Auto Maximize Window Script- By Nick Lowe (nicklowe@ukonline.co.uk)
//	For full source code, 100's more free DHTML scripts, and Terms Of Use
//	Visit http://www.dynamicdrive.com
// ===========================================
function MaximizeWindow()
{
	top.window.moveTo(0,0);

	if (document.all) {
		top.window.resizeTo(screen.availWidth,screen.availHeight);
	}
	else if (document.layers||document.getElementById) {
		if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){
			top.window.outerHeight = screen.availHeight;
			top.window.outerWidth = screen.availWidth;
//			window.win.outerHeight = screen.availHeight;
//			window.win.outerWidth = screen.availWidth;
		}
	}
} // MaximizeWindow()


// ===========================================
// If edate (end date) is before sdate (start date) then result is false!
//
//	sdate: string YYYY-MM-DD
//	
//	edate: string YYYY-MM-DD
// ===========================================
function startstoporder(sdate,edate)
{
	var re = /(\d+)-(\d+)-(\d+)/;

	try
	{
		if((sMatches = re.exec(String(sdate))) == null)
			throw(new Error("Parse error"));
		
		if((eMatches = re.exec(String(edate))) == null)
			throw(new Error("Parse error"));
		
		var sd = new Date(sMatches[1], sMatches[2]-1, sMatches[3]);
		var ed = new Date(eMatches[1], eMatches[2]-1, eMatches[3]);
//	alert(sd+" "+ed);

		return(sd <= ed);
	}
	catch(e)
	{	throw(e);
	}
	
	return false;
}


// ===========================================
// Returns false if date is not YYYY-MM-DD AND date is incorrect like
// 30:th of february.. Which does not exists. :)
// ===========================================
function checkdateutc(strdate,txtobj)
{
    var validdate       = false;
    var intyear         = 0;
    var intmonth        = 0;
    var intday          = 0;
    var today           = new Date();

	
    intyear  = strdate.substring(0,4);
    intmonth = strdate.substring(5,7);
    intday   = strdate.substring(8,10);
		
    if (intyear > 1000 && intyear < 9999 && intmonth < 13 && intmonth > 0 && intday < 32 && intday > 0)
    {
        //Kolla så att man inte har matat in tex 2000-02-31
        var stryear  = ''+ intyear;
        var strmonth = ''+ intmonth;
        var strday   = ''+ intday;
    
        //intManad - 1 Jan är 0
        var newdate = new Date(Date.UTC(intyear, intmonth-1, intday));

        var newintyear  = newdate.getUTCFullYear();
        var newintmonth = newdate.getUTCMonth()+1;
        var newintday   = newdate.getUTCDate();

        if (newintyear == intyear && newintmonth == intmonth && newintday == intday)
        {
				validdate = true;
        }
    } 
	
	// Kolla om datumet har tid oxå, och om detta är korrekt
	// Denna snurra kan förmodligen skrivas enklare, detta är ett snabb-hack
	if(strdate.length>10){
		if(strdate.length>=16){
			if(strdate.substring(13,14)==":"){
				if(strdate.length>16)
				{					
					if(strdate.substring(16,17)==":" && strdate.length==19)
						validdate=true;
					else
						validdate=false;
				} else
				validdate=true;
			} else
				validdate=false;
		} else validdate = false;

	}
   //alert("YEAR= "+intyear + " MONTH= "+intmonth + " DAY= "+intday + "\n" + " YEAR= "+newintyear + " MONTH= "+newintmonth + " DAY= "+newintday);
    return validdate;
} // checkdateutc()

function OpenCalendarWindow(calendar,XPos,YPos,nsXPos,nsYPos){
	cWin = window.open(calendar,'Calender','width=238,height=155,screenX='+(window.screenX+nsXPos)+',screenY='+(window.screenY+nsYPos)+',left='+(window.screenLeft+XPos)+',top='+(window.screenTop+YPos));
}

function getIEVersionNumber() {
    var ua = navigator.userAgent;
    var MSIEOffset = ua.indexOf("MSIE ");
    
    if (MSIEOffset == -1) {
        return 0;
    } else {
        return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
    }
}

function resize(width,height){

	
		window.resizeTo(width,height);
		return 1;
	
}

function NewModalDialog(url,name,width,height){
	var MSIE = navigator.appName == "Microsoft Internet Explorer";
	if(!MSIE){
		window.open(url,name,"width="+width+",height="+height+",toolbars=0,menu=0,location=0,top="+(screen.availHeight-height)/2+",left="+(screen.availWidth-width)/2+"");
	} else {
		loginWin = window.showModalDialog(url,name,"dialogHeight: "+height+"px; dialogWidth: "+width+"px; dialogTop:"+(screen.AvailHeight-height)/2+"; dialogLeft:"+(screen.AvailWidth-width)/2+"; edge: Raised; center: Yes; help: no; resizable: no; status: no;");
	}
}
function IsNumeric(sText,Type){
	var ValidChars = "-.0123456789";

	var IsNumber=true;
	var Char;
	var FoundDot = false;
	
	for (i = 0; i < sText.length && IsNumber == true; i++){ 
		Char = sText.charAt(i);
		
		if (Char == '.' || Char == ',') {
			if(Type=='int')
				return false;
			if (FoundDot) {
				IsNumber = false;
				break;
			} else {
				FoundDot = true;
				continue;
			}
		}
		if(Char=='-' && i!=0)
			return false;
		
		if (ValidChars.indexOf(Char) == -1){
			IsNumber = false;
			break;
		}		
	}
	return IsNumber;  
}
function IsNumericPositive(sText,Type){
	var ValidChars = ",.0123456789";
	var IsNumber=true;
	var Char;
	var FoundDot = false;
	
	for (i = 0; i < sText.length && IsNumber == true; i++){ 
		Char = sText.charAt(i);
		
//		if (Char == '.' || Char == ',') {
//			if(Type=='int')
//				return false;
//			if (FoundDot) {
//				IsNumber = false;
//				break;
//			} else {
//				FoundDot = true;
//				continue;
//			}
//		}
//		if(Char=='-' && i!=0)
//			return false;
		
		if (ValidChars.indexOf(Char) == -1){
			IsNumber = false;
			break;
		}		
	}
	return IsNumber;  
}

//Only allow numbers as input
function allowNumbers(objEvent) 
	{
	  var iKeyCode;  	
	  iKeyCode = objEvent.keyCode;			
	  if(iKeyCode>=48 && iKeyCode<=57) return true;
	  return false;
	}
	
function addTimeToDate(dateStr, hoursToAdd, minutesToAdd)
{
	var year 	= Number(dateStr.substring(0, 4));
	var month 	= Number(dateStr.substring(5, 7));
	var day 	= Number(dateStr.substring(8, 10));
	var hour 	= Number(dateStr.substring(11, 13));
	var minute 	= Number(dateStr.substring(14, 16));

	var months = new Array();
	months[0] = 31;							// Januari
	if (year % 4 == 0 && year % 200 != 0)
		months[1] = 29;						// Februari - skottår
	else
		months[1] = 28;						// Februari - inte skottår
	months[2] = 31;							// Mars
	months[3] = 30;							// April
	months[4] = 31;							// Maj
	months[5] = 30;							// Juni
	months[6] = 31;							// Juli
	months[7] = 31;							// Augusti
	months[8] = 30;							// September
	months[9] = 31;							// Oktober
	months[10] = 30;						// November
	months[11] = 31;						// December

	minute += minutesToAdd;
	hour += hoursToAdd;
	
	// Det blir lättare att räkna med månaderna om dom ligger i
	// intervallet 0-11 istället för 1-12.
	month -= 1;
	
	if (minute / 60 >= 1) {
		hour += Math.floor(minute / 60);
		minute %= 60;
	}
	if (hour / 24 >= 1) {
		day += Math.floor(hour / 24);
		hour %= 24;
	}
	while (day > months[month]) {
		day -= months[month];
		month += 1;
	}
	if (month / 12 >= 1) {
		year += Math.floor(month / 12);
		month %= 12;
	}
	
	// Återställ så att vi får månaderna 1-12.
	month += 1;

	retDateStr = new String(year + "-");

	if( month < 10 ) 
		retDateStr = retDateStr + "0";
	retDateStr += month + "-";
	if( day < 10 )
		retDateStr = retDateStr + "0";
	retDateStr += day + " ";				
	if( hour < 10 )
		retDateStr = retDateStr + "0";
	retDateStr += hour + ":";					
	if( minute < 10 )
		retDateStr = retDateStr + "0";
	retDateStr += minute;
	
	return retDateStr;
}

function lTrim(sString)
{
	while (sString.substring(0,1) == ' ')
		sString = sString.substring(1, sString.length);
		
	return sString;
}

function rTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == ' ')
		sString = sString.substring(0,sString.length-1);

	return sString;
}

function trim(sString)
{
	while (sString.substring(0,1) == ' ')
		sString = sString.substring(1, sString.length);

	while (sString.substring(sString.length-1, sString.length) == ' ')
		sString = sString.substring(0,sString.length-1);

	return sString;
}

function checkRequired(formnameStr,typeStr,requiredfieldText,incorrectfielddataText)
{
	// var MSIE = navigator.appName == "Microsoft Internet Explorer";
	var requiredFields = Object();
	
	var empty = false;
	for(o=0; o<document.forms[formnameStr].elements.length; o++)
	{
		
		
		var obj = null;
		
		obj =  document.forms[formnameStr].elements[o];

		if(obj && !obj.disabled)
		{	
			var req, type, name;

			
			req = obj.getAttribute(typeStr+":required");
			type = obj.getAttribute(typeStr+":type");
			name = obj.getAttribute(typeStr+":name");

/*			if(obj.type == "checkbox" && obj.id.substring(0,9)=="selected_"){
				alert(obj.id);
				//if(typeof(document.getElementById('selected_'+obj.id))!='undefined' && !document.getElementById(obj.id).checked)
					//req = 0;
			}*/

			if( req == 1 )
			{				
				if(obj.type == "checkbox")
				{
					if( !obj.checked )
						empty = true;
				}
				else if(obj.type == "radio")
				{
					var checked = false;
					var objs = document.forms[formnameStr][obj.name];
					for(i = 0; i < objs.length; i++)
						if( objs[i].checked )
							checked = true;
					
					if( !checked )
						empty = true;
				}
				else if(type=="int" && obj.type=="hidden")
				{
					if(obj.value==0 || obj.value=="")
						empty=true;
				}
				else if(obj.value.length<1)
				{
					empty = true;
				}
				
				if( empty )
				{
				
					check = document.getElementById("selected_"+obj.id);
					if(check)
					{
						if(check.checked == false)
							empty = false;	
					} 
				
					if(empty){
						alert(name+" "+requiredfieldText);
						return false;
					}
				}
			}
			var invalid = false;
			if( type )
			{	
				if( obj.value.length > 0 )
				{
					if( type == "int" || type == "float" )
					{
						if( !IsNumeric( obj.value, type) )
							invalid = true;
					} 
					else if( type == "date" )
					{
						if( !checkdateutc( obj.value, obj ) )
							invalid = true;
					}
				}
				if( invalid )
				{
					alert(incorrectfielddataText+" "+name);
					return false;
				}
			}
		}
	}	

	return true;
}

function flex(formnameStr,typeStr, flexType,tagName, diff)
{
	if(diff === undefined){
		diff = 8;
	} 
	var MSIE = navigator.appName == "Microsoft Internet Explorer";
	var requiredFields = Object();
	var empty = false;
	
	if(flexType=='input'){
		for(o=0; o<document.forms[formnameStr].elements.length; o++)
		{
			var obj = null;
			
			obj =  document.forms[formnameStr].elements[o];
			
			if(obj && !obj.disabled)
			{				
				var parentObj, hflex, vflex, parentObjHeight, parentObjWidth;
				
				hflex = obj.getAttribute(typeStr+":hflex");
				vflex = obj.getAttribute(typeStr+":vflex");
	
				if(hflex=='true'){
					parentObj = obj.parentNode;
					parentObjWidth = parentObj.offsetWidth - diff;
					
					obj.style.width = parentObjWidth+'px';
				}
				if(vflex=='true'){
					parentObj = obj.parentNode;
					parentObjHeight = parentObj.offsetHeight-2;
					
					obj.style.height = parentObjHeight+'px';
				}

			}
		}	
	} else if(flexType=='all'){
		var allElements;
		allElements = document.getElementsByTagName('*');

		
		for(o=0; o<allElements.length; o++)
		{
			var obj = null;
			
			obj =  allElements[o];
	
			if(obj && !obj.disabled)
			{				
				var parentObj, hflex, vflex, parentObjHeight, parentObjWidth;
				
				hflex = obj.getAttribute(typeStr+":hflex");
				vflex = obj.getAttribute(typeStr+":vflex");
				
				if(hflex=='true'){
					parentObj = obj.parentNode;
					parentObjWidth = parentObj.offsetWidth-diff;
					
					obj.style.width = parentObjWidth+'px';
				}
				if(vflex=='true'){
					parentObj = obj.parentNode;
					parentObjHeight = parentObj.offsetHeight-2;
					
					obj.style.height = parentObjHeight+'px';
				}
			}
		}	
	} else if(flexType=='tag'){
		var elements;
		elements = document.getElementsByTagName(tagName);
		
		for(o=0; o<elements.length; o++)
		{
			var obj = null;
			
			obj =  elements[o];
	
			if(obj && !obj.disabled)
			{				
				var parentObj, hflex, vflex, parentObjHeight, parentObjWidth;
				
				hflex = obj.getAttribute(typeStr+":hflex");
				vflex = obj.getAttribute(typeStr+":vflex");
				
				if(hflex=='true'){
					parentObj = obj.parentNode;
					parentObjWidth = parentObj.offsetWidth-diff;
					
					obj.style.width = parentObjWidth+'px';
				}
				if(vflex=='true'){
					parentObj = obj.parentNode;
					parentObjHeight = parentObj.offsetHeight-2;
					
					obj.style.height = parentObjHeight+'px';
				}
			}
		}	
	}

	return true;
}

function getTDHeight(){
	contentTop = getPixelsFromTop(document.getElementById("content_top"))
	contentBottom = getPixelsFromTop(document.getElementById("content_bottom"))
	heightOfCell = (contentBottom - contentTop);
	document.getElementsByName("heightValue")[0].value = "The cell is " + heightOfCell + "px tall.";
	}
function getPixelsFromTop(obj){
	objFromTop = obj.offsetTop;
	while(obj.offsetParent!=null) {
		objParent = obj.offsetParent;
		objFromTop += objParent.offsetTop;
		obj = objParent;
	}
	return objFromTop;
}
function swapImage(newImage){
	document.getElementsByName("heightValue")[0].value = "checking..."
	document.getElementById("content").innerHTML = "<img src='gfx/"+newImage+"'>";
	setTimeout("getTDHeight();",1000); // need to give the image time to load
} 

function isTime(input, emptyStringIsOk) {

	if (input == "") {
		return emptyStringIsOk;
	}
	
	if (input.length != 5) {
		return false;
	}
	
	if (input.charAt(0) < '0' || input.charAt(0) > '9') {
		return false;
	}

	if (input.charAt(1) < '0' || input.charAt(1) > '9') {
		return false;
	}

	if (input.charAt(2) != ':') {
		return false;
	}

	if (input.charAt(3) < '0' || input.charAt(3) > '9') {
		return false;
	}

	if (input.charAt(4) < '0' || input.charAt(4) > '9') {
		return false;
	}
	
	return true;
}

function removeKey(arrayName,key)
{
 var x;
 var tmpArray = new Array();
 for(x in arrayName)
 {
  if(x!=key) { tmpArray[x] = arrayName[x]; 
  alert(arrayName[x]);
  }
 }
 return tmpArray;
}

