function ABCheckEmail(str) {
	if(!str.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi)) {
		return false;
	}
	return true;
}
//--------------
function ABCheckLength(str,len) {
	if(str.length < len) {
		return false;
	}
	return true;
}
//--------------
function ABCheckPassword(str) {
	if (str.length < 6) {return false;}//too short
	var a = 'abcdefghijklmnopqrstuvxyz';
	var b = 'ABCDEFGHIJKLMNOPQRSTUVXYZ';
	var c = '1234567890';
	var aa = null;
	var bb = null;
	var cc = null;
	for (i in str) {
		if (aa == null) {aa = a.match(str[i]);}
		if (bb == null) {bb = b.match(str[i]);}
		if (cc == null) {cc = c.match(str[i]);}
	}
	if (aa != null && bb != null && cc != null) {
		return true;
	}
	return false;
}
//--------------
function ABValidateForm(form) {
	alert(form.attr('id'));
	var valid = [];
	var ok = '';
	var elems = form.find("[title='required']");
	for (i in elems) {
		ok = false;
		//alert($(elems[i]).attr('id'));
		if ($(elems[i]).attr('alt')=='email') {
			ok = ABCheckEmail($(elems[i]).val());
		}	
		if (typeof($(elems[i]).attr('alt'))=='number') {
			ok = ABCheckLength($(elems[i]).val(),$(elems[i]).attr('alt'));
		}
		if (typeof($(elems[i]).attr('alt'))=='password') {
			ok = ABCheckPassword($(elems[i]).val());
		}
		if (ok==false) {
			$(elems[i]).addClass('error');
			valid[i] = 0;
		} else {
			$(elems[i]).removeClass('error');
			valid[i] = 1;
		}
	}	
	for (j in valid) {
		if (valid[j] == 0) {
			return false;
		}	
	}
	return true;
}
//------------------------
jQuery('select[id*="_child_school_id_"]').change(function() {
	var sid = jQuery(this).val();	
	var spl = jQuery(this).attr('id').split('_child_school_id');
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/hansaworld/get_options_class.php',
	   data: "school_id="+sid,
	   dataType:"html",
	   processData:false,
	   success: function(data){
			jQuery('#'+spl[0]+'_child_class_id').html(data);
	   }
	 });
});
//--------------------------------
function upClass(the) {
	var sid = the.val();
	if (the.attr('id') == 'child_school_id') var a = true;
	var spl = the.attr('id').split('_child_school_id_');
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/hansaworld/get_options_class.php',
	   data: "school_id="+sid,
	   dataType:"html",
	   processData:false,
	   success: function(data){
		   	if (a == true) {
				jQuery('#child_class_id').html(data);
			} else {
				jQuery('#'+spl[0]+'_child_class_id_'+spl[1]).html(data);
			}
	   }
	 });	
}
//--------------------------------
jQuery(document).ready(function(){
	jQuery("#search_employee_name").autocomplete("/extensions/awi_hansalaw/suggest_employee.php", {assignTo:'#search_employee_id', minChars:1, matchSubset:0, matchContains:0, cacheLength:10, onItemSelect:selectItem, formatItem:formatItem, selectOnly:1 });	
	var n = window.location.hash;//jQuery(document).getUrlParam("n");
	n = n.split('#');
	if (parseInt(n[1]) > 0) eDetail(n[1]);
	jQuery(document).keydown(function(event){
		var block = (jQuery('#awieditor').css('display') == 'block' ? true : false);
		if (block == true && event.keyCode == 13) {//enter, submit
			//event.preventDefault();
			//jQuery('#ajaxsubmit').click();
		}
		if (block && event.keyCode == 27) {//escape, close
			event.preventDefault();
			jQuery('#awieditor').hide();
		}
  	});
});
//--------------------------------
function clearFilters(){
	jQuery('a[id^="employee_filter_"]').removeClass('bold');
	jQuery('a[id="show_all_employees"]').removeClass('bold');
	jQuery('a[id^="after_employee_filter_"]').remove();
	eSearch();
}
//--------------------------------
function show_all_employees(the){
	jQuery('a[id^="employee_filter_"]').removeClass('bold');
	jQuery('a[id^="after_employee_filter_"]').remove();
	the.addClass('bold');
	eSearch();
}
//--------------------------------
function employee_filter(the){
	jQuery('#show_all_employees').removeClass('bold');
	if (the.attr('class') == 'bold') {
		jQuery('#after_'+the.attr('id')).remove();
		the.removeClass('bold');	
		the.attr('title','click here to apply filter');
	} else if (the.attr('class') != 'bold') {
		jQuery('#after_'+the.attr('id')).remove();
		the.addClass('bold').after('<a title="click here to remove filter" href="#" id="after_'+the.attr('id')+'" onClick="jQuery(\'#'+the.attr('id')+'\').click();return false;" class="close"> <img src="/extensions/awi_hansalaw/px_hansalaw/images/delete.gif" alt="delete" border="0"></a>');	
		the.attr('title','click here to remove filter');
	}
	eSearch();
}
//--------------------------------
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
//--------------------------------
function markPart(cid,tid) {
	jQuery('#mark_'+cid+'_'+tid).parent("td").css('background-color','#FFFFFF');
	var part = (jQuery('#mark_'+cid+'_'+tid).attr('checked') == true ? 1 : 0);
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/hansaworld/mark_part.php',
	   data: "cid="+cid+'&tid='+tid+'&part='+part,
	   dataType:"html",
	   processData:false,
	   success: function(data){
			if (trim(data) == '1') {
			   jQuery('#mark_'+cid+'_'+tid).parent("td").animate({backgroundColor:'#FFFFFF'}, 'fast').animate({backgroundColor:'#DBEFAB'}, 'slow');
			} else {
			   jQuery('#mark_'+cid+'_'+tid).parent("td").animate({backgroundColor:'#FFFFFF'}, 'fast').animate({backgroundColor:'#FFC1C1'}, 'slow');
			}			
	   },
		error:function (XMLHttpRequest, textStatus, errorThrown) {
			alert(errorThrown);
		}
	 });	
}
//------------------------------
function eUs(e,v,s) {
	
	//<input type="file" name="product_image[]" id="product_image_1" class="button" />
	//eid !!!
	var sopt_location = '';
	var ssel_location = '';
	var temp = '';
	if (v[22].length > 0) {
		for (si in v[22]) {
			temp = v[22][si].split('|'); 
			ssel_location = (temp[0] == v[1] ? ' selected="selected" ' : '');
			sopt_location += '<option value="'+temp[0]+'"'+ssel_location+'>'+temp[1]+'</option>';
		}
	}
	var sopt_prarea = '';
	var ssel_prarea = '';
	temp = '';
	if (v[21].length > 0) {
		for (si in v[21]) {
			temp = v[21][si].split('|'); 
			ssel_prarea = (in_array(temp[0], v[19]) ? ' selected="selected" ' : '');
			sopt_prarea += '<option value="'+temp[0]+'"'+ssel_prarea+'>'+temp[1]+'</option>';
		}
	}
	var sopt_lang = '';
	var ssel_lang = '';
	temp = '';
	if (v[20].length > 0) {
		for (si in v[20]) {
			temp = v[20][si].split('|'); 
			ssel_lang = (in_array(temp[0], v[18]) ? ' selected="selected" ' : '');
			sopt_lang += '<option value="'+temp[0]+'"'+ssel_lang+'>'+temp[1]+'</option>';
		}
	}
	var sopt_position = '';
	var ssel_position = '';
	var temp = '';
	if (v[24].length > 0) {
		for (si in v[24]) {
			temp = v[24][si].split('|'); 
			ssel_position = (in_array(temp[0], v[25]) ? ' selected="selected" ' : '');
			sopt_position += '<option value="'+temp[0]+'"'+ssel_position+'>'+temp[1]+'</option>';
		}
	}
	var f = '<table cellpadding="0" cellspacing="0" border="0">';
		f += '<tr><td>'+s[1]+'</td><td><input type="text" id="employee_name" value="'+stripslashes(v[2])+'"></td></tr>';
		
		f += '<tr><td>'+s[0]+'</td><td><select id="employee_location_id">'+sopt_location+'</select></td></tr>';
		f += '<tr><td>'+s[6]+'</td><td><select id="employee_practicearea_ids" multiple="multiple">'+sopt_prarea+'</select></td></tr>';
		f += '<tr><td>'+s[5]+'</td><td><select id="employee_language_ids" multiple="multiple">'+sopt_lang+'</select></td></tr>';
		
		f += '<tr><td>'+s[13]+'</td><td><input type="text" id="employee_email" value="'+stripslashes(v[26])+'"></td></tr>';
		f += '<tr><td>'+s[14]+'</td><td><input type="text" id="employee_phone" value="'+stripslashes(v[27])+'"></td></tr>';
		
		f += '<tr><td>'+s[2]+' ee</td><td><textarea id="employee_education_ee">'+stripslashes(v[3])+'</textarea></td></tr>';
		f += '<tr><td>'+s[3]+' ee</td><td><textarea id="employee_workexperience_ee">'+stripslashes(v[4])+'</textarea></td></tr>';
		f += '<tr><td>'+s[4]+' ee</td><td><textarea id="employee_membership_ee">'+stripslashes(v[5])+'</textarea></td></tr>';
		
		f += '<tr><td>'+s[2]+' en</td><td><textarea id="employee_education_en">'+stripslashes(v[6])+'</textarea></td></tr>';
		f += '<tr><td>'+s[3]+' en</td><td><textarea id="employee_workexperience_en">'+stripslashes(v[7])+'</textarea></td></tr>';
		f += '<tr><td>'+s[4]+' en</td><td><textarea id="employee_membership_en">'+stripslashes(v[8])+'</textarea></td></tr>';
		
		f += '<tr><td>'+s[2]+' lv</td><td><textarea id="employee_education_lv">'+stripslashes(v[9])+'</textarea></td></tr>';
		f += '<tr><td>'+s[3]+' lv</td><td><textarea id="employee_workexperience_lv">'+stripslashes(v[10])+'</textarea></td></tr>';
		f += '<tr><td>'+s[4]+' lv</td><td><textarea id="employee_membership_lv">'+stripslashes(v[11])+'</textarea></td></tr>';
		
		f += '<tr><td>'+s[2]+' lt</td><td><textarea id="employee_education_lt">'+stripslashes(v[12])+'</textarea></td></tr>';
		f += '<tr><td>'+s[3]+' lt</td><td><textarea id="employee_workexperience_lt">'+stripslashes(v[13])+'</textarea></td></tr>';
		f += '<tr><td>'+s[4]+' lt</td><td><textarea id="employee_membership_lt">'+stripslashes(v[14])+'</textarea></td></tr>';
		
		f += '<tr><td>'+s[2]+' ru</td><td><textarea id="employee_education_ru">'+stripslashes(v[15])+'</textarea></td></tr>';
		f += '<tr><td>'+s[3]+' ru</td><td><textarea id="employee_workexperience_ru">'+stripslashes(v[16])+'</textarea></td></tr>';
		f += '<tr><td>'+s[4]+' ru</td><td><textarea id="employee_membership_ru">'+stripslashes(v[17])+'</textarea></td></tr>';
		
		f += '<tr><td>'+s[12]+'</td><td><select id="employee_position_ids" multiple="multiple">'+sopt_position+'</select></td></tr>';
	
	if (parseInt(v[0]) > 0) {
		f += '<tr><td>'+s[7]+'</td><td><div id="employee_image">'+s[11]+'</div></td></tr>';
		f += (v[23] != '' ? '<tr><td>'+s[10]+'</td><td><input type="checkbox" onClick="if(jQuery(this).attr(\'checked\')==true)return confirm(\''+s[10]+'?\');" id="employee_image_delete" value="1"></td></tr>' : '');
		f +='<tr><td></td><td id="ajaxloadc"><a id="ajaxsubmit" href="#" onclick="javascript:eUs_(\''+v[0]+'\',\'0\');return false;">'+s[8]+'</a>&nbsp;<a href="#" onclick="javascript:if(confirm(\''+s[9]+'?\')){eUs_(\''+v[0]+'\',\'1\');}return false;">'+s[9]+'</a></td></tr>';
	} else {
		f +='<tr><td></td><td id="ajaxloadc"><a id="ajaxsubmit" href="#" onclick="javascript:eUs_(\'0\',\'0\');return false;">'+s[8]+'</a></td></tr>';
	}
	f += '</table>';
	AWIDiv(e,f);
	if (parseInt(v[0]) > 0) {
		awiuploadImage(v[0]);
	}
}
//------------------------------
function eUs_(u,d) {
	//+"&user_pw="+jQuery('#user_pw').val()+"&user_pw_="+jQuery('#user_pw_').val()
	jQuery('#awieditor').animate({backgroundColor:'#FFFFFF'}, 'fast');
	jQuery('#ajaxloadc').append('<img id="ajaxload" src="/extensions/awi_hansalaw/px_hansalaw/images/ajax_loading.gif">');
	if (d == '1') {
		var data_ = "action=delete&employee_id="+u;
	} else {
		var data_ = (parseInt(u) > 0 ? "action=update&employee_id="+u : "action=add")+"&employee_name="+jQuery('#employee_name').val()+"&employee_location_id="+jQuery('#employee_location_id').val()+"&employee_practicearea_ids="+jQuery('#employee_practicearea_ids').val()+"&employee_language_ids="+jQuery('#employee_language_ids').val()+"&employee_education_ee="+addslashes(jQuery('#employee_education_ee').val())+"&employee_workexperience_ee="+addslashes(jQuery('#employee_workexperience_ee').val())+"&employee_membership_ee="+addslashes(jQuery('#employee_membership_ee').val())+"&employee_education_en="+addslashes(jQuery('#employee_education_en').val())+"&employee_workexperience_en="+addslashes(jQuery('#employee_workexperience_en').val())+"&employee_membership_en="+addslashes(jQuery('#employee_membership_en').val())+"&employee_education_lv="+addslashes(jQuery('#employee_education_lv').val())+"&employee_workexperience_lv="+addslashes(jQuery('#employee_workexperience_lv').val())+"&employee_membership_lv="+addslashes(jQuery('#employee_membership_lv').val())+"&employee_education_lt="+addslashes(jQuery('#employee_education_lt').val())+"&employee_workexperience_lt="+addslashes(jQuery('#employee_workexperience_lt').val())+"&employee_membership_lt="+addslashes(jQuery('#employee_membership_lt').val())+"&employee_education_ru="+addslashes(jQuery('#employee_education_ru').val())+"&employee_workexperience_ru="+addslashes(jQuery('#employee_workexperience_ru').val())+"&employee_membership_ru="+addslashes(jQuery('#employee_membership_ru').val())+"&employee_image_delete="+(jQuery('#employee_image_delete').attr('checked')==true ? '1' : '0')+"&employee_position_ids="+jQuery('#employee_position_ids').val()+"&employee_email="+addslashes(jQuery('#employee_email').val())+"&employee_phone="+addslashes(jQuery('#employee_phone').val());
	}
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/awi_hansalaw/eedit.php',
	   data: data_,
	   dataType:"html",
	   processData:false,
	   success: function(data){//alert(data);
			jQuery('font[class="hw_error"]').remove();
			if (parseInt(trim(data)) > 0) {
				//awiuploadImage(parseInt(trim(data)));
			   jQuery('#awieditor').animate({backgroundColor:'#FFFFFF'}, 'fast').animate({backgroundColor:'#DBEFAB'}, 'slow').fadeOut('slow');
			   window.location.reload();
			} else if (data == '0') {
			   jQuery('#awieditor').animate({backgroundColor:'#FFFFFF'}, 'fast').animate({backgroundColor:'#FFD2D2'}, 'slow');
			} else {
			   	var err = data.split('<awi,>');
			   	for (i in err) {
					var err_ = err[i].split('<awi:>');   
					jQuery('#'+err_[0]).parent("td").append(' <font class="hw_error" color="red">'+err_[1]+'</font>');
				}
			}	
			jQuery('#ajaxload').remove();
	   },
		error:function (XMLHttpRequest, textStatus, errorThrown) {
			alert(errorThrown);jQuery('#ajaxload').remove();
		}
	 });	
}
//------------------------------
function awiuploadImage(eid) {
    
	if (parseInt(eid) <= 0) return;
	new AjaxUpload('#employee_image', {
      // Location of the server-side upload script
      action: '/extensions/awi_hansalaw/eedit.php',
      // File upload name
      name: 'employee_image',
      // Additional data to send
      data: {
        employee_id : eid,
        action : 'saveimage'
      },
      // Submit file after selection
      autoSubmit: true,
      // The type of data that you're expecting back from the server.
      // Html (text) and xml are detected automatically.
      // Only useful when you are using json data as a response.
      // Set to "json" in that case.
      responseType: false,
      // Fired after the file is selected
      // Useful when autoSubmit is disabled
      // You can return false to cancel upload
      // @param file basename of uploaded file
      // @param extension of that file
      onChange: function(file, extension){},
      // Fired before the file is uploaded
      // You can return false to cancel upload
      // @param file basename of uploaded file
      // @param extension of that file
      onSubmit: function(file, extension) {},
      // Fired when file upload is completed
      // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
      // @param file basename of uploaded file
      // @param response server response
      onComplete: function(file, response) {}
    });
	
}
//------------------------------
function sendInvoice(invoice_id) {
	
	jQuery('font[class="hw_error"]').remove();
	jQuery('#invoicelinks_'+invoice_id).append('<img id="ajaxload" src="/extensions/awi_hansalaw/px_hansalaw/images/ajax_loading.gif">');
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/hansaworld/send_invoice.php',
	   data: 'invoice_id='+invoice_id,
	   dataType:"html",
	   processData:false,
	   success: function(data){
			jQuery('#ajaxload').remove();
			jQuery('#invoicelinks_'+invoice_id).append('<font class="hw_error">'+data+'</font>');
	   },
		error:function (XMLHttpRequest, textStatus, errorThrown) {
			alert(errorThrown);jQuery('#ajaxload').remove();
		}
	 });
	jQuery('#ajaxload').remove();
}
//------------------------------
function calSetup(dateobid,timeobid,selector) {
	
	var d = new Date();
	Calendar.setup({
		inputField: dateobid,
		dateFormat: "%d.%m.%Y",
		trigger: selector,
		/*
		disabled: function(date) {
			if (parseInt(date.format("yyyymmdd")) < parseInt(d.format("yyyymmdd"))) {
				return true;
			} else {
				return false;
			}
		},
		*/
		showTime: true,
		minuteStep: 15,
		onTimeChange  : function(cal) {
			var h = cal.getHours(), m = cal.getMinutes();
			// zero-pad them
			if (h < 10) h = "0" + h;
			if (m < 10) m = "0" + m;
			jQuery("#"+timeobid).val(
				Calendar.formatString("${hh}:${mm}", {hh:h,mm:m})
			);
		},
		onSelect: function() { 
			var date = Calendar.intToDate(this.selection.get()); 
			date = Calendar.printDate(date, "%d.%m.%Y"); 
			jQuery('#'+dateobid).val(date); 
			//this.hide(); 
		},
		time: (jQuery('#'+timeobid).val().lenght == 5 ? parseInt(jQuery('#'+timeobid).val().replace(':','')) : 1100)
	});
}
//------------------------------
function AWIDiv(append_elem,content) {
	var os = append_elem.offset();
	jQuery('#awieditor').remove();
	jQuery('body').append('<div id="awieditor" style="background:#ffffff;height:auto;width:50px;position:absolute;z-index:0;visibility:hidden;font-family: Arial, Helvetica, sans-serif;font-size:11px;font-color:#666666;border-color:#cccccc;border-style:solid;border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;vertical-align:top;padding-right:5px;padding-left:5px;padding-bottom:5px;"></div>');
	jQuery('#awieditor').css('visibility', 'hidden');
	//var req = jQuery.ajax({type: 'GET', url:url,success: function(data){jQuery('#awieditor').html(data);}});req=null;
	jQuery('#awieditor').html('<a href="#" style="margin:0px;padding:0px;vertical-align:top;float:right;text-decoration:none;" onClick="jQuery(\'#awieditor\').remove();"><b>&times;</b></a><br>'+content);
	jQuery('#awieditor').css('width','auto').css('left', os.left).css('top', os.top).css('visibility', 'visible');
	return false;
}
//-------------------------------
function selectItem(li) {
	if (li.extra) {
		//alert("That's '" + li.extra[0] + "' you picked.");
	}
}
function formatItem(row) {
	if (row != '') {
		return row[0]+'<br><i>'+row[1]+'</i>';
	}
	return;
}															
//-------------------------------
function eDetail(eid) {
	if (parseInt(eid) > 0){}else{return;}
	jQuery('#ajaxload').remove();
	jQuery('#employee_url_'+eid).after('<img id="ajaxload" border="0" src="/extensions/awi_hansalaw/px_hansalaw/images/ajax_loading.gif">');
	var data_ = 'employee_id='+eid+'&lang='+jQuery('#awilang').val();
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/awi_hansalaw/edetail.php',
	   data: data_,
	   dataType:"html",
	   processData:false,
	   success: function(data){//alert(data);
			jQuery('#employee_details').html('').append(data);
			jQuery('#ajaxload').remove();
	   },
		error:function (XMLHttpRequest, textStatus, errorThrown) {
			alert(errorThrown);jQuery('#ajaxload').remove();
		}
	 });	
}
//-------------------------------
function eSearch() {
	jQuery('#ajaxload').remove();
	jQuery('#search_employee_id').val('');
	jQuery('#search_employee_name').val('');
	jQuery('#search_submit_url').after(' <img id="ajaxload" src="/extensions/awi_hansalaw/px_hansalaw/images/ajax_loading.gif">');
	var practicearea = '';
	jQuery('a[id^="employee_filter_practicearea"]').each(function(i){
		if (jQuery(this).attr('class') == 'bold') {
			var p = jQuery(this).attr('id').split('_');
			practicearea += (practicearea != '' ? ',' : '')+p[3];
		}
	});
	var location = '';
	jQuery('a[id^="employee_filter_location"]').each(function(i){
		if (jQuery(this).attr('class') == 'bold') {
			var p = jQuery(this).attr('id').split('_');
			location += (location != '' ? ',' : '')+p[3];
		}
	});
	var language = '';
	jQuery('a[id^="employee_filter_language"]').each(function(i){
		if (jQuery(this).attr('class') == 'bold') {
			var p = jQuery(this).attr('id').split('_');
			language += (language != '' ? ',' : '')+p[3];
		}
	});
	var position = '';
	jQuery('a[id^="employee_filter_position"]').each(function(i){
		if (jQuery(this).attr('class') == 'bold') {
			var p = jQuery(this).attr('id').split('_');
			position += (position != '' ? ',' : '')+p[3];
		}
	});
	if (practicearea == '' && location == '' && language == '' && position == '' && jQuery('#show_all_employees').attr('class') != 'bold') {
		jQuery('#employee_search_results_header').hide();
		jQuery('#employee_search_results').html('');
		return;
	}
	var data_ = (practicearea != '' ? '&practicearea='+practicearea : '')+(location != '' ? '&location='+location : '')+(language != '' ? '&language='+language : '')+(position != '' ? '&position='+position : '')+'&lang='+jQuery('#awilang').val();//FILTERS
	jQuery.ajax({
	   type: "POST",
	   url: '/extensions/awi_hansalaw/esearch.php',
	   data: data_,
	   dataType:"html",
	   processData:false,
	   success: function(data){
		   	jQuery('#employee_search_results_header').show();
			jQuery('#employee_search_results').html('').append(data);
			jQuery('#ajaxload').remove();
	   },
		error:function (XMLHttpRequest, textStatus, errorThrown) {
			alert(errorThrown);jQuery('#ajaxload').remove();
		}
	 });	
}
//--------------------------------
function in_array (needle, haystack, argStrict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
 
    var key = '', strict = !!argStrict;
 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
 
    return false;
}
//---------------------------------
/*
var char_names = {
160:'nbsp',
161:'iexcl',
220:'Uuml',
223:'szlig',
196:'Auml',
252:'uuml',
};
*/
function stripslashes (str) {
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +      fixed by: Mick@el
    // +   improved by: marrtins    // +   bugfixed by: Onno Marsman
    // +   improved by: rezna
    // +   input by: Rick Waldron
    // +   reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   input by: Brant Messenger (http://www.brantmessenger.com/)    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: stripslashes('Kevin\'s code');
    // *     returns 1: "Kevin's code"
    // *     example 2: stripslashes('Kevin\\\'s code');
    // *     returns 2: "Kevin\'s code"    return (str+'').replace(/\\(.?)/g, function (s, n1) {
    return (str+'').replace(/\\(.?)/g, function (s, n1) {    
		switch (n1) {
            case '\\':
                return '\\';
            case '0':                return '\u0000';
            case '':
                return '';
            default:
                return n1;        
		}
    });
}
//---------------------------------
function addslashes(str) {
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str.replace('&', escape('&'));;
}
//---------------------------------
function htmlspecialchars(string, quote_style) {
    // Convert special characters to HTML entities 
    //
    // version: 909.322
    // discuss at: http://phpjs.org/functions/htmlspecialchars
    // +   original by: Mirek Slugen
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Nathan
    // +   bugfixed by: Arno
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // -    depends on: get_html_translation_table
    // *     example 1: htmlspecialchars("<a href='test'>Test</a>", 'ENT_QUOTES');
    // *     returns 1: '&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;'
    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();
    if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
        return false;
    }
     
    hash_map["'"] = '&#039;';
    for (symbol in hash_map) {
        entity = hash_map[symbol];
        tmp_str = tmp_str.split(symbol).join(entity);
    }
    //return escape(tmp_str);//see keeras leedu utf chr p..
    tmp_str = tmp_str.replace('&', escape('&'));
	return tmp_str;
}
//-------------------------------------------
function get_html_translation_table (table, quote_style) {
    // Returns the internal translation table used by htmlspecialchars and htmlentities 
    //
    // version: 909.322
    // discuss at: http://phpjs.org/functions/get_html_translation_table
    // +   original by: Philip Peterson
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: noname
    // +   bugfixed by: Alex
    // +   bugfixed by: Marco
    // +   bugfixed by: madipta
    // +   improved by: KELAN
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Frank Forte
    // +   bugfixed by: T.Wild
    // +      input by: Ratheous
    // %          note: It has been decided that we're not going to add global
    // %          note: dependencies to php.js, meaning the constants are not
    // %          note: real constants, but strings instead. Integers are also supported if someone
    // %          note: chooses to create the constants themselves.
    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
     
    var entities = {}, hash_map = {}, decimal = 0, symbol = '';
    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
     
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';
    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
    constMappingQuoteStyle[3] = 'ENT_QUOTES';
 
    useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
 
    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
        throw new Error("Table: "+useTable+' not supported');
        // return false;
    }
 
    entities['38'] = '&amp;';
    if (useTable === 'HTML_ENTITIES') {
		
        entities['160'] = '&nbsp;';
        entities['161'] = '&iexcl;';
        entities['162'] = '&cent;';
        entities['163'] = '&pound;';
        entities['164'] = '&curren;';
        entities['165'] = '&yen;';
        entities['166'] = '&brvbar;';
        entities['167'] = '&sect;';
        entities['168'] = '&uml;';
        entities['169'] = '&copy;';
        entities['170'] = '&ordf;';
        entities['171'] = '&laquo;';
        entities['172'] = '&not;';
        entities['173'] = '&shy;';
        entities['174'] = '&reg;';
        entities['175'] = '&macr;';
        entities['176'] = '&deg;';
        entities['177'] = '&plusmn;';
        entities['178'] = '&sup2;';
        entities['179'] = '&sup3;';
        entities['180'] = '&acute;';
        entities['181'] = '&micro;';
        entities['182'] = '&para;';
        entities['183'] = '&middot;';
        entities['184'] = '&cedil;';
        entities['185'] = '&sup1;';
        entities['186'] = '&ordm;';
        entities['187'] = '&raquo;';
        entities['188'] = '&frac14;';
        entities['189'] = '&frac12;';
        entities['190'] = '&frac34;';
        entities['191'] = '&iquest;';
        entities['192'] = '&Agrave;';
        entities['193'] = '&Aacute;';
        entities['194'] = '&Acirc;';
        entities['195'] = '&Atilde;';
        entities['196'] = '&Auml;';
        entities['197'] = '&Aring;';
        entities['198'] = '&AElig;';
        entities['199'] = '&Ccedil;';
        entities['200'] = '&Egrave;';
        entities['201'] = '&Eacute;';
        entities['202'] = '&Ecirc;';
        entities['203'] = '&Euml;';
        entities['204'] = '&Igrave;';
        entities['205'] = '&Iacute;';
        entities['206'] = '&Icirc;';
        entities['207'] = '&Iuml;';
        entities['208'] = '&ETH;';
        entities['209'] = '&Ntilde;';
        entities['210'] = '&Ograve;';
        entities['211'] = '&Oacute;';
        entities['212'] = '&Ocirc;';
        entities['213'] = '&Otilde;';
        entities['214'] = '&Ouml;';
        entities['215'] = '&times;';
        entities['216'] = '&Oslash;';
        entities['217'] = '&Ugrave;';
        entities['218'] = '&Uacute;';
        entities['219'] = '&Ucirc;';
        entities['220'] = '&Uuml;';
        entities['221'] = '&Yacute;';
        entities['222'] = '&THORN;';
        entities['223'] = '&szlig;';
        entities['224'] = '&agrave;';
        entities['225'] = '&aacute;';
        entities['226'] = '&acirc;';
        entities['227'] = '&atilde;';
        entities['228'] = '&auml;';
        entities['229'] = '&aring;';
        entities['230'] = '&aelig;';
        entities['231'] = '&ccedil;';
        entities['232'] = '&egrave;';
        entities['233'] = '&eacute;';
        entities['234'] = '&ecirc;';
        entities['235'] = '&euml;';
        entities['236'] = '&igrave;';
        entities['237'] = '&iacute;';
        entities['238'] = '&icirc;';
        entities['239'] = '&iuml;';
        entities['240'] = '&eth;';
        entities['241'] = '&ntilde;';
        entities['242'] = '&ograve;';
        entities['243'] = '&oacute;';
        entities['244'] = '&ocirc;';
        entities['245'] = '&otilde;';
        entities['246'] = '&ouml;';
        entities['247'] = '&divide;';
        entities['248'] = '&oslash;';
        entities['249'] = '&ugrave;';
        entities['250'] = '&uacute;';
        entities['251'] = '&ucirc;';
        entities['252'] = '&uuml;';
        entities['253'] = '&yacute;';
        entities['254'] = '&thorn;';
        entities['255'] = '&yuml;';
	}
 
    if (useQuoteStyle !== 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';
    }
    if (useQuoteStyle === 'ENT_QUOTES') {
        entities['39'] = '&#39;';
    }
    entities['60'] = '&lt;';
    entities['62'] = '&gt;';
 
 
    // ascii decimals to real symbols
    for (decimal in entities) {
        symbol = String.fromCharCode(decimal);
        hash_map[symbol] = entities[decimal];
    }
     
    return hash_map;
}
//--------------------------------------