﻿var _req = function(){
	QueryString = arguments[0];
	var _onresponse = null;
	
	onResponse = function(fn) {
		_onresponse = fn;
		$.ajax({
			type: "POST",
			url: "cmd.php",
			data: QueryString,
			success: function(request){
				Log('');
				_onresponse(false,request);
			},
			error: function(){
				Log('خطا در پرسش از سایت، مجددا سعی کنید');
				_onresponse(true,request);
			}
		});
	};
	return this;
}


function isNumberKey(evt)
{				
	var charCode=(evt.which?evt.which:event.keyCode);
	return ((charCode>47 && charCode<58) || (charCode>94 && charCode<106) || charCode==48 || charCode==8);
}
			
function Log(Txt){
	$('#IndexMessages').empty().append(Txt);
}

function IDN(Typ){
	switch(Typ){
		case 'Validate':{
			var val;
			val = $('#IDN').val();
			
			if(!(/^-?\d+$/).test(val)){
				alert('برای شناسه کدملی فقط از اعداد استفاده کنید');
				return false;
			}
			
			if (val.length != 10){
				alert('کدملی باید 10 رقم باشد');
				return false;
			}
			
			for(i=0; i<11; i++){
				if(val == eval(i + '' + i + '' + i + '' + i + '' + i + '' + i + '' + i + '' + i + '' + i + '' + i)){
					alert('کدملی نامعتبر است');
					return false;
				}
			}
			
			n = 0;
			for(i=0; i<9; i++){
				n += parseInt(val.charAt(i))* (10-i);
			}
			r = n - parseInt(n/11)*11;
			c = parseInt(val.charAt(9));	
			
			if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r)){
				return true;
			}
			else{
				alert('کدملی صحیح نمی باشد');
				return false;
			}
			break;
		}
		case 'Focus':{
			$('#IDN').val('');
			break;
		}
		case 'Blur':{
			if($('#IDN').val().length == 0) $('#IDN').val('محل ورود کدملی');
			break;
		}
		case 'Search':{
			if(IDN('Validate')){
				Log('در حال اتصال به بانک مخاطبین سایت ...');
				_req('section=search&action=winner&idn=' + $('#IDN').val()).onResponse(function(err,request){
					if(!err){
						Log("<span style='width:100%;display:block;text-align:right;margin-right:10%'>" + request + "</span>");
					}
				});
			}
			break;
		}
	}
}

