
//short version of getelementbyid()
function get(str) {
	var tmp
	if($('#'+str).length > 0)
		tmp = $('#'+str)[0];
	else
		tmp =  $('[name='+str+']')[0];
	
	if(tmp)
		return tmp;
	else
		return document.getElementById(str);
}

// Email Validation. Written by PerlScriptsJavaScripts.com
function check_email(e) {
	ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

	for(i=0; i < e.length ;i++) {
		if(ok.indexOf(e.charAt(i))<0) { 
			return (false);
		}	
	} 
	
	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (!e.match(re) && e.match(re_two)) {
			return (-1);		
		} 
	}
}

// Simon, 2008-09-16
//depracated, do not use
function pressedEnter() {
	// Use <form onKeyDown="return !pressedEnter();"> to prevent 'Enter' submitting forms.
	return (window.event && window.event.keyCode == 13); 
}

function onEnter(func)
{
	if(pressedEnter())
		func()
}

// Samuel, 2010-02-10
function onEnterSendVars(func,var1,var2)
{
	if(pressedEnter())
		if(var2 != null)
			func(var1,var2)
		else if(var1 != null)
			func(var1)
		else
			alert("onEnterSendVars: Odefinierade variabler")
}

function onArrowUp(doFunc) {
	
	if(window.event && window.event.keyCode == 38) {
		doFunc()
		return true;
	}
	return false;
	
	/*
	var ret
	$(document).keyup(function (e) {
			if(e.keyCode == 38)
			{
				doFunc()
				ret =  true
			}
			ret = false
	})
	return ret;
	*/
}

function onArrowDown(doFunc) {
	
	if(window.event && window.event.keyCode == 40) {
		doFunc();
		return true;
	}
	return false;
	
	/*
	var ret
	$(document).keyup(function (e) {
			if(e.keyCode == 40)
			{
				doFunc()
				ret =  true
			}
			ret = false
	})
	return ret;
	*/
}

// Simon, 2009-09-16
// Example Usage: String.replaceAll('a', 'b'); 
String.prototype.replaceAll=function(s1, s2) {return this.split(s1).join(s2)}

function dateDiff(date1,date2) {
	// .getTime - returns milliseconds since Jan 1 1970 from your date.
	//1 day in milliseconds
	var day_in_mills=24*60*60*1000
	//Remove any hours etc. from the dates.
	var tmp1 = new Date( date1.getFullYear(),date1.getMonth(),date1.getDate() ); 
	var tmp2 = new Date( date2.getFullYear(),date2.getMonth(),date2.getDate() ); 
	//Calculate difference btw the two dates, and convert to days
	return Math.ceil((tmp2.getTime()-tmp1.getTime())/(day_in_mills));
}

function attachcss() {
		document.write("<link rel=stylesheet href=\"/script/styles/ie.css\" type=\"text/css\">");
}

function visa(id) {
	if (document.all) {
		document.all(id).style.visibility="visible";
	}
	else if (document.layers) {
		document.eval(id).visibility="show";
	}
	else if (document.getElementById) {
		document.getElementById(id).style.visibility="visible";
	}
}
function gom(id) {
	if (document.all) {
		document.all(id).style.visibility="hidden";
	}
	else if (document.layers) {
		document.eval(id).visibility="hide";
	}
	else if (document.getElementById) {
		document.getElementById(id).style.visibility="hidden";
	}
}

// Markerar en del av en text i en textruta.
// e.g addtext('testing', document.textbox, 'ing')
function addtext(what, thetarget, selectwhat){
	if (selectwhat.length > 0) {
		var r = thetarget.createTextRange();
		thetarget.value = what + selectwhat;
		r.findText(selectwhat,-1);
		r.select();
	}
	return (selectwhat.length > 0);
}

//Simon 2008-10-16
// Make the value in a form element numeric. (Text Boxes)
function makeNumeric(formElement) {
 	if((window.event && window.event.keyCode == 9) || (window.event && window.event.keyCode == 16)){
		return false;
	}
	var ValidChars = "0123456789";
	var val = formElement.value;
	var ret = "";

	for (i = 0; i < val.length; i++) { 
      char = val.charAt(i); 
      if (ValidChars.indexOf(char) != -1) 
         ret = ret + char;
	}
	formElement.value = ret;
}

