/**
 * jelectbox
 *
 * @param
 * @author serdar ozturk
 * @url http://kokulusilgi.com/blog/30-jelectbox
 */
(function($){
    $.fn.extend({
        
        jelectbox: function(options){
        
            //jelectbox settings 
            var defaults = {
                selectbox_id: 'myjelectbox',
				width: 'auto',
				height: 'auto'
            };
            
            var options = $.extend(defaults, options);
            
            return this.each(function(){
                var o = options;
                var obj = $(this);
				var l_selected = '';
				var chk = 'chkit_'+o.selectbox_id;
				
				l_selected = $('#'+o.selectbox_id+' option:selected').text();
                $('#'+o.selectbox_id).after('<div class="jelectbox_main" style="position:relative; width:'+o.width+';"><div style="float:left;"><span class="jelectbox_text">'+l_selected+'</span></div><div id="'+chk+'" class="inite" style="float:right"></div><div style="clear:both;"></div><div class="jelectbox_options" style="position:absolute; display:none; width:'+o.width+'"><div class="jelectbox_ul_parent" style="height:'+o.height+'; overflow:auto; overflow-x:hidden;"><ul class="jelectbox_ul_selectbox"></ul></div> </div></div>');
 				$('#'+o.selectbox_id).css('display','none');
				
				// create option list
				$("#"+o.selectbox_id+" *").each(function (i) { 
					var current = $(this); 
					clsg = '';
					if (i % 2 == 0) {
						clsg = ' class="g"';
					}
					$('.jelectbox_ul_selectbox',obj).append('<li value="' + current.attr("value") + '"'+clsg+'>' + current.text() + '</li>');
				});
				
				// open - hide option list
                $('.jelectbox_main', obj).click(function(){
					if ($("#" + o.selectbox_id).get(0).disabled == false) {
						$('.jelectbox_options', obj).slideToggle("fast");
						// up down select image
						if ($('.jelectbox_options', obj).css('height') != '1px')
						{
							$(this).removeClass('down');
						} else {
							$(this).addClass('down');
						}
					}
                });
				
				// change selected
                $('ul.jelectbox_ul_selectbox li',obj).click(function(){
					var current_value = $(this).attr("value");
					if($('#'+chk).hasClass("inite")) $('#'+chk).removeClass("inite");
					if(current_value != "0"){
						$('#'+chk).removeClass("error");
					} else {
						if($('#'+chk).hasClass("error") == false){
							$('#'+chk).addClass("error");
						}
					}
                    $('.jelectbox_text',obj).html($(this).text());
					$("#"+o.selectbox_id+" option:selected").attr("selected",false);
                    $("#"+o.selectbox_id+" option[value='" + current_value + "']").attr("selected", "selected");
                    $('.jelectbox_main a',obj).click();
					var domEl = $("#"+o.selectbox_id).get(0);
      				$(this).queue(domEl.onchange);
                });
                
            });
        }
    });
})(jQuery);

//jquery valid8 @ http://www.unwrongest.com/projects/valid8/
(function($){$.fn.extend({valid8:function(b){return this.each(function(){$(this).data('valid',false);var a={regularExpressions:[],ajaxRequests:[],jsFunctions:[],onLoading:defaultOnEvent,onValid:defaultOnEvent,onError:defaultOnEvent,validationEvents:['keyup','blur'],validationFrequency:1000,values:null,defaultErrorMessage:''};if(typeof b=='string')a.defaultErrorMessage=b;if(this.type=='checkbox'){a.regularExpressions=[{expression:/^true$/,errormessage:a.defaultErrorMessage}];a.validationEvents=['click']}else a.regularExpressions=[{expression:/^.+$/,errormessage:a.defaultErrorMessage}];$(this).data('settings',$.extend(a,b));initialize(this)})},isValid:function(){var a=true;this.each(function(){validate(this);if($(this).data('valid')==false)a=false});return a}});function initializeDataObject(a){$(a).data('loadings',new Array());$(a).data('errors',new Array());$(a).data('valids',new Array());$(a).data('keypressTimer',null)}function initialize(a){initializeDataObject(a);if($(a).attr('value').length>0&&a.type!='checkbox')validate(a);activate(a)};function activate(b){var c=$(b).data('settings').validationEvents;if(typeof c=='string')$(b)[c](function(e){handleEvent(e,b)});else{$.each(c,function(i,a){$(b)[a](function(e){handleEvent(e,b)})})}};function validate(a){initializeDataObject(a);var b;if(a.type=='checkbox')b=a.checked.toString();else b=a.value;regexpValidation(b.replace(/^[ \t]+|[ \t]+$/,''),a)};function regexpValidation(b,c){$.each($(c).data('settings').regularExpressions,function(i,a){if(!a.expression.test(b))$(c).data('errors')[$(c).data('errors').length]=a.errormessage;else if(a.validmessage)$(c).data('valids')[$(c).data('valids').length]=a.validmessage});if($(c).data('errors').length>0)onEvent(c,'error',false);else if($(c).data('settings').jsFunctions.length>0){functionValidation(b,c)}else if($(c).data('settings').ajaxRequests.length>0){fileValidation(b,c)}else{onEvent(c,'valid',true)}};function functionValidation(c,d){$.each($(d).data('settings').jsFunctions,function(i,a){var v;if(a.values){if(typeof a.values=='function')v=a.values()}var b=v||c;handleLoading(d,a);if(a['function'](b).valid)$(d).data('valids')[$(d).data('valids').length]=a['function'](b).message;else $(d).data('errors')[$(d).data('errors').length]=a['function'](b).message});if($(d).data('errors').length>0)onEvent(d,'error',false);else if($(d).data('settings').ajaxRequests.length>0){fileValidation(c,d)}else{onEvent(d,'valid',true)}};function fileValidation(e,f){$.each($(f).data('settings').ajaxRequests,function(i,c){var v;if(c.values){if(typeof c.values=='function')v=c.values()}var d=v||{value:e};handleLoading(f,c);$.post(c.url,d,function(a,b){if(a.valid){$(f).data('valids')[$(f).data('valids').length]=a.message}else{$(f).data('errors')[$(f).data('errors').length]=a.message}if($(f).data('errors').length>0)onEvent(f,'error',false);else{onEvent(f,'valid',true)}},"json")})};function handleEvent(e,a){if(e.keyCode&&$(a).attr('value').length>0){clearTimeout($(a).data('keypressTimer'));$(a).data('keypressTimer',setTimeout(function(){validate(a)},$(a).data('settings').validationFrequency))}else if(e.keyCode&&$(a).attr('value').length<=0)return false;else{validate(a)}};function handleLoading(a,b){if(b.loadingmessage){$(a).data('loadings')[$(a).data('loadings').length]=b.loadingmessage;onEvent(a,'loading',false)}};function defaultOnEvent(a,b,c){setParentClass(b,c);setMessage(a,b)}function onEvent(a,b,c){var d=b.substring(0,1).toUpperCase()+b.substring(1,b.length);$(a).data(b,c);$(a).data('settings')['on'+d]($(a).data(b+'s'),a,b)}function setParentClass(a,b){var c=$(a).parent();c[0].className=(c[0].className.replace(/(^\s|(\s*(loading|error|inite|valid)))/g,'')+' '+b).replace(/^\s/,'')}function setMessage(a,b){var c=$(b).parent();var d=b.id+"ValidationMessage";var e='validationMessage';$('#'+d).html("");$('#'+d).text(a[0])}})(jQuery);

