//***********************************************************************************************************
//***
//***	Funktionen für 	y F r a m e W o r k   -   A W O - G S D
//***
//***********************************************************************************************************

//-------------------------------------------------------------------------------------------------
// allg. Funktionen
// Browser-Probleme
// Header-Funktionen
// Navigation
// Hilfsfunktionen

var sServer = 'http://www.awogsd.de/';

//-------------------------------------------------------------------------------------------------
//	Farbwechsel für aktivierte Steuerelemente
var Faktiv='#FAA71C';	//eine andere Farbe, wenn in das Feld geklickt wird
var ns6=document.getElementById&&!document.all;var previous='';var eventobj;var intended=/INPUT|TEXTAREA/;
function fktCheckEl(which){if (which.style&&intended.test(which.tagName)){if (ns6&&eventobj.nodeType==3)eventobj=eventobj.parentNode.parentNode;return true;}else return false;}
function fktFarbe(e){eventobj=ns6? e.target : event.srcElement;if (previous!=''){if (fktCheckEl(previous))previous.style.backgroundColor='';previous=eventobj;if (fktCheckEl(eventobj))eventobj.style.backgroundColor=Faktiv;}else{if (fktCheckEl(eventobj))eventobj.style.backgroundColor=Faktiv;previous=eventobj;}}

//-------------------------------------------------------------------------------------------------
//	leert das aufrufende Feld
function fktLeer(oID){
	var oFeld=document.getElementById(oID);
	oFeld.value = "";
}

//-------------------------------------------------------------------------------------------------
//MouseOver- und MouseOut-Effekte für DIV-TAGs
function fktLink(strID){
	var oDivL = document.getElementById(strID);
	if (oDivL.className == "div_nav")
	{
		oDivL.className = "div_nav1";
		return;
	}else{
		oDivL.className = "div_nav";
		return;
	}
}


//***********************************************************************************************************
//	Funktionen zur Behebung von Browser-Problemen
//***********************************************************************************************************


//-------------------------------------------------------------------------------------------------
//---- browser-check ------------------------------------------------------------------------------
var yBrowser = "";
var yTemp = navigator.userAgent;
	if (fktInStr(yTemp, "Opera") > 0){yBrowser = "Opera";}
	else if (fktInStr(yTemp, "Firefox") > 0){yBrowser = "Firefox";}
	else if (fktInStr(yTemp, "Safari") > 0){yBrowser = "safari";}
	else if (fktInStr(yTemp, "MSIE 5.") > 0){yBrowser = "MSIE 5.x";}
	else{yBrowser = "MSIE";}

var ua		= navigator.userAgent;
var opera	= /opera [56789]|opera\/[56789]/i.test(ua);
var ie		= !opera && /msie [56789]/i.test(ua);		// preventing opera to be identified as ie
var moz		= !opera && /mozilla\/[56789]/i.test(ua);	// preventing opera to be identified as mz

//-------------------------------------------------------------------------------------------------
var ySubHoehe = 0;	//Korrekturangabe um Layer genauer zu positionieren
var ySystem = "";
var yTemp1 = navigator.appVersion;
	if (fktInStr(yTemp1, "Mac") > 0){ySystem = "Mac";}
	else if (fktInStr(yTemp1, "Windows") > 0){ySystem = "MS";}