//Thomas 2010-09-06
// Make the value in a form element numeric. (Text Boxes)
function makePhoneNumber(formElement) {
 	if((window.event && window.event.keyCode == 9) || (window.event && window.event.keyCode == 16)){
		return false;
	}
//alert(window.event.keyCode);
	var ValidChars = "0123456789-+";
	var val = formElement.value;
	var ret = "";

	for (i = 0; i < val.length; i++) { 
      char = val.charAt(i); 
      if (ValidChars.indexOf(char) != -1) 
         ret = ret + char;
	}
	formElement.value = ret;
}

//Simon 2008-10-16
// Make the value in a form element a boolean/bit. (true/false) (0/1) (Text Boxes)
function makeBit(formElement) {
	if(formElement.value == '')
		return;
	if(formElement.value > 0)
		formElement.value = 1
	else
		formElement.value = 0
}

//Simon 2008-10-17
//Make the value in a form element a date. (Text Boxes)
function makeDate(T) {
	var DateStr = T.value.fixDate();	
	if (DateStr.length != 10) { T.value='';return;}

	if (isNumeric2(DateStr.substr(0,4)) == false){T.value='';return; }
	if (isNumeric2(DateStr.substr(5,2)) == false){T.value='';return; }
	if (isNumeric2(DateStr.substr(8,2)) == false){T.value='';return; }
	if (DateStr.substr(4,1) != '-'){T.value='';return; }
	if (DateStr.substr(7,1) != '-'){T.value='';return; }

	T.value = DateStr;
}

//fixar till datum till formatet YYYY-MM-DD
// http://www.ivarssons.nu/petter/
function fixDate() { 
	var odate = new Date();
	year = new String(odate.getFullYear());
	var century  = year.substring(0,2);
	
	if (this.match(/^\d{4}-{1}\d{2}-{1}\d{2}$/) != null) 	
		return this;
	
	if (this.match(/^\d{2}-{1}\d{2}-{1}\d{2}$/) != null)	
		return century + this.substring(0,2) +"-"+ this.substring(3,5) +"-"+ this.substring(6,8)
	
	if (this.match(/^\d{4}\/{1}\d{2}\/{1}\d{2}$/) != null) 	
		return this.substring(0,4) +"-"+ this.substring(5,7) +"-"+ this.substring(8,10)
	
	if (this.match(/^\d{2}\/{1}\d{2}\/{1}\d{2}$/) != null) 	
		return century + this.substring(0,2) +"-"+ this.substring(3,5) +"-"+ this.substring(6,8)	
	
	if (this.match(/^\d{4}\d{2}\d{2}$/) != null) 
		return this.substring(0,4) +"-"+ this.substring(4,6) +"-"+ this.substring(6,8) 		
	
	if (this.match(/^\d{2}\d{2}\d{2}$/) != null) 
		return century + this.substring(0,2) +"-"+ this.substring(2,4) +"-"+ this.substring(4,6)
	
	else
		return this;
}

//Installeras på strängklassen
String.prototype.fixDate = fixDate;

/*	
	auto Browser determines which cursor to display based on the current context 
	crosshair Simple cross hair 
	default Platform-dependent default cursor (usually an arrow) 
	hand Hand 
	move Crossed arrows indicating something is to be moved 
	dir-resize Arrow indicating edge is to be moved (dir may be n, ne, nw, s, se, sw, e, or w) 
	text Editable text (usually an I-bar) 
	wait Hourglass or watch indicating that the program is busy and the user should wait 
	help Arrow with question mark indicating help is available 
*/
function setCursor(CMode) {
	document.body.style.cursor = CMode;
}

function logJavaScriptErrors() {
	if(validBrowser()) {
		
		try {
			window.onerror = logJavaScriptError;
			}
		catch(er) {}
		
		/*
		try{
			$(window).error(function(msg,url,line){logJavaScriptError(msg,url,line);})
		}
		catch(er) {}
		*/
	}
}


function logJavaScriptError(msg,url,ln) {

	//Fetch Remote IP
	//2010-11-30 Samuel: Onödigt att hämta ipn via separat anrop, hämtas i logerror anropet ist.
	var js_remoteaddr = "";
	/*$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:'function=GetIP'
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: GetIP - ' + strError)
		}
		,success:function(data)
		{
			js_remoteaddr =  data;
		}
	});*/

	var browserinfo = ""
	jQuery.each(jQuery.browser, function(i, val) {
		browserinfo += " " + i + ": " + val		 
	});

	//Log javascript error
  params = "function=LogError" + "&er_line=" + ln + "&er_file=" + escape(url) + "&er_desc=" + escape(msg) + "&er_source=JavaScript&er_browser=" + escape(browserinfo) + "&er_code=" + "" + "&er_querystring=" + escape(location.search) + "&er_remote_addr=" + js_remoteaddr;
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:params
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: LogError - ' + strError)
		}
		,success:function(data)
		{
			return data;
		}
	});
}

