var gDesignIndex = 0;
var gDesignCount = 0;
var gUploadDesignMin = 5;
var gUploadDesignMax = 10;

jQuery.validator.addMethod("validUsername",function(value,element,param){var usernameRe=/^[a-zA-Z_][a-zA-Z_0-9]{0,14}$/;if(usernameRe.test(value)){return true;}return false;});
jQuery.validator.addMethod("validFirstname",function(value,element,param){var firstnameRe=/^[a-zA-Z_][a-zA-Z_0-9]{0,14}$/;if(firstnameRe.test(value)){return true;}return false;});
jQuery.validator.addMethod("validLastname",function(value,element,param){var lastnameRe=/^[a-zA-Z_][a-zA-Z_0-9]{0,14}$/;if(lastnameRe.test(value)){return true;}return false;});
jQuery.validator.addMethod("acceptTerm", function( value, element,param ){if(element.id == "chkPolicyTerms1" && $(element).attr('checked') != true){return false;}return true;});
jQuery.validator.addMethod("acceptTerm2", function( value, element,param ) {	if(element.id == "chkPolicyTerms2" && $(element).attr('checked') != true){return false;}return true;});
jQuery.validator.addMethod("fiveDesign", function( value, element,param ) {if(gDesignCount < 5){return false;}return true;});