function Online(Level){
	switch(Level){
		case 'load':{
			if(IDN('Validate')){
				Log('در حال اتصال به بانک مخاطبین سایت ...');
				_req('section=search&action=online&idn=' + $('#IDN').val() + '&id=' + $('#OnlineID').val()).onResponse(function(err,request){
					if(!err){
						$('#IndexLayoutIDN').slideUp(1000,function(){
							$('#IndexLayoutNav').fadeOut(1000,function(){
								request = request.split('|');
								if(request[0] == 'true'){
									if(request[1] == 'true'){
										Log(request[2] + ' ' + request[3] + ' ' + request[4] + ' ، شما قبلا در این مسابقه شرکت کرده اید.');
									}
									else{
										Log('این کدملی قبلا در این مسابقه شرکت کرده است');
									}
								}
								else{
									if(request[1] == 'true'){
										$('#IndexLayoutNav').after("<div id='IndexLayoutCantact'>" + request[2] + ' ' + request[3] + ' ' + request[4] + ' ، به مسابقه «' + $('#OnlineTitle').val() + '» خوش آمدید.'+ "<br /><button onclick='Online(\"options\")'>ورود به مسابقه</button></div>");
									}
									else{
										Log('مشخصاتی برای این کدملی یافت نشد، لطفا مشخصات خود را جهت ثبت در سایت وارد کنید');
										$('#IndexLayoutNav').after("<div id='IndexLayoutCantact'><div><span>کدملی:</span><input value='" + $('#IDN').val() + "' disabled='disabled'/></div><div><span>نام:</span><input id='CName' /></div><div><span>نام خانوادگی:</span><input id='CFamily' /></div><div><span>تلفن همراه:</span><input id='CTel' maxlength='11' onkeydown='return isNumberKey(event)' /></div><br class='clear' /><button onclick='Online(\"register\")'>ورود به مسابقه</button></div>");
									}
								}
							})
						});
					}
				});
			}
			break;
		}
		case 'register':{
			_req('section=profile&action=register&idn=' + $('#IDN').val() + '&name=' + $('#CName').val() + '&family=' + $('#CFamily').val() + '&tel=' + $('#CTel').val()).onResponse(function(err,request){
				if(!err){
					if(request == 'true'){
						Online('options');
					}
					else{
						Log(request);
					}
				}
			});
			break;
		}
		case 'options':{
			$('#IndexLayoutCantact').after("<div id='IndexLayoutOptions'></div>").fadeOut(600,function(){
				Log('در حال دریافت تائیدیه ورود ...');
				_req('section=online&step=options&id=' + $('#OnlineID').val() + '&idn=' + $('#IDN').val()).onResponse(function(err,request){
					if(!err){
						request = request.split('||');
						if(request[0] == 'false'){
							Log(request[1]);
						}
						else{
							$('#IndexLayoutOptions').empty().append(request[1]);
						}
					}
				});
			});
			break;
		}
	}
}
function OnlineOptions(range,diff){
	$('#IndexLayoutOptions').after("<div id='IndexLayoutLevel'></div>").slideUp(500,function(){
		OnlineQuestionFirst(range,diff);
	})
}
function OnlineQuestionFirst(range,diff){
	_req('section=online&id=' + $('#OnlineID').val() + '&idn=' + $('#IDN').val() + '&step=level&diff=' + diff + '&range=' + range + '&level=1').onResponse(function(err,request){
		if(!err){
			if(request == 'false'){
				Log('خطا در سایت (بخش مسابقه)، لطفا مجددا سعی کنید.');
			}
			else{
				$('#IndexLayoutLevel').slideUp(500,function(){
					$(this).empty().append(request).slideDown(500);
				});
			}
		}
	});
}
function OnlineQuestions(range,diff,level){
	var a = '';
	$(':checked','#IndexLayoutLevel').each(function(i){
		a += '&answers[' + $(this).val() + '] = on';
	});
	
	_req('section=online&id=' + $('#OnlineID').val() + '&idn=' + $('#IDN').val() + '&step=answer' + a +'&diff=' + diff + '&range=' + range + '&level=' + level).onResponse(function(err,request){
		if(!err){
			if(request == 'false'){
				Log('توصیه ما را جدی نگرفتید! انشالله در مسابقه های بعدی جزء برندگان باشید.');
				$('#IndexLayoutLevel').slideUp();
			}
			else{
				$('#IndexLayoutLevel').slideUp(500,function(){
					$(this).load(request,function(){
						$(this).slideDown(500);
					});
				});
			}
		}
	});
}
function OnlineQuestionLast(range,diff,level){
	var a = '';
	$(':checked','#IndexLayoutLevel').each(function(i){
		a += '&answers[' + $(this).val() + '] = on';
	});
	
	_req('section=online&id=' + $('#OnlineID').val() + '&idn=' + $('#IDN').val() + '&step=answer' + a +'&diff=' + diff + '&range=' + range + '&level=' + level + '&finish=ok').onResponse(function(err,request){
		if(!err){
			if(request == 'false'){
				Log('توصیه ما را جدی نگرفتید! انشالله در مسابقه های بعدی جزء برندگان باشید.');
				$('#IndexLayoutLevel').slideUp();
			}
			else{
				$('#IndexLayoutLevel').slideUp(500,function(){
					Profile('IndexLayoutLevel');
				});
			}
		}
	});
}


function Offline(Level){
	switch(Level){
		case 'load':{
			if(IDN('Validate')){
				Log('در حال اتصال به بانک مخاطبین سایت ...');
				_req('section=search&action=offline&idn=' + $('#IDN').val() + '&id=' + $('#OfflineID').val()).onResponse(function(err,request){
					if(!err){
						$('#IndexLayoutIDN').slideUp(1000,function(){
							$('#IndexLayoutNav').fadeOut(1000,function(){
								request = request.split('|');
								if(request[0] == 'true'){
									if(request[1] == 'true'){
										Log(request[2] + ' ' + request[3] + ' ' + request[4] + ' ، شما قبلا در این مسابقه شرکت کرده اید.');
									}
									else{
										Log('این کدملی قبلا در این مسابقه شرکت کرده است');
									}
								}
								else{
									if(request[1] == 'true'){
										Log('');
										$('#IndexLayoutNav').after("<div id='IndexLayoutCantact'>" + request[2] + ' ' + request[3] + ' ' + request[4] + ' ، به مسابقه «' + $('#OnlineTitle').val() + '» خوش آمدید.'+ "<br /><button onclick='Offline(\"questions\")'>ورود به مسابقه</button></div>");
									}
									else{
										Log('مشخصاتی برای این کدملی یافت نشد، لطفا مشخصات خود را جهت ثبت در سایت وارد کنید');
										$('#IndexLayoutNav').after("<div id='IndexLayoutCantact'><div><span>کدملی:</span><input value='" + $('#IDN').val() + "' disabled='disabled'/></div><div><span>نام:</span><input id='CName' /></div><div><span>نام خانوادگی:</span><input id='CFamily' /></div><div><span>تلفن همراه:</span><input id='CTel' maxlength='11' onkeydown='return isNumberKey(event)' /></div><br class='clear' /><button onclick='Offline(\"register\")'>ورود به مسابقه</button></div>");
									}
								}
							})
						});
					}
				});
			}
			break;
		}
		case 'register':{
			_req('section=profile&action=register&idn=' + $('#IDN').val() + '&name=' + $('#CName').val() + '&family=' + $('#CFamily').val() + '&tel=' + $('#CTel').val()).onResponse(function(err,request){
				if(!err){
					if(request == 'true'){
						Offline('questions');
					}
					else{
						Log(request);
					}
				}
			});
			break;
		}
		case 'questions':{
			var str = '';
			for(i=1; i <= $('#OfflineQuestions').val(); i++){
				str += "<span>جواب سئوال " + i + ":<br /><textarea id='answers[" + i + "]'></textarea></span>";
			}
			$('#IndexLayoutCantact').after("<div id='IndexOfflineQuestions'><h3>مسابقه '" + $('#OfflineTitle').val() + "'</h3>" + str + "<button onclick='Offline(\"save\")'>ارسال پاسخ ها</button></div>").fadeOut();
			Log('');
			break;
		}
		case 'save':{
			var qs = '';
			$('#IndexOfflineQuestions textarea').each(function(i){
				qs += '&' + this.id + '=' + $(this).val();
			});
			_req('section=offline&id=' + $('#OfflineID').val() + '&idn=' + $('#IDN').val() + qs).onResponse(function(err,request){
				if(!err){
					if(request == 'true'){
						$('#IndexOfflineQuestions').slideUp(500,function(){
							Profile('IndexOfflineQuestions');
						});
					}
					else{
						Log('خطا در سایت (بخش مسابقه)، لطفا مجددا سعی کنید.');
					}
				}
			});
			break;
		}
	}
}


