var ie=false;
if (navigator.userAgent.indexOf("MSIE")>=0)
    ie=true;
var today = new Date();
var zero_date = new Date(0,0,0);
today.setTime(today.getTime() - zero_date.getTime());
var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000));


function getCookie(name) {
 name=name;
 var start = document.cookie.indexOf(name+"=");
 var len = start+name.length+1;
 if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
 if (start == -1) return null;
 var end = document.cookie.indexOf(";",len);
 if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len,end));
}

function setCookie(name,value,expires,path,domain,secure) {
 var cookieString = name + "=" +escape(value) +
 ( (expires) ? ";expires=" + expires.toGMTString() : "") +
 ";path=" + (!path||path==''?'/':path) +
 ( (domain) ? ";domain=" + domain : "") +
 ( (secure) ? ";secure" : "");
 document.cookie = cookieString;
}

function deleteCookie(name,path,domain) {
 if (getCookie(name)) document.cookie = name + "=" +
 ";path=" + (!path||path==''?'/':path) +
 ( (domain) ? ";domain=" + domain : "") +
 ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}
function WindowHeight()
{
	var de = document.documentElement;
	return self.innerHeight ||
		(de && de.clientHeight ) ||
		document.body.clientHeight;
}
function getRealLeft(el) {
	if (arguments.length==0) el = this;
	xPos = el.offsetLeft;
	tempEl = el.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}
	return xPos;
}