var yErgebnis = ySystem + " " + yBrowser;
var sStyle = "width:18px;height:10px;background-color:#FFFFFF;";	//Mozilla
var sStyle2 = "width:18px;height:10px;background-color:#00AAB1;";	//Opera

	switch (yErgebnis){
/*		case "MS MSIE":
			//keine Korrektur notwendig (class='head_3')
			break;
		case "MS MSIE 5.x":
			document.write ("<DIV style='position:absolute;top:40;left:198;'><IMG src='Grafik/browserproblem.gif' width='18' height='10' border='0'></DIV>");
			break;
*/
		case "MS Opera":
			document.write ("<DIV style='position:absolute;top:46;left:200;" + sStyle2 + "'></DIV>");
			break;
		case "MS Firefox":
			document.write ("<DIV style='position:absolute;top:52;left:198;" + sStyle + "'></DIV>");
			break;
/*
		case "Mac Safari":
			document.write ("<DIV style='position:absolute;top:40;left:198;'><IMG src='Grafik/browserproblem.gif' width='18' height='10' border='0'></DIV>");
			break;
		case "Mac Firefox":
			document.write ("<DIV style='position:absolute;top:40;left:198;'><IMG src='Grafik/browserproblem.gif' width='18' height='10' border='0'></DIV>");
			break;
		case "Mac Opera":
			document.write ("<DIV style='position:absolute;top:50;left:205;'><IMG src='Grafik/browserproblem.gif' width='18' height='10' border='0'></DIV>");
			break;
		case "Mac MSIE 5.x":
			document.write ("<DIV style='position:absolute;top:40;left:198;'><IMG src='Grafik/browserproblem.gif' width='18' height='10' border='0'></DIV>");
			ySubHoehe = -50;
			break;
*/
		}
//alert("\n" + "Ergebnis: " + yErgebnis + "\n" + "\n" + "(" + yTemp1 + " - " + yTemp + ")" + "\n" + "\n");



//***********************************************************************************************************
//***
//***	Funktionen für 	y F r a m e W o r k   -   A W O - G S D   -   H A E D E R
//***
//***********************************************************************************************************
//	Steuerung des Header-Menues:	MouseOver- + MouseOut-Effekte
function fktURL0(param){
	var sDiv = document.getElementById('h'+param);
	var clsName = sDiv.className;

	switch (clsName)
	{
		case "head_1":
			sDiv.className='head_2';	//grüner Hintergrund + weisse Schrift => schwarze Schrift
			break;
		case "head_2":
			sDiv.className='head_1';	//grüner Hintergrund + schwarze Schrift => weisse Schrift
			break;
		case "head_3":
			sDiv.className='head_4';	//weisser Hintergrund + grüne Schrift => schwarze Schrift
			break;
		case "head_4":
			sDiv.className='head_3';	//weisser Hintergrund + schwarze Schrift => grüne Schrift
			break;

		case "head_1a":
			sDiv.className='head_2a';	//grüner Hintergrund + weisse Schrift => schwarze Schrift
			break;
		case "head_2a":
			sDiv.className='head_1a';	//grüner Hintergrund + schwarze Schrift => weisse Schrift
			break;

	}
}


//-------------------------------------------------------------------------------------------------
// vergrößern / verkleinern
function fktZoomIn(){
	if(document.body.style.zoom!=0){
		document.body.style.zoom*=1.2;
	}else{
		document.body.style.zoom=1.2;
	}
}

function fktZoomOut(){
	if(document.body.style.zoom!=0){
		document.body.style.zoom*=0.833;
	}else{
		document.body.style.zoom=0.833;
	}
}

function fktZoom(){
	document.body.style.zoom=0;
}


//***********************************************************************************************************
//
//	Funktionen für 	y F r a m e W o r k   -   A W O - G S D   -   N A V I G A T I O N
//
//***********************************************************************************************************
var divHMP;		//div-TAG: HauptMenuePunkt
var divUMP;		//div-TAG: UnterMenuePunkt
var picMP;		//Bild zum Menue-Punkt


//-------------------------------------------------------------------------------------------------
//	onMouseOver-Effekte
//-------------------------------------------------------------------------------------------------
function fktMover(oMnu,Ebene) {
	switch (Ebene)
	{
		case 10:	// z. Zt.: oberste Ebene
			// den betroffenen Hauptmenüpunktes markieren
			divHMP = document.getElementById('y'+oMnu);
			divHMP.className = "cls0_aktiv";
			break;

		case 20:
			//betroffene Elemente
			divHMP = document.getElementById('y'+oMnu);	//div-TAG
			divUMP = document.getElementById(oMnu);		//Untermenüpunkt(e)
			picMP  = document.getElementById('p'+oMnu);	//Bild zum Menue-Punkt

			// WENN Untermenue-Punkte sichtbar, dann bleibt der Menue-Punkt markiert	
			if (divUMP && divUMP.style.display ==  "block")
			{
				divHMP.className = "cls1_aktiv";
			}else{
				divHMP.className = "cls1_over";			// den betroffenen Hauptmenüpunkt in ursprünglichen Zustand	
				picMP.src = "Grafik/nav_b.gif";			//Bildwechsel
			}
			break;


		case 30:	// das 'MouseOver'-Element mit grünem Balken versehen
			divHMP = document.getElementById('d'+oMnu);
			if (divHMP.className ==  "cls4"){
			divHMP.className = "cls4_aktiv";
			divHMP.style.clear = "left";
			}
			break;


		case 40:	//Aktionen auf den Layer-Menue-Punkten: schwarze Unterstreichung
			divHMP = document.getElementById(oMnu);			
			if (divHMP.className ==  "cls7") {divHMP.className = "cls7_aktiv";}			
			break;
	}
}


