
/***
 *** 	Common General function repository
 ***	Written by Petrenko Yuri
 ***	Date: 03/05/2005
 ***	Last-modified: 02/03/2009 (26/02/2009, 16/12, 10/11, 15/05, 25/03/2008)
 ***	ver. 1.1.0
 ***
 ***/
 
/***
 ****		Window & Document functions
 ***/

function openWindow(theURL,winName,features) { 
  if (!features) features="status=yes,toolbar=no,menubar=no,location=no";
  return window.open(theURL,winName,features);
}

function load_script(href) {		//		loads JS dinamically	-- general part from JSHR
	with (document) {
            var span = null;
            // Opera 7.23 does not allow to create SCRIPT 
            // element over createElement (in HEAD or BODY section or in nested SPAN - 
            // no matter): it is created deadly, and does not respons on href assignment.
            // So - always create SPAN.
            span = body.appendChild(createElement("SPAN"));
            span.style.display = 'none';
            span.innerHTML = 'Text for IE.<s'+'cript></' + 'script>';
            setTimeout(function() {
                var s = span.getElementsByTagName("script")[0];
                s.language = "JavaScript";
                if (s.setAttribute) s.setAttribute('src', href); else s.src = href;
            }, 10);
//            this._id = id;
//            this._span = span;
	}
}
//		**	int/ext using example
//		load_script("<path2script>\script1.js");

function initModules(paramArr) {		//		loads JS dinamically
	if (empty(paramArr.arr) ) return; // || !is_hash(paramArr.arr)
	var modules = paramArr.arr;
	var base_dir = '';
	if (!empty(paramArr.base)) base_dir = paramArr.base;
	
	for (var i = 0; i < modules.length; i++) {
		var curr = modules[i];
		if (curr.indexOf('.js')<=0 && curr.indexOf('.inc')<=0) 	curr = curr + '.js';
//		alert(base_dir+curr);
		load_script(base_dir + curr);
	}
}


function printEmail(str, title) {
	if (empty(str)) return;
	if (empty(title)) title = str;
	document.write('<a href="mailto:'+str + '">' +  title + '</a>');
}

/***
 ****		Flash Detecting (taked from GA compilation)
 ***/

function getFlashVer() {
 var f="-",n=navigator;
 if (n.plugins && n.plugins.length) {
  for (var ii=0;ii<n.plugins.length;ii++) {
   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
    f=n.plugins[ii].description.split('Shockwave Flash ')[1];
    break;
   }
  }
 } else if (window.ActiveXObject) {
  for (var ii=12;ii>=2;ii--) {
   try {
    var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
    if (fl) { f=ii + '.0'; break; }
   }
   catch(e) {}
  }
 }
 return f;
} 

/***
 ****		Other
 ***/

function empty(variable) {
	if (typeof(variable)=='undefined') return true;
	if (variable=='' || variable==0 || variable=='0' || !variable) return true;
	return false;	
}

function is_undef(variable) {
	if (typeof(variable)=='undefined') return true;
	return false;	
}

/***
 ****		Array and Types functions
 ***/

function is_array() {
	if (typeof arguments[0] == 'object') {  
		var criterion = arguments[0].constructor.toString().match(/array/i); 
 		return (criterion != null);  
	}
	return false;
//	return ( mixed_var instanceof Array );  // js 1.4
}

function is_hash() {
//	alert(arguments[0]);
	if (typeof arguments[0] == 'object') {  
		var non_empty = false;
		for (var k in arguments[0]) if ( !is_undef(k) || !is_undef(arguments[0][k]) ) {non_empty = true; break;}
		var criterion = arguments[0].constructor.toString().match(/object\(\)/i) && non_empty; 
//		alert(arguments[0].constructor.toString());
 		return (criterion != null);  
	}
	return false;
}


function array_search(needle, haystack) {
	if (typeof(needle)=='undefined' || typeof(haystack)=='undefined') return false;
	if (typeof(haystack.length)=='undefined' || needle==false) return false;
	for(var i=0; i <= haystack.length-1; i++) if (needle==haystack[i]) return i;
	return -1;	
}
function in_array(needle, haystack) {
	if (typeof(needle)=='undefined' || typeof(haystack)=='undefined') return false;
	if (typeof(haystack.length)=='undefined' || !needle) return false;
	for(var i=0; i <= haystack.length-1; i++) if (needle==haystack[i]) return true;
	return false;	
}

