//<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

var dev = false;
var savetxt = false;
var savedelay = 100;
var doub_cp;
var rule = true;

function do_logout(){
	location.reload();
}

function nul(){
}

/*
	set selected index of select-element by value
*/
function set_index(eid, v){
	if(eid){
		$('#' + eid).children().each( function(id, el){
			if(v==el.value){
				$(el).attr("selected","selected");
				return;
			}
		});
	}
}


/*
	set element content
*/
function set_el_cnt(el, v){
	if(el){
		document.getElementById(el).innerHTML = v;
	}
}

/*
	remove html element
*/
function rmrow(el, rowId){
	if(el && rowId){
		document.getElementById(el).removeChild(document.getElementById(rowId));
	}
}


/*
	set view jquery version
*/
function set_view(eid){
	var type = arguments[1]?arguments[1]:false;
	if(eid && rule){
		if(type){
			if(type=='block'){
				$('#' + eid).slideDown(50);
			}else{
				$('#' + eid).slideUp(50);
			}
		}else{
			var status = $('#' + eid).css('display');
			if(status=='block'){
				$('#' + eid).slideUp(50);
			}else{
				$('#' + eid).slideDown(50);
			}
		}
	}
}

/*
	set element visibility
	@param string el
	@param string type
	@return boolean
*/
function set_el_v( el ){
	var type = set_el_v.arguments[1]?set_el_v.arguments[1]:false;
	if(type){
		document.getElementById(el).style.display = type;
		return true;
	}else{
		if(document.getElementById(el).style.display == 'none'){
			//document.getElementById(el).style.display = 'block';
			$('#'+el).show(250);
			return true;
		}else{
			//document.getElementById(el).style.display = 'none';
			$('#'+el).hide(150);
			return false;
		}
	}
}

/*
	get element view status
*/
function get_el_vst( el ){
	if(el){
		var status = document.getElementById(el).style.display;
		if(status == 'block'){
			return true;
		}else{
			return false;
		}
	}
}

/*
	set element style-sheet properties
*/
function set_el_st( el, sn, sv ){
	if( el && sn ){
		eval("document.getElementById('" + el + "').style." + sn + " = '" + sv + "';");
	}
}

/*
	value double check
	@param string needle
	@param object/array
	@retrun boolean
*/
function doub_check( needle, haystack ){
	if(needle){
		if(haystack){
			var reg = new RegExp('\\b' + needle + '\\b', "i");
			if(typeof(haystack)=='object'){
				for (var attr in  haystack) {
					if(reg.test(haystack[attr])){
						return true;
					}
				}
			}else{
				for (var i=0 ; i < haystack.length ; ) {
					if(reg.test(haystack[i])){
						return true;
					}
				}
			}
		}else{
			alert("file.ui_tool.js.doub_check.err -> empty object/array.");
			return true;
		}
		// not found
		return false;
	}else{
		// not found
		return false;
	}
}

/*
	check is empty object
*/
function count_obj(p){
	var count = 0;
	if(typeof(p)=='object'){
		for (var attr in  p) {
			count++;
		}
	}
	return count;
}

/*
	check is empty object
*/
function isEmpty(p){
	if(typeof(p)=='object'){
		for (var attr in  p) {
			return false;
		}
	}
	return true;
}

/*
	delete object attribute
*/
function delete_obj_v(obj, pos){
	if(obj && pos){
		delete obj[pos];
		return true;
	}else{
		return false;
	}
}

/*
	update name object / array
*/
function updateJSobj(obj, pos, value){
	if(obj && pos){
		try {
			obj[pos] = value;
		} catch (e) {
			alert("js.ui_tools.updateJSobj -> obj:" + obj + " pos:" + pos + " value:" + value + " e:" + e);
		}

		return true;
	}else{
		return false;
	}
}

/*
	like php
*/
function in_array(needle, stack){
	for(var i=0; i < stack.length; i++){
		if(stack[i] == needle){
			return true;
		}
	}
}