//-------------------------------------------------------------------------------------------------
//	onMouseOut-Effekte
//-------------------------------------------------------------------------------------------------
function fktMout(oMnu,Ebene) {
	switch (Ebene)
	{
		case 10:	// z. Zt.: oberste Ebene							fktToggle0b(oMnu)
			//betroffene Elemente
			divHMP = document.getElementById('y'+oMnu);
			divUMP = document.getElementById(oMnu);		//Untermenüpunkt(e)
			// den betroffenen Hauptmenüpunkt in ursprünglichen Zustand
				divHMP.className = "cls0";
			// AUSSER es sind noch Untermenue-Punkte sichtbar, dann bleibt der Menue-Punkt markiert
				if (divUMP && divUMP.style.display ==  "block") {divHMP.className = "cls0_aktiv";}
			break;


		case 20:
			//betroffene Elemente
			divHMP = document.getElementById('y'+oMnu);	//div-TAG
			divUMP = document.getElementById(oMnu);		//Untermenüpunkt(e)
			picMP  = document.getElementById('p'+oMnu);	//Bild zum Menue-Punkt

			// WENN Untermenue-Punkte sichtbar, dann bleibt der Menue-Punkt markiert	
			if (divUMP && divUMP.style.display ==  "block")
			{
				divHMP.className = "cls1_aktiv";
			}else{
				divHMP.className = "cls1";				//den betroffenen Hauptmenüpunkt in ursprünglichen Zustand	
				picMP.src = "Grafik/nav_a.gif";			//Bildwechsel
			}
			break;


		case 30:
			//betroffene Elemente
			divHMP = document.getElementById('d'+oMnu);	//div-TAG
			divUMP = document.getElementById('l'+oMnu);	//Layer-Untermenüpunkt(e)

			// WENN Untermenue-Punkte sichtbar, dann bleibt der Menue-Punkt markiert	
/*			if (divUMP && divUMP.style.display ==  "block")
			{
				divHMP.className = "cls4_aktiv";
			}else{
				divHMP.className = "cls4";		// den betroffenen Hauptmenüpunkt in ursprünglichen Zustand
												//	 => den grünem Balken entfernen
			}
*/
			if (divUMP && (divUMP.style.display ==  "block" || divUMP.style.display ==  "inline" || divUMP.style.display ==  "-moz-inline-box" || divUMP.style.display ==  "inline-block"))
			{
				divHMP.className = "cls4_aktiv";
				divHMP.style.clear = "left";
			}else{
				divHMP.className = "cls4";		// den betroffenen Hauptmenüpunkt in ursprünglichen Zustand
												//	 => den grünem Balken entfernen
				divHMP.style.clear = "left";
			}
			break;


		case 40:
			divHMP = document.getElementById(oMnu);
			if (divHMP.className ==  "cls7_aktiv") {divHMP.className = "cls7";}
			break;
		}
}


