/*	$Id: dsm.js,v 1.16.2.10 2009/10/20 07:41:11 belukov Exp $ */

/**
*	Возвращает повторяющуюся строку
*/
function str_repeat(prefix, num)//	{{{
{
	var result = "";
	if(num >= 1) {
		for(var i=0; i < num; i++) {
			result += prefix;
		}
	}
	return result;
}//	}}}


function tougleHide(mode, bhide, bshow, bcont)
{
	var _elems, _elems1, _elems2;
	_elems = document.getElementsByName(bcont);
	_elems.item(0).style.visibility= mode ? 'visible' : 'hidden';

	if(mode){
		mode = false;
	}else{
		mode = true;
	}
	_elems1 = document.getElementsByName(bshow);
	_elems2 = document.getElementsByName(bhide);
	_elems1.item(0).style.visibility = mode ? 'visible' : 'hidden';
	_elems2.item(0).style.visibility = mode ? 'hidden' : 'visible';
	return mode;
}

function widget_minimize(hide, bhide, bswitch)
{
	var _elems;
	_elems = document.getElementsByName(bhide);
	_elems.item(0).style.display = hide ? 'none' : 'inline';

	if( bswitch != '') {
		_elems = document.getElementsByName(bswitch);
		_elems.item(0).innerHTML = hide ? 'show' : 'hide';
	}
	return hide ? false : true;
}

/**
*	Deprecated! Use createbox()
*/
function creategroupbox()
{
	var name;
	if(name = prompt("Create new group with name")){
		document.creategroup.name.value = name;
		document.creategroup.submit();
	}

	return false;
}

function createbox(object_name, form_name)
{
	var name, forms;
	if(name = prompt("Create new "+object_name+" with name")){
		forms = document.getElementsByName(form_name);

		forms[0].name.value = name;
	/*	for(i in forms[0].name){
			alert(i+'='+forms[0].name[i]);
		}*/
		forms[0].submit();
	}

	return false;
}

function popup(url, title, params)
{
	var win;
	//'width=1000,height=400,resizable,scrollbars'
	if(url.indexOf('images/') == 1) {
		url = '/__popup'+url
	}
	win = window.open(url, title, params)
	win.focus()
	win.screenY=0
	win.screenX=0
	return win;
}

function dsm_dump(variable)
{
	msgWindow = window.open('','variable dump', 'toolbar=yes,scrollbars=yes,resizable,width=400,height=300');
	msgWindow.document.open("text/html","replace");

	var i;
	for(i in variable){
		msgWindow.document.write(i+'='+variable[i]+'<hr>');
	}
}

function notifyBar(tag_name,mess)
{
	var bars;
	bars = document.getElementsByName(tag_name);
	bars.item(0).innerHTML = mess;
}

function pl_check(obj)
{
	if(obj.value>0){
		return true;
	}else{
		alert("Допустимым значением является только положительное число!");
		obj.value=0;
		return false;
	}
}


function AzbukaParse(str)
{
	if(str == '') return '';
	var azbuka, k, stop, result, a, b, sub, result, ind;
	azbuka = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя";
	k = 0;
	stop = false;
	result = '';
	while(!stop){
		a = str.indexOf('#', k);
		b = str.indexOf('#', a+1);
		k=a+1;
		if(b < a){
			b = str.length;
			stop = true;
		}
		sub = str.substring(a+1,b);

		if(sub.substring(0,1) == '%'){
			result += sub.substring(1);
		}else{
			ind = parseInt(sub);
			result += azbuka.substring(ind,ind+1);
		}
//alert(a+' '+b+' '+sub+' '+result);
	}
	return result;

}

function validateDate(fld)
{

	if(typeof fld == 'string') fld = document.getElementById(fld);

	if(!fld) return true;
	var RegExPattern = /^\d\d\.\d\d\.\d\d\d\d$/;
	var errorMessage = 'Пожалуйста, введите дату в формате дд.мм.гггг'; 
	if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
		return true;
	} else {
		alert(errorMessage);
		fld.focus();
		return false;
	} 
}

function tougle_all_checkboxes(name)
{
	var elems, i;
	elems = document.getElementsByName(name)
	for(i=0; i<elems.length; i++) {
		elems[i].checked = ! elems[i].checked
	}
}

function replaceAll(str, srch, rpl) // {{{
{
	if(typeof str != 'string') return str;
	var res = str;
	while(-1 != res.indexOf(srch)){
		res = res.replace(srch, rpl);
	}
	return res;
} // }}}

/**
* 
* @param	type	desc
* @return	type	desc
*/
function JSHash2Array(hash) // {{{
{
	try{
		eval('hashArray = '+hash);
		return hashArray;
	}catch(e){
		return false;
	}
} // }}}


function DSMjQueryAjaxSendHeader(xhr)
{
	xhr.setRequestHeader("x-dsm-request", "text/ajax");
}

/**
* Returns the name of the class of an object
* based on http://javascript.ru/php/get_class
* 
* @param	type	desc
* @return	type	desc
*/
function get_class(obj) // {{{
{
    // 
    // +   original by: Ates Goral (http://magnetiq.com)
    // +   improved by: David James
 
    if (obj instanceof Object && !(obj instanceof Array) &&
        !(obj instanceof Function) && obj.constructor) {
        var arr = obj.constructor.toString().match(/function\s*(\w+)/);
 
        if (arr && arr.length == 2) {
            return arr[1];
        }
    }
 
    return false;
} // }}}

/**
* based on http://javascript.ru/php/serialize
* 
* @param	type	desc
* @return	type	desc
*/
function serialize( mixed_val ) // {{{
{
    // 
    // +   original by: Ates Goral (http://magnetiq.com)
    // +   adapted for IE: Ilia Kantor (http://javascript.ru)
 
    switch (typeof(mixed_val)){
        case "number":
            if (isNaN(mixed_val) || !isFinite(mixed_val)){
                return false;
            } else{
                return (Math.floor(mixed_val) == mixed_val ? "i" : "d") + ":" + mixed_val + ";";
            }
        case "string":
            return "s:" + mixed_val.length + ":\"" + mixed_val + "\";";
        case "boolean":
            return "b:" + (mixed_val ? "1" : "0") + ";";
        case "object":
            if (mixed_val == null) {
                return "N;";
            } else if (mixed_val instanceof Array) {
				var idxobj = { idx: -1 };
				var map = []
				for(var i=0; i<mixed_val.length;i++) {
					idxobj.idx++;
					var ser = serialize(mixed_val[i]);

					if (ser) {
						map.push(serialize(idxobj.idx) + ser)
					}
				}                                       

				return "a:" + mixed_val.length + ":{" + map.join("") + "}"

            }
            else {
                var class_name = get_class(mixed_val);
 
                if (class_name == undefined){
                    return false;
                }
 
                var props = new Array();
                for (var prop in mixed_val) {
                    var ser = serialize(mixed_val[prop]);
 
                    if (ser) {
                        props.push(serialize(prop) + ser);
                    }
                }
                return "O:" + class_name.length + ":\"" + class_name + "\":" + props.length + ":{" + props.join("") + "}";
            }
        case "undefined":
            return "N;";
    }
 
    return false;
} // }}}


/* всплывающие подсказки */
current_helpbox = false;
function ToggleHelpBox(key){

  if( current_helpbox !== false && current_helpbox != key) ToggleHelpBox(current_helpbox);

  var c = document.getElementById('helpbox_'+key);
  var show = c.style.display == 'none';

  c.style.display = show ? '' : 'none';
  current_helpbox = show ? key : false;
}

/* vim: set foldmethod=marker ts=4 sw=4: */