function logAJAXError(xhr,settings,e) {

	//POST or GET parameters
	var qs = settings.data;

	//Browser information
	var browserinfo = ""
	jQuery.each(jQuery.browser, function(i, val) {
		browserinfo += " " + i + ": " + val		 
	});
	
	//Error message
	var msg = xhr.responseText.replaceAll('<font face="Arial" size=2>','').replaceAll('</font>','').replaceAll('<p>',' ').replaceAll('&#228;','ä').replaceAll('&#246;','ö').replaceAll('&#229;','å')

	//File name of ajax request
	var url = settings.url;
	
	//File name of current document
	var curfile = e.target.URLUnencoded
	
	//Log AJAX error
  params = "function=LogError&er_line=&er_file=" + escape(url) + "&er_desc=" + escape(msg) + "&er_source=AJAX&er_browser=" + escape(browserinfo) + "&er_querystring=" + escape(qs) + "&er_otherdata=CurrentURL:+" + escape(curfile) + "&getuser=true";
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:params
		,error:function(XHR,strError,objException) {
			alert('Error on function: logError - ' + strError)
		}
		,success:function(data) {
			return data;
		}
	});
}

function getQueryVariable(variable,query) { 
	if (query.length == 0)
  	query = window.location.search.substring(1); 
  var vars = query.split("&"); 
  for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
      return pair[1]; 
    } 
  } 
  return "";
} 


function validBrowser() {
	var bit = 0
	jQuery.each(jQuery.browser, function(i, val) {
			if(i == "msie")
				bit =  1;
	})
	return bit
}

var js_Debug = ''
function jsDebug(str) {
	js_Debug = str;
}

//Global AJAX variable.
var request = null;

function enableAjax() {
	request = getAjax();
}

function getAjax() {

	var http=null;
	try {
		  // Firefox, Opera 8.0+, Safari
		  http=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			http=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			http=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	
	if (http==null)
  		alert ("Your browser does not support AJAX!"); 
	return http;
}

/* 
HTTPREQUEST.READYSTATE
---
UNINITIALIZED(0) 
The object has been created, but has not been initialized (the open method has not been called). 
LOADING(1) 
The object has been created but the send method has not been called. 
LOADED(2) 
The send method has been called and the status and headers are available, but the response is not. 
INTERACTIVE(3) 
some data has been received. You can get the partial results using the responseBody and the responseText properties. 
COMPLETED(4) 
All the data has been received, and is available.
*/
function ajax(url, vars, callbackFunction, feedbackFunction, async) {
	if(request==null) return;
	if(async!=null)
		request.open("POST", url, async);
	else
		request.open("POST", url, true);
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", 900);
	request.setRequestHeader("Connection", "close");
	if(async==null) {
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				if(request.status == 200) {
					//if (request.responseText) 	
						callbackFunction(request.responseText);
				}
				else{
					alert('AJAX Error: ' + request.status + ' - ' + request.statusText)
				}
			}
			//Skicka readyState och callback-functionsnamn till en AJAX-feedback-funktion (optional)
			if (feedbackFunction!=null) {
				var ownName = callbackFunction.toString();
				ownName = ownName.substr('function '.length);        // trim off "function "
				ownName = ownName.substr(0, ownName.indexOf('('));        // trim off everything after the function name
				feedbackFunction(request.readyState, ownName);
			}
	
		};
	}
	request.send(vars);
}

//Simon 2009-11-12. Snabbare-att-skriva variant av ajax() med sync.
function ajax_sync(url, vars) {
	if(!ajaxReady()) {alert('AJAX not ready');return;}
	ajax(url, vars, null, null, false)
}

//Simon 2009-11-12. Snabbare-att-skriva variant av ajax() med async.
function ajax_async(url, vars, callbackFunction) {
	if(!ajaxReady()) {alert('AJAX not ready');return;}
	ajax(url, vars, callbackFunction, null, null)
}

