function getUrlParameter(asName, url) {
	var lsURL = ((typeof(url) == 'undefined') || (url.length == 0)) ? window.location.href : url;
	loU = lsURL.split("?");
	if (loU.length>1){
		var loallPm = loU[1].split("&");
		for (var i=0; i<loallPm.length; i++){
			var loPm = loallPm[i].split("=");
			if (loPm[0]==asName){
				if (loPm.length>1){
					return loPm[1];
				}
			}
		}
	}
	else{
		return null;
	}
}

function getPreSelectionTab(param) {
	var preSelection = getUrlParameter(param);
	var defaultTab = 0;
	if(preSelection != null && parseInt(preSelection)) {
		defaultTab = parseInt(preSelection);
	}
	return defaultTab;
}

// Accept Disclaimer -----------------------------------------------------------

function acceptTerms() {
	var goto = getUrlParameter("goto");
	if(goto.length > 0) {
		location.href = window.location.protocol+"//"+window.location.host+"/"+goto;	
	}
}

// SIFR Checker and RendererQueue ----------------------------------------------
var sifrSelectorQueue = new Array();
var sifrColorQueue = new Array();

function checkSifrRenderer(selector, color, transMode) {

        var render = false;
        $$(selector).each(function(item){
                if(item.getHeight() > 0) {
                    render = true;
                }
            }.bind(this)
        );
        if(render) {
            sIFR.replaceElement(named({sSelector:selector, sFlashSrc: SIFR_SLAB_PATH, sColor:color, sWmode:transMode}));
        }
}


function registerSifrHandler(selector,color) {
    if(selector && color) {
        sifrSelectorQueue.push(selector);
        sifrColorQueue.push(color);
    }
}

function fireSifrHandler() {
    for(var i = 0; i < sifrSelectorQueue.length; i++) {
        if (typeof sIFR != "function") {
             //alert("not a function");
             return;
        } else {
            checkSifrRenderer(sifrSelectorQueue[i],sifrColorQueue[i],"transparent");
        }
    }
}

// Access to all initiated layers ----------------------------------------------
var GLOBAL_LAYER_CONTROLLER = new Array();

function navigateToLayer(id, url) {
	var layer = GLOBAL_LAYER_CONTROLLER[id];
    var cleanid = id.slice(15);
    if(typeof window[cleanid+'_onNavigate'] == 'function')
    {
        window[cleanid+'_onNavigate'](url);
    }
	if(layer) {
		//layer.toggle();	
		layer.open();	
	}
}

//Cut iframe content for ext-lightbox-layer ----------------------------------------------
function cutExtLayerContent()
{
	if(top != self)
	{
		$$('.wide-column')[0].setStyle({
				padding: '0px'			 
		});
	}
}

// simple show / hide expand mechanism ------------------------------------------
function expandItem(x,y)
{
	$(x).visible() ? $(x).hide() : $(x).show(); 
	$(x).visible() ? $(y).addClassName('ir_expanded') : $(y).removeClassName('ir_expanded'); 
}

//	open pressrelease layer on rss link
//	check if current site is a pressrelease
document.observe('dom:loaded', function(){
	if ($$('meta[name="DC.Type"]')) {
		var metaDCType = $$('meta[name="DC.Type"]').first();
		if (metaDCType) {
		    var found = false;
			if(metaDCType.readAttribute('content') == 'Pressrelease')
			{
				var metaLang 		=	$$('meta[name="DC.Language"]').first().readAttribute('content');
				var pressrelease	=	metaLang == 'de' ? 'pressemitteilungen' : 'pressrelease';
				
				switch (location.hostname)
				{
					case 'edit.siemens.dev.publicis.de':
						var redirect = "https://edit.siemens.dev.publicis.de/cc/corp_press/root/"+metaLang+"/"+pressrelease+"/?press="+window.location.href.substr(55);
						break;
				
					case 'stage.siemens.com':
                        if(window.location.href.match('press_nwa_bs'))
                            var redirect = "https://stage.siemens.com/cc/corp/press_nwa_bs/"+metaLang+"/"+pressrelease+"/?press="+window.location.href.substr(46);
                        else
                            var redirect = "https://stage.siemens.com/cc/corp/press/"+metaLang+"/"+pressrelease+"/?press="+window.location.href.substr(39);
						break;
				
					case 'w1.siemens.com':
						var redirect = "http://w1.siemens.com/press/"+metaLang+"/"+pressrelease+"/?press="+window.location.href.substr(27);
							break;
				}
				
				found = true;
			}
			else if(metaDCType.readAttribute('content') == 'Press Picture')
			{
			    var metaLang         =   $$('meta[name="DC.Language"]').first().readAttribute('content');
                var presspicture    =   metaLang == 'de' ? 'pressebilder' : 'presspicture';
                
                switch (location.hostname)
                {
                    case 'edit.siemens.dev.publicis.de':
                        var redirect = "https://edit.siemens.dev.publicis.de/cc/corp_press/root/"+metaLang+"/"+presspicture+"/?press="+window.location.href.substr(55);
                        break;
                
                    case 'stage.siemens.com':
                        if(window.location.href.match('press_nwa_bs'))
                            var redirect = "https://stage.siemens.com/cc/corp/press_nwa_bs/"+metaLang+"/"+presspicture+"/?press="+window.location.href.substr(46);
                        else
                            var redirect = "https://stage.siemens.com/cc/corp/press/"+metaLang+"/"+presspicture+"/?press="+window.location.href.substr(39);
                        break;
                
                    case 'w1.siemens.com':
                        var redirect = "http://w1.siemens.com/press/"+metaLang+"/"+presspicture+"/?press="+window.location.href.substr(27);
                            break;
                }
                found = true;
			}
		
			if(found)
			{
	            if(top == self) window.location = redirect;
	            
	            //  show all (internal) links in pressrelease layers in external view
	            if(top != self)
	            {
	                $$('#llhc .wide-column a').each(function(item){
	                    if(!item.readAttribute('onclick') || !item.readAttribute('onclick').include('window.open'))
	                    {
	                        var onclickValue = "window.open('"+item.href+"');return false;";
	                        item.writeAttribute('onclick', onclickValue);
	                    }
	                });
	            }
			}
		}
	}	
});

