//
// Common javascript functions for SN
//
// $Id: common.js,v 1.10 2005/12/14 14:05:23 andersl Exp $
//

// Used when packing listboxes
var LISTBOX_VALUE_SEP = "|";

var isNav, isIE;

// If set to 1 then third column will be removed by function resizeFrame
var doResizeFrame = 0;

if ( parseInt(navigator.appVersion) >= 4 )
{
	if (navigator.appName == "Netscape")
	{
    	isNav = true;
    	isIE  = false;
  	}
  	else
  	{
    	isIE = true;
    	isNav = false;
  	}
}

//
// Decodes the email
//
function decodeEmail(coded)
{
	// eMail Obfuscator Script 2.1 by Tim Williams - freeware
 	cipher = "aZbYcXdWeVfUgThSiRjQkPlOmNnMoLpKqJrIsHtGuFvEwDxCyBzA1234567890";
	shift=coded.length;
	link="";
	for (i=0; i<coded.length; i++)
	{
		if (cipher.indexOf(coded.charAt(i))==-1)
		{
			ltr=coded.charAt(i);
			link+=(ltr);
		}
		else
		{
			ltr = (cipher.indexOf(coded.charAt(i))-shift+cipher.length) % cipher.length;
			link+=(cipher.charAt(ltr));
		}
    }
	return link;
}

//
// Extracts the correct email address and creates an mailto link
//
function makeEmail(encodedAddress, name, style)
{
	var decodedAddress = decodeEmail(encodedAddress);
	if ( name == "" )
	{
		name = decodedAddress;
	}
	document.write("<a style=\""+style+"\" href=\"mailto:"+decodedAddress+"\">"+name+"</a>");
}


