<ad-edit class="ad-edit">
	<div class="row">
		<div class="col-md-12">

			<div show="{ state.action !== 'ad-promote' }">

				<div class="alert alert-warning" if="{ state.ad.source == 'api' }">
					<p>
						<strong>Αυτή η αγγελία έχει δημοσιευτεί από την εφαρμογή σας.</strong>
					</p>
					<p>
						Οποιαδήποτε αλλαγή στα στοιχεία της αγγελίας ενδέχεται να αναιρεθεί την επόμενη φορά που θα συγχρονίσετε την εφαρμογή σας με τις Κρητικές Αγγελίες.
					</p>
				</div>

				<!-- Category -->
				<div class="panel panel-md" id="step1">
					<div class="panel-heading">
						<div class="panel-title">Kατηγορία</div>
					</div>
					<div class="panel-body">
						<control-category-select data-ref="category" disabled="{ state.ad.web_promoted_type == 2 }" onchangehandler="{ category_change }"></control-category-select>
					</div>
				</div>

				<!-- Location and Type -->
				<div class="panel panel-md { state.step < 2 ? 'collapsed' : '' }" id="step2">
					<div class="panel-heading">
						<div class="panel-title">Περιοχή και τύπο συναλλαγής</div>
					</div>
					<div class="panel-body">
						<control-location-select data-ref="location" onchangehandler="{ location_change }"></control-location-select>

						<div class="form-group">
							<label>Επιλέξτε Τύπο Συναλλαγής</label>
							<control-type-select data-ref="type"  disabled="{ state.ad.web_promoted_type == 2 }" onchangehandler="{ type_change }"></control-type-select>
						</div>

						<div class="form-group">
							<label>Θέση στον χάρτη</label>
							<control-google-map data-ref="map" latlng="{ state.latlng }" onchangehandler="{ map_change }"></control-google-map>
							<div class="row">
								<div class="col-md-3">
									<div class="checkbox">
										<label><input type="checkbox" data-ref="show_map" checked="{ state.ad.show_map > 0 }" onchange="{ input_change }"> Εμφάνιση του χάρτη</label>
									</div>
								</div>
								<div class="col-md-3">
									<div class="checkbox">
										<label><input type="checkbox" data-ref="show_exact_map" checked="{ state.ad.show_map == 2 }" onchange="{ input_change }"> Εμφάνιση ακριβούς τοποθεσίας</label>
									</div>
								</div>
							</div>
						</div>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="3" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>
					</div>
				</div>

				<!-- Ad Attributes -->
				<div class="panel panel-md { state.step < 3 ? 'collapsed' : '' }" id="step3">
					<div class="panel-heading">
						<div class="panel-title">Χαρακτηριστικά αγγελίας</div>
					</div>
					<div class="panel-body">

						<div class="row">
							<div class="col-md-4" if="{ state.type && state.ad.category_id != 932 }">
								<div class="form-group">
									<label>{ state.type.price_caption }</label>
									<div class="form-inline">
										<input type="text" class="form-control ad-price" data-ref="price" value="{ state.ad.price }" onchange="{ input_change }">
										<div class="checkbox" style="padding-left: 5px">
											<label>
												<input type="checkbox" id="price_negotiable" data-ref="price_negotiable" checked="{ state.ad.price_negotiable == 1 }" onchange="{ input_change }">
												Συζητήσιμη
											</label>
										</div>
									</div>
								</div>
							</div>

							<div class="col-md-2" if="{ state.member.is_professional == 1 }">
								<div class="form-group">
									<label class="block-label">Κωδικός αναφοράς</label>
									<input type="text" class="form-control" data-ref="refcode" value="{ state.ad.refcode }" onchange="{ input_change }">
								</div>
							</div>

							<div class="col-md-6" if="{ state.member.is_professional == 1 && state.member.level == 'ecommerce' }">
								<div class="form-group">
									<label>Σελίδα αναφοράς</label>
									<input type="text" class="form-control" data-ref="refurl" value="{ state.ad.refurl }" onchange="{ input_change }" placeholder="https://www.mypage.gr">
								</div>
							</div>

						</div>

						<control-ad-attributes data-ref="attributes" onchangehandler="{ attributes_change }"></control-ad-attributes>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="4" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>
					</div>
				</div>

				<!-- Contact Info -->
				<div class="panel panel-md { state.step < 4 ? 'collapsed' : '' }" id="step4">
					<div class="panel-heading">
						<div class="panel-title">Στοιχεία επικοινωνίας</div>
					</div>
					<div class="panel-body">

						<div class="form-group">
							<div class="checkbox">
								<label>
									<input type="checkbox" data-ref="show_phones" checked="{ state.ad.show_phones == 1 }" onchange="{ input_change }">
									Ορατά τηλέφωνα;
								</label>
							</div>
							<div class="checkbox">
								<label>
									<input type="checkbox" data-ref="show_email" checked="{ state.ad.show_email == 1 }" onchange="{ input_change }">
									Ορατό E-mail;
								</label>
							</div>	
						</div>

						<div class="row" if="{ state.category.root_id == 1 && state.ad.show_email == 1 }">
							<div class="col-md-6">
								<div class="form-group">
									<label>Email</label>
									<input type="email" class="form-control" data-ref="email" value="{ state.ad.email }" onchange="{ input_change }">
								</div>
							</div>
						</div>

						<div class="row">
							<div class="col-md-3">
								<div class="form-group">
									<label>Σταθερό τηλέφωνο</label>
									<input type="tel" class="form-control" data-ref="phone1" value="{ state.ad.phone1 }" maxlength="16" onchange="{ input_change }">
								</div>
								<div class="form-group">
									<label>Ώρες/Υπεύθυνος</label>
									<input type="text" class="form-control" data-ref="phone1_data" value="{ state.ad.phone1_data }" onchange="{ input_change }">
								</div>
							</div>
							<div class="col-md-3">
								<div class="form-group">
									<label>Κινητό τηλέφωνο</label>
									<input type="tel" class="form-control" data-ref="phone2" value="{ state.ad.phone2 }" maxlength="16" onchange="{ input_change }">
								</div>
								<div class="form-group">
									<label>Ώρες/Υπεύθυνος</label>
									<input type="text" class="form-control" data-ref="phone2_data" value="{ state.ad.phone2_data }" onchange="{ input_change }">
								</div>
							</div>
							<div class="col-md-3" if="{ state.member.is_professional == 1 && state.category.root_id == 1 }">
								<div class="form-group">
									<label>Fax</label>
									<input type="tel" class="form-control" data-ref="fax" value="{ state.ad.fax }" maxlength="16" onchange="{ input_change }">
								</div>
								<div class="form-group">
									<label>Ώρες/Υπεύθυνος</label>
									<input type="text" class="form-control" data-ref="fax_data" value="{ state.ad.fax_data }" onchange="{ input_change }">
								</div>
							</div>
							<div class="col-md-3" if="{ state.member.is_professional == 1 }">
								<div class="form-group">
									<label>Ιστοσελίδα</label>
									<input type="text" class="form-control" data-ref="url" value="{ state.ad.url }" onchange="{ input_change }" placeholder="https://www.mypage.gr">
								</div>
							</div>
						</div>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="5" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>

					</div>
				</div>

				<!-- 5. Web data -->
				<div class="panel panel-md { state.step < 5 ? 'collapsed' : '' }" id="step5">
					<div class="panel-heading">
						<div class="panel-title">Τίτλος &amp; κείμενο για το Internet</div>
					</div>
					<div class="panel-body">

						<div class="row">
							<div class="col-md-5">
								<div class="form-group">
									<label>Τίτλος Internet</label>
									<input type="text" class="form-control" style="font-weight: bold;" data-ref="web_title" value="{ state.ad.web_title }" onchange="{ input_change }">
								</div>
							</div>
							<div class="col-md-7">
								<div class="form-group">
									<label>Περιγραφή για το Internet</label>
									<textarea class="form-control" data-ref="web_text" rows="5" onchange="{ input_change }">{ state.ad.web_text }</textarea>
								</div>
								<p class="form-notification">
									Πληκτρολογήστε την περιγραφή με <strong>πεζά</strong> γράμματα και χρησιμοποιήστε <strong>τόνους</strong>
								</p>
							</div>
						</div>

						<div if="{ state.member.is_professional == 1 && state.category.root_id == 1 }">
							<hr>
							<div class="row">
								<div class="col-md-6 form-group">
									<label>Link στο τέλος της Αγγελίας</label>
									<input type="text" class="form-control" data-ref="link_url" value="{ state.ad.link_url }" onchange="{ input_change }" placeholder="https://www.mylink.gr">
								</div>
								<div class="col-md-6 form-group">
									<label>Τίτλος Link</label>
									<input type="text" class="form-control" data-ref="link_title" value="{ state.ad.link_title }" onchange="{ input_change }">
								</div>
							</div>
						</div>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="{ state.member.in_paper == 1 ? '6' : '7' }" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>

					</div>
				</div>

				<!-- 6. Paper data -->
				<div class="panel panel-md { state.step < 6 ? 'collapsed' : '' }" id="step6" show="{ state.member.in_paper == 1 }">
					<div class="panel-heading">
						<div class="panel-title">Τίτλος &amp; κείμενο για το έντυπο</div>
					</div>
					<div class="panel-body">

						<div class="row">
							<div class="col-md-5">
								<div class="form-group">
									<label>Τίτλος Εντύπου</label>
									<input type="text" class="form-control" style="font-weight: bold;" data-ref="paper_title" value="{ state.ad.paper_title }" onchange="{ input_change }">
								</div>
								<!-- <p class="form-notification">
									<strong class="form-alert">ΠΡΟΣΟΧΗ!:</strong> Μη χρησιμοποιείτε τόνους.
								</p> -->
							</div>
							<div class="col-md-7">
								<div class="form-group">
									<label>Περιγραφή για το Έντυπο</label>
									<control-ad-textarea data-ref="paper_text" onchangehandler="{ paper_text_change }" wordlimit="25"></control-ad-textarea>
								</div>
								<p class="form-notification">
									Πληκτρολογήστε την περιγραφή με <strong>πεζά</strong> γράμματα και χρησιμοποιήστε <strong>τόνους</strong>
								</p>
							</div>
						</div>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="7" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>

					</div>
				</div>

				<!-- 7. Images -->
				<div class="panel panel-md { state.step < 7 ? 'collapsed' : '' }" id="step7">
					<div class="panel-heading">
						<div class="panel-title">Φωτογραφίες &amp; Βίντεο</div>
					</div>
					<div class="panel-body">

						<control-ad-photos data-ref="images" onchangehandler="{ images_change }"></control-ad-photos>

						<hr class="mrg-top-lg mrg-bottom-lg">

						<control-ad-video data-ref="video" onchangehandler="{ video_change }"></control-ad-video>

						<div class="text-right" if="{ !state.saved }">
							<a href="#" class="btn btn-sm btn-primary" next-step="8" onclick="{ next_step }">ΣΥΝΕΧΕΙΑ <i class="fa fa-angle-right"></i></a>
						</div>

					</div>
				</div>

			</div>

			<!-- Ad save, promote -->
			<div class="panel panel-md { state.step < 8 ? 'collapsed' : '' }" id="step8">
				<div class="panel-heading">
					<div class="panel-title">{ state.ad.id == 0 ? 'Καταχώρηση αγγελίας' : 'Ενημέρωση αγγελίας' }</div>
				</div>
				<div class="panel-body">
					<div class="ec-element { state.saved ? 'collapsed' : '' }">
						<h5><i class="fa fa-info-circle" aria-hidden="true"></i> Πριν συνεχίσετε διαβάστε τα παρακάτω:</h5>
						<div class="accordion-info-block">
							<a class="accordion-info-title" data-toggle="collapse" href="#collapseInfo1" aria-expanded="false" aria-controls="collapseInfo1">
								Εμφάνιση αγγελίας στο έντυπο.
							</a>
							<div class="accordion-info-content collapse" id="collapseInfo1">
								<ul style="padding-left: 17px;">
									<li class="mrg-bottom-xs">Εάν έχετε περισσότερες αγγελίες από το επιτρεπόμενο όριο (3/υποκατηγορία), θα πρέπει να επιλέξετε από το προφίλ σας, ποιές θα είναι ορατές στο έντυπο για τις επόμενες εκδόσεις.</li>
									<li>Αν επιθυμείτε η αγγελία σας να καταχωρηθεί και στο έντυπο με περισσότερες από 25 λέξεις, στείλτε μας email στο <a href="mailto:secretary@kritikes-aggelies.gr">secretary@kritikes-aggelies.gr</a> ή καλέστε μας στο <a href="tel:2810342474">2810 342474</a>.</li>
								</ul>
							</div>
							<a class="accordion-info-title" data-toggle="collapse" href="#collapseInfo2" aria-expanded="false" aria-controls="collapseInfo2">
								Λόγοι απόρριψης αγγελιών κατά τον έλεγχο.
							</a>
							<div class="accordion-info-content collapse" id="collapseInfo2">
								<ul style="padding-left: 17px;">
									<li class="mrg-bottom-xs">Κείμενο αποκλειστικά σε κεφαλαία.</li>
									<li class="mrg-bottom-xs">Κείμενο με λατινικούς χαρακτήρες (Greeklish).</li>
									<li class="mrg-bottom-xs">Κείμενο χωρίς τονισμό.</li>
									<li class="mrg-bottom-xs">Κείμενο με χαρακτήρα διαφήμισης.</li>
									<li class="mrg-bottom-xs">Υπέρβαση ορίου λέξεων για το έντυπο(25)</li>
									<li class="mrg-bottom-xs">Επανάληψη αγγελίας</li>
									<li class="mrg-bottom-xs">Ελλιπής καθορισμός περιοχής (για Ακίνητα).</li>
									<li>Φωτογραφίες με αριθμούς κυκλοφορίας οχημάτων καθώς & πρόσωπα.</li>
								</ul>
							</div>
							<a class="accordion-info-title" data-toggle="collapse" href="#collapseInfo3" aria-expanded="false" aria-controls="collapseInfo3">
								Διαφημιστικές Αγγελίες.
							</a>
							<div class="accordion-info-content collapse" id="collapseInfo3">
								 Οι αγγελίες επαγγελματικής- διαφημιστικής προβολής (προώθηση παροχής υπηρεσιών ή/και εμπορίας προϊόντων), μπορούν να καταχωρηθούν μόνο ως Top και PopUp.
							</div>
						</div>
						<hr>
						<control-ad-cart
							data-ref="cart"
							id="{ state.ad.id }"
							category_id="{ state.ad.category_id }"
							type_id="{ state.ad.type_id }"
							web_promoted_type="{ state.ad.web_promoted_type }"
							web_promoted_until="{ state.ad.web_promoted_until }"
							web_popup="{ state.ad.web_popup }"
							force_promoted="{ state.action === 'ad-promote' }"
							is_professional="{ state.member.is_professional }"
							level="{ state.member.level }"
							available_promo_ads="{ state.member.available_promo_ads }"
							onsubmithandler="{ submit }" />
					</div>
				</div>
			</div>

			<!-- AD SAVED -->
			<div class="alert-block mrg-bottom-xl" id="complete" style="display:none;">
				<div class="alert-icon">
					<i class="fa fa-check"></i>
				</div>
				<div class="alert-content">
					<!-- new or updated ad -->
					<virtual if="{ state.ad.status == 1 || state.ad.status == 2 }">
						<p>		
							Η αγγελία σας καταχωρήθηκε επιτυχώς και βρίσκεται σε φάση προέγκρισης.<br>
							Σύντομα θα λάβετε email επιτυχούς καταχώρησης.<br>
							Σας ευχαριστούμε.
						</p>
					</virtual>
					<!-- approved ad (if member can approve his ads) -->
					<virtual if="{ state.ad.status == 0 }">
						<p>
							Η αγγελία σας καταχωρήθηκε επιτυχώς.<br>
							Σας ευχαριστούμε.
						</p>
					</virtual>
					<p style="margin-bottom: 0;">
						<a href="/account/ads">Επιστροφή στις αγγελίες μου</a>
					</p>
				</div>
			</div>

		</div>

	</div>

	<loader-icon class="control-loader" if="{ state.loading }"></loader-icon>

	<control-sms-popup data-ref="sms" onchangehandler="{ sms5d_change }"></control-sms-popup>

	<control-cardlink-payment data-ref="cardlink"></control-cardlink-payment>

	<script>

		this.state = {
			action: '',
			member: {},
			location: {},
			category: {},
			type: {},
			ad: empty_ad(),

			loading: true,
			step: 1, //Set to 8 for debug
			saved: false,
			is_dirty: false,
		}


		this.toggle_loader = value => {
			this.state.loading = value;
			this.update();
		}


		this.set_ad_data = () => {
			var ad = this.state.ad;
			var member = this.state.member;
			var category = this.state.category;

			if (ad.id == 0) {
				// Set new ad fields
				if (member.is_professional == 1) {
					ad.show_phones = 1;
					ad.show_email = member.email ? 1 : 0;
					ad.url = member.url;
				} else {
					ad.show_phones = member.phone_visible;
					ad.show_email = 0;
				}

				ad.phone1 = member.phone;
				ad.phone2 = member.mobile;
				ad.fax = member.fax;

				ad.paper_active = member.in_paper;
			} else {
				// Set the page title for this ad
				$('#ad-title').html('"ad title"');

				this.state.step = 7;
			}

			if (member.is_professional == 1) {
				// set the professional allowed categories to post ads
				this.refs.category.set_allowed_categories(member.categories);
			}
			this.refs.category.set_value(ad.category_id);
			this.refs.location.set_value(ad.location_id);
			this.refs.map.set_lat_lng(ad.lat_lng);

			if (category) {
				this.refs.type.initialize(category.types);
				this.refs.type.set_value(ad.type_id);

				this.refs.attributes.initialize(category.attributes);
				this.refs.attributes.set_values(ad.attributes);
			}

			
			this.refs.paper_text.set_word_limit(member.paper_max_ad_words);
			this.refs.paper_text.set_value(ad.paper_text);

			this.refs.images.initialize( member.is_professional == 1 ? 16 : 8);
			this.refs.images.set_images(ad.images);
			this.refs.video.set_value(ad.video);
			this.refs.cart.set_member_products(member.products);

			if (!ad.source) ad.source = 'web';

			if (this.state.action === 'ad-promote') {
				this.state.step = 8;
				this.state.ad.auto_approve = 1;
			} else {
				this.state.ad.auto_approve = 0;
			}
		}


		this.load_ad = id => {
			var tag = this;

			api_request("ads/" + id,
				{},
				function(result) {
					tag.state.ad = result.data;
					// set state vars from ad
					tag.state.member = tag.state.ad.member;
					tag.state.location = tag.state.ad.location;
					tag.state.category = tag.state.ad.category;
					tag.state.type = tag.state.ad.type;

					delete tag.state.ad.member;
					delete tag.state.ad.location;
					delete tag.state.ad.category;
					delete tag.state.ad.type;

					// delete paymeny object data from ad
					// due to http post restrictions
					if (tag.state.ad.payment && tag.state.ad.payment.object_data) {
						delete(tag.state.ad.payment.object_data);
					}

					tag.set_ad_data();

					tag.state.is_dirty = false;
					
					tag.update();
				},
				function(result) {
					error_message(result);
				}, this.toggle_loader
			);
		}


		this.save_ad = event => {
			if (typeof event !== 'undefined') {
				event.preventDefault();
			}

			var error = this.validate();

			if (error) {
				error_message(error);
			} else {
				var tag = this;
				api_request(
					"ads/" + (this.state.ad.id == 0 ? "create" : this.state.ad.id + "/edit"),
					this.state.ad,
					function(result) {
						if (tag.state.ad.id == 0) {
							popup_message("Η αγγελία σας καταχωρήθηκε.");
						} else {
							popup_message("Η αγγελία σας ενημερώθηκε.");
						}

						tag.state.ad.id = result.data.id;
						tag.state.ad.status = result.data.status;
						tag.state.ad.web_promoted_type = result.data.web_promoted_type;
						tag.state.ad.web_promoted_until = result.data.web_promoted_until;

						if (tag.state.member_credit_product) {
							// If member has selected a pcomo credit product
							// Save ad with promo credit product
							tag.save_credit_promo_product();
						} else {
							tag.ad_completed();
						}

					}, null, this.toggle_loader
				);
			}
		}


		this.ad_completed = () => {
			this.state.saved = true;
			this.update();

			$('#step8').fadeOut(200, function() {
				$('#complete').fadeIn(200, function() {
					scrollToElement('#complete');
				});
			});
		}

		
		this.load_member = id => {
			var tag = this;

			api_request("members/" + id,
				{},
				function(result) {

					tag.state.member = result.data;
					tag.set_ad_data();
					
					tag.update();
				}, null, this.toggle_loader
			);
		}


		this.load_category = id => {
			var tag = this;
			api_request("categories/" + id,
				{},
				function(result) {
					tag.state.category = result.data;
					tag.state.ad.category_id = result.data.id;

					tag.refs.type.initialize(result.data.types);
					tag.refs.attributes.initialize(result.data.attributes);
					tag.refs.attributes.set_values(tag.state.ad.attributes);

					if (tag.state.ad.category_id == 932) {
						// Γνωριμίες
						tag.state.ad.price = 0;
						tag.state.ad.price_negotiable = 0;
					}
						
					tag.update();
				}, null, this.toggle_loader
			);
		}


		this.next_step = event => {
			event.preventDefault();
			//console.log("next_step " + this.state.step);
			var next_step = parseInt($(event.target).attr("next-step"));
			//console.log("next_step: " + next_step);
			this.state.step = next_step -1;
			//console.log("step: " + this.state.step);
			var error = "";

			switch (this.state.step) {
				case 2: // location
					error = this.validate(2);
					break;
				case 3: // attributes
					error = this.validate(3);
					break;
				case 4: // contact
					error = this.validate(4);
					break;
				case 5: // web
					error = this.validate(5);
					break;
				case 6: // paper
					error = this.validate(6);
					break;
			}

			if (error) {
				error_message(error);
			} else {

				if (this.state.step == 3) { // attributes
					// ενημέρωση κειμένου web
					this.create_web_data();
				} else if (this.state.step == 5) { // web
					// Ενημέρωση κειμένου έντυπου
					this.create_paper_data();
				}

				this.state.step = next_step;

				this.update();
				scrollToElement('#step' + this.state.step);
			}
		}


		/* Validations */

		this.validate = step => {
			if (typeof step === 'undefined') {
				step = 0;
			}

			// Ad location
			if (step == 2 || step == 0) {

				var types_no_location = [
					5, //Ανταλλαγή
					7, //Ζήτηση για Αγορά
					8, //Ζήτηση για Ενοικίαση
					9, //Ζήτηση για Ανταλλαγή
					10, //Ζήτηση για Δωρεά
					12, //Ζήτηση
					13, // Αντοπαροχή
					14, //Ζήτηση για Αντιπαροχή
				];

				if (this.state.ad.location_id == 0) {
					return "Επιλέξτε νομό ή ευρύτερη περιοχή για την αγγελίας σας!";
				// 1756 = εξωτερικό
				} else if (this.state.category.require_end_location == 1 && this.state.location.parent_id == 0 && this.state.location.id != 1756) {
					if (types_no_location.indexOf(parseInt(this.state.ad.type_id)) < 0) {
						return "Επιλέξτε ευρύτερη περιοχή για την αγγελίας σας!";
					}
				}

				// Ad type
				if (!this.state.ad.type_id || this.state.ad.type_id == 0) {
					return "Επιλέξτε ένα τύπο συναλλαγής της αγγελίας σας!";
				}

			}

			// Ad attributes and price
			if (step == 3 || step == 0) {
				if (this.state.ad.price) {
					var price = this.state.ad.price.replace(",", ".");
					if (!/^["|']{0,1}[-]{0,1}\d{0,}(\.{0,1}\d+)["|']{0,1}$/.test(price)) {
						return "Εισάγετε μια έγκυρη τιμή για την αγγελίας σας!";
					}
				}
				if (this.type_require_attributes()) {
					if (!this.refs.attributes.validate()) {
						return "Δεν έχετε συμπληρώσει όλα τα απαιτούμενα χαρακτηριστικά της αγγελίας σας!";
					}
				}
				// Για εργασία (id:1) και τύπο συναλλαγής "Ζητούνται για εργασία" (id:1)
				// Απαιτούνται 472: "Είδος απασχόλησης" και 473: "Αμοιβή"
				if (this.state.category && this.state.category.root_id == 1 && this.state.ad.type_id == 1) {
					if (this.state.ad.attributes == undefined) {
						return "Επιλέξτε είδος απασχόλησης και Αμοιβή για την αγγελία σας!";
					}
					if ((this.state.ad.attributes.filter(x => x.id == 472).length == 0 || this.state.ad.attributes.filter(x => x.id == 473).length == 0)) {
						return "Επιλέξτε Είδος απασχόλησης και Αμοιβή για την αγγελία σας!";
					}
				}
			}

			// contact info
			if (step == 4 || step == 0) {
				var phoneno = /^\+?[0-9]+$/
				if (this.state.ad.phone1 && !this.state.ad.phone1.match(phoneno)) {
					return "Πληκτρολογήστε ένα έγκυρο αριθμό σταθερού τηλεφώνου.";
				}
				if (this.state.ad.phone2 && !this.state.ad.phone2.match(phoneno)) {
					return "Πληκτρολογήστε ένα έγκυρο αριθμό κινητού τηλεφώνου.";
				}
				if (!this.state.ad.phone1 && !this.state.ad.phone2) {
					return "Για να καταχωρήσετε την αγγελία σας θα πρέπει να πληκτρολογήσετε τουλάχιστον ένα τηλέφωνο.";
				}
				if (this.state.ad.show_email ==1 && !this.state.ad.email) {
					return "Για να καταχωρήσετε την αγγελία σας θα πρέπει να πληκτρολογήσετε το email σας.";
				}
			}

			// web
			if (step == 5 || step == 0) {
				if (!this.state.ad.web_title) {
					return "Δεν έχετε πληκτρολογήσει τίτλο αγγελίας για το Internet!";
				} else if (!this.state.ad.web_text) {
					return "Δεν έχετε πληκτρολογήσει περιγραφή αγγελίας για το Internet!";
				}

				if (this.state.ad.link_url) {
					if (!this.state.ad.link_url.indexOf("https://") == 0) {
						return "Το link που πληκτρολογήσατε δεν είναι έγκυρο!";
					}
				}
			}

			// paper
			if ((step == 6 || step == 0) && this.state.member.in_paper == 1) {
				this.state.ad.paper_text = this.refs.paper_text.get_value();
				if (!this.state.ad.paper_title) {
					return "Δεν έχετε πληκτρολογήσει τίτλο αγγελίας για το Έντυπο!";
				} else if (!this.state.ad.paper_text) {
				 	return "Δεν έχετε πληκτρολογήσει κείμενο αγγελίας για το Έντυπο!";
				} else if (!this.refs.paper_text.validate()) {
					return "Ελέγξτε το πλήθος λέξεων στην περιγραφή του εντύπου.";
				}
			}

			return;
		}


		this.type_require_attributes = () => {
			// τύποι συναλλαγής χωρίς υποχρεωτικά πεδία
			// 1: Εργασία :: 2:Ζητούν για εργασία
			// 2: Ακίνητα :: 5:Ανταλλαγή, 6:Δωρεά, 9:Ζήτηση για Ανταλλαγή, 10:Ζήτηση για Δωρεά, 12:Ζήτηση, 14:Ζήτηση για Αντιπαροχή
			// 6: Ζώα & Αξεσουάρ :: 10:Ζήτηση για Δωρεά, 12:Ζήτηση
			var types_no_require_attributes = [
				{
					root_id: 1,
					types: [2],
				},{
					root_id: 2,
					types: [ 5, 6, 9, 10, 12, 14 ],
				},{
					root_id: 6,
					types: [ 10, 12 ],
				}
			];

			var root_category = types_no_require_attributes.find( x => x.root_id == this.state.category.root_id );
			if (root_category) {
				var index = root_category.types.indexOf(parseInt(this.state.type.id));
				if (index > -1) {
					return false;
				}
			}

			return true;
		}


		/* Input controls handlers */

		this.input_change = event => {

			if (event.target.type == 'checkbox') {
				this.state.ad[event.target.dataset.ref] = event.target.checked ? 1 : 0;
			} else {
				this.state.ad[event.target.dataset.ref] = event.target.value;
			}

			if (event.target.dataset.ref == 'web_title' || event.target.dataset.ref == 'paper_title') {
				this.state.ad[event.target.dataset.ref] = upCase(this.state.ad[event.target.dataset.ref]);
			}

			// Show map
			if (event.target.dataset.ref == 'show_exact_map' && event.target.checked) {
				this.state.ad.show_map = 2;
			}

			this.state.is_dirty = true;
		}

		this.category_change = category => {
			this.state.ad.category_id = category.id;

			// load category for state
			this.load_category(category.id);

			this.state.is_dirty = true;

			// NEW EMAIL
			this.set_ad_email();

			// move to step 2
			this.state.step = 2;
			this.update();
			scrollToElement('#step2');
		}


		this.location_change = location => {
		
			if (location) {
				this.state.location = location;
				this.state.ad.location_id = location.id;
			} else {
				this.state.location = {};
				this.state.ad.location_id = 0;
			}

			this.state.is_dirty = true;

			this.update();
		}


		this.type_change = type => {
			this.state.type = type;
			if (!type) {
				this.state.ad.type_id = 0;
			} else {
				this.state.ad.type_id = type.id;
			}

			this.state.is_dirty = true;

			this.update();
		}


		this.attributes_change = () => {
			this.state.ad.attributes = this.refs.attributes.get_values();

			this.state.is_dirty = true;
			this.update();
		}


		this.paper_text_change = () => {
			this.state.ad.paper_text = this.refs.paper_text.get_value();
			this.state.is_dirty = true;
			this.update();
		}


		this.images_change = () => {
			this.state.ad.images = this.refs.images.get_images();
			this.state.is_dirty = true;
			this.update();
		}


		this.video_change = () => {
			this.state.ad.video = this.refs.video.get_value();
			this.state.is_dirty = true;
			this.update();
		}


		this.map_change = lat_lng => {
			this.state.ad.lat_lng = lat_lng;
			if (!this.state.ad.lat_lng) {
				this.state.ad.show_map = 0;
			}
			this.state.is_dirty = true;
			this.update();
		}


		// allow custom email on 'ergasia'
		this.set_ad_email = () => {
			if (this.state.category && this.state.category.root_id == 1 && this.state.ad.show_email ) {
				if (!this.state.ad.email) {
					this.state.ad.email = this.state.member.contact_email ? this.state.member.contact_email : this.state.member.email;
				}
			} else {
				this.state.ad.email = this.state.member.contact_email ? this.state.member.contact_email : this.state.member.email;
			}
		}


		this.create_web_data = () => {

			var attributes = this.refs.attributes.get_description_attributes();

			if (this.state.ad.id == 0) {

				// set ad web title according to selected category & location
				var title = create_ad_title(this.state.category, this.state.location, attributes);
				this.state.ad.web_title = upCase(title);

				var text = create_ad_description(this.state.category, attributes);
				if (text) {
					this.state.ad.web_text = text;
				}

				this.update();
			}
		}


		this.create_paper_data = () => {

			if (this.state.ad.id == 0) {		

				this.state.ad.paper_title = upCase(this.state.ad.web_title);

				var text = "";
				if (this.state.ad.web_text) {
					text = this.state.ad.web_text;
				}

				var price_text = "";
				if (this.state.ad.price > 0) {
					if (this.state.type.price_caption.length == 0 || this.state.type.price_caption == "Τιμή") {
						//text+= (text ? "," : "") + " τιμή " + this.state.ad.price + " ευρώ" + (this.state.ad.price_negotiable == 1 ? " συζητήσιμη" : "");
						price_text = " τιμή " + this.state.ad.price + " ευρώ" + (this.state.ad.price_negotiable == 1 ? " συζητήσιμη" : "");
					} else {
						//text+= (text ? "," : "") + " μισθός " + this.state.ad.price + " ευρώ" + (this.state.ad.price_negotiable == 1 ? " συζητήσιμος" : "");
						price_text = " μισθός " + this.state.ad.price + " ευρώ" + (this.state.ad.price_negotiable == 1 ? " συζητήσιμος" : "");
					}
				}

				if (price_text) {
					if (text.indexOf(price_text) < 0) {
						text+= (text ? "," : "") + price_text;
					}
				}

				this.state.ad.paper_text = text;
				this.refs.paper_text.set_value(text);

				this.update();
			}
		}


		/* SMS handlers */

		this.sms5d_change = sms5d => {
			// set the id of the activation sms into the ad
			this.state.ad.sms_id = sms5d.id;

			if (sms5d.what == 'promo2' || sms5d.what == 'promo7' || sms5d.what == 'promo15') {
				this.state.ad.web_promoted_type = 1; // WEB_PROMOTED
				this.state.ad.web_promoted_duration = sms5d.duration;
			}

			this.update();
			this.save_ad();
		}


		this.submit = (cart, total_price, payment_method) => {

			// validate ad data
			var error = this.validate();

			if (error) {
				error_message(error);
				return;
			}

			// Member credit promo product
			this.state.member_credit_product = null;

			if (total_price == 0) {
				if (this.refs.cart.product_in_cart('free_promo')) {
					// Save professional ad as free promo
					this.state.ad.web_promoted_type = 1;
				} else {
					// Save professional ad with credits promo product
					this.state.member_credit_product = cart[0].id;
				}

				// save ad as simple
				this.save_ad();

			} else {
				if (payment_method === 'sms') {
					// find the first product in cart with group 'promo_type'
					var product = this.refs.cart.group_in_cart('promo_type');
					if (product) {
						this.refs.sms.open(product.name);
					}
				} else if (payment_method === 'cardlink') {
					// Open the payment control to pay for the products
					this.refs.cardlink.show(this.state.member.id, this.state.member.email, "", this.state.ad.id, "ad", "", this.state.ad, cart);
				}
			}

		}


		this.save_credit_promo_product = () => {
			var tag = this;
			api_request(
				"ads/" + this.state.ad.id + "/credit_promo",
				{
					'product_id': this.state.member_credit_product
				},
				function(result) {
					tag.state.ad.web_promoted_type = result.data.web_promoted_type;
					tag.state.ad.web_promoted_until = result.data.web_promoted_until;
					tag.ad_completed();
				},
				function(error) {
					if (error) {
						alert(error);
					}
				}, this.toggle_loader
			);
		}


		this.on("mount", function() {
			this.state.action = this.opts.action; //ad-new or ad-edit or ad-promote

			if (this.opts.ad > 0) {
				// edit ad: load ad
				this.load_ad(this.opts.ad);
			} else {
				// new ad: load member
				this.load_member(this.opts.member);
			}

			initializeLabels();

			this.update();
		});
	</script>
</ad-edit>


<ad-edit-raw-html>
	<script>
		this.on("update", function() {	
			if (this.opts.content) {
				this.root.innerHTML = this.opts.content;
			} else {
				this.root.innerHTML = "";
			}
		})
	</script>
</ad-edit-raw-html>