/*
	make mysql-date-string (date view)

	@param string date
	@return string
*/
function mdate(date){
	if(date){
		var dt = date.split(" ");
		dt[0] = dt[0].split("-");
		dt[0].reverse();
		dt[0] = dt[0].join("/");
		return dt[1] + " " + dt[0];
	}
}

/*
	get current timestamp (ms)
*/
function getts(){
	return new Date().getTime();
}


function get_save_div(){
	var ds = new doc_size();
	preLoadImg();
	var d0 = document.createElement("div");
	d0.setAttribute('id', 'wait');

	with(d0.style){
		position = 'fixed';
		zIndex = '10';
		top = '0px';
		left = '0px';
		width = '100%';
		height = ds.y + 'px';
		backgroundImage = 'URL(img/waitbg.png)';
		if(!dev){
			display = 'none';
		}
	}

	var d1 = document.createElement("div");
	d1.setAttribute('align', 'center');

	with(d1.style){
		position = 'absolute';
		top = '45%';
		width = '100%';
	}

	var img = document.createElement("img");
	img.setAttribute('src', 'img/loading_39x39.gif');
	img.setAttribute('alt', 'save');
	img.setAttribute('width', '39');
	img.setAttribute('height', '39');
	img.setAttribute('border', '0');

	d1.appendChild(img);

	var d2 = document.createElement("div");
	d2.setAttribute('align', 'center');
	with(d2.style){
		position = 'absolute';
		top = '52%';
		width = '100%';
		color = '#444444';
	}

	d2.innerHTML = '<b id="save_div_txt">' + (savetxt?savetxt:'در حال بارگذاري ....') + '</b>';

	d0.appendChild(d1);
	d0.appendChild(d2);
	document.body.insertBefore(d0, document.body.firstChild);
}


/*
	add save div
*/
function add_save_div(){
	setTimeout("get_save_div();", 250);
}

/*
	define how long display save div
*/
function set_save_delay(t){
	if(t!="undefined"){
		savedelay = t;
	}
}

/*
	set save-div text
*/
function set_save_text(txt){
	if(txt!="undefined"){
		try {
			document.getElementById('save_div_txt').innerHTML = txt;
		} catch (e) {
			alert("set_save_text.param.err -> " + e);
		}
	}
}

/*
	return wait html content (Loading ...)
*/
function get_wait_cnt(){
	var w = arguments[0]?arguments[0]:'100%';
	var h = arguments[1]?arguments[1]:'100%';
	var p = arguments[2]?arguments[2]:'50%';//border: solid 1px;
	var align = arguments[3]?arguments[3]:'center';//border: solid 1px;
	return '<div align="' + align +  '" style="width: ' + w + '; height: ' + h + '; "><div style="padding: ' + p + ';"><i>Loading</i><img src="img/loading.dots.gif" width="13" height="1" alt="" hspace="2" /></div></div>';
}

/*
	set save wait view
*/
function savewv(s){
	if(s){
		document.getElementById('wait').style.display = 'block';
	}else{
		setTimeout("document.getElementById('wait').style.display = 'none';", savedelay);
	}
}

// preload images
function preLoadImg(){
	var tmp = '';
	var img = new Array(
		'img/waitbg.png',
		'img/loading_39x39.gif'
	);
	for(var i=0 ; i < img.length ; i++){
		this[i] = new Image();
		this[i].src = img[i];
	}
}


/**
 * php-serializer
 *
 */
function serialize (txt) {
	switch(typeof(txt)){
	case 'string':
		return 's:'+txt.length+':"'+txt+'";';
	case 'number':
		if(txt>=0 && String(txt).indexOf('.') == -1 && txt < 65536) return 'i:'+txt+';';
		return 'd:'+txt+';';
	case 'boolean':
		return 'b:'+( (txt)?'1':'0' )+';';
	case 'object':
		var i=0,k,ret='';
		for(k in txt){
			//alert(isNaN(k));
			if(!isNaN(k)) k = Number(k);
			ret += serialize(k)+serialize(txt[k]);
			i++;
		}
		return 'a:'+i+':{'+ret+'}';
	default:
		return 'N;';
		alert('var undefined: '+typeof(txt));return undefined;
	}
}


