
//--------------------------------------- Browser and OS detection --------------------------------------//

function Detect_Browser() {
	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: "OmniWeb",
				versionSearch: "OmniWeb/",
				identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{		// 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.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]
	
	};
	BrowserDetect.init();
	return BrowserDetect.browser;
}



// ----------------------------------- Auto section height functions ------------------------------ //
 function Get_Window_Height() {
	 
		var windowHeight;
		if ( typeof( window.innerHeight )=='number' ) {
			windowHeight=window.innerHeight;
		}	else {
			if ( document.documentElement && document.documentElement.clientHeight ) {
				windowHeight=document.documentElement.clientHeight;
			}	else {
				if ( document.body&&document.body.clientHeight ) {
					windowHeight=document.body.clientHeight;
				}
			}
		}		
		return windowHeight;
	}
	
	
	
 function Fix_Table_Heights() {
	 
		var Browser_Detect = Detect_Browser();
		
		if ( Browser_Detect != "Firefox" ) {			
			
			
			//getSectionHeight( "dynamic_row_main", 100 ); 
			//getSectionHeight( "dynamic_row_text", 500 ); 
			
			var document_tables = document.getElementsByTagName( "table" );
			var available_height, remaining_height;
			var first_resize = true;
			var dynamic_row;
			
			for( var i = 0; i < document_tables.length; i++ ) {
			
				var current_table = document_tables[i];
				
				if ( current_table.className == "fullheight-dynamic" ) {
					
					var parentNode = current_table.parentNode;
									
					if ( parentNode.tagName.toLowerCase() == "body" ) {			
						available_height = Get_Window_Height();		
						first_resize = false;						
												
					}	else {		
					
						if ( first_resize ) {		 
							available_height = parentNode.offsetHeight;
							first_resize = false;						
						} else { 
							available_height = new_height;
						}
					
					}
					
					var dynamic_row_id = "";
					var new_height = available_height;
					for( var j=0; j < current_table.rows.length; j++ )	{
						
						if ( current_table.rows[j].className != "fullheight-dynamic" ) {
							new_height = new_height - parseInt( current_table.rows[j].style.height.substr(0, current_table.rows[j].style.height.length - 2 ) );
						} else {
							dynamic_row_id = current_table.rows[j].id;
						}					
					}			 
					if ( dynamic_row = document.getElementById( dynamic_row_id ) ) {
						if ( parseInt( new_height ) > 0 ) { 
							dynamic_row.style.height = new_height + 'px';
						} else {
							if ( typeof( window.innerHeight )=='number' ) {
								dynamic_row.style.height = '';
							}
						}
					}				
				}
			}
		}
		
	}
			
			
	function Resize() { // to validate XHTML ( body onresize is not allowed...)
			window.onresize = function() { Fix_Table_Heights() }
	}




// ------------------------- Opens/Closes Site Map Sections  ----------------------------- //
function Site_Map_Section_Opener( id ) {
	
	var site_map_button = document.getElementById( "site_map_" + id + "_button" );
	var site_map_arrow = document.getElementById( "site_map_" + id + "_arrow" );
	var site_map_content = document.getElementById( "site_map_" + id + "_content" );
 
	var	img_path = site_map_button.src.substring( 0, site_map_button.src.lastIndexOf("/") + 1  );
	var img_src = site_map_button.src.substring( site_map_button.src.lastIndexOf("/") + 1, site_map_button.src.length );
  
		if ( site_map_content.style.display == '' ){
		 
		 site_map_content.style.display = 'none';
			
			switch ( img_src ) {
				case 'minus_root.gif':
				 site_map_button.src = img_path + 'plus_root.gif';
				break;
				case 'minus_L.gif':
				 site_map_button.src = img_path + 'plus_L.gif';
				break;
				case 'minus_T_cross.gif':
				 site_map_button.src = img_path + 'plus_T_cross.gif';
				break;
			}
			
			site_map_arrow.src = img_path + 'container_arrow_right.gif';
						
		} else { 
		
		 site_map_content.style.display = '';
			
			switch ( img_src ) {
				case 'plus_root.gif':
				 site_map_button.src = img_path + 'minus_root.gif';
				break;
				case 'plus_L.gif':
				 site_map_button.src = img_path + 'minus_L.gif';
				break;
				case 'plus_T_cross.gif':
				 site_map_button.src = img_path + 'minus_T_cross.gif';
				break;
			}
			
			site_map_arrow.src = img_path + 'container_arrow_down.gif';
			
		}
	
}



//------------------------------------ Confirm an action ( Example : logout? ) ------------------------------------//

function Confirm_Action( msg, url ) {
	if ( confirm( msg ) ) {
			window.location = url;
	} 
}


//-------------------- Retrieves the text specified by the id from the TXT array ----------------------//

function Get_Txt( text_id ) {
	
	var string = "";
	
	if ( TXT[ text_id ] == null ) {
		string = text_id;
	} 
	else
	{
		string = TXT[ text_id ];
	}			

	return string;
	
}


//--------------------------------- Hide the URL on the status bar for every links --------------------------------//

function Hide_Status(){
	window.status = '';
	return true
}




function Disable_Login_Enter( e ) {
	
	var key;
	if ( window.event ) {
		key = window.event.keyCode;     //IE
	} else {
		key = e.which;                  //firefox
	}
	
	if ( key == 13 ) {
		var error_msg = document.getElementById("error_msg");
		if ( error_msg ) {
				error_msg.innerHTML = "Please click the arrow in order to log in!";
		}
		return false;
	} else {
		return true;
	}
}