//Simon 2009-11-12. Lagt till en abort som resettar ajax-objectet. Får bara göra ett ajaxResponse() anrop efter varje ajax()-anrop. Annars får man fel.
function ajaxResponse() {
	var ret = request.responseText;
	request.abort();
	return ret;
}

function ajaxReady() {
	if (request == null) return false;
	if (request.readyState > 1 && request.readyState < 4) return false;
	return true;
}

// Simon Vincent 2008-10-17
//Fetches list of all Makes.
function getMakeCache() {
	/*
	if(!ajaxReady()) {alert('AJAX not ready');return;}
	ajax("../../scripts/js_ajax.asp","function=GetMakeCache",null,null,false)
	return ajaxResponse().toLowerCase();
	*/
	var text = ""
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../script/javascript/js_ajax.asp',data:'function=GetMakeCache'
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: getMakeCache - ' + strError)
		}
		,success:function(data)
		{
			text =  data;
		}
	});
	return text;
}

// Simon Vincent 2008-10-20
//Fetches list of all ObjectTypes.
function getObjectCache() {
	/*
	if(!ajaxReady()) {alert('AJAX not ready');return;}
	ajax("../../scripts/js_ajax.asp","function=GetObjectCache",null,null,false)
	return ajaxResponse().toLowerCase();
	*/
	var text = ""
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../script/javascript/js_ajax.asp',data:'function=GetObjectCache'
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: getObjectCache - ' + strError)
		}
		,success:function(data)
		{
			text =  data;
		}
	});
	return text;
}

//2011-03-15 Samuel: Hämtar lista med ObjectCategories
function getObjectCategoryCache() {
	var text = ""
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:'function=GetObjectCategoryCache'
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: GetObjectCategoryCache - ' + strError)
		}
		,success:function(data)
		{
			text =  data;
		}
	});
	return text;
}


/*
	Simon Vincent, 2008-03-04, Mod: 2008-06-25
	encodes a string to that it can be send to ajax as input, with åäö + 'space' chars intact.
*/
function encode(str) {	
	str = str.replaceAll('Å','$Aring;');
	str = str.replaceAll('Ä', '$Auml;');
	str = str.replaceAll('Ö', '$Ouml;');
	str = str.replaceAll('å','$aring;');
	str = str.replaceAll('ä', '$auml;');
	str = str.replaceAll('ö', '$ouml;');
	str = str.replaceAll(' ', '%20');
	str = str.replaceAll('ø', '$oslash;');
	str = str.replaceAll('Ø', '$Oslash;');
	str = str.replaceAll('&', '$amp;');
	str = str.replaceAll('æ', '$aelig;');
	return str
}

function decode(str) {	
	str = str.replaceAll('$Aring;','Å');
	str = str.replaceAll('$Auml;', 'Ä');
	str = str.replaceAll('$Ouml;', 'Ö');
	str = str.replaceAll('$aring;', 'å');
	str = str.replaceAll('$auml;', 'ä');
	str = str.replaceAll('$ouml;', 'ö');
	str = str.replaceAll('$oslash;', 'ø');
	str = str.replaceAll('$Oslash;', 'Ø');
	str = str.replaceAll('$amp;', '&');
	str = str.replaceAll('$aelig;','æ');
	return str
}

function hitta_se(num) {
	//if(!ajaxReady()) {alert('AJAX not ready');return;}
	// får error. cross-domain AJAX not allowed.
	//ajax("http://www.google.se", null,null,null,false)
	//alert(ajaxResponse())
}

function moreInfo(ordernumber) {
	window.open("support_more_orderinfo.asp?OrderNumberSQL=" + ordernumber,'moreInfo',"width=700,height=750,location=no,toolbar=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,menubar=no,");
}

function orderInfo(ordernumber) {
	window.open("orderinfo.asp?OrderNumberSQL=" + ordernumber, 'orderInfo',"width=805,height=768,location=no,toolbar=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,menubar=no,");
}

function printpopup(ordernumbersql) {
	window.open('/store_printpopup.asp?OrderNumberSQL=' + ordernumbersql, 'printpopup','width=320,height=40,location=no,toolbar=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,menubar=no,');
	return false;
}

function SendSMS(MobileNumber, OrderNumberSQL) {
	window.open("../sms_send.asp?ReceiverNumber=" + MobileNumber + "&OrderNumberSQL=" + OrderNumberSQL, "SMS","width=500,height=450,location=no,toolbar=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,menubar=no,");
}

