Object.extend = function(dst, src){	for(var i in src){ dst[i]=src[i]; } return dst; }
Object.extend(String.prototype, {
	striptags: 	function() 			{return this.replace(/<\/?[^>]+>/gi, ''); },
	include: 	function(pattern) {return this.indexOf(pattern) > -1; },
	trim: 		function()			{return this.replace(new RegExp("^[\\s]+", "g"),"").replace(new RegExp("[\\s]+$", "g"),""); },
	isemail: 	function()			{
		chk = new RegExp(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$/).test(this);
		if( chk  || new RegExp(/@localhost$/).test(this) ) return true;
		return chk;
	},
	isdate: function(format){ var format; format?format:false;
		var date = this; var dimonth = [0,31,28,31,30,31,30,31,31,30,31,30,31];
		var tmp1 = date.split(/-|\//);
		var tmp2 = date.split(/-|\//);
		tmp1[0] = parseFloat(tmp1[0]); tmp1[1] = parseFloat(tmp1[1]); tmp1[2] = parseFloat(tmp1[2]);
		if( format == 2){ tmp1 = [ tmp1[2], tmp1[1], tmp1[0] ]; tmp2 = [ tmp2[2], tmp2[1], tmp2[0] ]; }
		
		if(	!( isNaN(tmp1[0]) || isNaN(tmp1[1]) || isNaN(tmp1[2]) ) && 
				!( tmp1[0] <= 0 || tmp1[1] <= 0 || tmp1[2] <= 0 ) &&
				!( tmp1[0] <= 0 || tmp1[1] <= 0 || tmp1[2] <= 0 ) && 
				!( tmp1[2] > 29 && tmp1[1] == 2 ) &&
				!( tmp1[2] == 29 && tmp1[1] == 2 && !(((tmp1[0] % 4 == 0) && (tmp1[0] % 100 != 0)) || (tmp1[0] % 400 == 0)) ) &&
				!( tmp1[1] > 12 ) && 
				!( tmp1[2] > dimonth[tmp1[1]] ) && 
				 ( new RegExp(/([0-9]{4})/).test( tmp2[0] ) && new RegExp(/([0-9]{1,2})/).test( tmp2[1] ) && new RegExp(/([0-9]{1,2})/).test( tmp2[2] )  ) ) return true;
		return false;
	},
	isimage: function(){
		return new RegExp(/(\.jpg|\.jpeg|\.gif|\.png|\.bmp)$/).test(this.toLowerCase());
	},
	empty: function(){
		return this.trim(this) == "";
	}
});


/*šJQUERY extend ...*/
// JavaScript Document
/*
var __keyCodes = [];
__keyCodes['acc'] = [9,8,35,36,34,33];

__keyCodes['num'] = [48,49,50,51,52,53,54,55,56,57].add(__keyCodes['acc']);
__keyCodes['mon'] = [46,44,190,188,36,48,49,50,51,52,53,54,55,56,57].add(__keyCodes['acc']);
__keyCodes['alp'] = [113,119,101,114,116,121,117,105,111,112,97,115,100,102,103,104,106,107,108,241,122,120,99,118,98,110,109,220,32,252,225,233,237,243,250,193,201,205,211,218].add(__keyCodes['acc']);
__keyCodes['pun'] = [46,44,58,59,63,191,33,161,34,38,36].add(__keyCodes['acc']);
__keyCodes['fnc'] = [112,113,114,115,116,117,118,119,120,121,122,123].add(__keyCodes['acc']);
__keyCodes['nav'] = [37,38,39,40].add(__keyCodes['acc']);
__keyCodes['sof'] = [91].add(__keyCodes['acc']);
*/

(function($){
	$.fn.check = function(){
		if( arguments.length == 0 ){
			this.find("input:checkbox").each(function(){ $(this).attr('checked', !$(this).attr('checked') );  });
		}	else	{
			stat = arguments[0];
			this.find("input:checkbox").each(function(){ $(this).attr('checked', stat); });
		}
	};

	$.fn.enable = function(){
		this.attr('disabled', false);
	};

	$.fn.disable = function(){
		this.attr('disabled', true);
	};

	$.fn.display = function(nstat){ var nstat;
		this.css('display', ( ( nstat === true || nstat === false ) ? (nstat?"block":"none") : nstat ) );
	};

	$.fn.checked = function(){
		return this.attr('checked');
	};

	//$.fn.empty = function(){
		//return this.val().empty();
	//};
	
	$.fn.move = function(x,y){
		this.css({
			'top'  :  ($.is_number(y) ? y + "px" : y),
			'left' :  ($.is_number(x) ? x + "px" : x)
		});
	};
})(jQuery);

jQuery.chenabled = function(){
	var checkStat = !( arguments[0] === true  || arguments[0] === false );
	for(var i = (checkStat ? 0 : 1), n = arguments.length; i < n; i++){
		if( ( checkStat && $(arguments[i]).attr('disabled') ) || (!checkStat && arguments[0] == true) ){
			$(arguments[i]).enable();
		}	else	{
			$(arguments[i]).disable();
		}
	}
}

jQuery.display = function(){
	var action = false;
	var initin = 0;
	if( arguments[0] === true || arguments[0] === false ){initin = 1; action = arguments[0];}

	for(var i = initin, n = arguments.length; i < n; i++){
		if( arguments[i] == '|' ){action = !action; continue;}
		$(arguments[i]).display(action);
	}
}

jQuery.switchdisplay = function(){
	for(var i = 0, n = arguments.length; i < n; i++){
		$(arguments[i]).display( $(arguments[i]).css('display') != 'block' );
	}
}

jQuery.ifpress = function( e, codes, doEvent ){ var e =(e||window.event), codes, doEvent, kcode;
	codes = $.is_array( codes ) ? codes : [codes];
	kcode = e.keyCode||e.which; //alert(kcode);
	if( in_array( kcode, codes ) ){
		e.handled = true;	eval(doEvent); return true;
	}	return false;
}

jQuery.transfer_options = function( src, dst ){
	var src_options = $(src + ' option:selected');
	for( var i =0, n = src_options.length; i < n; i++ ){
		$(dst).append( src_options[i] );
	}
	for( var i =0, n = src_options.length; i < n; i++ ){
		try { $(src).remove( src_options[i] ); } catch(e){}
	}
}

jQuery.preloadImages = function(){
	for(var i = 0; i<arguments.length; i++){jQuery("<img>").attr("src", arguments[i]);}
}

jQuery.is_array 	= function(object){ var object;	return object && object.constructor === Array; }
jQuery.is_node	 	= function(object){ var object;	return object && object.nodeType == 1; }
jQuery.is_function= function(object){ var object;	return typeof object == "function"; }
jQuery.is_string	= function(object){ var object;	return typeof object == "string"; }
jQuery.is_number	= function(object){ var object;	return typeof object == "number"; }
jQuery.is_undef	= function(object){ var object;	return typeof object == "undefined"; }













// sprintf
function sprintf(){
	var str = arguments[0];
	for( var i = 1; i < arguments.length; i++ ){
		str = str.replace(/%s/i, arguments[i] );
	}	return str;
}

// str_repeat
function str_repeat(String_Repeat, Int_Count){ var String_Repeat, Int_Count, ReturnString = "";
	for(var i=0;i<=Int_Count;i++) ReturnString+= String_Repeat; return ReturnString;
}

// in_array
function in_array(Search, Array_SearchIn){
	if(!$.is_array( Array_SearchIn) ) return false;
	for(var i in Array_SearchIn){
		if( Array_SearchIn[i] == Search) return true;
	}	return false;
}

// array parser
function arrayparse(myArray){
	this.arr = myArray;
	this.remove = function( narg ){ var narg;
		if( !$.is_array( narg ) ) return this;
		var narg, newItms = [];
		for(var i in this.arr){
			if( !in_array(i,narg) ){ newItms[i] = this.arr[i]; }
		} this.arr = newItms;
		return this;
	};
	this.add = function( narg ){ var narg; 
		for(var i in narg ){
			this.arr[i] = narg[i];
		} return this;
	};
	this.get = function(){
		return this.arr;
	};	return this;
}


// number format
function number_format(number, decs, thsep, decsep){ var number, decs, thsep, decsep;
	var cd = new String(number);
	cd = cd.replace(/([^0-9|\.]+)/gi,'').replace(/([\.]+)/g,'.');
	var dc = decs ? decs : 0;
	if(dc>0 && !decsep && typeof(decsep)!== 'string' ){ decsep = '.'; }
	if(!thsep && typeof(thsep)!== 'string' ) thsep = ',';

	var dcs = '00';
	if( cd.indexOf('.') > -1 && cd.indexOf('.')<cd.length ){ dcs = cd.substring( cd.indexOf('.')+1, cd.length); cd = cd.substring(0,cd.indexOf('.')); }
	for(var i=cd.length, ns=[];i>0;i-=3){
		ns.unshift(cd.substring(i-3, cd.length));
		cd = cd.substring(0,cd.length-3);
	} if(dc>0){ dcs=dcs.substring(0,dc); if(dcs.length<dc){ dcs+=$str_repeat('0',dc-dcs.length-1); } dcs='.'+dcs; } else { dcs = ''; }
	return (ns.join(thsep)+dcs);
}

function isNum(e){ var e = e||window.event;
	var k = e.keyCode||e.which;
	var rj = {'keydown':[7,10,34,41,45,58,96,106],'keypress':[7,10,32,37,47,58,44,46]};

	return (
		(k > rj[e.type][0]  && k < rj[e.type][1] ) ||
		(k > rj[e.type][2] && k < rj[e.type][3] ) ||

		(k > rj[e.type][4] && k < rj[e.type][5] && !e.shiftKey) ||
		(k > rj[e.type][6] && k < rj[e.type][7] && !e.shiftKey)
	);
}

// 

function switchSearchBox(){	/* fix - if scrolld - */ window.scrollTo( 0, 0 );
	if( _stat_search_box  == 1){
		_stat_search_box = 0;
		$('#loginOpen .searchButton').display(false);
		$('#loginOpen').animate( {"height":"10px"}, "slow"); //.css("background-position","left bottom");
		$('#searchBox_ShowButton').attr('src', 'images/ampi_04b.png');
		$('#logoAlterno').css({"display":"block"}).animate({"height": "150px"}, "slow");
		$('#OnLoginOpen_Home').css('margin-top','30px');
	}	else	{
		_stat_search_box = 1;
		$('#logoAlterno').css({"display":"none","height":"1px"});
		$('#loginOpen').animate( {"height":"210px"}, "slow", function(){$('#loginOpen .searchButton').display(true);}); //.css("background-position","left bottom");
		$('#searchBox_ShowButton').attr('src', 'images/ampi_04.png');
		$('#OnLoginOpen_Home').css('margin-top','0px');
		
	}
}

function search_UpdateForm(from,fparam1){ var from, query = ''; var fparam1 = fparam1?fparam1:false;
	if( typeof(WIDGET_AMPI) !== 'undefined' ){ query+= 'widget-ampi=true&';  }
	$('#loginOpen').css('cursor', 'wait');
	if( from == 'estado' ){
		query+= 'load_municipios=true&estado=' + $('#estado_id').val() + '&municipios_fill=municipio_id&';
		query+= 'load_colonias=true&colonias_fill=colonia_id&load_tipos=true&tipos_fill=tipo_id&load_operacion=true&operaciones_fill=operacion_id&';
		if( fparam1 ){ query+= fparam1.query; }
	}	else if( from == 'municipio' && jQuery.trim($('#municipio_id').val())!=='' ){
		query+= 'municipios_fill=municipio_id&municipio='+$('#municipio_id').val()+'&';
		query+= 'load_colonias=true&colonias_fill=colonia_id&';
		if( fparam1 ){query+= fparam1.query;}else{query+= '&load_tipos=true&tipos_fill=tipo_id&load_operacion=true&operaciones_fill=operacion_id&';}
	}	else if( from == 'colonia' && jQuery.trim($('#colonia_id').val())!=='' ){
		query+= 'load_colonias=true&colonia='+$('#colonia_id').val()+'&colonias_fill=colonia_id&load_tipos=true&tipos_fill=tipo_id&load_operacion=true&operaciones_fill=operacion_id&';
	}	else if( from == 'tipos' && jQuery.trim($('#tipo_id').val())!=='' ){
		query+= 'load_tipos=true&tipos_fill=tipo_id&tipo='+$('#tipo_id').val()+'&load_operacion=true&operaciones_fill=operacion_id&';
	}	else if( from == 'custom' ){
		query+= fparam1.query;
	}

	jQuery.getScript( "ajax.busqueda.php?" + query, function(){ $('#loginOpen').css('cursor', 'default'); srchupdate_Oprc(); } );
}

function eraseOptions( idSelect, noAddEmpty ){ var idSelect, noAddEmpty;
	$('#' + idSelect).html("");
	if( (!noAddEmpty) && (idSelect == 'municipio_id' || idSelect == 'colonia_id' || idSelect == 'tipo_id' || idSelect == 'operacion_id')  )
		addOption(idSelect, '', '' );
}

function srchupdate_Oprc(){
	var t = $('#operacion_id').val();
	$('#src_precioMayor option').each(function(){
		var x = $(this);
		x.attr('value', x.attr( t +'_value') );
		x.text( x.attr( t +'_label')  );
	});
	var t = $('#operacion_id').val();
	$('#src_precioMenor option').each(function(){
		var x = $(this);
		x.attr('value', x.attr( t +'_value') );
		x.text( x.attr( t +'_label')  );
	});
}

__on_add_option_wrap = true;
function addOption(idSelect, value, label, x, selected, cp, clength){ var idSelect, value, label, x, selected; clength = clength?clength:21;
	$('<option '+(cp?'codpos="'+cp+'"':'')+' value="'+value+'" '+(selected?' selected ':'')+' title="'+label+'">'+( (label.length>clength&&__on_add_option_wrap)? label.substr(0, clength-2) + "..." : label ) +'</option>').appendTo('#' + idSelect );
}

function replaceOptions(){}

function search_Properties(){
	$('#searchForm_Properties').submit();
}

function countChars(event, value, nodeShow, left, my){ var e =event||window.event, value, nodeShow, left, my;
	var totCount = left-value.length;
	if( totCount < 0 ){ my.value = value.substr(0,left); e.handled= true; return false; }
	$(nodeShow).html( totCount );
	return true;
}

function showToast( title, message, cfg ){ var title, message, cfg = cfg?cfg:{};
	var div = "";
	div+= '<div id="ToastMessage" class="toastMessage"><div class="toastEnv"></div><div class="toastIn"><div class="toastTitle">'+title+'</div><div class="toastCont">'+message+'<div class="toastButtons">';
		for( var i = 0; i < cfg.buttons.length; i++){
			div+= '<input type="button" value="'+cfg.buttons[i].text+'" id="button_toast_'+i+'" />';
			$('#button_toast_'+i).unbind('click');
		}
	div+= '</div></div></div></div>';
	$('#toast_inner').html(div);
	for( var i = 0; i < cfg.buttons.length; i++){
		$('#button_toast_'+i).bind('click', cfg.buttons[i].action );
	}
}

function hideToast(){
	$('#ToastMessage').hide();
}