//-------------------------------------------------------------------------------------------------
//	onClick-Ereignisse
//-------------------------------------------------------------------------------------------------
function fktClick(oMnu,Ebene,sHref,sZiel,eID) {

	switch (Ebene)
		{
		case 10:	// z. Zt.: oberste Ebene
			//betroffene Elemente
			divHMP = document.getElementById('y'+oMnu);	//Hauptmenüpunkt
			divUMP = document.getElementById(oMnu);		//Untermenüpunkt(e)

			// Schliessen der Untermenue-Punkte
			if (divUMP.style.display ==  "block")
			{
				// !!!	Reihenfolge beachten
				// 1.	schliesst alle offenen Zweige, bevor ein neuer Zweig geöffnet wird	
				fktCollapse(Ebene);
				// 2.	Aussehen des Hauptmenüpunktes ändern...
				if (divHMP.className ==  "cls0_aktiv")	{divHMP.className = "cls0";}

			}else{
			// Öffnen der Untermenue-Punkte
				// !!!	Reihenfolge beachten
				// 1.	schliesst alle offenen Zweige, bevor ein neuer Zweig geöffnet wird	
				fktCollapse(Ebene);
				// 2.	Zweig einblenden = Untermenüpunkte einblenden
				divUMP.style.display = "block";
				// 3.	Aussehen des Hauptmenüpunktes ändern...
				if (divHMP.className ==  "cls0")	{divHMP.className = "cls0_aktiv";}
			}
			break;


		case 20:
			//betroffene Elemente
			divHMP = document.getElementById('y'+oMnu);	//div-TAG
			divUMP = document.getElementById(oMnu);		//Untermenüpunkt(e)
			picMP = document.getElementById('p'+oMnu);	//Bild zum Menue-Punkt

			//wenn UMP sichtbar sind
			if (divUMP.style.display ==  "block")
			{
				// !!!	Reihenfolge beachten
				fktCollapse(Ebene);	//schliesst alle offenen Zweige, bevor ein neuer Zweig geöffnet wird
				//weissen Rahmen ausblenden
				divHMP.className = "cls1";
				//Zweig ausblenden
				divUMP.style.display = "none";

			}else{

				// !!!	Reihenfolge beachten
				fktCollapse(Ebene);	//schliesst alle offenen Zweige, bevor ein neuer Zweig geöffnet wird
				//weissen Rahmen einblenden
				divHMP.className = "cls1_aktiv";
				//Bildwechsel		
				picMP.src = "Grafik/nav_a.gif";
				//Zweig einblenden = Untermenüpunkte einblenden
				divUMP.style.display = "block";
			}
			break;


		case 30:
			// alle div-TAGs mit class = "cls5" und "cls4_aktiv" werden auf class = "cls4" zurückgesetzt
				fktCollapse(Ebene);
			// auf den Menue-Punkt wurde geklickt  => er ist aktiv  => grüner Balken
				divHMP = document.getElementById('d'+oMnu);
				divHMP.className = "cls5";
				if (yBrowser == "MSIE") {
				divHMP.style.display = "inline";	//DIVs nebeneinander: dieser und der auf grauem Layer müssen "inline" sein
				}else{
				divHMP.style.display = "inline-block";
				divHMP.style.display = "-moz-inline-box";
				}

			// Zweig einblenden = Untermenüpunkte einblenden
				divUMP = document.getElementById('l'+oMnu);	//Menue-Layer
				if (divUMP && (divUMP.style.display !=  "block" || divUMP.style.display !=  "inline" || divUMP.style.display !=  "-moz-inline-box" || divUMP.style.display !=  "inline-block"))
				{	//Layer einblenden
					divUMP.className = "cls6";			//diese class wird benötigt, um den Layer für den Löschvorgang zu identifizieren
					divUMP.style.left = 182;
					divUMP.style.display = "inline";	//DIVs sind nur bei IE nebeneinander
				}
			break;


		case 40:
			//siehe 30 oben
			break;
	}
	
	return;
	//öffnet einen URL
	//fktURL(oMnu,Ebene,sHref,sZiel,eID);
}