function is_obj (variable) {
	if (typeof(variable)=='object') return true;
	return false;	
}
function is_object (variable) {return is_obj (variable);}


/***
 ****		General (taked from PMA compilation)
 ***/
 
function getElement(e,f){
    f=(f)?f:self;
	if (document.getElementById) return f.document.getElementById(e);
    if (document.layers){
        f=(f)?f:self;
        if(f.document.layers[e]) {
            return f.document.layers[e];
        }
        for(W=0;i<f.document.layers.length;W++) {
            return(getElement(e,f.document.layers[W]));
        }
    }
    if(document.all) {
        return f.document.all[e];
    }
    return false;
//    return f.document.getElementById(e);
} 


/***
 ****		Array prototype
 ***/
 /*
arrPrototypeReserved = [ "sizeOf",  "show"];

Array.prototype.sizeOf = function () {
	var l = this.length ? 0 : -1;
	for (var k in this) if ( !in_array(k, arrPrototypeReserved) ) {
//	for (var k in this) if (  k!="show" && k!="size") {
		l++;
	}
	return l;
}

Array.prototype.show = function () {
	var str = '';
//	str = this +', ';	alert(this);
	for (var k in this) {
		if (  !in_array(k, arrPrototypeReserved) )// && typeof(this[k]) != "undefined"
			str = str + k + "=>" + this[k] + ', ';
	}
//		str = str +',' + k;
	if (str.length>0) str = str.substring(0,str.length-2);
	alert(str);
}


*/

function show_array(arr) {
	var str = '';
//	str = this +', ';	alert(this);
	for (var k in arr) {
//		if (  !in_array(k, arrPrototypeReserved) )// && typeof(this[k]) != "undefined"
			str = str + k + "=>" + arr[k] + ', ';
	}
//		str = str +',' + k;
	if (str.length>0) str = str.substring(0,str.length-2);
	alert(str);
}

function init_arr_from_str(str) {
	if (!empty(str)) {
		var tmp_arr = str.split(",");
		var out_arr = new Array();
		for (var k in tmp_arr) if (!empty(tmp_arr[k])) {
			var tmp_arr2 = tmp_arr[k].split(":");
			out_arr[tmp_arr2[0]] = tmp_arr2[1];
		}
		return out_arr;
//		show_array(out_arr);
	}
	return false;
}

// Test string for existence of regular expression.
function IsContain(needle, s){
	var re = new RegExp(needle,"i");  //Create regular expression object
	return re.test(s);
}



/***
 ***		Form Handling
 ***/


function el_value(el) { 	// takes form element value
//	alert(el.type);
	var ret_val = false;
	if (!empty(el.type)) {
		var tmp = el.type;
		if (tmp.indexOf('select')>-1) {
//			alert(el.id + el.selectedIndex);
			if (el.selectedIndex != -1)	return el.options[el.selectedIndex].value;
//			return ret_val;
		}
	}
	if (typeof(el.value)!='undefined') return el.value;
	return ret_val;
}

//var value = selObj.options[selObj.selectedIndex].value; 



/***
 ***		Events Functions
 ***/

function addEvent(elm, evType, fn, useCapture) {
	useCapture = useCapture || false;
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}


/***
 ***		Postprocess document fixes and Functions
 ***/

// ***	fixes relative links bug for documents with defined BASE Href		***
function fix_inline_links() {
	var tmp_els = document.getElementsByTagName("a");
	var base_url = document.getElementsByTagName('base')[0].href;//location.href;
	var curr_url = location.href;
	if (curr_url.indexOf("#")>=0) {
		curr_url = curr_url.substring(0, curr_url.indexOf("#"));
	}
//	alert(curr_url+'sadf');
	
	var curr_el, tmp_str;
	if (!empty(tmp_els) && !empty(base_url))
	for (var i=0;i < tmp_els.length;i++) {
		curr_el = tmp_els[i];
		if (!empty(curr_el.href)) {
			tmp_str = curr_el.href;
			if (tmp_str.indexOf("#")>=0) {
				if (tmp_str.indexOf(base_url)>=0) {
					tmp_str = tmp_str.substr(base_url.length);
					if (tmp_str.indexOf("#")==0) curr_el.href = curr_url + tmp_str; //tmp_str.length > 1 && 
//					alert(curr_el.href);
				}
			}
			
		}
	}
}

//window.onload = fix_inline_links;