function trim (str) {
  // Erst fhrende, dann Abschlieende Whitespaces entfernen
  // und das Ergebnis dieser Operationen zurckliefern
  return str.replace (/^\s+/, '').replace (/\s+$/, '');
}


/*
	get document size
*/
function doc_size(){
  this.x = $(window).width();
  this.y = $(window).height();
  return this;
}

/*
	email validation
*/
function check_email(email){
	if(email){
		var filter  = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		if (!filter.test(email)){
			return false;
		}else{
			return true;
		}
	}
}



function CheckLen(target, veId, charlength){
	var maxlength = charlength;
	StrLen = target.value.length;

	if (StrLen == 1 && target.value.substring( 0, 1 ) == " "){
		target.value = "";
		StrLen = 0;
	}

	if (StrLen > maxlength ){
		target.value = target.value.substring( 0, maxlength );
		CharsLeft = 0;
	}else{
		CharsLeft = maxlength-StrLen;
	}

	document.getElementById(veId).innerHTML = '(' + CharsLeft + ')';
}



/*
	------------------------------------------------- dev function(s)
*/
function wrtdevlog(text) {
	if(dev_status){
		try{
			if(devwin){
			}
		}catch(e){
			var style = '<style type="text/css">' + "\n";
			style+= 'body{ font-family: verdana; font-size: 11px; }' + "\n";
			style+= 'div{ font-family: verdana;  font-size: 11px; }' + "\n";
			style+= 'pre{ width: 500px; }' + "\n";
			style+= 'code{ width: 500px; white-space: pre; }' + "\n";
			style+= '#ctrl{ background: #EEEEEE; padding: 5px; }' + "\n";
			style+= '#cl{ cursor: pointer; font-weight: bold;}' + "\n";
			style+= '#dc{ padding: 5px; }' + "\n";
			style+= '</style>' + "\n";
			var hd = '<span id="cl" onclick="document.getElementById(\'dc\').innerHTML=\'\';">clear all</span>';
			devwin = window.open('', 'devwin', 'width=500,height=800,scrollbars=yes,resizable=yes');
			devwin.document.write('<html><head><title>cn3 dev win</title>' + style + '</head><body leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" onunload="delete opener.devwin;"><div id="ctrl">' + hd + '</div><div id="dc"></div></body></head></html>');
		}
		if(devwin){
			var d = new Date();
			var t = d.getMilliseconds();
			if(devwin.document.getElementById('dc').innerHTML!=""){
				var d = new Date();
				var t = d.getMilliseconds();
				var pre = devwin.document.createElement("pre");
				pre.id = 'id_' + t;
				var s = '<code><b>' + d.toLocaleString() + ' (ts:' + d.getTime() + ')</b><br>';

				if(text.indexOf('received +:')!=-1){
					text = text.replace(/received \+:/,"");
					eval(text);
					if(typeof(res)!="undefined"){
						if(typeof(res)=="object"){
							text = get_obj_v(res);
						}
					}
				}
				s+= text;
				s+= '</code>';
				pre.innerHTML = s;
				devwin.document.getElementById('dc').insertBefore(pre, devwin.document.getElementById('id_' + devwin.devlid));
			}else{
				devwin.document.getElementById('dc').innerHTML = '<pre id="id_' + t + '"><code><b>' + d.toLocaleString() + '</b><br>' + text + '</code></pre>';
			}
			devwin.devlid = t;
		}
	}
}

function str_repeat ( input, multiplier ) {
	if(multiplier>=0){
		return new Array(multiplier+1).join(input);
	}
}

function get_obj_v(obj){
	var tabnum = arguments[1]?arguments[1]:1;
	if(typeof(obj)=='object'){
		var t = '{\n';
		for( var at in obj){
			if(typeof(obj[at])=='object'){
				t+= str_repeat("\t",tabnum) + at + " : " + get_obj_v(obj[at],tabnum+1);
			}else{
				t+= str_repeat("\t",tabnum) + at + " : " + obj[at] + "\n";
			}
		}
		t+= str_repeat("\t",tabnum-1) + '}\n';
		return t;
	}else{
		alert("get_obj_v: no object");
	}
}