//-------------------------------------------------------------------------------------------------
//	URL laden
//-------------------------------------------------------------------------------------------------
function fktURL(oMnu,Ebene,sHref,sZiel,eID) {
//Ebene wird für zukünftige Erweiterungen übergeben

	//wenn kein URL angegeben => nicht ausführen
	if(!sHref)
	{
		return;
	}else{
	

		//prüfen, ob URL oder ID übegeben wurde
		if (fktInStr(sHref,'www.') == 0)
		{
			location.href = sServer + "?" + eID;

		}else{
			//sind die Angaben vollständig
			if (fktInStr(sHref,'htt') == 0)
			{
				sHref = "http://" + sHref;
			}

			// Aufruf eines externen Inhalts
			// soll dieser in einem neuen Fenster oder im eigenen angezeigt werden ?
			if (sZiel == "e")
			{
				// 'extern': URL wird in neuem Fenster geöffnet
				var NeuesFenster = window.open(sHref,"x","");
			}else{
				// 'intern': URL wird im Hauptfenster geöffnet
				location.href = sServer + "default.asp?eID=" + eID + "&eURL=" + sHref;
			}

		}

	}

}

//-------------------------------------------------------------------------------------------------
//	Schliessen-Ereignisse
//-------------------------------------------------------------------------------------------------
function fktCollapse(Ebene) {

	switch (Ebene)
	{
		case 10:	// z. Zt.: oberste Ebene
			//Untermenüs schliessen, die über div class = 'tree' gesteuert werden
			//und die Extra-Formatierung "weisser Rahmen" entfernen
			divs = document.getElementsByTagName("DIV");
			for (i = 0;i<divs.length;i++)
			{
				if(divs[i].className ==  "tree")		{divs[i].style.display = "none";}
				
				if(divs[i].className ==  "cls0_aktiv")	{divs[i].className = "cls0";}
				
				//formatierender div-TAG mit "weisser Rahmen"
				if (divs[i].className ==  "cls1_aktiv")	{divs[i].className = "cls1";}
			}
			//Untergeordnete Menue-Punkte in den Original-Zustand versetzen
			fktCollapse(20);
			break;


		case 20:
			//Untermenüs schliessen, die über div class = 'tree' gesteuert werden
			//und die Extra-Formatierung "weisser Rahmen" entfernen
			divs = document.getElementsByTagName("DIV");
			for (i = 0;i<divs.length;i++)
			{
				//formatierender div-TAG mit "weisser Rahmen"
				if (divs[i].className ==  "cls1_aktiv")
				{
					divs[i].className = "cls1";
					//unterhalb dieses divs kann sich ein weiterer geöffneter Zweig mit class = tree befinden
					if (divs[i+1].className ==  "tree")	{divs[i+1].style.display = "none";}
				}
			}
			//Untergeordnete Menue-Punkte in den Original-Zustand versetzen
			fktCollapse(30);
			break;


		case 30:
			divs = document.getElementsByTagName("DIV");
			for (i = 0;i<divs.length;i++)
			{
				//alle Menüpunkte mit grünem Balken und die mit Layer auf grauem Grund, in unmarkierten Zustand versetzen
				if(divs[i].className ==  "cls5" || divs[i].className ==  "cls4_aktiv")
				{
					divs[i].className = "cls4";
					divs[i].style.clear = "left";
					divs[i].style.display = "block";	//entfernt den "inline" für Opera & Mozilla
				}
				else if(divs[i].className ==  "cls6")	//alle Navigationslayer in der grauen Spalte unsichtbar machen
				{
					divs[i].style.display = "none";
					divs[i].style.clear = "left";
				}
			}
			break;


		case 40:
			//wird nicht benötigt
			break;

	}
}


//***********************************************************************************************************
//
//	Hilfsfunktionen
//
//***********************************************************************************************************


//-------------------------------------------------------------------------------------------------
//	Funktionen zum Einfärben von Suchbegriffen
//-------------------------------------------------------------------------------------------------
function fktFaerben(sKeywords){

var ref = document.location.search;
if(ref.indexOf("?")>-1){
	var qs;	
	var keywords;
	var Links;
	var rng;
	var before = '<font style="color:#000000;text-decoration:none;background-color:';
	var after = '</b></font>';

// die Funktion wird nur benötigt, wenn sKeywords geliefert wurden 
	if (sKeywords == "")return;

// die keywords werden in der URL übergeben: www.xyz.de/abc.html?keyword1&keyword2&keyword3
//	qs = ref.substring(1,ref.length);
//	keywords = qs.split('&');

//  die keywords werden der Funktion übergeben:
	keywords = sKeywords.split('&');
	Links = fktGetLinks();

	for(k=0;k<keywords.length;k++) {
		rng = document.body.createTextRange();  
		for (i=0;rng.findText(keywords[k])!=false; i++){ 
			try       { rng.pasteHTML(before + fktGetColor(k) + ';"><b>' + rng.text + after);}
			finally   { rng.collapse(false); }
		}
		rng.collapse(true);
	}
	fktCleanLinks(Links);
  }
}

