// Browser safe opacity handling function

function setOpacity( value ) {
 document.getElementById("movemediv").style.opacity = value / 10;
 document.getElementById("movemediv").style.filter = 'alpha(opacity=' + value * 10 + ')';
}

function fadeInMyPopup() {
 for( var i = 0 ; i <= 100 ; i++ )
   setTimeout( 'setOpacity(' + (i / 10) + ')' , 10 * i );
}

function fadeOutMyPopup() {
 for( var i = 0 ; i <= 100 ; i++ ) {
   setTimeout( 'setOpacity(' + (10 - i / 10) + ')' , 10 * i );
 }

 setTimeout('closeMyPopup()', 800 );
}

function closeMyPopup() {
 document.getElementById("movemediv").style.display = "none";
}

function fireMyPopup() {
 setOpacity( 0 );
 document.getElementById("movemediv").style.display = "block";
 fadeInMyPopup();
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();






function getInternetExplorerVersion() {

    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer') {

        var ua = navigator.userAgent;

        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

        if (re.exec(ua) != null)

            rv = parseFloat(RegExp.$1);

    }

    return rv;

}

function checkVersion() {

    var msg = "You're not using Windows Internet Explorer.";

    var ver = getInternetExplorerVersion();

    if (ver > -1) {

        if (ver >= 8.0)

            msg = "You're using a recent copy of Windows Internet Explorer."

        else

            msg = "You should upgrade your copy of Windows Internet Explorer.";

    }

    alert(msg);

}


function detectBrowser() { 
    var BO = new Object(); 
    BO["ie"]        = false /*@cc_on || true @*/; 
    BO["ie4"]       = BO["ie"] && (document.getElementById == null); 
    BO["ie5"]       = BO["ie"] && (document.namespaces == null) && (!BO["ie4"]); 
    BO["ie6"]       = BO["ie"] && (document.implementation != null) && (document.implementation.hasFeature != null); 
    BO["ie55"]      = BO["ie"] && (document.namespaces != null) && (!BO["ie6"]); 
    /*@cc_on
    BO["ie7"]       = @_jscript_version == '5.7';
    @*/ 
    BO["ns4"]       = !BO["ie"] &&  (document.layers != null) &&  (window.confirm != null) && (document.createElement == null); 
    BO["opera"]     = (self.opera != null); 
    BO["gecko"]     = (document.getBoxObjectFor != null); 
    BO["khtml"]     = (navigator.vendor == "KDE"); 
    BO["konq"]      = ((navigator.vendor == 'KDE') || (document.childNodes) && (!document.all) && (!navigator.taintEnabled)); 
    BO["safari"]    = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName); 
    BO["safari1.2"] = (parseInt(0).toFixed == null) && (BO["safari"] && (window.XMLHttpRequest != null)); 
    BO["safari2.0"] = (parseInt(0).toFixed != null) && BO["safari"] && !BO["safari1.2"]; 
    BO["safari1.1"] = BO["safari"] && !BO["safari1.2"] && !BO["safari2.0"]; 
    return BO; 
} 


//Das Objekt, das gerade bewegt wird.
var dragobjekt = null;

// Position, an der das Objekt angeklickt wurde.
var dragx = 0;
var dragy = 0;

// Mausposition
var posx = 0;
var posy = 0;



function ElementDimensions(elem) { 	this.inner = {	width: elem.clientWidth, height: elem.clientHeight }; 	this.outer = { width: elem.offsetWidth, height: elem.offsetHeight }; 	this.scroll = { width: elem.scrollWidth, height: elem.scrollHeight<elem.clientHeight ? elem.clientHeight : elem.scrollHeight, left: elem.scrollLeft, top: elem.scrollTop	}; 	var tmp = elem; 	this.left = this.top = 0; 	while(tmp.offsetParent) { 		this.left += tmp.offsetLeft; 		this.top += tmp.offsetTop; 		tmp = tmp.offsetParent; 	} }


function getViewportSize() { 	var w = (document.documentElement && document.documentElement.clientWidth) || window.innerWidth || document.getElementsByTagName('body')[0].clientWidth; 	var h = (document.documentElement && document.documentElement.clientHeight) || window.innerHeight || document.getElementsByTagName('body')[0].clientHeight; 	return {width : w, height : h}; }