function Blowup_Image( src, event, img_width, img_height ){
		if ( document.getElementById("img_div") ) {
				$(document.getElementById("img_div")).remove();
				return;
		}
		
		src += "?" +(new Date()).getTime();
		
		var Xpos = event.pageX;
		var Ypos = event.pageY;
		
		var imgDiv = document.createElement("div");
		imgDiv.setAttribute("id", "img_div");
		imgDiv.setAttribute("name", "img_div");
		imgDiv.style.backgroundColor = "#ffffff";
		imgDiv.style.position = "absolute";
		imgDiv.style.display = "none";
		imgDiv.style.border = "1px solid #333333";
		imgDiv.style.padding = "0px";
		
		var blowupImg = document.createElement("img");
		blowupImg.setAttribute("src", src);
		blowupImg.setAttribute("alt", "");
		blowupImg.style.margin = "0px";
		blowupImg.style.verticalAlign = "top";
		
		imgDiv.appendChild(blowupImg);
		
		document.body.appendChild(imgDiv);
		
		var current_top = $(event.currentTarget).position().top;
		var current_left = $(event.currentTarget).position().left;
		var current_bottom = current_top + $(event.currentTarget).height();
		var current_right = current_left + $(event.currentTarget).width();
		
		$(blowupImg).load(function() {
				var pos = $(imgDiv).position();
				var top_pos = Ypos;
				var left_pos = Xpos;
				
				var top = top_pos - (img_height/2);
				var bottom = top + img_height +50;
				
				var left = left_pos+5;
				var right = left + img_width + 50;
				
				if (bottom >= $(window).height()+$(window).scrollTop()) {
					bottom = ($(window).height()+$(window).scrollTop()) - 10;
					top = bottom - img_height - 40;
				}
				
				if ( top <= $(window).scrollTop()+10 ) {
					top = $(window).scrollTop()+10;
					bottom = top + img_height + 40
				}
				
				if ( right >= $(window).width() ) {
					right = $(window).width()-10;
					left = right - img_width - 50;
				}
				
				if ( left <= 10 ) {
					left = 10;
					right = left + img_width + 50;
				}
				
				imgDiv.style.left = left + "px";
				imgDiv.style.top = top + "px";
				
				imgDiv.style.display = "";
				
				var mousemove = function(e){
																																														
								var top = (e.pageY - ($(blowupImg).height()/2));
								var bottom = (e.pageY + ($(blowupImg).height()/2)) +50;
								
								var left = e.pageX+5;
								var right = left + $(blowupImg).width() + 50;
								
								if (bottom >= $(window).height()+$(window).scrollTop()) {
									top -= bottom - ($(window).height()+$(window).scrollTop());
								}
								
								if ( top <= $(window).scrollTop()+10 ) {
									top = $(window).scrollTop()+10;
								}
								
								if ( right >= $(window).width() ) {
									right = $(window).width()-10;
									left = right - $(blowupImg).width() - 50;
								}
								
								if ( left <= 10 ) {
									left = 10;
									right = left + $(blowupImg).width() + 50;
								}
								
								imgDiv.style.left = left + "px";
								imgDiv.style.top = top + "px";
								
								if (e.pageY < current_top || e.pageY > current_bottom || e.pageX < current_left || e.pageX > current_right) {
									$(blowupImg).remove();
									$(imgDiv).remove();
									$(document).unbind( "mousemove", mousemove );
								}
								
								
				}
		
				$(document).mousemove( mousemove );
				
		});
}


function Fill_Same_As_Organization( fld_prefix ) {
	
	var parameters = {};

	parameters['fld_prefix'] = fld_prefix;		
	
	var url = 'fill_same_as_organization.php?' + Object.toQueryString( parameters );

	// See moo.fx documentation for this method
	var ajax = new Ajax(url, {method: 'get', evalResponse: true });
	// Make the request
	ajax.request();
	
}


function Calculate_Purchase_Details( years, subscription_price, quantity, vat_number ) {
	
	var parameters = {};

 if (years)
  parameters['years'] = years;  

	if (subscription_price)
		parameters['subscription_price'] = subscription_price;		
		
	if (quantity)
		parameters['quantity'] = quantity;	
		
	if (vat_number)
		parameters['vat_number'] = vat_number;	
		

	var url = 'calculate_purchase_details.php?' + Object.toQueryString( parameters );

	// See moo.fx documentation for this method
	var ajax = new Ajax(url, {method: 'get', evalResponse: true });
	// Make the request
	ajax.request();
	
}


function Get_Current_Price( years ) {
 
 var parameters = {};

 if (years)
  parameters['years'] = years;
  

 var url = 'get_current_price.php?' + Object.toQueryString( parameters );

 // See moo.fx documentation for this method
 var ajax = new Ajax(url, {method: 'get', evalResponse: true });
 // Make the request
 ajax.request();
 
}


function Show_Organization_Fields( checkbox ) {
	
	 if ( checkbox.checked ) {
			
			document.getElementById('tr_organization_name').style.display = '';
			document.getElementById('tr_organization_department').style.display = '';
			document.getElementById('tr_person_position').style.display = '';
			document.getElementById('tr_organization_local_phone').style.display = '';
			document.getElementById('tr_organization_fax').style.display = '';
			document.getElementById('tr_organization_email').style.display = '';
			
		} else {
			
			document.getElementById('tr_organization_name').style.display = 'none';
			document.getElementById('tr_organization_department').style.display = 'none';
			document.getElementById('tr_person_position').style.display = 'none';
			document.getElementById('tr_organization_local_phone').style.display = 'none';
			document.getElementById('tr_organization_fax').style.display = 'none';
			document.getElementById('tr_organization_email').style.display = 'none';
		}
	
}