function fktGetLinks(){
   var Links = new Array();
   for (i=0;i<document.body.getElementsByTagName('A').length;i++)
   {
	  Links[i] = new Array (document.body.getElementsByTagName('A')[i].href, document.body.getElementsByTagName('A')[i].innerHTML); 
   }
   return Links;
}

function fktGetColor(idx){
    var color = '#CCCCCC';
    switch (idx){
       case 0:
	       color='#99FF99'; break;
       case 1:
           color='yellow'; break;
       case 2:
           color='#FFCCFF'; break;
       case 3:
           color='#CC99FF'; break;
       case 4:
           color='#99CCFF'; break;
       case 5:
           color='#FFCC99'; break;
       case 6:
           color='#CCCCFF'; break;
       case 7:
           color='#66CCFF'; break;
       default:
           break;
    }
    return color;
}

function fktCleanLinks(Links){
  for (i=0;i<document.body.getElementsByTagName('A').length;i++)
  { 
    document.body.getElementsByTagName('A')[i].href = Links[i][0]; 
    document.body.getElementsByTagName('A')[i].innerHTML = Links[i][1];
  }
}

//-------------------------------------------------------------------------------------------------
function fktInStr(String1, String2){
/*
 InStr: Returns a Long specifying the position of the first 
        occurrence of one string within another. If String1
        or String2 is null, false (0) is returned.

 Parameters:
      String1 = String expression being searched.
      String2 = String expression sought

 Returns: Integer
*/

	var a = 0;

	if (String1 == null || String2 == null)	return (false);

	String1 = String1.toLowerCase();
	String2 = String2.toLowerCase();

	a = String1.indexOf(String2);
	if (a == -1)
		return 0;
	else
		return a + 1;
}


//-------------------------------------------------------------------------------------------------
function IsNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

//-------------------------------------------------------------------------------------------------
//	Mouse-Position ermitteln, um die Menue-Layer im grauen Navigationsfeld zu platzieren
//-------------------------------------------------------------------------------------------------
var xPos;
var yPos;
document.onmousemove = showXY;

function showXY(evt) {
var coords = getMouseXY(evt);
//window.status = coords;
}

function getMouseXY(evt) {
e = evt || window.event;
if(!e) return null;

if(document.layers) { //Netscape
return new Coord(e.pageX, e.pageY);
}else if(window.opera){	//opera
return new Coord(e.clientX, e.clientY);
}else if(document.all ) { //IE
return new Coord(e.x + document.body.scrollLeft, e.y + document.body.scrollTop);
}else if(document.getElementById) { //restliche Browser
return new Coord(e.pageX , e.pageY );
}
}

function Coord(x, y){

this.x = (!x)?0:x;
this.y = (!y)?0:y;

xPos = (!x)?0:x;
yPos = (!y)?0:y;

}

//-------------------------------------------------------------------------------------------------
//	Koordinaten eines Elements ermitteln
//-------------------------------------------------------------------------------------------------
function findPos(sID) {
	var yobj = document.getElementById(sID);
	var curleft = 0;
	var curtop = 0;
	if (yobj.offsetParent) {
		do {
				curleft += yobj.offsetLeft;
				curtop += yobj.offsetTop;

			} while (yobj = yobj.offsetParent);
	//return [curleft,curtop];
	xPos = curleft;
	yPos = curtop;
	}
}
//---------------------------------------------------------------------------------------
// ---- Fenster- und Pagehöhe und -breite bestimmen -------------------------------------
//
// Copy von http://www.huddletogether.com/projects/lightbox/
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
// var arrayPageSize = getPageSize();
//	arrayPageSize[0];	//page width
//	arrayPageSize[1];	//page height
//	arrayPageSize[2];	//window width
//	arrayPageSize[3];	//window height
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

