var xmlHttp		= null;
var xmlHttpElt	= null;

function loadContent( id , url ) {
	if( ( id == null || id == "" ) && ( url == null || url == "" ) ) 
		return false;

	if( url == null || url == "" ) {
		url	= "generatePage.php";
	}
	else {
		if( url.indexOf( "?" ) < 0 ) {
			url += "?";
		}
		else {
			url += "&";
		}
		url += "noFramework=true";
	}

	if( id != null && id != "" ) {
		if( url.indexOf( "?" ) < 0 ) {
			url += "?";
		}
		else {
			url += "&";
		}
		url += "pageId="+ id;
	}  

	document.getElementById( "msgBox" ).innerHTML="";

	loadAjax( "siteContentInner" , url );

	return false;
}

function reloadMenu( ) {
	loadAjax( "siteMenuInclude" , "pages/include/menu.php?reload=1" );
}

function loadObjectChangeById( changelogElt , eltLoadId ) {
	var changelogId	= document.getElementById( changelogElt ).value;

	var url	= "pages/ajax/getObjectChange.php?changelogId="+ changelogId;

	loadAjax( eltLoadId , url );
}

function openObjectChangeForPreview( changelogElt , pageId ) {
	var changelogId	= document.getElementById( changelogElt ).value;

	if( changelogId != null && changelogId != "" ) {
		var url	= urlBase + "index.php?pageId="+pageId+"&changelogId="+ changelogId;

		openPage( url , "_Content preview" );
	}
}

function loadAjax( eltId , url ) {
	if( url == "" || url == null || eltId == "" || eltId == null ) {
		return false;
	}

	if( urlBase != null && urlBase != "" && url.indexOf( urlBase ) < 0 && url.indexOf( "http" ) < 0 ) {
		url	= urlBase + url;
	}

	xmlHttpElt	= document.getElementById( eltId );
	if( xmlHttpElt == null ) {
		return false;
	}

	loadXmlHttp( url );
}

function loadXmlHttp( url ) {
	xmlHttp	= null;
	if( window.XMLHttpRequest ) { // code for Mozilla, etc.
		xmlHttp	= new XMLHttpRequest( );
	}
	else if( window.ActiveXObject ) { // code for IE
		xmlHttp	= new ActiveXObject( "Microsoft.XMLHTTP" );
	}

	if( xmlHttp != null ) {
		xmlHttp.onreadystatechange	= stateChange;
		xmlHttp.open( "GET" , url , true );
		xmlHttp.send( null );
	}
}

function stateChange( ) {
	if( xmlHttp.readyState == 4 ) { // if xmlHttp shows "loaded"
		var xmlHttpEltType = xmlHttpElt.tagName.toLowerCase();

		if( xmlHttp.status == 200 ) { // if "OK"
			if( xmlHttpEltType == "value" || xmlHttpEltType == "textarea" ) {
				xmlHttpElt.value	= xmlHttp.responseText;
			}
			else {
				xmlHttpElt.innerHTML	= xmlHttp.responseText;
			}
		}
		else {
			if( xmlHttpEltType == "value" || xmlHttpEltType == "textarea" ) {
				xmlHttpElt.value	= "Data kunde inte laddas: " + xmlHttp.statusText;
			}
			else {
				xmlHttpElt.innerHTML	= "Sidan kunde inte laddas:<br /><br />" + xmlHttp.statusText;
			}
		}

		if( xmlHttpEltType == "value" || xmlHttpEltType == "textarea" ) {
			if( xmlHttpEltType == "textarea" && navigator.userAgent.toLowerCase().indexOf("firefox") >= 0 ) {
				var siteContentElt = document.getElementById( "siteContent" );
				var offset = getOffsetToParent( xmlHttpElt , siteContentElt , "top" );
				if( offset < 20 ) {
					offset = 0;
				}
				else {
					offset -= 20;
				}
				siteContentElt.scrollTop = offset;
				xmlHttpElt.setSelectionRange( 0 , 0 );

			}
			xmlHttpElt.focus( );
		}
	}
}