function Profile(idw){
	Log('درحال دریافت اطلاعات شما ...');
	_req('section=profile&action=load&idn=' + $('#IDN').val()).onResponse(function(err,request){
		if(!err){
			if(request == 'false'){
				Log('خطا در دریافت اطلاعات شما از سایت، لطفا مجددا سعی کنید.');
			}
			else{
				request = request.split('|');
				$('#' + idw).after(
					"<table id='IndexProfile'>\
						<tr><td colspan='2'><h3>ویرایش مشخصات</h3></td></tr>\
						<tr><td>کدملی:</td><td><input id='PIDN' disabled='disabled' value='" + request[0] + "'/></td></tr>\
						<tr><td>نام:</td><td><select id='PGender'><option>آقای</option><option" + (request[1]=='خانم'?" selected='selected'":'') + ">خانم</option></select> <input id='PName' value='" + request[2] + "' size='14'/></td></tr>\
						<tr><td>نام خانوادگی:</td><td><input id='PFamily' value='" + request[3] + "'/></td></tr>\
						<tr><td>سال تولد:</td><td><input id='PYear' dir='ltr' maxlength='4' value='" + (request[4]==''?'13--':request[4]) + "' onkeydown='return isNumberKey(event)'/></tr>\
						<tr><td>تلفن همراه:</td><td><input id='PMobileTel' maxlength='10' value='" + request[5] + "' onkeydown='return isNumberKey(event)'/></td></tr>\
						<tr><td>تلفن ثابت:</td><td><input id='PFixedTel' maxlength='10' value='" + request[6] + "' onkeydown='return isNumberKey(event)'/></td></tr>\
						<tr><td>کد پستی:</td><td><input id='PPostalCode' maxlength='10' value='" + request[7] + "' onkeydown='return isNumberKey(event)'/></td></tr>\
						<tr><td>نشانی:</td><td><input id='PAddress'  value='" + request[8] + "'/></td></tr>\
						<tr><td>پست الکترونیکی:</td><td><input id='PEMail' dir='ltr' value='" + request[9] + "' /></td></tr>\
						<tr><td>&nbsp;</td><td><button onclick='ProfileUpdate()'>ذخیره اطلاعات</button></td></tr>\
					</table>");
				Log('اطلاعات شما با موفقیت دریافت شد.');
			}
		}
	});
}
function ProfileUpdate(){
	$('#IndexProfile').slideUp(500,function(){
		Log('درحال ارسال اطلاعات به سایت ...');
		_req('section=profile&action=update&idn=' + $('#IDN').val() + '&pidn=' + $('#PIDN').val() + '&gender=' + $('#PGender').val() + '&name=' + $('#PName').val() + '&family=' + $('#PFamily').val() + '&year=' + $('#PYear').val() + '&mobiletel=' + $('#PMobileTel').val() + '&fixedtel=' + $('#PFixedTel').val() + '&postalcode=' + $('#PPostalCode').val() + '&address=' + $('#PAddress').val() + '&email=' + $('#PEMail').val()).onResponse(function(err,request){
			if(!err){
				if(request == 'false'){
					Log('خطا در سایت (بخش پروفایل)، لطفا مجددا سعی کنید.');
				}
				else{
					Log('اطلاعات شما با موفقیت ثبت شد.');
				}
			}
		});
	});
}