$(function(){
     //Pagination selector
    $("#perPage").bind("change",function(){
      $("#perPageForm").submit();
    });
    //Prepare ajax global defaults
    $.ajaxSetup({
        type: "GET"
    });
    validate = function(eles){
      var req = {}, reqIdx = 0, chkRequired = false, valid = false;
      var message = '';
      for (var i = 0; eles[i]; ++i) {
          if (eles[i].name.match(/^zip$|^city$|^state$/)) {
              req[eles[i].name] = {
                  value: eles[i].value === eles[i].title ? '' : eles[i].value,//remove help text if its there
                  pos: i //maintain reference to position in order to set values as needed
              }
              chkRequired = true;
          }
      }
      if(!chkRequired){
        for(var i = 0; eles[i]; ++i) //clear helper text and submit form
          if(eles[i].value === eles[i].title) eles[i].value = '';
        valid = true;        
      }
      else{ //validate zip, city, state
        //Zip passed, make sure valid zip
        //Zip, City, State passed, make sure valid zip
        //No zip, make sure city/state exist
        try { 
            if (req.zip.value) {
                if (req.zip.value.match(/^[\d]{5,9}$/)) {
                    if(eles[req.city.pos].value === eles[req.city.pos].title){
                      eles[req.city.pos].value = '';
                      eles[req.state.pos].value = '';
                    }
                    valid = true;
                }
                else {
                    if (req.city.value && req.state.value) {
                      if(eles[req.zip.pos].value === eles[req.zip.pos].title){
                        eles[req.zip.pos].value = '';
                      }
                        valid = true;
                    }
                    else 
                        message += "Please enter a valid zip.\n";
                }
            }
            else {
                if (req.city.value && req.state.value) {
                    if(typeof req.zip !== 'undefined')
                      eles[req.zip.pos].value = '';
                    valid = true;
                }
                else 
                    message += "Please enter a zip or a city and state."
            }
						
        } 
        catch (err) {
          if(typeof console.log !== undefined)
            console.log(err);
        }
      }
      if(!valid){
        alert(message);
      }
      else{
        
      }
      return valid;
    }
    
    switchText = function()
    {
      if ($(this).val() == $(this).attr('title'))
        $(this).val('').removeClass('blur');
      else if ($.trim($(this).val()) == '')
        $(this).addClass('blur').val($(this).attr('title'));
    }
    $("form").each(function(){
      //this references the form
      var inputs = this.elements;
      var $hints = $($.grep(this.elements,function(a){ return a.nodeName === "INPUT" })); //cast elements to jQuery Objects
      $hints.each(function() {
        if ($.trim($(this).val()) == '') $(this).val($(this).attr('title'));
        if ($(this).val() == $(this).attr('title')) $(this).addClass('blur');
      }).focus(switchText).blur(switchText);
      
      $(this).submit(function() { 
        var bypass = $(this).data('bypassValidation');
        if (bypass) { return; } // If bypassValidation is set for a form, don't continue.
        /*Moved to form validation area 
         $hints.each(function() { //Clear the help text on submit
          if ($(this).val() == $(this).attr('title')) $(this).val('').removeClass("blur");
        }); */
        return validate(inputs); //Validate
      });
    });

});

// *********************** COnverts a number to a dollar format ************************* //
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num);
}


// ***************  Change Price Range ******************** //
function changepricerange(PriceFieldId){

		if(PriceFieldId == 'minPrice'){
			var baseSelect = document.getElementById('minPrice');
			var targetPriceFieldId = 'maxPrice';
			var targetText1 = 'max price';
			var targetText2 = 'Maximum';
			var targetBlock = 'replaceMaxBlock';
		}else{
			var baseSelect = document.getElementById('maxPrice');
			var targetPriceFieldId = 'minPrice';
			var targetText1 = 'min price';
			var targetText2 = 'Minimum';
			var targetBlock = 'replaceMinBlock';
		}
			
			// Get the selected price			
				var selectedIndexNum = baseSelect.selectedIndex;
					var selectedOptionValue = baseSelect.options[selectedIndexNum].value;
				var optionsCount = baseSelect.length - 1;
				var baseNumber = baseSelect.options[0].value;
				
			// Find the base price for the other field
			var targetBaseSelect = document.getElementById(targetPriceFieldId);
				var targetSelectedIndexNum = targetBaseSelect.selectedIndex;
				var targetOptionValue = targetBaseSelect.options[targetSelectedIndexNum].value;
				var targetBaseValue = targetBaseSelect.options[0].value;
				
				
			//alert(selectedOptionValue + ',' +  targetOptionValue); 
		
			var showResult = ' <select id="'+targetPriceFieldId+'"  class="lblTxt" title="'+targetText2+' price range"  name="'+targetPriceFieldId+'" onchange="changepricerange(\''+targetPriceFieldId+'\');" >';
			showResult = showResult + '<option value="' + targetBaseValue + '">' + targetText1 +'</option>' ;
			var baseNumber = targetBaseValue;
			if(PriceFieldId == 'minPrice'){
				while (parseInt(baseNumber) > selectedOptionValue )
				{							
					showResult = showResult + '<option value="' + baseNumber + '"' ;		
					if(baseNumber == targetOptionValue ){
						showResult = showResult + ' selected="selected" ';
					}
					showResult = showResult + '>' + formatCurrency(baseNumber) + '</option>' ;
					baseNumber = baseNumber - 10000;							
				}
			}else{
				while ( parseInt(baseNumber) < selectedOptionValue )
				{							
					showResult = showResult + '<option value="' + baseNumber + '"' ;		
					if(baseNumber == targetOptionValue ){
						showResult = showResult + ' selected="selected" ';
					}
					showResult = showResult + '>' + formatCurrency(baseNumber) + '</option>' ;
					baseNumber = parseInt(baseNumber) + 10000;							
				}
			}

		
		
		showResult = showResult + '</select>';
		document.getElementById(targetBlock).innerHTML= showResult ;
		//alert(showResult);
	}