function getRealTop(el) {
	if (arguments.length==0) el = this;
	yPos = el.offsetTop;
	tempEl = el.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
}
function getObjHeight(obj)
{
	if( obj.offsetWidth )
	{
		return obj.offsetHeight;
	}
	return obj.clientHeight;
}
function getObjWidth(obj)
{
	if( obj.offsetWidth )
	{
		return obj.offsetWidth;
	}
	return obj.clientWidth;
}
function isEmail(obj) {
    var str;
    if(obj.value)
        str = obj.value;
    else
        str=obj;
    if (str.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
        return true;
    else
        return false;
}

function formOk(frm){
    var ok=true;
    for (var j=0;j<frm.elements.length;j++){
        var el=frm.elements[j];
        if(el.type=='text'){
            if(el.style.borderColor==''&&el.onblur)
                el.onblur();
            if(document.getElementById(el.id+'_label')&&document.getElementById(el.id+'_label').innerHTML.indexOf('*')>-1){
                if(el.value=='')
                    el.style.borderColor='red';
                else
                    el.style.borderColor='';
            }
            if(el.style.borderColor!=''){
                ok=false;
            }
        }
    }
    return ok;
}

function swapDisplay(idIn){
    if(document.getElementById(idIn).style.display=='none')
        document.getElementById(idIn).style.display=(document.all?'inline':'table');
    else
        document.getElementById(idIn).style.display='none';
}

function checkEmail(obj){
    if(obj.value!='' && !isEmail(obj)){
        alert('Felaktig e-post adress.');obj.style.borderColor='red';
    }else{
        obj.style.borderColor='';
    }
}
    function showCorrOpt(obj,value)
    {
        if(obj[0]&&obj[0].type=='radio'){
            for(var p=0;p<obj.length; p++){
                if(obj[p].value==value)obj[p].checked=true;else obj[p].checked=false;
            }
            return;
        }else{
            if(value=='')
            {
                    if(obj.options[0])
                    {
                            obj.options[0].selected = true;
                            obj.options[0].defaultSelected = true;
                            obj.selectedIndex=0;
                            return;
                    }
                    else
                            return;
            }
            else
            {
                    for(i=0; i<obj.options.length; i++)
                            if(obj.options[i].value==value)
                            {
                                    obj.selectedIndex=i;
                                    return;
                            }
            }
        }
    }
function focable(o){
    var link = isLink(o);
    if(   (link&&((''+o.src).indexOf('blank')>-1||(''+o.src).indexOf('p.gif')>-1))  ||  (!link && (!o||o.disabled||o.hidden||o.type=='hidden')) )return false;
    else{
        var obj=o;
        while(obj){//Obs loopar bara aktuellt dokument, om ligger i dold iframe tas inte det fallet...
            //alert('name['+obj.name+']'+(obj.style?' display['+obj.style.display+'] visibility['+obj.style.visibility+']':''));
            if(obj.style&&(obj.style.display=='none'||obj.style.visibility=='hidden'))
                return false;
            obj=obj.parentNode;
            /*if(obj.parentNode)obj=obj.parentNode;
            else if(obj.parent && obj.parent!=obj)obj=obj.parent;
            else obj=null;*/
        }
    }
    return true;
}
function doFocus(o){
        if(!focable(o))return false;
        try{
		if(ie)o.focus();
                else window.setTimeout(function(){o.focus()},1);
        }catch(e){return false;}
	return true;
}
function isLink(o){
    if(o&&o.href&&o.lowsrc==undefined&&o.href!=''&&o.rel!='SHORTCUT ICON'&&o.type!="text/css")
        return true;
    return false;
}
function isObject(inp) {
	if(typeof inp == "object" || typeof inp == "element") return true;
	else return false;
}
function isInt(inp,def,pWin)
{
    var pW=window;
    if(pWin)
        pw=pWin;

    if(isObject(inp)) input = ''+inp.value;
    else
            input = ''+inp;


    var parses=0, ret = true;
    if(input.charAt(0) != '-' && input.charAt(0) != "0" && !parseInt(input))
            ret = false;
    else
    {
            for(var r=0; r<input.length; r++)
            {
                    if(input.charAt(r) != '-' && input.charAt(r) != ' ' && input.charAt(r) != String.fromCharCode(160) )//clears spaces and minus
                    {
                            if( !parseFloat(input.charAt(r)) && input.charAt(r) != "0")
                            {
                                    ret = false;
                                    break;
                            }
                            parses++;
                    }
                    else if(input.charAt(r) == '-' )
                            parses++;

                    if(input.charAt(r) == '-' && parses>1)
                    {
                            ret = false;
                            break;
                    }
            }



    }
    if(ret==false)
    {
            if(isObject(inp))
            {
                    pW.alert('Felaktigt heltal kommer att korrigeras!');
                    if(def==null)
                    {
                            inp.value = inp.defaultValue;
                    }
                    else
                            inp.value = def;
            }
    }
    return ret;
}
function isNum(inp,def,pWin)
{
    var pW=window;
    if(pWin)
        pw=pWin;

	if(isObject(inp)) input = inp.value;
	else
		input = ''+inp;

	var numsAfter=0, dots=0, parses=0, ret = true;

	if(input.charAt(0) != '-' && input.charAt(0) != "0" && !parseFloat(input))
		ret = false;
	else
	{
		for(var r=0; r<input.length; r++)
		{
			if(input.charAt(r) != '-' && input.charAt(r) != ' ' && input.charAt(r) != String.fromCharCode(160) )//clears spaces and minus
			{
				if( !parseFloat(input.charAt(r)) && input.charAt(r) != "0" && (input.charAt(r) != "." && input.charAt(r) != ",") || dots > 1 )
				{
					ret = false;
					break;
				}
				if(input.charAt(r) == "." || input.charAt(r) == ",")
					dots++;
				else
				{
					if(dots!=0)
						numsAfter++;
				}
				parses++;
			}
			else if(input.charAt(r) == '-' )
				parses++;

			if(input.charAt(r) == '-' && parses>1)
			{
				ret = false;
				break;
			}
		}

		if( dots==1 && numsAfter == 0 || dots > 1)	//eliminates ".0050"
			ret = false;
	}
	if(ret==false)
	{
		if(isObject(inp))
		{
                        pW.alert('Felaktigt tal kommer att korrigeras!');
			if(def==null)
				inp.value = inp.defaultValue;
			else
				inp.value = def;
		}
	}
   	return ret;
}


/**
 * Checks if is date, keeps focus in input field if d is object and input is invalid. Handels 4,6,8 and 10 digit input.
 * Use like this: &lt;INPUT type='TEXT' onBlur="isDate(this,10,this.defaultValue,true);" maxlength="10" onFocus="this.select()"&gt;
 * @param d String or input html object
 * @param c force into 6,8 or 10 format date
 * @param def default value, defaults to object.defaultValue
 * @param keep set this to true if don't wanna set object.defaultValue to value after succeded input.
 */
function isDate(d,c,def,keep)
{
	var CUTOFFYEAR=90, obj, temp='';
	var bad = false;
	if (isObject(d))
		obj = d.value;
	else
		obj = d;

	for(i=0;i<obj.length;i++)
		if(obj.charAt(i) != ' ')
			temp+=obj.charAt(i);
	obj=temp;

	var year = "", month = "", dat="";

	if(obj.length==10)
	{
		year = obj.substring(0, 4);
		month = obj.substring(5, 7);
		day = obj.substring(8, 10);
	}
	else if(obj.length==8)
	{
		year = obj.substring(0, 4);
		month = obj.substring(4, 6);
		day = obj.substring(6, 8);
	}
	else if(obj.length==6)
	{
		year = obj.substring(0, 2);
		month = obj.substring(2, 4);
		day = obj.substring(4, 6);
		if((year*1)>CUTOFFYEAR)
			year='19'+year;
		else
			year='20'+year;
	}
	else if(obj.length==4)
	{
		if(isObject(d)&&d.defaultValue.length==10)
			year = d.defaultValue.substring(2, 4);
		else
			bad = true;
		month = obj.substring(0, 2);
		day = obj.substring(2, 4);
		if((year*1)>CUTOFFYEAR)
			year='19'+year;
		else
			year='20'+year;
	}
	else if(obj.length==2||obj.length==1)
	{
                obj=''+parseInt(obj);
		if(obj.length==1)obj='0'+obj;
		if(isObject(d)&&d.defaultValue.length==10){
			year = d.defaultValue.substring(2, 4);
			month = d.defaultValue.substring(5, 7);
		}else
			bad = true;
		day = obj;
		if((year*1)>CUTOFFYEAR)
			year='19'+year;
		else
			year='20'+year;
	}else bad = true;
	var newYear = year;
	if( !bad ) {
		dat = new Date( ((''+year).length<4?1900:0)+parseInt(year),month-1,day);
		newYear=((''+dat.getYear()).length<4?1900:0)+dat.getYear();
	}
	if( bad || ! (newYear==year*1 && dat.getMonth()==month-1 && dat.getDate()==day*1) ) {
		if(isObject(d) && document.all) { doFocus(d); d.select(); }
		if(isObject(d))
		{
			alert('Felaktigt datum!');
			if(def!=null)d.value = def;
			else d.value = d.defaultValue;
		}
		else {
			alert('Felaktigt datum!');
			if(def==null) {
				dat = new Date();
				month = (dat.getMonth()+1);
				if ( month < 10 )
					month="0"+month;
				day = dat.getDate();
				if ( day < 10 )
					day="0"+day;
				d.value = (((''+dat.getYear()).length<4?1900:0)+dat.getYear())+'-'+month+'-'+day;
			} else {
				d.value = def;
			}
		}
		if(isObject(d)) { doFocus(d); d.select(); }
		return false;
	}
	else
	{
		if(c!=null && isObject(d))
		{
			switch(c)
			{
				case 6:
					d.value = year.substring(2)+month+day;
					break;
				case 8:
					d.value = year+month+day;
					break;
				case 10:
					d.value = year+'-'+month+'-'+day;
					break;
			}
			if(!keep)d.defaultValue=d.value;
		}
		return true;
	}
}


String.prototype.trim = function(){
	return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))
}
String.prototype.endsWith = function(str){
	return (this.match(str+"$")==str)
}
String.prototype.startsWith = function(str){
	return (this.match("^"+str)==str)
}