function ElementDimensions(elem) {
	this.inner = { 
		//content and padding; gives 0 for inline elements (you can use scrollWidth/Height if it's inline)
		width: elem.clientWidth,
		height: elem.clientHeight
	};
	
	this.outer = { //everything (content, padding, scrollbar, border)
		width: elem.offsetWidth,
		height: elem.offsetHeight
	};
	 
	this.scroll = {
		//width & height of entire content field (including padding), visible or not
		//incorrect in Opera; it doesn't include the padding
		width: elem.scrollWidth,
		//if there are no scrollbars, IE gives the actual height of the content instead of the height of the element
		height: elem.scrollHeight<elem.clientHeight ? elem.clientHeight : elem.scrollHeight,
	 
		//scroll position of content & padding
		left: elem.scrollLeft,
		top: elem.scrollTop
	};
	 
	//position of element from the top-left corner of the document
	var tmp = elem;
	this.left = this.top = 0;
	while(tmp.offsetParent) {
		this.left += tmp.offsetLeft;
		this.top += tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
}



function getElement (el) {
	if (typeof el == 'string') return document.getElementById (el);
		return el;
}



var imgnewheight = 0;


function growit () {

/*
	var outer = getElement ('outer');
	outer.style.height = newheight+"px";

	var picholder = getElement ('picholder');
	picholder.style.height = newheight+"px";
*/

	var picholder = getElement ('picholder');
	var outer = getElement ('outer');

	
//	alert (parseInt (picholder.style.height)+ " < "+imgnewheight);

	if (parseInt (picholder.style.height) < imgnewheight) {
		var newheight = parseInt (picholder.style.height) +30;
		outer.style.height = newheight+"px";
		picholder.style.height = newheight+"px";
		my_timeout = setTimeout("growit();", 75);
	} else {

		anifinished ();
	}

	//console.log (parseInt (picholder.style.height), "should => ", imgnewheight);

//  if (parseInt(document.my_image.width) < 200)   {
    
//  }


}


function anifinished () {
	//	animation finished, now pos the redbox
	//	set the position of the redbox
	var b = getElement ('picholder');
	var rb = getElement ('redbox');
	var bpos = new ElementDimensions (b);

	var inset = 20;

	var newx = bpos.inner.width - 340 - inset;
	var newy = bpos.inner.height - 320 - inset;
	rb.style.left = newx+"px";
	rb.style.top = newy+"px";


//	alert ("ANIMATION FINISHED!");
	fadeInMyPopup ();

}


var notificationisvisible = true;

function draginit() {





	document.onmousemove = drag;
	document.onmouseup = dragstop;


	var vp = getViewportSize ();

	var margintop = 42;
	var marginbottom = margintop +30;

	var newheight = vp.height - margintop - marginbottom;

	imgnewheight = newheight;

	growit ();

	var surr = getElement ('surr');
	surr.style.paddingTop = margintop+"px";


	// update the ml object 
	var x = getElement ('m1');
	var pos = new ElementDimensions (x);

	x.style.top = (pos.top + margintop)+"px";


	var all = getElement ('all');
	all.className = "notloading";


	var b2 = getElement ('b');
	b2.style.marginTop = '0px';

/*
	//	set the position of the redbox
	var b = getElement ('picholder');
	var rb = getElement ('redbox');
	var bpos = new ElementDimensions (b);





	var inset = 20;

	var newx = bpos.inner.width - 400 - inset;
	var newy = bpos.inner.height - 130 - inset;
	rb.style.left = newx+"px";
	rb.style.top = newy+"px";
*/


	if (BrowserDetect.version == 7 && BrowserDetect.browser == "Explorer") {


		var body = getElement ('mainbody');
		if (body) {
			body.style.position = 'absolute';
		}
	}

}


function dragstart(element) {
	dragobjekt = element;
	dragx = posx - dragobjekt.offsetLeft;
	dragy = posy - dragobjekt.offsetTop;
}


function dragstop() {
	dragobjekt=null;
}


function drag(evt) {

	
//	console.log ("in drag!");




	var moverdims = new ElementDimensions (document.getElementById ('b'));
	
  posx = document.all ? window.event.clientX : evt.pageX;
  posy = document.all ? window.event.clientY : evt.pageY;
  if(dragobjekt != null) {
  	
  		if (notificationisvisible) {
		notificationisvisible = false;
		fadeOutMyPopup ();
	}


  	var safemarginx = dims.inner.width;
  	var safemarginy = dims.inner.height;

	
	var x = getElement ('m1');
	
	if (((posx - dragx + moverdims.left) >= dims.inner.width - safemarginx)
		|| (posx - dragx + moverdims.left) <= -1 * (moverdims.inner.width - safemarginx)) {
		// nothing
	} else {
	}

	var ppp = new ElementDimensions (getElement ('b'));
	var sizes = new ElementDimensions (getElement ('m2'));


//	höhebild - höhekasten

/*
	console.log ("A", ppp.inner.height - sizes.inner.height);
	console.log ("B", posy - dragy);
	console.log ("JA? ", ppp.inner.height - sizes.inner.height > posy - dragy);
*/

	if (posx - dragx > 0 || posx - dragx < -950) {
	// nothing
	} else {
		dragobjekt.style.left = (posx - dragx) + "px";	
		x.style.left = (posx - dragx + moverdims.left +5) + "px";
	}


	if (posy - dragy > 0 || ppp.inner.height - sizes.inner.height > posy - dragy) {
		//	nothing 
	} else {
		dragobjekt.style.top = (posy - dragy) + "px";
		x.style.top = (posy - dragy + moverdims.top + 5) + "px";
	}

       

  	
	
  	
    if ((posy - dragy) >= dims.inner.height - safemarginy
        || (posy - dragy) <= -1 * (moverdims.inner.height - safemarginy)) {
    	// nothing
    } else {
	}
  }
}
//-->

