$(document).ready(function(){
	/* UPLOAD PAGE */
	// helper function - after file is attached for upload, show success and remove icons
	function attachItem(id){var $attach='#attach_'+id;$($attach).change(function(){var file_name=$($attach).val();$($attach+'_label').fadeOut('fast');$($attach).fadeOut('fast',function(){$($attach).parent().append("<span id='attach_"+id+_success+"' class='success cssSprite'>"+file_name+"<a id='"+id+"_remove' class='remove cssSprite' href='"+_js+"'>&nbsp;</a></span>");remove(id);});});}

	// helper function - insert $ to avoid user confusion when user enters price
	function dollaz(id){$(id).keydown(function(){var dollaz=$(this).val().substring(0,1);if(dollaz!=='$'){dollaz='$'+dollaz;$(this).val(dollaz);}});}

	// helper function - remove overlay
	function removeOverlay(item){$(item).fadeOut('fast');}

	// helper function - dynamically position overlay/modal window
	function overlayPositioning(element){var body_width=$('body').width(),item_width=$(element).width(),pos_left=(body_width-item_width)/2,body_height=$(window).height(),item_height=$(element).height(),scrolltop=$(window).scrollTop(),pos_top=(body_height-item_height)/2+scrolltop;return[pos_left,pos_top];}

	// helper function - validater
	function validater(id){if($('#'+id).val()==""){$('#'+id+'_error').fadeIn('fast');return 0;}else{return 1;}}

	// helper function - clean up new price decimals after user input
	function priceCheck(id){var pcp=$(id).val().split('$')[1];if(pcp){var pcp_break=pcp.split('.');if(pcp_break[0].substring(0,1)==0){if(pcp_break[1].substring(0,1)==0){pcp=(new Number(pcp).toPrecision(1));}else{pcp=(new Number(pcp).toPrecision(2));}}else{pcp=(new Number(pcp).toFixed(2));}return pcp;}}
	// upload premium publishers - wire attach elemets to attach helper function
	$('.attach input:file').each(function(){attachItem(this.id.split('attach_')[1]);});

	// upload premium publishers - show grades
	$('.level select').change(function(){$('.level select option').eq(0).attr('disabled','disabled');$('.applicable input').attr('checked',false);var read=$('.level select option:selected').attr('id');read=read.split('_option')[0];$('.applicable fieldset').hide();function show_list(){$('.applicable').fadeIn('fast',function(){$('#'+read).fadeIn('fast');});}switch(read){case('elementary'): show_list();break;case('middle_school'): show_list();break;case('high_school'): show_list();break;case('higher_education'): show_list();break;}});

	// upload premium publishers - show subcategories
	$('#upload-study-aid-page .category select').change(function(){$('.category select option').eq(0).attr('disabled','disabled');var read=$('.category select option:selected').attr('id');read=read.split('_option')[0];$('#subcategories select option').remove();$('.category select option').eq(0).attr('disabled','disabled');var read=$('.category select option:selected').attr('id');read=read.split('_option')[0];$('#subcategories select option').remove();function swap_subs(subcategory){$('.subcategories').show(function(){for(var n in subcategory){if(subcategory.hasOwnProperty(n)){var x=n;var y;if(n.split('_').length>1){x=x.split('_');y=x.join(" ");x=y;}$('#subcategories select').append('<option value="'+subcategory[n]+'">'+x+'</option>');}}});}var subcategory=read;subcategory={};switch(read){case('Art_and_Literature'): subcategory.English_Literature=2;subcategory.Creative_Writing=3;subcategory.Art_History=4;subcategory.Film_And_TV=5;subcategory.Music=6;subcategory.Other=1000;break;case('Mathematics'): subcategory.Calculus=10;subcategory.Geometry=11;subcategory.Algebra=12;subcategory.Trigonometry=13;subcategory.Statistics=14;subcategory.Other=1001;break;case('Business'): subcategory.Economics=18;subcategory.Accounting=19;subcategory.Marketing=20;subcategory.Finance=21;subcategory.Advertising=22;subcategory.Human_Resource=23;subcategory.Other=1002;break;case('Languages'): subcategory.ESL=25;subcategory.English=26;subcategory.Spanish=27;subcategory.French=28;subcategory.German=29;subcategory.Italian=30;subcategory.Other=1003;break;case('Engineering'): subcategory.Electrical=34;subcategory.Mechanical=35;subcategory.Civil=36;subcategory.Chemical=37;subcategory.Biomedical=38;subcategory.Other=1004;break;case('Sciences'): subcategory.Biology=43;subcategory.Inorganic_Chemistry=44;subcategory.Organic_Chemistry=45;subcategory.Physics=46;subcategory.Neuroscience=47;subcategory.Microbiology=48;subcategory.Human_Anatomy=49;subcategory.Human_Physiology=50;subcategory.Genetics=51;subcategory.Biochemistry=52;subcategory.Astronomy=53;subcategory.Other=1005;break;case('Information_Technology'): subcategory.Computer_Science=56;subcategory.Programming=57;subcategory.Multimedia=58;subcategory.Other=1006;break;case('Social_Sciences'): subcategory.Psychology=62;subcategory.History=63;subcategory.Race_And_Gender_Studies=64;subcategory.Education=65;subcategory.Sociology=66;subcategory.Political_Science=67;subcategory.Law=68;subcategory.Philosophy=69;subcategory.Geography=70;subcategory.Anthropology=71;subcategory.Other=1007;break;case('Standardized_Tests'): subcategory.SAT=73;subcategory.GRE=74;subcategory.GMAT=75;subcategory.LSAT=76;subcategory.MCAT=77;subcategory.Foreign_Tests=78;subcategory.Other=1008;break;}swap_subs(subcategory);});	

	/* BROWSE PAGE */
	var cart = $('#nav-cart');
	var cartSpan = cart.find('span');
	var cartQuantity = parseInt(cartSpan.text());
	//console.log('quantity: ' + cartQuantity);

	function incrementCart(the_item_id)
	{
		//alert(cartQuantity);
		cartSpan.text(++cartQuantity);
		//alert(cartQuantity);
		$('#' + the_item_id).addClass('eBtn-bebebe').text('Added');
	}

	$('.add-to-cart:not(.eBtn-bebebe)').click(function(){
		var item_id = $(this).attr('id');
		// item_id is the ID of the 'Add to Cart' <a>

			DwrHelper.isLoggedIn(function(test){
				if (!test) {
					var item = item_id;
					var type = item_id.split('_')[1];
					var id = item_id.split('_')[0];					
					
					//alert("incrementing");
					incrementCart(item);
					DwrHelper.addDocToCart(id, type);
					
					
/*					var redirect = window.location.href, newstr;
					if(redirect.match(".html")){
						newstr = redirect.replace(".html", "Secure.html");
					} else if (redirect.match("-TKID")) {
						newstr = redirect.replace("-TKID", "-STKID");
					} else if (redirect.match("-PRID")) {
						newstr = redirect.replace("-PRID", "-SPRID");
					}  else if (redirect,match("-UPID")) {
						newStr = redirect.replace("-UPID","-SUPID");
					}
					window.location = newstr;*/
				} else {
					var item = item_id;
					var type = item_id.split('_')[1];
					var id = item_id.split('_')[0];
	
					
					switch (type)
					{
						case ('TecknoProduct'):
							DwrHelper.hasAccessToPremiumPublisherDocs(function(resultobject1){
								if(resultobject1 && numprice < 10.00)
								{
	        		            				DwrHelper.addPremiumPublisherDocToShelf(id, function(resultobject){});
	        		        			} else {
	        		           				DwrHelper.addTecknoToCart(id, function(resultobject){});
	        		       				}
                		    			});
							break;
						case 'ExerciseBook':
							DwrHelper.addToExerciseBookCart(id, function(resultobject){});

							break;
						case 'UploadedMaterial':
							DwrHelper.addUserUploadedMaterialToCart(id, function(resultObj){});

							break;
						default:
							DwrHelper.addPremiumNoteToCart(id, function(resultobject){});

							break;
					}

					incrementCart(item);
                		}
		});
	});

	/* GENERAL */
	// add 'Add This' script to page
	//if($('#add_this').length){$('#add_this').append('<div class="addthis_toolbox addthis_default_style"><a href="http://www.addthis.com/bookmark.php?v=250&amp;username=examville" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_facebook"></a><a class="addthis_button_myspace"></a><a class="addthis_button_google"></a><a class="addthis_button_twitter"></a></div>');$("<script type='text/javascript' src='http://s7.addthis.com/js/250/addthis_widget.js#username=examville'></script>").appendTo("body");}

	// search header - clear value on focus
	var search_text,$searchTerm=$('.pp-search-head form :text');$($searchTerm).focus(function(){search_text=$(this).val();$(this).val('');});$($searchTerm).blur(function(){if($(this).val()==''){$(this).val(search_text);}});

	// set search string to "" if nothing has been entered
	$('.pp-search-head form').submit(function(){if($($searchTerm).val()==='search by title, subject, or publisher'){$($searchTerm).val('');}});

	// search page - set table width and remove table - to be worked back in
	$('.grades-ul table').attr('width', '720');	

	// search page - remove table from page
	
	// prem pub manage - edit price
	$('.edit').click(function(){var that=this.id,$that='#'+that,that_split=that.split('_'),id=that_split[0]+'_'+that_split[1],$id='#'+id,$price=$id+'_price',$wrapper=$price+'_edit_wrapper',$input=$wrapper+' input',$error=$id+'_error',price=$($price+' span').html(),item_id=id.split(_sc)[1];$($price+','+$that).fadeOut('fast',function(){$($id+'_edit_wrapper').append("<span id='"+id+"_price_edit_wrapper' class='price-edit-wrapper' style='display:none;'><span id='"+id+"_error' class='error left' style='display:none;margin-right:5px;'>Please enter a valid price.</span><input class='new-price' value='$"+price+"' type='text' maxlength='7'/><a id='"+id+"_save' class='save' href='"+_js+"'>Save</a><a id='"+id+"_cancel' class='cancel' href='"+_js+"'>Cancel</a>");$($id+'_cancel').click(function(){$($wrapper).remove();$($price+','+$that).fadeIn('fast');});dollaz($input);$($input).keydown(function(e){if(e.which!==13&&e.which!==9&&e.which!==8&&e.which!==0&&(e.which<48||e.which>57)&&(e.which<96||e.which>105)&&e.which!==190&&e.which!==110&&e.which!==37&&e.which!==39&&e.which!==16){$($error).fadeIn('fast',function(){$($input).val('$');$($error).fadeOut('fast');});}});$($wrapper).fadeIn('fast');$($id+'_save').click(function(){var test_price=$($input).val().split('$')[1];if(test_price==""||test_price==undefined||($($input).val().split('.').length)>2){$($error).fadeIn('fast',function(){$($error).fadeOut('fast');});}else{price=priceCheck($input);$($wrapper).fadeOut('fast',function(){DwrHelper.editPremiumDocument(item_id,price,function(resultobject){});$(this).remove();$($price+' span').html(price);$($price+','+$that).fadeIn('fast');});}});});});

	// right column module - See More.../See Less...
	if($('#subjects').length>0){var $subjects_ul=$('#subjects ul');var $subjects_li=$('#subjects li');var $subjects_reveal=$('#subjects_reveal');var fullHeight=$($subjects_ul).height();var lastItemHeight=$($subjects_li).eq(9).height();var firstItemPosition=$($subjects_li).eq(0).offset().top;var lastItemPosition=$($subjects_li).eq(9).offset().top;var cutoff=lastItemPosition-firstItemPosition;cutoff=cutoff+lastItemHeight;$($subjects_ul).css({'height':cutoff});$($subjects_reveal).toggle(function(){$($subjects_ul).animate({height:fullHeight},'fast',function(){$($subjects_reveal).html('See Less...');});},function(){$($subjects_ul).animate({height:cutoff},'fast',function(){$($subjects_reveal).html('See More...');});});}

	// upload premium publishers - upload validation
    if(jQuery.isFunction(jQuery.fn.validate)){
        $("#uploadPremiumContent").validate({
	        rules:{
	            cost:{
	                required : true,
	                number : true,
	                min : 1.99
                },
                publication_title:{ 
		            required : true,
		            minlength: 3,
		            maxlength: 255
                },
                description:{
		            required : true,
		            minlength: 3,
		            maxlength: 255
                },
                tags:{
	                required:true
                }
            },
            messages:{
                cost:{
		            required : "* required",
		            min :"The minimum required  price is $1.99. Do not include the '$' sign while uploading"
		            },
                publication_title:{
	                required: "* required"
                },
                description:{
	                required: "* required"
                },
                tags:{
	                required: "* required"
                }
            },
            success: "valid",
            submitHandler: function(form){
                var size = '300px'
					, $loading = '#loading'
					, loader_position = overlayPositioning($loading)
				;
                $('.error').remove();
                $('body').append("<div id='loading' class='overlay-wrapper rounded-5' style='display:none;'><div class='container'><p>Uploading Document...</p></div></div>");
                $($loading).css({
                    'height':size,
                    'width':size,
                    'position':'absolute'
                });
                $($loading).css({
                    left:loader_position[0],
                    top:loader_position[1]
                });
                $($loading).fadeIn('fast');
                form.submit();
            }
        });
    }
    
    
    /*
     * validation for the new upload study - aids method
     * 
     */
    
    if(jQuery.isFunction(jQuery.fn.validate)){
        $("#newuploadMaterial").validate({
	        rules:{
	            cost:{
	                required : false, 
	                number : true,
	                min : 1.99
                },
                title:{ 
		            required : true,
		            minlength: 3,
		            maxlength: 255
                },
                materialDescription:{
		            required : true,
		            minlength: 3,
		            maxlength: 1000
                },
                categorySelect:{
                	required:true
                },
                materialTags:{
	                required:true
                }
            },
            messages:{
                cost:{
		            number : "Please enter a numeber",
		            min :"The minimum required  price is $1.99. Do not include the '$' sign while uploading"
		            },
                title:{
	                required: "* required"
                },
                materialDescription:{
	                required: "* required"
                },
                materialTags:{
	                required: "* required"
                }
            },
            success: "valid",
            submitHandler: function(form){
                var size = '300px'
					, $loading = '#loading'
					, loader_position = overlayPositioning($loading)
				;
                $('.error').remove();
                $('body').append("<div id='loading' class='overlay-wrapper rounded-5' style='display:none;'><div class='container'><p>Uploading Document...</p></div></div>");
                $($loading).css({
                    'height':size,
                    'width':size,
                    'position':'absolute'
                });
                $($loading).css({
                    left:loader_position[0],
                    top:loader_position[1]
                });
                $($loading).fadeIn('fast');
                form.submit();
            }
        });
    }
/*

	/* landing page search refinement */
	var numChecked = 0;
	var numLabels = 4;

	searchLabels = $('#pp-search-filter input[id!=sf-all]');
	all = $('#sf-all');

	searchLabels.each(function(){
		var label = $(this);

		if (label.attr('checked') == true)
			incrementNumChecked();

		label.change(function(){
			if (label.attr('checked') == true)
				incrementNumChecked();
			else
				decrementNumChecked();
		});

		// for page initialization, we don't want 'all' to be checked it the rest aren't
		if (numChecked != numLabels)
			all.removeAttr('checked');
	});

	all.change(function(){
		if ($(this).attr('checked') == true)
		{
			searchLabels.each(function(){
				searchLabel = $(this);

				if (searchLabel.attr('checked') == false)
				{
					searchLabel.attr('checked','checked');
					incrementNumChecked();
				}
			});
		}
	});

	function incrementNumChecked()
	{
		if (++numChecked == numLabels)
			all.attr('checked','checked');

		return false;
	}

	function decrementNumChecked()
	{
		numChecked--;

		all.removeAttr('checked');

		return false;
	}

	/* new cart page */
	cartItems = $('#cart-items');
	cartItemsLis = cartItems.find('> li');
	cartItemsLis.filter(':odd').addClass('even');

	var cartNumItems = parseInt(cartSpan.text());
	cartNumItems = 3;
	if (cartNumItems == 0)
	{
		$('#affirmative-items-in-cart').hide();
		$('#no-items-in-cart').show();
	}

	// DELETE FROM CART
	cartItems.find('.cart-item-delete a').click(function(){
		var cartTotal = parseFloat($('#cart-total-amount').text().substring(1, 5));
		//console.log('cart total before remove: ' + cartTotal);
		var parentLi = $(this).parent().parent().parent(); // <li> <- <ul> <- <li> <- <a>
		var id = parentLi.attr('id');
		var classes = parentLi.attr('class');
		var price = parseFloat(parentLi.find('.cart-item-price').text().substring(1, 5));
		classesAr = classes.split(' ');
		for (var i = 0; i < classesAr.length; i++)
		{
			if (classesAr[i].substring(0, 4) == 'type')
				var type = classesAr[i].substring(5, classesAr[i].length);
		}
		//console.log('id: ' + id);
		//console.log('price : ' + price);
		//console.log('type : ' + type);

			switch (type)
			{
				case('premiumnotes'):
					DwrHelper.deletePremiumDocument(id, function(resultobject){});
					break;
				case('PremiumNotes'):
					DwrHelper.removePremiumNotesFromCart(id, function(resultobject){});
					break;
				case('MarketClassNotes'):
					DwrHelper.removeMarketClassNotesFromCart(id, function(resultobject){});
					break;
				case('MarketPersonalNotes'):
					DwrHelper.removeMarketPersonalNotesFromCart(id, function(resultobject){});
					break;
				case('TecknoProduct'):
					DwrHelper.removeTecknoDocFromCart(id, function(resultobject){});
					break;
				case('UploadedMaterial'):
					DwrHelper.removeUploadedMaterialFromCart(id, function(resultObject){});
					break;
				case('ExerciseBook'):
					DwrHelper.removeExerciseBookFromCart(id, function(resultobject){
						if(resultobject.discount === 0){ 
							$('#eb_discount_amt').fadeOut('fast', function(){
								$(this).remove();
							});	
						}
					});
					break;
			}

			// Decrement the value in Cart at top of page
			cartSpan.text(--cartQuantity);

			// Decrease the total price accordingly
			newTotal = (cartTotal - price) + ''; // make it a string
			$('#cart-total-amount').text('$' + newTotal + (newTotal.length == 4 ? '0' : '') );
			total = parseFloat(newTotal);
			//console.log('cart total after remove: '+ total);

			parentLi.fadeOut('medium', function(){
				$(this).remove();
				cartItemsLis.removeClass('even');
				cartItems.find('> li:odd').addClass('even');
			});

			if (--cartNumItems == 0)
			{
				$('#affirmative-items-in-cart').hide();
				$('#no-items-in-cart').show();
			}

			return false;
		});
});