function trim(str){
	var ret = '';
	for(var r=0; r<str.length; r++)
		if(str.charAt(r) != ' ' && str.charAt(r) != String.fromCharCode(160) )//clears spaces and &nbsp;
			ret+=str.charAt(r);
	return ret;
}
function replace(string,text,by)
{
// Replaces text with by in string

    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0))
    	return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength)))
    	return string;
    if (i == -1)
    	return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}
function round (n, d) {
  n = n - 0; // force number
  if (d == null) d = 2;
  var f = Math.pow(10, d);
  n += Math.pow(10, - (d + 1)); // round first
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1)); // and again
  n += ''; // force string
  return d == 0 ? n.substring(0, n.indexOf('.')) :
      n.substring(0, n.indexOf('.') + d + 1);
}
function calculate(i,space,replComma){
	var out=i;
	if(replComma)
		out=replace(i,',','.');
	try {
		if(space)out='with('+space+'){'+out+'}';				
		var v=eval(out);		
		if(v||v==0) return v;
		else return i;
	} catch (e) {	
		alert('Ett värde som formeln bygger på är inte satt.'+((''+top.document.location).indexOf('localhost')>0?e:'') );
		return 0;
	}

}
function getCountable(str, dontShowMess)
{//Makes String to a num which is possible to count with if possible.
	str = ""+str;
	if(str.charAt(str.length-1)=="-")str='-'+str.substring(0,str.length-1);
	if(isNum(calculate(str,false,true)))
		return (calculate(str,false,true)*1);
	else
	{
		if(!dontShowMess)
			alert('Inmatat värde är inte korrekt formaterat!');
		return false;
	}
}
function getChecked(obj){
	if(obj){
	
		if(obj.length){
			for(var p=0;p<obj.length; p++){
				if(obj[p].checked)return obj[p];
			}
			return false;
		}else{
			if(obj.checked)return obj;
			else return false
		}
	}
	return false;
}
var sent=false;