/* ------------------------------------------------------------------------
	prettyCheckboxes
	
	Developped By: Stephane Caron (http://www.no-margin-for-errors.com)
	Inspired By: All the non user friendly custom checkboxes solutions ;)
	Version: 1.1
	
	Copyright: Feel free to redistribute the script/modify it, as
			   long as you leave my infos at the top.
------------------------------------------------------------------------- */
	
jQuery.fn.prettyCheckboxes=function(a){a=jQuery.extend({checkboxWidth:14,checkboxHeight:14,className:"prettyCheckbox",display:"list"},a);$(this).each(function(){$label=$('label[for="'+$(this).attr("id")+'"]');$label.prepend("<span class='holderWrap'><span class='holder'></span></span>");if($(this).is(":checked")){$label.addClass("checked")}$label.addClass(a.className).addClass($(this).attr("type")).addClass(a.display);$label.find("span.holderWrap").width(a.checkboxWidth).height(a.checkboxHeight);$label.find("span.holder").width(a.checkboxWidth);$(this).addClass("hiddenCheckbox");$label.bind("click",function(){$("input#"+$(this).attr("for")).triggerHandler("click");if($("input#"+$(this).attr("for")).is(":checkbox")){$(this).toggleClass("checked");$("input#"+$(this).attr("for")).checked=true;$(this).find("span.holder").css("top",0)}else{$toCheck=$("input#"+$(this).attr("for"));$('input[name="'+$toCheck.attr("name")+'"]').each(function(){$('label[for="'+$(this).attr("id")+'"]').removeClass("checked")});$(this).addClass("checked");$toCheck.checked=true}});$("input#"+$label.attr("for")).bind("keypress",function(b){if(b.keyCode==32){if($.browser.msie){$('label[for="'+$(this).attr("id")+'"]').toggleClass("checked")}else{$(this).trigger("click")}return false}})})};checkAllPrettyCheckboxes=function(b,a){if($(b).is(":checked")){$(a).find("input[type=checkbox]:not(:checked)").each(function(){$('label[for="'+$(this).attr("id")+'"]').trigger("click");if($.browser.msie){$(this).attr("checked","checked")}else{$(this).trigger("click")}})}else{$(a).find("input[type=checkbox]:checked").each(function(){$('label[for="'+$(this).attr("id")+'"]').trigger("click");if($.browser.msie){$(this).attr("checked","")}else{$(this).trigger("click")}})}};


$(document).ready(function() {  
	//activate checkboxes
	$("input[type='checkbox']").prettyCheckboxes();

	//activate jelectboxes
	$('#select_budget').jelectbox({selectbox_id:'budget', width:'256px'});
	$('#select_time').jelectbox({selectbox_id:'time', width:'256px'});
	$('#select_method').jelectbox({selectbox_id:'method', width:'256px'});
	
	//from snipplr.com
	swapValue = [];
	$('input[type=text]').each(function(i){
	   swapValue[i] = $(this).val();
	   $(this).focus(function(){
		  if ($(this).val() == swapValue[i]) {
			 $(this).val("");
		  }
		  $(this).addClass("focus");
	   }).blur(function(){
		  $(this).removeClass("focus");		  
		  if ($.trim($(this).val()) == "") {
			 $(this).val(swapValue[i]);
		  } else {
			  if($(this).parent().hasClass("inite") || $(this).parent().hasClass("error")){
				$(this).valid8();
			  }
		  }
	   });
	});
	
	$("textarea").focus(function() {
		$(this).addClass("focus");
	}).blur(function() {
		$(this).removeClass("focus");
	});

	$("form").submit(function() {
		$(".inite").addClass("error");
		$('*').removeClass("inite");
		if($('*').hasClass("error") || $('*').hasClass("inite")){ return false; } else { $("#private").attr("value","privatevar"); return true; }
	});

});