/**
 * @AUTHOR:	AAL
 * @FILE:	mpxUtils.js
 * @DESCRIPTION:Different JavaScript scripts.
 * @VERSION:	0.1
 */

	// Globals

	// Variables
	tabIndexNo = 1

	// Methods
	
	// Get arguments(key=value) from Query String
	$a = function (name, _url) {
		if (!_url) _url = window.location.href
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp(regexS);
		var results = regex.exec(_url);
		return (results != null) ? results[1] : "";
	}

	// Replace arguments(key=value) from Query String
	$ar = function (name, _value, _url, _add) {
		if (!_url) _url = new String(window.location.href)
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp(regexS);
		var results = regex.exec(_url);
		try {
			if (results == null) throw "Need To Add";
			results = results[0].split('=');
			_url = _url.replace(results[0]+'='+results[1], results[0]+'='+encodeURI(_value));
			
		} catch(e) {
			if (_add) {
				try {
					var qu = _url.indexOf('?');
					if (qu>=0) _url = _url.replace(/\?/, '?' + name + '=' + encodeURI(_value) + '&')
					else  if((currentPageName != "") && (_url.indexOf(currentPageName)>=0)) {
					 	    _url = _url + '?' + name + '=' + encodeURI(_value)
					 	  } else{
					 	    _url = _url + currentPageName + '?' + name + '=' + encodeURI(_value)
					 	  }
				} finally {
				}
			}
		} finally {
		}
		return _url;
	}
	
	// Delete argument(key) from Query String
	$ad = function (name, _url) {
		if (!_url) _url = new String(window.location.href)
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]("+name+"=([^&#]*)&?)";
		var regex = new RegExp(regexS);
		var results = regex.exec(_url);
		var replaceValue = '';
		try {
			replaceValue = results[1];
			if ( (results[1].indexOf('&') != -1) && (results[0].lastIndexOf('&') == 1) ) {
				replaceValue = results[0];
			}
			_url = _url.replace(replaceValue, '');
		} finally {
		}
		return _url;
	}

	// Commit arguments(key=value) from Query String
	$ac = function (name, _value, _url) {
		return $ar(name, _value, _url, true);
	}

	$aa = function (name, _url) {
		if (!_url) _url = window.location.href
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "([#]"+name+")";
		var regex = new RegExp(regexS);
		var results = regex.exec(_url);
		return (results != null) ? results[1] : "";
	}

	$ = function (_id, _doc) {
		if (!_doc) _doc = document
			return _doc.getElementById(_id);
	}

	$fname = function (_id, _doc) {
		if (!_doc) _doc = document
			var _obj = _doc.getElementById(_id);
		if (_obj == null)
				for (var f=0; f<_doc.forms.length; f++)
				for (var e=0; e<_doc.forms[f].elements.length; e++)
					if (_doc.forms[f].elements[e])
						if (_doc.forms[f].elements[e].name == _id)
							return _doc.forms[f].elements[e]
		return _obj
	}
	
	$ftype = function (_id, _doc) {
		if (!_doc) _doc = document
			var _obj = _doc.getElementById(_id);
		if (_obj == null)
				for (var f=0; f<_doc.forms.length; f++)
				for (var e=0; e<_doc.forms[f].elements.length; e++)
					if (_doc.forms[f].elements[e])
						if (_doc.forms[f].elements[e].type == _id)
							return _doc.forms[f].elements[e]
		return _obj
	}
	

	// Methods for CS Styles
	_classNames = {}

	function appendStyleClassName(_object, _styleClassName) {
				if (!isStyleClassName(_object, _styleClassName))
			_object.className = _object.className + ' ' + _styleClassName
		switch (_object.tagName) {
			case 'INPUT':
			case 'SELECT':
			case 'BUTTON':
			case 'TEXTAREA':
				_object.disabled = true
			break
		}
	}

	function deleteStyleClassName(_object, _styleClassName) {
			var _className = new String(_object.className)
		var start = _className.indexOf(_styleClassName)
		var lengh = _styleClassName.length
	
		if (start >= 0 && lengh != _className.length)
			_object.className = _className.substr(0, start) + _className.substr(start + lengh)
	
		if (start == 0 && lengh == _className.length) _object.className = ''
	
		switch (_object.tagName) {
			case 'INPUT':
				case 'SELECT':
			case 'BUTTON':
				case 'TEXTAREA':
				_object.disabled = false
			break
		}
	}
	
	function isStyleClassName(_object, _styleClassName) {
		var classNames = new String(_object.className)
		var start = classNames.indexOf(_styleClassName)
		return ( start >= 0 ? true:false )
	}
		
	function recursiveAppendStyle(_node, _style) {
			for(var child in _node.childNodes) {
			var _child = _node.childNodes[child]
			if (typeof _child == 'object') {
				if ('tagName' in _child ) if ('className' in _child) {
					recursiveAppendStyle(_child, _style)
					appendStyleClassName(_child, _style)
				}
			}
		}
	}
	
		function recursiveRemoveStyle(_node, _style) {
		for(var child in _node.childNodes) {
				var _child = _node.childNodes[child]
			if (typeof _child == 'object' && _child != null) if ('className' in _child) {
				recursiveRemoveStyle(_child, _style)
				deleteStyleClassName(_child, _style)
			}
		}
	}

	// Forms handlers
	function recursiveTabIndexFormElemetns(_node) {
		if (!_node) _node = document
		for (var i=0; i<_node.childNodes.length; i++) {
			var _child = _node.childNodes[i]
			if (typeof _child == 'object') {
				if ('tagName' in _child) {
					if ('type' in _child) {
						if (_child.type != 'hidden')
							switch (_child.tagName) {
								case 'INPUT':
								case 'SELECT':
								case 'TEXTAREA':
									_child.tabIndex = tabIndexNo++
								break;
								default:
								break;
						}
					}
				}
				recursiveTabIndexFormElemetns(_child)
			}
		}
	}
	
	function initTabIndex() {
		recursiveTabIndexFormElemetns()
	}

	function EnableDiv(_div, _state, _disabledClass) {
		if (typeof _div != 'object')
			_div = document.getElementById(_div)
			if (_state) { 
			/* Show */
				deleteStyleClassName(_div, _disabledClass)
			recursiveRemoveStyle(_div, _disabledClass)
		} else {
			/* Hide */
			appendStyleClassName(_div, _disabledClass)
			recursiveAppendStyle(_div, _disabledClass)
		}
	}
	
	function radioTabGroupSwitcher(_current, _idBase, _min, _max, _disabledClass) {
		for (i=_min; i<_max+1; i++) {
				var _obj = document.getElementById(_idBase+''+i);
			var _state = i == _current ? true : false
				EnableDiv(_obj, _state, _disabledClass)
		}
	}
	
	function SelectCopy(_from, _to) {
		var _from = document.getElementById(_from);
		var _to = document.getElementById(_to);
		for (i=0; i<_from.options.length; i++) {
			if (_from.options[i].selected)
				_to.options[_to.options.length] = new Option(_from.options[i].text, _from.options[i].value);
		}
		
		for (i=_from.options.length-1; i>-1; i--) {
				if (_from.options[i].selected) _from.options[i] = null
		}
	}
	
	function SelectALL(_from, _state) {
		var _from = document.getElementById(_from);
		for (i=0; i<_from.options.length; i++)
			_from.options[i].selected = _state?_state:true
	}
	
	function shDiv(_div, _obj) {
		id=_div;
		if (typeof(_div) != 'object') _div = $(_div)
		//_div.style.display = (_state) ? _state : (_div.style.display == 'none' ? 'inline': 'none')
		if(_obj && _obj.parentNode.className=="tar"){
			if(_div.style.display == 'none'){
				_div.style.display="inline";
				_obj.innerHTML=close_text;
				SetCookie (id,"1",new Date("2100-01-01"));
			} else {
				_div.style.display="none";
				_obj.innerHTML=open_text;
				SetCookie (id,"0",new Date("2100-01-01"));
			}
		} else {
			_div.style.display = (_div.style.display == 'none' ? 'inline': 'none')
		}
	}

	function getl(obj) {
		if (obj == null) return 0;
		var x = 0;
		do { x += obj.offsetLeft;
			obj = obj.offsetParent;
		} while (obj);
		return x;
	}
	
	function gett (obj) {
		if (obj == null) return 0;
		var y = 0;
		do {y += obj.offsetTop;
			obj = obj.offsetParent;
		} while (obj);
		return y;
	}
	
	function getw(obj) {
		if (obj == null) return 0;
		var width = obj.offsetWidth;
		if (width > 0)	return width;
		if (!obj.firstChild) return 0;
			return obj.lastChild.offsetLeft - obj.firstChild.offsetLeft + getw(obj.lastChild);
	}
	
	function geth (obj) {
		if (obj == null) return 0;
		var height = obj.offsetHeight;
		if (height > 0) return height;
		if (!obj.firstChild) return 0;
		return obj.firstChild.offsetHeight;
	}

	function clearDivFromNBSP(_div) {
		var i = $(_div)
		if ( i == null ) return true
		var str = new String(i.innerHTML)
		str = str.replace(/&nbsp;/ig, ' ')
		i.innerHTML = str
	}

	function cut2height(_div, _height, _add, _sub) {
		var divi = document.getElementById(_div)
		clearDivFromNBSP(_div)
		if (is_ie)	var bstr = new String(divi.innerText)
		else		var bstr = new String(divi.innerHTML)
		bstr = bstr.substr(0, bstr.length - _sub)
		for(var i=bstr.length; i>0; i--) {
			var _h = geth(divi)
//			if (_debug == true && window.debugMode == true) { alert(_h); window.debugMode = debug(divi, 'height|id|name|innerTEXT|innerHTML'); }
			if (_h > _height) {
				var str = bstr
				str = str.substr(0, i)
				divi.innerHTML = str + _add
				if (is_ie)	divi.innerHTML = str + _add
				else		divi.innerHTML = str + _add
			} else {
				divi.style.height = _height + 'px';
				break
			}
		}
	}


	function includeJSSrc(src, id) {
		var owner = document.getElementById(id);
		var script = document.createElement('script'); 
		script.type = 'text/javascript'; 
		script.src = src;
		owner.appendChild(script);
	};

	function rrand(_l) {
		return Math.round(_l*Math.random())
	}

	function findKeyByPage(_page) {
		if (!('key2Page' in window)) return '';
		for ( k = 0; k < key2Page.length; k++) if(_page == key2Page[k][0]) {
		    return key2Page[k][1];
		}
		return 'ROS';
	}
	
	function chooseBannerByType(_currentPageName, _currentCategory, _type) {
		var _currentBanners = new Array()
		for (var k in banners) if (banners[k][2] == _type) if (banners[k][0] == _currentPageName) if (banners[k][1] == _currentCategory) { _currentBanners = banners[k]; break;}
		return _currentBanners
	}
	
	function findNeededBanners(_page, _category) {
		_page = findKeyByPage(_page)
		var _currentBanners = {}
		_category.push('');
		for (c=0; c<_category.length;c++) {
		    _currentBanners.Monster = chooseBannerByType(_page, _category[c], "monster")
		    if (_currentBanners.Monster.length>0) break;
		}
		for (c=0; c<_category.length;c++) {
		    _currentBanners.Bottom = chooseBannerByType(_page, _category[c], "artikel")
		    if (_currentBanners.Bottom.length>0) break;
		}
		for (c=0; c<_category.length;c++) {
		    _currentBanners.Top = chooseBannerByType(_page, _category[c], "sponsorbanner")
		    if (_currentBanners.Top.length>0) break;
		}
		return _currentBanners
	}
	
	/* Functions for works with cookies */
	function getCookieVal (offset) {
	  var endstr = document.cookie.indexOf (";", offset);
	  if (endstr == -1)
	    endstr = document.cookie.length;
	  return unescape(document.cookie.substring(offset, endstr));
	}
	
	function SetCookie (name,value,expires,path,domain,secure) {
	  document.cookie = name + "=" + escape (value) +
	    ((expires) ? "; expires=" + expires.toGMTString() : "") +
	    ((path) ? "; path=" + path : "") +
	    ((domain) ? "; domain=" + domain : "") +
	    ((secure) ? "; secure" : "");
	}
	
	function GetCookie (name) {
	  var arg = name + "=";
	  var alen = arg.length;
	  var clen = document.cookie.length;
	  var i = 0;
	  while (i < clen) {
	    var j = i + alen;
	    if (document.cookie.substring(i, j) == arg)
	      return getCookieVal (j);
	    i = document.cookie.indexOf(" ", i) + 1;
	    if (i == 0) break; 
	  }
	  return null;
	}
	
	function DeleteCookie (name,path,domain) {
	  if (GetCookie(name)) {
	    document.cookie = name + "=" +
	      ((path) ? "; path=" + path : "") +
	      ((domain) ? "; domain=" + domain : "") +
	      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	  }
	}