function openCalendar(ElementId) {
	window.open("./datepicker.asp?ElementId=" + ElementId, "Calendar","width=175,height=160,location=no,toolbar=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,menubar=no,");
}

function popupCheck() {
	var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
	if(mine)
		mine.close()
	else 
		alert(getText("556"))
}

function maxLength(sender, maxChar) {
	if (sender.value.length > maxChar) {
		ma = getText("max")
		tecken = getText("tecken")
		alert(ma + " " + maxChar + " " + tecken + "!");
		sender.value = sender.value.substring(0,maxChar);
	}
}

//För användning i .NET då ajax för getText saknas.
function maxLength2(sender, maxChar) {
    if (sender.value.length > maxChar) {
        ma = "max"
        tecken = "tecken"
        alert(ma + " " + maxChar + " " + tecken + "!");
        sender.value = sender.value.substring(0, maxChar);
    }
}

function getText(textId) {
	var text = ""
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:'function=GetText&TextId=' + textId
		,error:function(XHR,strError,objException)
		{
			alert('Error on function: getText - ' + strError)
		}
		,success:function(data)
		{
			text =  data;
		}
	});
	return text;
}

// Check that a string contains only numbers
function isNumeric2(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) return false;
	}
	return true;
}

//Kollar att datumformatet matchar YYYY-MM-DD. Alertar vid fel.
function isDateFormatSwe(T) {

	var OKFlag = true;
	var DateStr = T.value.fixDate();
	var Sender = T.name;
		
	if (DateStr.length != 10) {
		OKFlag = false;
	}
	else {
		if (isNumeric2(DateStr.substr(0,4)) == false){
			OKFlag = false; }
		if (isNumeric2(DateStr.substr(5,2)) == false){
			OKFlag = false; }
		if (isNumeric2(DateStr.substr(8,2)) == false){
			OKFlag = false; }
		if (DateStr.substr(4,1) != '-'){
			OKFlag = false; }
		if (DateStr.substr(7,1) != '-'){
			OKFlag = false; }
	}

	if (OKFlag == false && DateStr.length != 0) {
		var text = getText("129")
		alert(text + ' YYYY-MM-DD');
		get(Sender).focus();
		return false;
	}
	
	return true;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function addLoadEvent(func) {  
  var oldonload = window.onload;  
  if (typeof window.onload != 'function') {  
	window.onload = func;  
  } else {  
	window.onload = function() {  
	  if (oldonload) {  
		oldonload();  
	  }  
	  func();  
	}  
  }  
}  

//Get a Querystring parameter
function getParameterByName( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

//Glömmer hela tiden av vad funktionen ovan heter
function queryString(name)
{
	return getParameterByName(name)
}

//Clock-functions
var clockID = 0;
function UpdateClock() {
	KillClock()
	var tDate = new Date();
	var nhours = tDate.getHours();
	var nmins = tDate.getMinutes();
	if(nmins<10)
		nmins= '0' + nmins;
	if(gUserType == 6)
		window.clock.innerHTML = '<span class=black9 title="' + cSRDate + '">' + cSRTemp +  '<\/span><span class=black8> (' + gUserCountryCode + ')<\/span><span class=black9> ' + nhours + ':' + nmins + '<img src=../images/blind.gif width=3 alt="">';
	else
		window.clock.innerHTML = '<span class=black8>(' + gUserCountryCode + ') <\/span>' + nhours + ':' + nmins + "<\/span><img src=../images/blind.gif width=3 alt=''>";

	clockID = setTimeout("UpdateClock()", 1000);
}
function StartClock() {clockID = setTimeout("UpdateClock()", 0);}
function KillClock() {if(clockID){clearTimeout(clockID);clockID=0;}}

function NullToZero(StrIn) {
	if (StrIn == null || StrIn == "") {
		return 0;
	} else {
		return StrIn
	}
}

//GetUserInfo with ajax
function getUserInfo(Id,Column) {
	var params = "function=GetUserInfo&Id=" + escape(Id) + "&Column=" + escape(Column);
	ajax("../../scripts/js_ajax.asp",params,null,null,false)
	return ajaxResponse();
}

function isNumericDecimals(sText) {
	if(sText.length < 1)
		return false;

   var ValidChars = "0123456789,";
   var IsNumber=true;
   var Char;
	 var Dec = 0;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i);
			if (Char == "," || Char == ".") { //Tillåt endast en . eller ,
				Dec ++;
			}
      if (ValidChars.indexOf(Char) == -1 || Dec > 1) {
         IsNumber = false;
      }
   }
   return IsNumber;  
}