//
// check for valid email address
//
function emailCheck (emailStr)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null)
	{
		alert("Epostadressen ["+emailStr+"] ser felaktig ut (kontrollera @ och .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)
	{
		if (user.charCodeAt(i)>127)
		{
			alert("Epostadressen ["+emailStr+"] inneh???ler felaktiga tecken.");
			return false;
   		}
	}
	for (i=0; i<domain.length; i++)
	{
		if (domain.charCodeAt(i)>127)
		{
			alert("Epostadressen ["+emailStr+"] inneh???ler felaktiga tecken.");
			return false;
   		}
	}
	if (user.match(userPat)==null)
	{
		alert("Epostadressen ["+emailStr+"] inneh???ler felaktiga tecken.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255)
			{
				alert("IP address f??? epostadress ["+emailStr+"] ??? felaktig!");
				return false;
   			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++)
	{
		if (domArr[i].search(atomPat)==-1)
		{
			alert("Dom???namnet f??? epostadress ["+emailStr+"] ??? ogiltigt.");
			return false;
   		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
	{
		alert("Epostadressen ["+emailStr+"] m???te sluta med ett v???k???t dom???namn eller en landskod best???nde av tv???bokst???er.");
		return false;
	}
	if (len<2)
	{
		alert("Epostadressen ["+emailStr+"] ??? ogiltig");
		return false;
	}
	return true;
}


function addArtComment(articleId, fid, siteId)
{
	var url = "/forum/create.php?isnew=1&parentId=1&refType=1&refId=" + articleId+"&fid="+fid+"&siteId="+siteId;
	url += "&title=Skriv artikelkommentar";
	var refName = "popupart";
	var width = 400;
	var height = 620;

	openWin(url, refName, width, height, "toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function addPollComment(pollId)
{
	var url = "/forum/create.php?isnew=1&parentId=3&refType=2&refId=" + pollId;
	url += "&title=Skriv webbfr???ekommentar";
	var refName = "popuppoll";
	var width = 370;
	var height = 620;

	openWin(url, refName, width, height, "toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function addComment(parentId)
{
	var url = "/forum/create.php?parentId=" + parentId;
	url += "&title=Svara p???inl???g";
    var refName = "compopup";
    var width = 370;
    var height = 620;

    openWin (url, refName, width, height,"toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function addNewComment(parentId)
{
   	var url = "/forum/create.php?isnew=1&parentId=" + parentId;
	url += "&title=Skriv nytt inl???g";
	var refName = "compopup";
    var width = 370;
    var height = 620;

    openWin (url, refName, width, height,"toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function viewArticleComments(fid, siteId)
{
	var url = "/popup.php?module=Forum&fid="+fid+"&siteId="+siteId;
	url += "&title=Visa artikelkommentarer";
	var refName = "artComPop";
	var width = 370;
	var height = 620;
	openWin (url, refName, width, height,"toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function viewForumRules()
{
	var url = "/popup.php?module=Forum&rules=1";
	url += "&title=Debattregler";
	var refName = "forumRules";
	var width = 400;
	var height = 400;
	openWin (url, refName, width, height,"toolbar=no,status=no,menubar=no,scrollbars=yes");
}

function openCenterWin (url, refName, width, height)
{
     if (document.all)
        var xMax = screen.width, yMax = screen.height;
      else
        if (document.layers)
            var xMax = window.outerWidth, yMax = window.outerHeight;
        else
            var xMax = 800, yMax=600;
      var xOffset = (xMax - width)/2, yOffset = (yMax - height)/2;

      string="'toolbar=no,status=no,menubar=no,scrollbars=no,width=" + width +" ,height=" + height +",resizable=1,screenX="+xOffset+",screenY="+yOffset+", top="+yOffset+",left="+xOffset+"'";

      window.open (url, refName, string);

}

// Same as openCenterWin but also accepts a feature list
function openWin(url, refName, width, height, features)
{
	if (document.all)
	{
    	var xMax = screen.width, yMax = screen.height;
	}
	else if (document.layers)
	{
		var xMax = window.outerWidth, yMax = window.outerHeight;
	}
	else
	{
		var xMax = 800, yMax=600;
	}
	var xOffset = (xMax - width)/2, yOffset = (yMax - height)/2;

	if ( features == "" )
	{
	  	string  = "'toolbar=no,status=no,menubar=no,scrollbars=no,";
		string += "width=" + width +" ,height=" + height;
		string += ",resizable=1,screenX="+xOffset+",screenY="+yOffset+",";
		string += " top="+yOffset+",left="+xOffset+"'";
	}
	else
	{
		string = features+",";
		string += "width=" + width +" ,height=" + height;
		string += ",screenX="+xOffset+",screenY="+yOffset+",";
		string += " top="+yOffset+",left="+xOffset+"'";
	}

	window.open (url, refName, string);
}

// Simple window opener
function openWindow(url)
{
	window.open(url, 'popper', '');
	return;
}


function showForumDisclaimer()
{
	openCenterWin('/forum/disclaimer.php','snrpopup',250,400);
}







/* Add bookmark */
function addBookmark()
{
	var bookmarkurl="http://www.sn.se"
	var bookmarktitle="S???ermanlands Nyheter"

	if(isIE)
	{
		window.external.AddFavorite(bookmarkurl,bookmarktitle);
	}
}

function setHomePage()
{
	if (isIE)
	{
		var siteURL="http://www.sn.se";
	    document.body.style.behavior = "url(#default#homepage)";
	    document.body.setHomePage(siteURL);
	}
}

function setHomePageAndRedirect(level1, level2, id)
{
	if (isIE)
	{
		var siteURL="http://www.sn.se";
	    document.body.style.behavior = "url(#default#homepage)";
	    document.body.setHomePage(siteURL);
	}
	var url = SCRIPT_INFO["protocol"]+"://"+SCRIPT_INFO["host_name"];
	url += "/parser.php?level1="+level1;
	if ( level2 != 0 )
	{
		url += "&level2="+level2;
	}
	if ( id != 0 )
	{
		url += "&id=" + id;
	}
	document.location.href = url;
}


// Opens a popup with a calendar for easy selecting of valid dates.
// @param caller - name of form and input field to place the result with the
//                 syntax 'form.fieldName'.
function getDate(caller)
{
	var url = "/popup.php?module=DatePicker&caller="+caller
	var refName = "snpopupdate";
	var width = 180;
	var height = 150;
	openCenterWin (url, refName, width, height);
}

function resizeFrame()
{
	elt=window.top.document.getElementById("riksAd");
	if ( elt )
		elt.style.display='none';
	elt=window.top.document.getElementById("adsPuffs");
	if ( elt )
	   elt.style.display='none';
	elt=window.top.document.getElementById("wrapper");
	if ( elt )
		elt.style.width='775px';
	elt=window.top.document.getElementById("mainAreaContent");
	if ( elt )
	   elt.style.width='610px';
	elt=window.top.document.getElementById("main");
	if ( elt )
	   elt.style.width='610px';
	elt=window.top.document.getElementById("ads");
	if ( elt )
	   elt.style.width='175px';
	elt=window.top.document.body;
	elt.style.backgroundImage='url(/images/stockmarket/bg-stockmarket.gif)';
}

function resizeFrameMore()
{
	elt=window.top.document.getElementById("verticalad");
	if ( elt )
		elt.style.display='none';
	elt=window.top.document.getElementById("adsPuffs");
	if ( elt )
	   elt.style.display='none';
	elt=window.top.document.getElementById("frame");
	if (elt)
		elt.style.width='1161px';
	elt=window.top.document.getElementById("wrapper");
	if ( elt )
		elt.style.width='985px';
	elt=window.top.document.getElementById("mainAreaContent");
	if ( elt )
	   elt.style.width='820px';
	elt=window.top.document.getElementById("main");
	if ( elt )
	   elt.style.width='820px';
	elt=window.top.document.getElementById("ads");
	if ( elt )
	   elt.style.display='none';
	elt=window.top.document.getElementById("header1");
	if (elt)
		elt.style.width='100%';
	elt=window.top.document.body;
	//elt.style.backgroundImage='url(/images/bg-2col.gif)';
}

function resizeFrame3()	// Used for textarkivet
{
	document.getElementById("verticalad").style.display="none";
	eltFrame = document.getElementById("frame");
	if (eltFrame) eltFrame.style.width="1100px";
	eltWrapper = document.getElementById("wrapper");
	if (eltWrapper) eltWrapper.style.width="1100px";
	eltMainArea = document.getElementById("mainAreaContent");
	if (eltMainArea) eltMainArea.style.width="830px";
	eltMain = document.getElementById("main");
	if (eltMain) eltMain.style.width="830px";
}

// Open a window pop-up
function wopen(url, title, options)
{
	window.open(url, title, options);
	return;
}