function openPage( x , y , a , b , normal ) {
	if( y == "_self" || y == "" || y == null ) {
		window.location.href = x;
	}
	else if( y.substr( 0, 1 ) != "_" ) {
		parent.frames[y].location = x;
	}
	else {
		if( a == null || a == "" )
			a = 1000;
		if( b == null || b == "" )
			b = 650

		if( normal != null && normal == true ) {
			window.open( ""+x+"" , ""+y+"" , " toolbars= 1, scrollbars= 1, location= 1, status= 1, menubars= 1, resizable= 1, width= "+ a +", height= "+ b +", left= 25, top= 25 " );
		}
		else {
			window.open( ""+x+"" , ""+y+"" , " toolbars= 0, scrollbars= 1, location= 0, status= 1, menubars= 0, resizable= 1, width= "+ a +", height= "+ b +", left= 50, top= 50 " );
		}
	}
}

function loadImage( eltId , imgPath , text , height , width ) {
	if( eltId == "" || eltId == null ) {
		return;
	}

	var newHtml	= "";
	if( imgPath != null && imgPath != "" ) {
		newHtml	= "<img src=\""+ imgPath +"\" ";
		if( height != null && height != '' )	newHtml += "height=\""+ height +"\" ";
		if( width != null && width != '' )		newHtml += "width=\""+ width +"\" "; 
		newHtml += " />";

		if( text != null && text != "" )		newHtml += "<div>"+ text +"</div>"; 
	}

	document.getElementById( eltId ).innerHTML = newHtml;
}

function changeListPageSize( selectElt ) {
	var url	= window.location.href;
	if( url.indexOf( "?" ) > 0 ) {
		url	= url.substr( 0 , url.indexOf( "?" ) );
	}
	url	+= "?listPageSize="+selectElt.value;

	window.location.href = url;
}

function changeFormAction( formId , action , append ) {
	var formElt = document.getElementById( formId );
	if( formElt != null ) {
		if( append != null && append == true ) {
			if( formElt.action.indexOf( "?" ) < 0 ) {
				formElt.action = formElt.action + "?";
			}
			else {
				formElt.action = formElt.action + "&";
			}
			formElt.action = formElt.action + action;			
		}
		else {
			formElt.action = action;		
		}
	}
}

function getOffsetToParent( elt , parentElt , type ) {
	if( type == null )
		type = "top";

    var offsetType	= "offset" + type.charAt(0).toUpperCase() + type.slice(1);
    var offset		= elt[offsetType];

    while ( (elt = elt.offsetParent) != parentElt ) 
        offset += elt[offsetType];

    var clientOffsetType = offsetType.replace("offset", "client");
    if ( elt[clientOffsetType] )
    	offset += elt[clientOffsetType];

    return offset;
}

function getDaysInMonth( month , year ) {
	var daysInMonth = 0;

	if( month >= 1 && month <= 12 ) {
		switch( month ) {
			case 1:
			case 3:
			case 5:
			case 8:
			case 10:
			case 12:
				daysInMonth = 31;
				break;
			case 4:
			case 6:
			case 7:
			case 9:
			case 11:
				daysInMonth = 30;
				break;
			case 2:
				daysInMonth = ( year != null ? daysInFebruary( year ) : 28 );
				break;
		}
	}

	return daysInMonth;
}

function daysInFebruary (year) {
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return ( ((year % 4 == 0) && (!(year % 100 == 0) || (year % 400 == 0))) ? 29 : 28 );
}

function getMinutes( value ) {
	if( value == "" ) return 0;

	var negative	= 1;
	if( value.substr( 0 , 1 ) == "-" ) {
		negative = -1;
		value = value.substr( 1 );
	}

	var hour	= value.substr( 0 , value.indexOf( ":" ) );
	var min		= value.substr( value.indexOf( ":" )+1 );

	return negative * (min * 1 + (hour * 60) * 1);
}

