
/***
 *** 	Common General function repository
 ***	Written by Petrenko Yuri
 ***	Date: 03/05/2005
 ***	Last-modified: 26/02/2009 (16/12, 10/11, 15/05, 25/03/2008)
 ***	ver. 1.0.8
 ***
 ***/
 
/***
 ****		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;
	}
/*
	var script = document.createElement("script");
	script.type = "text/javascript";
	var head = document.getElementsByTagName("head")[0];
//	alert(head.innerHTML);
	alert(script);
//	head.appendChild(script);
	script.src = href;
	*/
}

function load_script1(href) {		//		loads JS dinamically
	var script = document.createElement("script");
	script.type = "text/javascript";
	var head = document.getElementsByTagName("head")[0];
//	alert(head.innerHTML);
	head.appendChild(script);
	script.src = href;
}

//		**	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>');
}


/***
 ****		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;
	}
}

