a:4:{i:0;s:14859:"					<script>	
						(function($){	
						  $(function(){
							$('[id^=slider1]').each(function(){
								$(this).DG_Slider({
									auto: true, mode:'fade', pager:false, pagerType:'short',controls:false
								});
							})
							$('a[rel=gall]').fancybox()
						  });	
						}(jQuery))		
					</script>
					<section id="middle"><br />
					<div class="wrap" id="bodyFormatNT">
					<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
					<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->
											<div class="h1"><h1>2 BHK Flats for Sale</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.maanbuilder.com/" title="Home">Home</a>
						
						<b class="ffv p2px">&rsaquo;</b><a href="http://www.maanbuilder.com/property-in-ghaziabad.htm" title="Property in Ghaziabad">Ghaziabad</a><b class="ffv p2px">&rsaquo;</b><a href="http://www.maanbuilder.com/property-for-sale-in-crossing-republik-ghaziabad.htm" title="Property for Sale in Crossing Republik, Ghaziabad">Crossing Republik</a>						
						<b class="ffv p2px">&rsaquo;</b>2 BHK Flats for Sale</p> 
											<section class="fo pro_detail_n">
					<div class="w100 dt ac-dtr acac-dtc fl">
					<ul>
										<li class="vat pr30px vat w300px lh0">
                    <div class="demo-wrap slider300">
					<ul class="lsn m0px p0px" >
											<li class="bdr bw1px c5px p1px">
						<div class="">
						<p class="ac vam">
						<img  alt="Coming Soon Property" src="https://static.realestateindia.com/images/no_image.jpg" width="" height="" />						</p>
						</div>
						</li>
											</ul>
					</div>
					</li>
					<li class="vat ffos">
					<div class="fo mb10px bdrb bdreee pb10px res_clr">
					<div class="">
												<div><i class="fa fa-map-marker pr7px fl"></i><p class="ofh">Saviour Greenisle, NH-24, Crossing Republik, Crossing Republik, Ghaziabad							<br>
							<span class="gray">By Maan Properties & Developers Pvt. Ltd.</span></p>
							</div>
												</div>
					</div>
					<p class="pr"><span class="headHr dib c5px"><a data-fancybox data-type="iframe" data-src="https://www.realestateindia.com/view_map.php?gaddress=~~Crossing Republik~~Ghaziabad~~Uttar Pradesh&goglepointer1=&goglepointer2=" href="javascript:void(0);" style="padding-left:50px;" class="b xlarge p7px pr20px dib ts0">Location Map</a></span>
					<span style="top:-10px;left:0;" class="pa dib lh0px"><img src="https://static.realestateindia.com/images/icon_loc_map.png" alt=""></span>
					</p>
					<script>
					$("[data-fancybox]").fancybox({
					    iframe : {
					        css : {
					            width : '860px'
					        }
					    }
					});
					</script>
					<br />
											<div class="xxlarge mb10px">
						<div class="xxlarge ffrr mb7px dib red"><i class="fa fa-inr"></i> <span itemprop="price">35 L</span></div>
													<div class="xsmall ml15px dib">@ Rs 3333 per Sq.ft.</div>
													</div>
											<ul class="fo ac-mb10px pb10px lsn bdrb large">
											<li>
						<p class="fl w130px">Property ID: </p>
						<p class="fl mr30px">:</p>
						<p class="ofh b">REI402633</p>
						</li>
												<li>
						<p class="fl w130px">Property For</p>
						<p class="fl mr30px">:</p>
						<p class="ofh b">Sale</p>
						</li>
												<li>
						<p class="fl w130px">Location</p>
						<p class="fl mr30px">:</p>
						<p class="ofh b">Crossing Republik, Ghaziabad</p>
						</li>
												<script type="text/javascript">
						area_conversion=function(b,f,e){var c=createAreaArr();if(e==1){if(b<20&&b!=18){var a=f/c[b];return a}else{return 0}}else{if(e==2){if(b<20&&b!=18){var d=f*c[b];return d}else{return 0}}}};
						
						function createAreaArr(){
							var a={
								1:1,
								2:0.1111111111111,
								3:0.093,
								4:0.00041666667,
								5:0.013890889,
								6:0.000091810503,
								7:0.002222222222222223,
								8:0.0036724201,
								9:0.0009182736455464,
								10:0.00092936802973,
								11:0.0000028696051,
								12:0.00002295663,
								13:0.000057392103,
								14:0.0013888889,
								15:0.0000092904166,
								16:0.003673095,
								17:0.0000092605969,
								19:0.002295684
							};
							return a;
						}
						
						function updateArea(a,c,d,h,b,w,z){
							var g=createAreaArr();
							 
							var bu = {
						    'Sq.ft.':'1',
						    'Sq. Yards':'2',
						    'Sq. Meter':'3',
						    'Guntha':'9',
						    'Ares':'10',
						    'Acre':'12',
						    'Bigha':'13',
						    'Hectares':'15',
						    'Marla':'16',
						    'Cent':'19',
						    };
							if(w=='Sq. Feet'){
								var e=d*(parseFloat(g[c]));
							}
							else{
								var e=parseFloat(g[c])*(d/ parseFloat(g[bu[w]]));
							} 
							
							if(b=="Y"){
								jQuery("#"+h+"_span").html(e.toFixed(2));
							}else{
								if(b=="N"){
									jQuery("#"+h).html(jQuery("#"+h).html+e.toFixed(2));
									console.log("#"+h);
								}
							}
							jQuery("#"+h+"Label").html(" "+a);
							jQuery("#"+z).html(a+" &#9660;")
						}
						
						</script>						
												<li class="fo">
						<p class="fl w130px">Built Up Area</p>
						<p class="fl mr30px">:</p>
						<div class="fl b">
						<script type="text/javascript">
						function convert(basetext,baseindex,baseunit){
						     if(1050 > 0 )  updateArea(basetext,baseindex,1050,'builtupArea','Y',baseunit,'DrpDownTab');   }
						</script>  
						<span id="builtupArea_span">1050</span>
						<span class="pr">
						<a onClick="jQuery('#builtUp').show();event.stopPropagation();" class="headVr pl5px pr5px small dib vam ml5px" id="DrpDownTab">Sq.ft. &#9660;</a>
						<div id="builtUp" style="width:120px;display:none;top:-1px;left:0px;" class="pa">
						<span class="data p5px15px pb10px dib xlarge b pr" style="border-bottom:none;z-index:101;" id="builtupAreaLabel">Sq.ft.</span>
						<ul class="lsn m0px p0px data small bdrB0 pr uo" style="top:-1px;z-index:100;">
						<li><a class="bdrB db p2px10px" href="javascript:convert('Sq.%20Feet',1,'Sq.ft.');">Sq. Feet</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Cent',19,'Sq.ft.');">Cent</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Sq.%20Yards',2,'Sq.ft.');">Sq. Yards</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Ares',10,'Sq.ft.');">Ares</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Acre',12,'Sq.ft.');">Acres</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Sq.%20Meter',3,'Sq.ft.');">Sq. Meter</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Bigha',13,'Sq.ft.');">Bigha</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Hectares',15,'Sq.ft.');">Hectares</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Guntha',9,'Sq.ft.');">Guntha</a></li>
						<li><a class="bdrB db p2px10px" href="javascript:convert('Marla',16,'Sq.ft.');">Marla</a></li>
						</ul>
						</div>
						</span>
						<script>
						jQuery(document).ready(function(e) {
							jQuery('body').click(function(){
								jQuery('#builtUp').hide();
								
							})
						});
						</script>
						</div>
						</li>
											</ul>
											<form class="inquiry-form" name="frmpropertydetail" method="post" action="http://www.maanbuilder.com/enquiry-form-10017.htm">
						<input type="hidden" name="enqtype" value="property" />
						<input type="hidden" name="subject" value="Inquiry For Property - 2 BHK Flats for Sale - REI402633" />
						<input type="hidden" name="property_id" value="402633" />
						</form>
						<a href="javascript:void(0);" class="submit-inquiry buttonBig xxlarge ts0 p10px20px mt10px c5px">Send Enquiry</a>
							
					</li>
					</ul>
					</div>											
					</section>
					<br /> 
											<div class="bdrB xxlarge b dif pb5px mt10px mb7px">Additional Details</div>
	                    <ul class="lsn m0px p0px wp33 lh2em">
														<li><b>Bedrooms :</b> 2</li>
																<li><b>Bathrooms :</b> 2</li>
														</ul>
			            <p class="cb"></p>
			            <br />
												<br />
						<div class="bdrB xxlarge b dif pb5px mt10px mb7px">Property Description </div>
						<p class="aj">When a noisy city life makes you tried with its maddening crowd, severe traffic congestion and pollution attack, then you seek a home amidst serene environs. A home, where you feel the view of open sky soothes you and where mother nature caresses you by keeping your heart, mind and soul, calm and composed, And taking all these essentialities as prime priority, a green habitat, GREENISLE rests in India's First Global City, Crossings Republik.<br/>