/**
 * press filter layer helper: handles checkbox/radio button selections (press sector integration)
 */
var FilterLayerHelper = Class.create({
	initialize: function(elm)
	{
		this.node  = $(elm.node);
		
		// init checkbox observer		
		this.setupCheckboxes();
		
		// init radio button observer 
		this.setupRadiobuttons();
		
		// select/unselect all
		this.setupSelectAll();
	},
	
	// setup checkbox toggling (click on parent selectbox will select child elements)
	setupCheckboxes: function ()
	{
		// select all checkboxes
		var checkboxes = this.node.select('#presssearch input[type=checkbox]');
		
		checkboxes.each(function(item)
		{
			// do not apply to child nodes
			if (!item.hasClassName("child")) 
			{
				// toggle checkbox
				item.observe('click', function (e)
				{
					var item = e.element();
					var toggle = item.checked;
					
					item.siblings().each(function(sib)
					{
						if (sib.hasClassName("child")) 
						{
							sib.checked = toggle;
						}
					}); 
				});				
			}
		});
	},
	// setup "radio button toggling"
	setupRadiobuttons: function ()
	{
		// select all checkboxes
		var radioButtons = this.node.select('#presssearch input[type=radio]');
		
		radioButtons.each(function(item)
		{
			item.observe('click', function(e)
			{
				// mark existing checkboxes as checked (they are disabled)
				var item = e.element();
				item.siblings().each(function(sib)
				{
					if (sib.type == 'checkbox' && sib.hasClassName("child"))
					{
						sib.checked = true;
					}
				});
				// disable all other checkboxes
				item.up().siblings().each(function(sib){
					sib.childElements().each(function(it){
						if (it.type == 'checkbox' && it.hasClassName("child")) 
						{
							it.checked = false;
						}
					});
				}); 
			});
		});
	},
	// setup "select/unselect all" function
	setupSelectAll: function () 
	{
		
		var checkboxes = this.node.select('#presssearch input[type=checkbox]');
		// select all checkboxes
		if (this.node.down('#presssearch-selectall')) {
			
			var elm = this.node.down('#presssearch-selectall');
			
			elm.observe ('click', function (e) 
			{
				checkboxes.each(function(item)
				{
					item.checked = true;
				});
			});
			elm.observe ('focus', function (e)
			{
				e.element().blur();
			});
		}
		// unselect all checkboxes
		if (this.node.down('#presssearch-unselectall')) {
			var elm = this.node.down('#presssearch-unselectall');
			elm.observe ('click', function (e) 
			{
				checkboxes.each(function(item)
				{
					item.checked = false;
				});
			});
			elm.observe ('focus', function (e)
			{
				e.element().blur();
			});			
		}
	}
});

/**
 * tracks current press filter settings via custom links (press sector integration)
 */