$(document).ready(function(){
$("#registerForm").validate({errorClass:"txtfldErr",errorElement:"p",errorElementClass:"marTop2px errorMsgs fontArial12px",
rules:{
	txtUsername:{required:true,rangelength:[3,15],validUsername:true,remote:'index.php?c=checkusername&m=apply'},
	txtEmail:{required:true,email:true,remote:'index.php?c=checkusername&m=validemail'},txtcEmail:{equalTo:"#txtEmail"},txtPass:{required:true,minlength:8},txtcPass:{equalTo:"#txtPass"},txtFname:{required:true,rangelength:[1,32],validFirstname:true},txtLname:{required:true,rangelength:[1,32],validLastname:true},txtStreetAdd:{required:true,rangelength:[1,200]},txtCity:{required:true,rangelength:[1,32]},
	chkPolicyTerms1:{acceptTerm : true},
	chkPolicyTerms2:{acceptTerm2 : true, fiveDesign : true}
},
messages:{
	txtUsername:{required:'Please input your username.',validUsername:'You username can only contain characters a-z A-z 0-9 _.',remote:'Your username has been registered'},
	txtEmail:{required:'Please input your email.',remote:'Your email has been registered'},
	txtPass:{required:'Please input your password.'},
	txtFname:{required:'Please input your First Name.',
	validFirstname:'First name can only contain characters a-z A-z 0-9 _.'},
	txtLname:{required:'Please input your Last Name.',validLastname:'Last name can only contain characters a-z A-z 0-9 _.'},
	txtStreetAdd:{required:'Please input your Street Address.'},txtCity:{required:'Please input your city.'},
	chkPolicyTerms1 : {acceptTerm : 'You must accept our Quality Control Policy.'},
	chkPolicyTerms2 : {acceptTerm2 : 'You must accept our Terms of Service.', fiveDesign:'You must upload at least five designs for your application to go through.'}
},
showErrors:function(errorMap,errorList){
		if("txtUsername"in errorMap){$("#reg_status").attr("src",gBaseUrl+'public/images/icon_no.gif').show();}else{if($.trim($("#txtUsername").val()).length==0){$("#reg_status").hide();}else{$("#reg_status").attr("src",gBaseUrl+'public/images/icon_yes.gif').show();}}
		$("#registerForm").data('validator').defaultShowErrors();}
});
$("#aSubmit").click(function(){if($("#registerForm").valid()){$("#registerForm").submit();return true;}return false;});
	function uploadDesign(){
		var obj = $(this);

		if(gDesignCount >= gUploadDesignMax){
			alert("You can't upload more than 10 designs.");
			return;
		}


		gDesignSid = gDesignSid + gDesignIndex++;


		$("#iframe_" + gDesignSid).remove();
		$("#form_" + gDesignSid).remove();

		//Start Upload
		var allowedPhotoExtension = ['.jpg','.jpeg','.png','.gif'];
		for(i=0;i<allowedPhotoExtension.length;i++){
			if($(this).val().endsWith(allowedPhotoExtension[i])){
				break;
			}
		}

		if(i == allowedPhotoExtension.length){
			$(this).val('');
			alert("Please select a supported image file.");
			return;
		}

		var $io = $('<iframe id="iframe_' + gDesignSid + '" name="iframe_' + gDesignSid + '" />');
	    var io = $io[0];
	    if ($.browser.msie || $.browser.opera)
	        io.src = 'javascript:false;document.write("");';
	    $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
	    $io.appendTo('body');
	    $newForm = $('<form id="form_' + gDesignSid + '" name="form_' + gDesignSid + '" />');

	    $newForm.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
		$newForm.attr({
	        target:   "iframe_" + gDesignSid,
	        encoding: 'multipart/form-data',
	        enctype:  'multipart/form-data',
	        method:   'POST',
	        action:   gBaseUrl + "cgi-bin/upload145.cgi?sid=" + gDesignSid
	    });


	    $newForm.appendTo('body');
   	    var a = $(this).clone();
	    a.insertAfter($(this));
	    a.change(uploadDesign);


	    $(this).appendTo($newForm);
	    $newForm[0].submit();

	    $("#uploadUl").append($('<li id="li_' + gDesignSid + '"class="clearBoth" style="padding-top:15px"><div class="progressMain"><div style="width: 0%;" class="progressBar"> </div></div><div class="progressStatus"><strong></strong> - <span>0mb</span>/<span>0mb</span></div></li>'));
		if($(this).val().length > 16 ){
			$("#li_" + gDesignSid + ">div.progressStatus>strong").html($(this).val().substring(0,16) + ".." );
		}else{
			$("#li_" + gDesignSid + ">div.progressStatus>strong").html($(this).val());
		}

	   	//refreshDesignProgressBar(gDesignSid);
		setTimeout("refreshDesignProgressBar('" + gDesignSid + "')",1000);
		a.val('');
		$("#uploadProgressDiv").show();
		//$("#uploadDesignDiv").harborkWaiting();
	}

	$("#btnUploadDesign").change(uploadDesign);
});



	function designUploadProgress(lDesginSid,bytesLoaded, bytesTotal) {
		var percent = Math.ceil((bytesLoaded*100 / bytesTotal) )
		if(percent == 100){
			percent == 99;
		}
		percent = percent ? percent : "0";

		$("#li_" + lDesginSid + ">div.progressMain>div:eq(0)").css("width",percent + "%");
		$("#li_" + lDesginSid + " span:eq(0)").html(getFileSizeText(bytesLoaded));
		$("#li_" + lDesginSid + " span:eq(1)").html(getFileSizeText(bytesTotal));
	}

	function refreshDesignProgressBar(gDesignSid){
		var lDesginSid = gDesignSid;
//		$.getJSON(gBaseUrl + 'upload_progress/index/' + gDesignSid  + "/1234/design/" + Math.floor(Math.random()*10000+1) + ".html",function(ret){
		$.getJSON(gBaseUrl + 'upload/upload_progress/' + gDesignSid  + "/1234/design/0/" + Math.floor(Math.random()*10000+1) + ".html",function(ret){
			//alert(ret.complete);
				if(!ret.resizefailed)
					alert("File resizing falied reason:-"+ret.error);
				if(ret.complete == 0){
					designUploadProgress(lDesginSid,ret.byteLoaded,ret.total);
					setTimeout("refreshDesignProgressBar('" + lDesginSid + "')",1000);
				}else if(ret.complete == 1){
					$("#li_" + lDesginSid + ">div.progressMain>div:eq(0)").css('width','100%');
					$("#li_" + lDesginSid + " span:eq(0)").html(getFileSizeText(ret.total));
					$("#li_" + lDesginSid + " span:eq(1)").html(getFileSizeText(ret.total));

					var newLi = $('<li><input type="hidden" name="applyData[]" /><img src="images/featured-mem.jpg" alt="design"  width="100" height="100"/></li>');
					if(gDesignCount){
						newLi.addClass('marLeft10px');
					}

					var ImgSrc = (ret.isOnS3==true) ? ret.fileurl : gBaseUrl+ret.fileurl ;

					newLi.find('img').attr('src', ImgSrc);
					newLi.find('input:hidden').val(ret.fileid);
					$("#designList").append(newLi);

					$("#iframe_" + ret.sid).remove();
					$("#form_" + ret.sid).remove();
					$("#uploadDesignDiv").unblock();
					gDesignCount++;
				}else if(ret.complete == 3){
					//setTimeout("refreshDesignProgressBar('" + lDesginSid + "')",1000);
					alert(ret.msg);
					$("#li_" + lDesginSid).hide();
					$("form_" + ret.sid).remove();
					$("#iframe_" + ret.sid).remove();
					$("#uploadDesignDiv").unblock();					
				}else if(ret.complete == 4){
					alert("File process failed. Please change another one");
					$("#li_" + lDesginSid).hide();
					$("form_" + ret.sid).remove();
					$("#iframe_" + ret.sid).remove();
					$("#uploadDesignDiv").unblock();					
				}else{
					//Fatal Error
					alert("Fatal Error: "+ ret.msg);
					$("form_" + ret.sid).remove();
					$("#iframe_" + ret.sid).remove();
					$("#uploadDesignDiv").unblock();
				}
		//getJSON
		});
		 //refreshDesignProgressBar
	}