function correctNumeric(sText) {
	var ValidChars = "0123456789";
	var ret = ""
	
	for (i = 0; i < sText.length; i++) { 
      char = sText.charAt(i); 
      if (ValidChars.indexOf(char) != -1) 
         ret = ret + char;
	}
	return ret;
}

function fixaTecken(sfix) {
	//lägg inte in trim() här
	sfix = sfix.replaceAll("'", "");
	sfix = sfix.replaceAll("|", "");
	sfix = sfix.replaceAll(";", ":");
	sfix = sfix.replaceAll('\"', '');
	return sfix;
}

//Gör länkar klickbara i textsträngar
function Linkify(inputText) { 
    //URLs starting with http://, https://, or ftp:// 
    var replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
    var replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>'); 
 
    //URLs starting with www. (without // before it, or it'd re-link the ones done above) 
    var replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
    var replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>'); 
 
    //Change email addresses to mailto:: links 
    //var replacePattern3 = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim; 
		var replacePattern3 = /(\w+[\w.]*@[\w\.]+\.\w+)/gim; 
    var replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>'); 
 
    return replacedText 
}

function MatrixPrint_ServiceBill(TimeKey, ONSQL) {
	window.location = 'serviceinfo://timekey:' + TimeKey + '@webservice.serviceinfo.se/serviceinfo/default.asmx?System=Serviceinfo&PrintPage=ServiceBill&OrderNumberSQL=' + ONSQL;
	setTimeout('window.close()',1000);
}

function MatrixPrint_ServiceReceipt(TimeKey, ONSQL, ExtraQS) {
	window.location = 'serviceinfo://timekey:' + TimeKey + '@webservice.serviceinfo.se/serviceinfo/default.asmx?System=Serviceinfo&PrintPage=ServiceReceipt&OrderNumberSQL=' + ONSQL + ExtraQS;
	setTimeout('window.close()',1000);
}

function MatrixPrint_CargoNote(TimeKey, CargoNoteId, UserId) {
	window.location = 'serviceinfo://timekey:' + TimeKey + '@webservice.serviceinfo.se/serviceinfo/default.asmx?System=Serviceinfo&PrintPage=CargoNote&CargoNoteId=' + CargoNoteId + '&UserId=' + UserId
	setTimeout('window.close()',1000);
}

function MatrixPrint_EstimateCostNote(TimeKey, ONSQL) {
	window.location = 'serviceinfo://timekey:' + TimeKey + '@webservice.serviceinfo.se/serviceinfo/default.asmx?System=Serviceinfo&PrintPage=EstimateCostNote&OrderNumberSQL=' + ONSQL;
	setTimeout('window.close()',1000);
}

function getWorkshopGroupId(OrderNumberSQL) {
	var params = "function=GetWorkshopGroupId&OrderNumberSQL=" + escape(OrderNumberSQL);
	var ret = "0"
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:params
		,error:function(XHR,strError,objException) {
			alert('Error on function: getWorkshopGroupId - ' + strError)
		}
		,success:function(data) {
			ret = data;
		}
	});
	return ret;
}

function CopyOrderToExchange(ONSQL) {
	var params = "function=CopyOrderToExchange&ONSQL=" + escape(ONSQL);
	$.ajax({type:'POST',dataType:'text',async:false,url:'../../scripts/js_ajax.asp',data:params
		,error:function(XHR) {
			alert('Error on function: CopyOrderToExchange - Params: ' + params + ' - ' + XHR.statusText + '(' + XHR.status + ')' + '\r\n\r\n' + XHR.responseText.substring(0,300) + '...')
		}
		,success:function(url) {
			if (url.length == 0)
				alert(getText('803'));
			else
				window.open(url,"eXchange","");
				
			//alert(url);
		}
	});
}

function attachfilepopup(ordernumber, uniqueId) {
//	alert('Open attach file window?');
	window.open('attachfilepopup.asp?OrderNumberSQL=' + ordernumber + '&uniqueId=' + uniqueId, 'AttachFile','width=650,height=250,location=no,toolbar=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,menubar=no,');
}