<br/>
Could any place be more exciting, refreshing and secure as GREENISLE. No way, because such perfect creation is created once in a lifetime.<br/>
<br/>
This edifice stands tall with its sky scraping towers offering you the option of luxurious 2 bedroom apartments that give desired space to your life. Here you find the rare combination of fascinating features and state-of-the-art amenities that you have always desired for your dream home.<br/>
Saviour Greenisle Unit Specification<br/>
<br/>
    Apartments<br/>
<br/>
Unit Type 	Area 	Per SQFT<br/>
Price For Sale 	Approximate<br/>
Sale price 	Floor plan<br/>
2 BHK 	1050 sq.ft 	Rs. 3500 		Floor Plan<br/>
<br/>
Amenities in Saviour Greenisle<br/>
<br/>
Garden<br/>
Swimming Pool<br/>
Play Area<br/>
24Hr Backup<br/>
Maintenance Staff<br/>
Security<br/>
Club House<br/>
Rain Water Harvesting<br/>
Wifi<br/>
Tennis Court<br/>
Gymnasium<br/>
Indoor Games<br/>
Community Hall<br/>
<br/>
Specifications of Saviour Greenisle<br/>
<br/>
Living/Dining Room:<br/>
Floors : Vetrified Tiles<br/>
Fixtures & Fitting : Designer Lights Fitting with Fans<br/>
Wall & Ceiling : Oil bound Distemper & POP cornices<br/>
External Doors & Windows : Powder coated aluminum glazing<br/>
Internal Door : Hard wood frame with polished sk</p>						
											</div>
					<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				    <div class="db p20px bdr large ac">
				    <div class="dib mb10px">
					<div class="propUser bdr bdrddd vam"><i class="fa fa-user"></i></div>
					</div>
					<p class="mb5px"> Mr. Jaspal Maan  </p>
					<p class="alpha75 mb5px"> maanbuilders@gmail.com </p>
					<p> <i class="fa xxxlarge vam mr5px fa-mobile" aria-hidden="true"></i> +91-9711620450, +91-9711620448, +91-6296606161 </p>
					</div>
		
					<div class="column_Box mc">
					<div class="tcl bullet divider">
					<div class="h h2"><b class="plusMinus"></b>
					<h2>Property by City</h2>
					</div>
					<div class="ic showHide_rp">
					<div class="mt10px">
											<span class="dib p5px10px c2px headVr mr7px mb7px "><a href="http://www.maanbuilder.com/property-in-greater-noida.htm" class="dif" title="Property in Greater Noida">Greater Noida</a> <b class="alpha50 bn small">(1676)</b></span>
												<span class="dib p5px10px c2px headVr mr7px mb7px "><a href="http://www.maanbuilder.com/property-in-noida.htm" class="dif" title="Property in Noida">Noida</a> <b class="alpha50 bn small">(874)</b></span>
												<span class="dib p5px10px c2px headVr mr7px mb7px "><a href="http://www.maanbuilder.com/property-in-delhi.htm" class="dif" title="Property in Delhi">Delhi</a> <b class="alpha50 bn small">(12)</b></span>
												<span class="dib p5px10px c2px headVr mr7px mb7px "><a href="http://www.maanbuilder.com/property-in-ghaziabad.htm" class="dif" title="Property in Ghaziabad">Ghaziabad</a> <b class="alpha50 bn small">(1)</b></span>
											
					</div>
					</div>
					</div>
					</div>
					
										
					</div>
					</div>
					
										</div>
					</section>
									<div id="myModal" class="modal fade dn pf" role="dialog" style="z-index:9999;left:0;top:0%;width:100%;height:100%;background-color:rgba(0,0,0,0.6);overflow-x: hidden; overflow-y: auto;">
				    <!-- Modal content-->
				    <div style="max-width:700px;margin-top: 50px;min-height:400px;" class="modal-content data m0a p10px pr">
				      <div class="modal-header">
				        <a style="right:25px;top:25px;" class="pa b xxxlarge" data-dismiss="modal"><span class="xlarge">&times;</span></a>	        
				      </div>
				      <div class="modal-body">
				        <div class="ac" style="padding-top: 10%;"><p style="font-size:18px">Loading...</p></div>
				      </div>
				      <div class="modal-footer">
				        
				      </div>
				    </div>
				</div>
				<script type="text/javascript">
					jQuery(document).ready(function(){
						jQuery(document).on("click", ".submit-inquiry" , function(){
							var form = jQuery(this).parent().find(".inquiry-form");
							if(form.length){
								jQuery.ajax({
									url: form.attr("action"),
									type: form.attr("method"),
									data:form.serialize(),
									crossDomain:true,
									success:function(res){
										jQuery("#myModal .modal-body").html(res);
									}
								});
							}
						});
						jQuery(document).on("click", "[data-dismiss=modal]", function(){
							jQuery("#myModal .modal-body").html('<div class="ac" style="padding-top: 10%;"><p style="font-size:18px">Loading...</p></div>');
							jQuery("#myModal").hide();
						});
						jQuery(document).on("submit", "form[name=static_form]", function(e){				
							e.preventDefault();
							var isValidForm =static_inq_form_validate(jQuery(this).attr("form-id"));
							if(isValidForm == undefined){
								var form = jQuery(this);
								if(form.length){
									jQuery.ajax({
										url: form.attr("action"),
										type: form.attr("method"),
										data:form.serialize(),
										crossDomain:true,
										beforeSend:function(){
											jQuery("#myModal .modal-footer").html("");
										},
										success:function(res){
											jQuery("#myModal .modal-body").html(res);
											setTimeout(function(){
												jQuery("#myModal", document).hide();
												jQuery("#myModal .modal-body").html('<div class="ac" style="padding-top: 10%;"><p style="font-size:18px">Loading...</p></div>');
												},2000)
										}
									});
								}
							}
						});
						var modal = jQuery("#myModal", document);
			
						jQuery(document).on("click", ".submit-inquiry" , function(){
						    modal.show();
						});
			
						window.onclick = function(event) {
						    if (jQuery(event.target) == modal) {
						        modal.css("display","none");
						    }
						}
					});
				</script>
				";i:1;s:65:"2 BHK Flats & Apartments for Sale in Crossing Republik, Ghaziabad";i:2;s:276:"Maan Properties & Developers Pvt. Ltd. provide Flats & Apartments for Sale with 2 Bedrooms, 2 Bath Rooms, 1050 Sq.ft. in Crossing Republik, Ghaziabad, Uttar Pradesh Crossing Republik, Ghaziabad. Requirement of Flats & Apartments in Crossing Republik, Ghaziabad, Uttar Pradesh.";i:3;s:276:"Maan Properties & Developers Pvt. Ltd. provide Flats & Apartments for Sale with 2 Bedrooms, 2 Bath Rooms, 1050 Sq.ft. in Crossing Republik, Ghaziabad, Uttar Pradesh Crossing Republik, Ghaziabad. Requirement of Flats & Apartments in Crossing Republik, Ghaziabad, Uttar Pradesh.";}