function getTimeString( minutes ) {
	var minutePart	= (minutes % 60);
	var hourPart	= ( ( minutes - minutePart ) / 60 );

	var minuteAbs	= Math.abs(minutePart);
	var hourAbs		= Math.abs(hourPart);

	return ( hourPart < 0 || minutePart < 0 ? "-" : "" )+( hourPart < 10 && hourPart > -10 ? "0" : "" )+hourAbs + ":" + ( minutePart < 10 && minutePart > -10 ? "0" : "" )+minuteAbs;
}

function addClass(elt, c) {
	if(!elt) return;

	var currClass = elt.className;

	if( -1 != currClass.indexOf(c) )
		return;

	elt.className = currClass + " " + c;
}


function removeClass(elt, c) {
	if(!elt) return;

	var currClass = elt.className;

	if( -1 == currClass.indexOf(c) )
		return;

	var re			= new RegExp(c);
	elt.className	= currClass.replace(re, "");
}

function showMsgBox( msg , type ) {

	var msgBox;

	if( document.getElementById("msgBox") ) {
		msgBox = document.getElementById("msgBox");
	}
	else {
		return;
	}

	var html = "<table><tr>";

	if( type != null && ( "err" == type.toLowerCase() || "warn" == type.toLowerCase() || "ok" == type.toLowerCase() ) ) {
		html += "<td><img src= \""+urlBase+"images/site/sign"+type.toLowerCase()+".gif\" onClick=\"this.parentNode.parentNode.parentNode.parentNode.style.display='none';\" /></td>";
	}

	html += "<td style= \"vertical-align: middle;\">"+msg+"</td></tr></table>";

	msgBox.innerHTML 		= html;
	msgBox.style.display	= "block";
	window.scrollTo(0,0);
}

function getParent( node , tagName ) {
	if( !node ) return false;

	var tn = ( tagName ? tagName.toLowerCase() : false );

	if( !tn ) return node.parentNode;

	var pNode = false;

	for( var tmp = node ; tmp ; tmp = tmp.parentNode ) {
		if( !tmp ) break;
		if( !tmp.tagName ) continue;

		if( tn == tmp.tagName.toLowerCase() ) {
			pNode = tmp;
			break;
		}
	}

	return pNode;
}

function getInputs( root , fieldArray ) {

	if( !root || !root.tagName || !fieldArray ) return;

	var tagName = root.tagName.toLowerCase();

	if( "input" == tagName || "select" == tagName || "textarea" == tagName || "button" == tagName || "iframe" == tagName ) {
		fieldArray[fieldArray.length] = root;
		return;
	}

	var cNodes = root.childNodes;

	if( !cNodes ) return;

	var node;
	for( var i = 0 ; i < cNodes.length ; i++ ) {
		getInputs( cNodes[i], fieldArray );
	}
}

function getElements( root , eltArray ) {
	if( !root || !eltArray ) return;
	if( root.tagName ) {
		eltArray[eltArray.length] = root;
	}

	var cNodes = root.childNodes;

	if( cNodes ) {
		var node;
		for( var i = 0 ; i < cNodes.length ; i++ ) {
			getElements( cNodes[i], eltArray );
		}
	}
}

function isInput( elt ) {
	if( !elt )
		return false;

	var tagName = elt.tagName.toLowerCase();

	if( "input" == tagName || "select" == tagName || "textarea" == tagName || "button" == tagName || "iframe" == tagName ) {
		return true;
	}

	return false;
}

function getActiveEltByIdOrNAme( eltIdName ) {
	if( document.getElementById( eltIdName ) ) {
		return document.getElementById( eltIdName );
	}

	var dependFields	= document.getElementsByName( eltIdName );
	if( dependFields != null ) {
		for( var i = 0 ; i < dependFields.length ; i++ ) {
			if( dependFields[i].checked != "" ) {
				return dependFields[i];
			} 
		}
	}

	return null;
}