var TrackFilterLayer = Class.create({
	initialize: function()
	{
		// filter tracking
		this.trackPressSearchFilter();
	},
	
	/**
	 * press filter filter tracking: builds tracking string and sends 
	 * 
	 * @return Boolean always true
	 */
	trackPressSearchFilter: function() 
	{
		var separator 		= '|';
		var prefix 			= 'ps'
		var filter_success 	= true;
		var filter_external = false;			
		var referrer 		= (document.referrer != '') ? document.referrer : '';
		var currentPage 	= document.location.toString();
		var sectorCsv 		= '';
		var sectorTable 	= this.getSectorTable();
		var searchTerm 		= '';
		
		// final tracking string
		// structure: <press_search_prefix>|<filter_switch_success>|<external_filter_set>|<referring_section>|<current_section>|<filter_values_CSV>
		var tracking_string = '';
		
		// get the filter change state: hint box and error box
		if ($('hintBox'))
			filter_external = true;
		if ($('errorBox')) 
			filter_success = false;
		// get search term
		if ($('searchterm')) 
		{
			var searchInputField = $('searchterm'); 
			if (searchInputField.value != 'Suchbegriff' && searchInputField.value != 'Searchterm')
			{
				searchTerm = searchInputField.value;
				searchTerm = searchTerm.strip().toLowerCase().stripTags();
			}
		}
		
		// convert urls to sector values
		currentPage = this.getPressSectionsFromUrl(currentPage);
		referrer 	= this.getPressSectionsFromUrl(referrer);
		
		// get checked values, build comma separated sector list
		$$('#presssearch input').each(function(item)
		{
			if (item.type == "radio" || item.type == "checkbox")
			{
				if (item.checked)
				{
					if (sectorTable[item.value] != 'undefined')
					{
						// first item
						if (sectorCsv == '')
						{
							sectorCsv = sectorTable[item.value]; 
						}
						// following item
						else
						{
							sectorCsv += ',' + sectorTable[item.value];
						}
					}
				}
			}
		});
		// build final tracking string for link tracking
		tracking_string = 	prefix 			+ separator +
							filter_success 	+ separator +
							filter_external + separator +		
							referrer 		+ separator +
							currentPage 	+ separator +
							sectorCsv;
		
		
		// send custom link
		if (s) {
			
			// save original value for link tracking 
			var originalLinkTrackVars = s.linkTrackVars;
			
			// track search term if set
			if (searchTerm != '')
			{
				// register variables for link tracking
				s.linkTrackVars += ',prop21,prop22';
				
				// set search term
				s.prop21 = searchTerm;
				// set search source with prefix, e.g. 'press_feature_de'
				s.prop22 = 'press_' + currentPage;
			}
			
			// send custom link
			s.tl(true, 'o', tracking_string);
			
			// reset to original link track vars
			s.linkTrackVars = originalLinkTrackVars; 
		}
		
		return true;
	},
	/**
	 * returns an array (object) of the siemens sector shortcuts - corresponding to the press filter layer
	 * 
	 * @return Object sector array 
	 */
	getSectorTable: function()
	{
		var map = new Array();
		map['cc'] 			= 'cc';
		map['industry'] 	= 'i';
		map['automation'] 	= 'ia';
		map['motion'] 		= 'dt';
		map['building'] 	= 'bt';
		map['solution'] 	= 'is';
		map['mobility'] 	= 'mo';
		map['osram'] 		= 'osr';
		map['energy'] 		= 'e';
		map['fossil'] 		= 'f';
		map['renewable'] 	= 'r';
		map['oilgas'] 		= 'o';
		map['rotating'] 	= 's';
		map['transmission'] = 't';
		map['distribution'] = 'd';
		map['healthcare'] 	= 'h';
		map['imaging'] 		= 'im';
		map['workflow'] 	= 'ws';
		map['diagnostics'] 	= 'dx';
		map['sis'] 			= 'sis';
		map['sfs'] 			= 'sfs';
		map['sre'] 			= 'sre';
		
		return map;
	},
	/**
	 * map press URL to sector strings (explicitely use the sector names)
	 * @param String URL to check 
	 * @return String tracking compliant sector string
	 */
	getPressSectionsFromUrl: function(url)
	{
		// return value
		var ret = '';
		// regex to test for omitted file name
		var regExp = /[\/en\/|\/de\/](\?.+)?$/;
		
		// feature page (home)
		if (url == '') 
			ret = 'not_set';
		else if ((url.indexOf('siemens.com') != -1) && (url.indexOf('/en/index.php') != -1 || regExp.test(url)))
			ret = 'feature_en';
		else if ((url.indexOf('siemens.com') != -1) && (url.indexOf('/de/index.php') != -1 || regExp.test(url)))
			ret = 'feature_de';
		// press releases
		else if (url.indexOf('/en/pressrelease/index.php') != -1)
			ret = 'release_en';
		else if (url.indexOf('/de/pressemitteilungen/index.php') != -1)
			ret = 'release_de';
		// press picture
		else if (url.indexOf('/en/presspicture/index.php') != -1)
			ret = 'picture_en';
		else if (url.indexOf('/de/pressebilder/index.php') != -1)
			ret = 'picture_de';
		// tv service
		else if (url.indexOf('/en/tvservice/index.php') != -1)
			ret = 'tv_en';
		else if (url.indexOf('/de/tvservice/index.php') != -1)
			ret = 'tv_de';
		// events
		else if (url.indexOf('/en/events/index.php') != -1)
			ret = 'events_en';
		else if  (url.indexOf('/de/events/index.php') != -1)
			ret = 'events_de';
		// press kits
		else if (url.indexOf('/en/press-kits.php') != -1)
			ret = 'kits_en';
		else if (url.indexOf('/de/press-kits.php') != -1)
			ret = 'kits_de';
		else 
			ret = 'ext_url';

		return ret;
	}
});

/* track existing filters on dom:loaded */
document.observe('dom:loaded', function()
{
	// track if the filter layer exists
	if ($('filter-layer-open'))
	{
		var trackFilterLayer = new TrackFilterLayer();
	}
});