var clAutoCompleteURL = "/checklist/ajax/getTemplatesByKeyword.jsp";

$.fn.convertToCustomError = function(){
    var $this = this;
    var errorLabels = $this.find("label.error");
    errorLabels.each(function(){
        var error = $(this);
        var element = $(this).prev();
        element.addClass("error");
        error.remove();
        jqFVErrorHandler(error,element);
    });
};

function jqFVErrorHandler(error, element){
    if(!element.hasClass("error")){
        return;
    }
    var errorIcon = element.parent().find("span.txtErrorIcon");
    if(errorIcon.length == 0){
        element.parent().append("<span class=\"txtErrorIcon\"></span>");
        errorIcon = element.parent().find("span.txtErrorIcon");
    }
    error.data("element", element);
    errorIcon.data("errmsg",error.html());
    var errorIconHover = function(e){
        var txtErrorPopup = $("#txtErrorPopup");
        txtErrorPopup.find(".content").html($(this).data('errmsg'));
        txtErrorPopup.css("top",$(this).offset().top - 7);
        txtErrorPopup.css("left",$(this).offset().left + 30);
        txtErrorPopup.show(20);
    };
    var errorIconHoverOut = function(e){
        var txtErrorPopup = $("#txtErrorPopup");
        txtErrorPopup.hide(20);
    };
    errorIcon.hover(errorIconHover, errorIconHoverOut);
    error.hide();
    errorIcon.show(50);
    element.parent().addClass("error");
};

function jqFVSuccess(label){
    try{
        label.addClass("valid");
        var element = label.data("element");
        element.parent().find("span.txtErrorIcon").hide(50);
        element.parent().removeClass("error");
    }catch(e){}
};

function bindPopEvent(popObj,onClickobj){
    onClickobj.click(function(){
        popObj.css("display","block");
        $(".popupBackLayer").css("display","block");
        setAllPopup(popObj);
    });

    popObj.find(".btn input[type=button],.btnClose").click(function(){
        popObj.css("display","none");
        $(".popupBackLayer").css("display","none");
    });
}

function LogonPopup(loginDiv){
	var object = this;
    $(".btnClose",loginDiv).bind("click.login",function(){
        object.close();
    });

    $(".registerDiv .loginText a",loginDiv).bind("click.login",function(){
    	object.showLogin();
    });

    $(".loginDiv .loginText a",loginDiv).bind("click.login",function(){
    	object.showRegister();
    });

    $(".popupBackLayer").bind("click.login",function(){
        object.close();
    });

    this.showLogin = function(){    	
    	$(".popupBackLayer").css("display","block");
    	if(jQuery.browser.version!="7.0"){
    		$(".registerDiv",loginDiv).css("display","none");
    	}
	    $(".loginDiv",loginDiv).css("display","block").find("input:first").focus();
	    $(".loginContainer",loginDiv).addClass("logonImg");
	    $(".regIcon",loginDiv).addClass("logonIcon");
	    $(".loginContainer .content").css("margin-top","80px");
	    loginDiv.css("display","block");
	    setAllPopup(loginDiv);
	    $(".registerDiv",loginDiv).css("display","none");
    };

    this.showRegister = function(){
    	$(".popupBackLayer").css("display","block");
    	if(jQuery.browser.version!="7.0"){
    		$(".loginDiv",loginDiv).css('display','none');
    	}
	    $(".registerDiv",loginDiv).css("display","block").find("input:first").focus();
	    $(".loginContainer",loginDiv).removeClass("logonImg");
	    $(".regIcon",loginDiv).removeClass("logonIcon");
	    loginDiv.css("display","block");
	    setAllPopup(loginDiv);
	    $(".loginDiv",loginDiv).css('display','none');
    };

    this.close = function(){
    	loginDiv.css("display","none");
        $(".popupBackLayer,.popup").css("display","none");
    };
}
var logonPopup;

//checks if there is a visited link at all. used when adding a new task / tasks
function task_adder(html){
	if($('.visited_task').length){ //if length is 0, then the object is false:
		//checks if there is an opened task. if not, it pushes new task after the last visited task:            		
		(opened_task) ? visited_task=$(".taskEditPop:first") : visited_task=$('.visited_task');
		task_pos="after";
	}else{
		visited_task=$(".task:first");
		task_pos="before";
	}
	
	//decide what is the index of the inserted task by checking the visited task:
	inserted_task_index=visited_task.index()+1;
	//if(task_pos=="before"){
		//visited_task.before(html);            			
	//}else if(task_pos=="after"){
		//visited_task.after(html);
	//}
	$('.gname:first').after(html);
	gname=$('.visited_task').parent().parent().find('.gname').find('.data').text();
}

$(document).ready(
    function(){    	
    	logonPopup = new LogonPopup($("#login-pop"));
    	
    	//checklistadd defaultText fix    	
    	$("form").bind('submit', function(){    		
    		$("input.taskTextField.default").val('');
    	});
    	
    	
    	if($("#txtErrorPopup").length == 0){
    		$('body').append('<div id="txtErrorPopup"><div class="content"></div></div>');
    	}

        $("#signupForm form").convertToCustomError();
        $("#signupForm form").validate({
            rules: {
                email: {
                    required: true,
                    email: true
                },
                password:{
                    required:true,
                    minlength:6
                },
                firstname:{
                    required:true,
                    minlength:2
                },
                lastname:{
                    required:true,
                    minlength:2
                }

            },
            messages: {
                email: {
                    required: messages.error_required,
                    email: messages.email_format
                },
                password:{
                    required: messages.error_required,
                    minlength: messages.error_min_char_6
                },
                firstname: {
                    required: messages.error_required,
                    minlength: messages.error_min_char_2
                },
                lastname: {
                    required: messages.error_required,
                    minlength: messages.error_min_char_2
                }
            },
            errorPlacement : jqFVErrorHandler,
            success: jqFVSuccess
        });

        $("#logonForm").convertToCustomError();
        $("#logonForm").validate({
            rules: {
                email: {
                    required: true,
                    email: true
                },
                password:{
                    required:true,
                    minlength:6
                }
            },
            messages: {
                email: {
                    required: messages.error_required,
                    email: messages.email_format
                },
                password:{
                    required: messages.error_required,
                    minlength: messages.error_min_char_6
                }

            },
            errorPlacement : jqFVErrorHandler,
            success: jqFVSuccess
        });
        $("#publish-chk-pop form").validate({
        	rules: {
            	name:{
            	required:true,
            	minlength:3,
            	maxlength: 30
            }
            },
            messages: {
            	name:{
            	required: messages.error_required,
            	minlength: messages.error_min_char_3,
            	maxlength: messages.error_max_char_30
            }

            },
            errorPlacement : jqFVErrorHandler,
            success: jqFVSuccess
            });
        $("#addchk-pop form").validate({
        	rules: {
        	name:{
        	required:true,
        	minlength:3,
        	maxlength: 30
        }
        },
        messages: {
        	name:{
        	required: messages.error_required,
        	minlength: messages.error_min_char_3,
        	maxlength: messages.error_max_char_30
        }

        },
        errorPlacement : jqFVErrorHandler,
        success: jqFVSuccess
        });
        try{
	        $("#custom-chk-pop form").validate({
	        	rules: {
	        	name:{
	        	required:true,
	        	minlength:3,
	        	maxlength: 30
	        }
	        },
	        messages: {
	        	name:{
	        	required: messages.error_required,
	        	minlength: messages.error_min_char_3,
	        	maxlength: messages.error_max_char_30
	        }

	        },
	        errorPlacement : jqFVErrorHandler,
	        success: jqFVSuccess,
	        submitHandler:customizeChecklistTemplate
	        });
        }catch(e){
        }

        $("#txtErrorPopup").createCurveContainer({
            left:12,
            right:12,
            type:"type5"
        });

    });


function jqueryAjax(Url,Param,CallBackFunction) {
    $.ajax({
        type: "POST",
        url: Url,
        data: Param,
        success: CallBackFunction,
        error: function(xhr){
            alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
        }

    });
}

function initHomepage(){
    $(".curvedContainer .checklistcontainer:gt(0)").css("display","none");

    initLoginPopup();
    initLanguagepop();

    $("#carou").carouFredSel();
    $("#carou").carouFredSel({
        items               : 6,
        scroll : {
            items           : 1,
            effect          : "easeOutBounce",
            duration        : 1000,
            pauseOnHover    : true
        }
    });

    $(".middleContainer .leftAero,.template_slide .leftAero").click(function(){
        $("#carou").trigger("prev",1);
    });
    $(".middleContainer .rightAero,.template_slide .rightAero").click(function() {
        $("#carou").trigger("next",1);
    });

    $(".janrain").createCurveContainer({
        left:12,
        right:12
    });

    $(".hometabs .tab[id^=checklist_menu]").hover(function() {
        var curMenu=$(this);
        $(".hometabs .tab[id^=checklist_menu]").removeClass("selected");
        curMenu.addClass("selected");

        var index=curMenu.attr("id").split("checklist_menu_")[1];
        $(".curvedContainer .checklistcontainer").css("display","none");
        $(".curvedContainer #checklist_content_"+index).css("display","block");
    });


    $("input[name=headsearch]").focus(function(){
        $(this).css("color","#002a41");
    });

    $("input[name=headsearch],input[name=msearch]").focus(function() {
        var curObj=$(this);
        if(curObj.val()==searchChecklistText) {
            curObj.val("");
        } else {
            curObj.select();
        }
    });

    $("input[name=headsearch],input[name=msearch]").blur(function() {
        var curObj=$(this);
        if($.trim(curObj.val()).length==0){
            curObj.val(searchChecklistText);
        }
    });

    $("input[name=headsearch]").blur(function(){
        if($.trim($(this).val())== searchChecklistText){
            $(this).css("color","#cacbcc");
        }
    });

    $(".searchPanel .center a").click(function(){
       // alert("search click");
    });

    //open login popup instead of redirecting.

    initCreateChecklistPopup();


    $("#useThisListLogonPopUP").click(function() {
    	redirectURL = useListRedirectURL;
    	//openRegisterPopUpRedirect();    	
    	$("#customizeChecklist").trigger('click');
    });

    //end

    $("#autotype1").initAutoComplete({
        "type":"type1"
    });
    $("#autotype2").initAutoComplete({
        "type":"type2"
    });
    $("#autotype4").initAutoComplete({
        "type":"type4"
    });


    bindPopEvent($("#publish-chk-pop"),$("a.publishJSPLogonPopUP"));
}

(function($){
    $.fn.initAutoComplete=function(settings){
        settings=$.extend({
            url:clAutoCompleteURL
        }, settings);
        var $target=this;
        $target.autocomplete(settings.url,{
            actype:settings.type,
            minChars:3,
            onItemSelect:function(li){
                var link=$(li).find("div").attr("link");
                if(saveChagesMode()){
                    var retVal = confirm(messages.unsaved_confirm);
                    if(retVal){
                    	if($.trim(link).length>0){
                            window.location=link;
                        }
                    }else{
                    	$target.val("");
                    }
                }else{
                	if($.trim(link).length>0){
                        window.location=link;
                    }else{
                        $target.val("");
                    }
                }
            }
        });
    };
})(jQuery);

function openLoginPopUpRedirect() {
	$("#logonForm input[name^=redirect]").val(redirectURL);
	$("#signupForm input[name^=redirect]").val(redirectURL);
	  logonPopup.showLogin();
}
function openRegisterPopUpRedirect() {
	$("#logonForm input[name^=redirect]").val(redirectURL);
	$("#signupForm input[name^=redirect]").val(redirectURL);
	logonPopup.showRegister();

}
function initLanguagepop(){
    $("#chLanguage").createCurveContainer({
        left:12,
        right:13,
        type:"type0"
    });
    $("#chLanguage").css("left",$(".headerPanel .right .language").position().left-1);
    $(".headerPanel .right .language").click(function(){
        $("#chLanguage").css("display","block");
    });

    $(".headerPanel .right").hover(function(){},function(){
        $("#chLanguage").css("display","none");
    });

    $("#chLanguage li").hover(function(){
        $(this).addClass("sel");
    }, function(){
        $(this).removeClass("sel");
    });

    $("#chLanguage li").click(function(){
        window.location=$(this).find("a").attr("href");
    });
}

function initLoginPopup() {
    $("a.register,a.logon",".headerPanel .right").click(function(){
        if($(this).hasClass("logon")) {
        	logonPopup.showLogin();
        } else {
        	logonPopup.showRegister();
        }
    });

    (function($){
        $.fn.extend({
            customStyle : function(options) {
                if(!$.browser.msie || ($.browser.msie&&$.browser.version>6)){
                    return this.each(function() {
                        var currentSelected = $(this).find(':selected');
                        $(this).after('<span class="customStyleSelectBox"><span class="customStyleSelectBoxInner">'+currentSelected.text()+'</span></span>').css({
                            position:'absolute',
                            opacity:0,
                            fontSize:$(this).next().css('font-size')
                        });
                        var selectBoxSpan = $(this).next();
                        var selectBoxWidth = parseInt($(this).width()) - parseInt(selectBoxSpan.css('padding-left')) -parseInt(selectBoxSpan.css('padding-right'));
                        var selectBoxSpanInner = selectBoxSpan.find(':first-child');
                        selectBoxSpan.css({
                            display:'inline-block'
                        });
                        selectBoxSpanInner.css({
                            width:selectBoxWidth,
                            display:'inline-block'
                        });

                        $(this).height(15).change(function(){
                            //selectBoxSpanInner.text($(this).val()).parent().addClass('changed');
                            selectBoxSpanInner.text($(this).find(':selected').text()).parent().addClass('changed');
                        });
                        $(this).keypress(function(){
                            selectBoxSpanInner.text($(this).find(':selected').text()).parent().addClass('changed');
                        });
                    });
                }
            }
        });
    })(jQuery);

    $('#countrySel','#login-pop').customStyle();
}

function initchkHeaderMenu(page){

    var setPopHeight=function(obj){
        var dataHeight =obj.data('height');
        if(dataHeight == undefined){
                dataHeight = obj.height()+3;
                obj.data('height', dataHeight);
        }
        obj.height(dataHeight);
    }

	//publish popup js start
    var initPublishPop=function(){
        $("#publish-pop").createCurveContainer({
            left:12,
            right:12,
            type:"type3"
        });

        var publishObj=$("#publish-pop");
        $("#publish-link").click(function(){
            if($("#publish-pop").css("display") == "block"){
            	publishObj.slideUp(15);
            }else{
                closeAllPopup();
                if(jQuery.browser.version=="7.0"){
                	setPopHeight(publishObj);
                }
                publishObj.slideDown(200);
            }
        });

        $(".close",publishObj).click(function(){
            $("#publish-link").trigger("click");
        });

    };
    //publish popup js end

  //share popup js start
    var initSharePop=function(){
        $("#share-pop").createCurveContainer({
            left:12,
            right:12,
            type:"type3"
        });

        $(".invite").createCurveContainer({
            left:12,
            right:12
        });

        var shareObj=$("#share-pop");
        $("#share-link").click(function(){
        	if(page=="template"){
        		if(loggedIn){
            		$("#customizeChecklist").trigger("click");
        			e.preventDefault();
        		}else{
        			chagePageMode();
        			$(".tempPop").css("display","block");
                    $("#outerLayer").css("display","block");
                    setAllPopup($(".tempPop"));
        		}        		
        	}else{
	            if($("#share-pop").css("display") == "block"){
	                shareObj.slideUp(15);
	            }else{
	                closeAllPopup();
	                if(jQuery.browser.version=="7.0"){
	                	setPopHeight(shareObj);
	                }
	                shareObj.slideDown(200);
            }
        	}
        });

        $(".close",shareObj).click(function(){
            $("#share-link").trigger("click");
        });

        $("#inviteForm",shareObj).validate({
            rules: {
                name:{
                    required:true,
                    minlength:3
                },
                email: {
                    required: true,
                    email: true
                }
            },
            messages: {
                name:{
                    required: messages.error_required,
                    minlength: messages.error_min_char_3
                },
                email: {
                    required: messages.error_required,
                    email: messages.email_format
                }
            },
            errorPlacement : jqFVErrorHandler,
            success: jqFVSuccess
        });

        $(".user .userIcon",shareObj).find("a.remove").bind("click",function(){
            var retVal = confirm(messages.stop_sharing_confirm);
            if(retVal){
                var hiddenForm=$("#hiddenForm");
                hiddenForm.find("input[name=action]").val("unShare");
                hiddenForm.find("input[name=checklist_id]").val(checklistId);
                var contactUsername=$(this).parent().attr("id").split("contact-username-")[1];
                hiddenForm.find("input[name=contactUsername]").val(contactUsername);
                hiddenForm[0].submit();
            }
        });

        $(".user .userIcon",shareObj).find("a.add").bind("click",function(){
            var retVal = confirm(messages.share_confirm);
            if(retVal){
                var hiddenForm=$("#hiddenForm");
                hiddenForm.find("input[name=action]").val("share");
                hiddenForm.find("input[name=checklist_id]").val(checklistId);
                var contactUsername=$(this).parent().attr("id").split("contact-username-")[1];
                hiddenForm.find("input[name=contactUsername]").val(contactUsername);
                hiddenForm[0].submit();
            }
        });

        var checkFormError=function(){
            if($("#inviteForm input.error",shareObj).length>0){
                if(!$("#btnInvite",shareObj).hasClass("dis")){
                    $("#btnInvite",shareObj).addClass("dis");
                }
                return;
            }
            if($("#inviteForm input.valid",shareObj).length==2){
                $("#btnInvite",shareObj).removeClass("dis");
            }
        }

        $("#inviteForm input",shareObj).bind("blur",checkFormError).bind("keyup",checkFormError);

        $("#btnInvite",shareObj).click(function(){
            if($(this).hasClass("dis")){
                return
            };
            $("#inviteForm").submit();
        });
    }
    //share popup js end

    // emded pop / customize-pop start
    var initCustomizePop=function(){

        var custObj=$("#customize-pop");

        var checklist_widget ={
            referer : "csn",
            id : "123",
            width : 400,
            border_color : "6694e3"
        };

        custObj.createCurveContainer({
            left:12,
            right:12,
            type:"type3"
        });
        $('.color',custObj).change(function(){
            $("#generate",custObj).trigger("click");
        });

        $("#publish-link").click(function(){
            if(custObj.css("display") != "block"){
                closeAllPopup();
                if(jQuery.browser.version=="7.0"){
                	setPopHeight(custObj);
                }
                custObj.slideDown(300);
            }else{
                custObj.slideUp(20);
            }

        },function(){
            custObj.slideUp(300);
        });

        $(".close",custObj).click(function(){
            $("#publish-link").trigger("click");
        });

        $("#preview",custObj).click(function(){
            var previewLink=custObj.find("input,select").map(function(){
                return $(this).attr("name")+"="+$(this).val();
            }).get().join("&");
            previewLink="checklistpreview?"+previewLink;
            window.open(previewLink,"");
        });
        $("input,select",custObj).change(function(){
            $("#generate",custObj).trigger("click");
        });

        $("#generate",custObj).click(function(){
            var jscode='<script type="text/javascript">\n<!-- \n var checklist_widget={\n';
            jscode+='referer : "'+checklist_widget.referer+'",\n';
            jscode+= 'id : "'+checklist_widget.id+'",\n';
            jscode+= 'width : '+$("#chkwidth",custObj).val()+',\n';
            jscode+= 'height : '+$("#chkheight",custObj).val()+',\n';
            jscode+= 'border_color : '+$('#bdColor').val()+'"\n';
            jscode+='}\n// -->\n</script>\n<script type="text/javascript" src="http://www.checklist.com/js/widget.js"></script>';
            $("#generatedcode",custObj).val(jscode);
        });
        $("#generate",custObj).trigger("click");
    };
    //embded - cutomize-pop end

    //setting popup start
    var initsettingPop=function(){
        var settingObj=$("#setting-pop");
        settingObj.createCurveContainer({
            left:12,
            right:12,
            type:"type3"
        });

        var checkBoxStatus=new Array();
        $("#settings-link").click(function(){
        	$('input[id^=day]').each(function(count){
        		checkBoxStatus[count]=$(this).attr('checked');
        	});
            if(settingObj.css('display') != 'block'){
                closeAllPopup();
                if(jQuery.browser.version=="7.0"){
                	setPopHeight(settingObj);
                }

                settingObj.slideDown(200);
            }else{
                settingObj.slideUp(20);
            }
        });

        $(".close,#cancel",settingObj).click(function(){
        	$('input[id^=day]').each(function(count){
        		$(this).attr('checked',checkBoxStatus[count]);
        	});
            $("#settings-link").trigger("click");
        });

        $("#save",settingObj).click(function(){
            var url = "checklist.do?";
            $(".dataContainer",settingObj).find("input[id^=day]").each(function(){
                url = url+"&"+[$(this).attr("name")]+"="+$(this).attr('checked');
            });

            $(".dataContainer",settingObj).find("input[name^=chkname]").each(function(){
                url = url+"&"+[$(this).attr("name")]+"="+$(this).val();
            });
            url += "&action=saveSettings&checklist_id="+checklistId;
            window.location = url;
        });

        $(".btnContainer .deleteIcon").click(function(){
        	var x = window.confirm("Are you sure you want to delete the Checklist?");
        	if(x) {
            window.location = 'checklist.do?action=deleteChecklist&checklist_id='+checklistId;
        	}
        });
    };
    //setting popup end

    //print popup start
    var initPrintPop=function(){
        var printObj=$('#print-pop');
        printObj.createCurveContainer({
            left:12,
            right:12,
            type:"type3"
        });
        $("#print-link").click(function(){
        	if(saveChagesMode()){
                $(".tempPop").css("display","block");
                $("#outerLayer").css("display","block");
                setAllPopup($(".tempPop"));
            }else{
	            if(printObj.css("display") != "block"){
	                closeAllPopup();
	                if(jQuery.browser.version=="7.0"){
	                   if(printObj.hasClass("template")){
	                	   $("#print-pop .btnContainer").css("padding-bottom","0px");
	                   }
	                   setPopHeight(printObj);
	                }
	                printObj.slideDown(200);
	            }else{
	                printObj.slideUp(20);
	            }
            }
        });

        $(".close","#print-pop").click(function(){
            $("#print-link").trigger("click");
        });
    };
    //print popup end
    initPrintPop();
    initSharePop();
    if(page=="template"){
        initCustomizePop();
    }else{
        initPublishPop();        
        initsettingPop();
        reminderCheckBox();
    }

}

function reminderCheckBox() {
	$('#reminders_daily').click(function() {
		$('input[id^=day]').attr('checked',true);
	});
	$('#reminders_never').click(function() {
		$('input[id^=day]').attr('checked',false);
	});

}

//common for all popup
function closeAllPopup(){
    if($("#share-pop").css("display")=="block"){
        $("#share-link").trigger("click");
    }
    if($("#customize-pop").css("display")=="block"){
        $("#publish-link").trigger("click");
    }
    if($("#setting-pop").css("display")=="block"){
        $("#settings-link").trigger("click");
    }
    if($("#print-pop").css("display")=="block"){
        $("#print-link").trigger("click");
    }
    if($("#publish-pop").css("display")=="block"){
    	$("#publish-link").trigger("click");
    }
    $("#taskandgroup").find(".group_list .group .gname .data").find(".button a:last").trigger("click");

    $(".taskEditPop").trigger("close",true);
}

function maptostring(map1){
    var str="";
    $.each(map1,function(key,value){
        str=str+key+'='+value+'&';
    });
    str=str.substr(0, str.length-1);
}

function initCheckList() {

    //checklist tab
    //    $(".chkmenu .chk_menu_center .tab").click(function(){
    //        $(".chkmenu .chk_menu_center .tab").removeClass("sel");
    //        $(this).addClass("sel");
    //    });

    // add task & group
    $("#taskandgroup").createCurveContainer({
        left:40,
        right:12,
        type:"type2"
    });

    $(".group_list").css("min-height",$(".chkmenu .chk_menu_center").height()+100);

    $("#addtask-pop").createCurveContainer({
        left:14,
        right:14,
        type:"type4"
    });

    
    var singleTaskDeMsg=messages.newtask_group;
    var multipleTaskDeMsg = messages.newtask_perlin;
    $(".addtask .taskTextField").val(singleTaskDeMsg);
    $(".addtask textarea").val(multipleTaskDeMsg);
    
    $(".addtask .taskTextField").focus(function(){
        if($.trim($(this).val())==singleTaskDeMsg){
            $(this).val("").removeClass('default');
        }
        if(opened_task){
        	$(".taskEditPop").find('.c').trigger("close", true);
        } else {
        	return false;
        }
    });
    
    $(".addtask textarea").focus(function(){
        if($.trim($(this).val())==multipleTaskDeMsg){
            $(this).val("").removeClass('default');
        }
        $(this).css()
    });

    $(".addtask .taskTextField").blur(function(){
        if($.trim($(this).val()).length==0){
        	$(this).val(singleTaskDeMsg).addClass('default').css("color","#abbfca");
        }
    });
    $(".addtask textarea").blur(function(){
        if($.trim($(this).val()).length==0){       	
        	$(this).val(multipleTaskDeMsg).addClass('default').css("color","#abbfca");
        }
    });

    $(".addtask .taskTextField,.addtask textarea").keydown(function(){
        if($.trim($(this).val()).length>0){
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#000");
            $(this).css("color","#000");
        }else{
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
        }
    });

    $(".addtask .clink").click(function(){
    	single_task_val=$(".addtask input").val(); //text on the single task field
        $("#addtask-pop").css("z-index","50");
        $("#addtask-pop").css("display","block");
        if(single_task_val == singleTaskDeMsg){
        	$(".addtask textArea").val(multipleTaskDeMsg).css("color","#abbfca");
        }else{
        	$(".addtask textArea").val(single_task_val).css("color","#000");   
        }
        //this removes the msg from the textarea
        //$(".addtask textArea").focus();
        $(".addtask .taskTextField").val("");
        $(".addtask_button #btnAddGroup").css("display","none");
        $(".addtaskMain #btnAddTask").find("li.c").html('<a href="javascript:void(0);">Add Tasks</a>');
    });

    $("#addtask-pop textarea").keydown(function(e){
    	if(e.keyCode == 13){
    		 var lines = $(this).val().split("\n");
    		 var totalLines = lines.length + 2;
    		 if(totalLines > 5){
    			 $(this).height(totalLines*27 + "px");
    		 }
    	}
    });
    $("#addtask-pop textarea").keyup(function(e){
    	if(e.keyCode == 8 || e.keyCode == 46){
    		 var lines = $(this).val().split("\n");
    		 var totalLines = lines.length + 1;
    		 if(totalLines > 5){
    			 $(this).height(totalLines*27 + "px");
    		 }else{
    			 if($(this).height() > 27*5){
    				 $(this).height(27*5 + "px");
    			 }
    		 }
    	}
    });
    $("#addtask-pop .taskLink a").click(function(){
        $(this).parent().parent().find("textarea").val("");
        $("#addtask-pop").css("display","none");
        $(".addtask .taskTextField").css("color","#002a41").focus();
        $(".addtaskMain #btnAddTask").find("li.c").html('<a href="javascript:void(0);">Add Task</a>');
        $(".addtask_button #btnAddGroup").css("display","block");
    });

    $(".addtaskMain #btnAddTask").click(function(){
        var task_listObj=$("#taskandgroup").find(".group_list .task_list:first");
        var param = null;
        //add multiple tasks
        if($("#addtask-pop").css("display")=="block"){
            var textarea=$(".addtask textarea");
            
            if($.trim(textarea.val())==multipleTaskDeMsg || $.trim(textarea.val())==""){
                return;
            }
            var taskNames = textarea.val();
            param = {
                'action' : 'addMultipleTasks',
                'name' : taskNames,
                'checklist_id' : checklistId
            };
            jqueryAjax("checklist.do", param, function(data){

            	if(data) {
                var taskids = data.split("\n");
                taskNames = taskNames.split("\n");
                var newTaskNames = new Array();
                for(var i=0;i<taskNames.length;i++){
                	if($.trim(taskNames[i]).length > 0){
                		newTaskNames[newTaskNames.length]=taskNames[i];
                	}
                }
                taskNames = newTaskNames;
                var html ="";
                for(var i=0; i < taskids.length; i++){
                	if($.trim(taskids[i]).length>0){
                    html += '<div class="task" id="task-id-'+taskids[i]+'"><div class="dnd"></div><a></a><div><span class="data">'+taskNames[i]+'</span></div></div>';
                }
                }
	                
	                //adds the tasks to the list:
            		task_adder(html);
	                
	                //task_listObj.prepend(html); : replaced with upper one
                textarea.val(multipleTaskDeMsg).css("color","#cacbcc");
                $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
                $("#addtask-pop .taskLink a").trigger("click");
                for(i=0; i < taskids.length; i++){
                	if($.trim(taskids[i]).length>0){
                    initTaskGrpTable(taskids[i]);
                }
                }
                } else {
                	location.reload();
                }
            });
        //add single task if one task:
        }else{
            var inputObj=$(".addtask .taskTextField");
            if($.trim(inputObj.val())==singleTaskDeMsg || $.trim(inputObj.val())==""){
                return;
            }
            param = {
                'action' : 'addTask',
                'name' : inputObj.val(),
                'checklist_id' : checklistId
            };
            jqueryAjax("checklist.do", param,function(data){
            	if(data) {
            		html='<div class="task" id="task-id-'+data+'"><div class="dnd"></div><a></a><div><span class="data">'+inputObj.val()+'</span></div></div>';
            		//addes the tasks to the list:
            		task_adder(html);
                inputObj.val('').css("color","#cacbcc");
                $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
                initTaskGrpTable(data);
            	} else {
            		location.reload();
            	}
            });
        }
    });

    $(".addtaskMain #btnAddGroup").click(function(){
        var inputObj=$(".addtask .taskTextField");

        if($.trim(inputObj.val())==messages.newtask_group){
            return;
        }

        var param=new Object();
        param['action']="addGroup";
        param['name']=inputObj.val();
        param['checklist_id']=checklistId;

        jqueryAjax("checklist.do", param,function(data){
        	if(data) {
            var grpObj=$("#taskandgroup").find(".group_list .group:first");
            grpObj.before('<div class="group"><div class="gname"><div class="dn"></div><div class="data">'+inputObj.val()+'</div></div><div class="task_list"><div class="task" id="task-id-'+data+'"><div class="dnd"></div><a></a><div><span class="data">'+messages.caption_newtask+'</span></div></div></div></div>');
            inputObj.val(messages.newtask_group).css("color","#cacbcc");
            initTaskGrpTable(data);
        	} else {
        		location.reload();
        	}
        });
    });
    
    //tip link click & google track
    if($(".a_tip .tiplink").not(".taskEditPop .a_tip .tiplink").length>0){
    	_gaq.push(['_trackEvent','ads', 'view','checklist_multiple']);    	
    	$(".a_tip .tiplink").not(".taskEditPop .a_tip .tiplink").click(function(){
    		_gaq.push(['_trackEvent','ads', 'click','checklist_multiple']);
    	});
    }

    $(".group_list .group .task a.check").each(function(){
        $(this).parent().find("div:last").css("text-decoration","line-through");
    });

    $(".group_list .group .task a").live("click",function(){
        var curObj=$(this);
        var param=new Object();
        param['task_id']=(curObj.parent().attr("id")).split("task-id-")[1];
        param["action"] = "updateTaskStatus";
        if(curObj.hasClass("check")){
            param["status"] = curObj.hasClass("check")? 0 : 1;
            jqueryAjax("checklist.do", param,function(data){
            	if(data) {
                curObj.parent().find("div:last").css("text-decoration","none");
                curObj.removeClass("check");
            	} else {
            		location.reload();
            	}
            });
        }else{
            param["status"] = curObj.hasClass("check")? 0 : 1;
            jqueryAjax("checklist.do", param,function(data){
            	if(data) {
                curObj.parent().find("div:last").css("text-decoration","line-through");
                curObj.addClass("check");
            	} else {
            		location.reload();
            	}
            });
        }
    });

    initchkHeaderMenu('checklist');

    //prestored task data
    if (window.storedTasks) {
        for(var z in storedTasks) {
            var task = $('#task-id-'+storedTasks[z].id);

            task.data(
            	'taskData', {
                'id' : storedTasks[z].id,
                'date' : storedTasks[z].date,
                'isTime' : storedTasks[z].isTime,
                'time' : storedTasks[z].hours+":"+storedTasks[z].minutes,
                'hours' : storedTasks[z].hours,
                'minutes' : storedTasks[z].minutes,
                'reminder' : storedTasks[z].reminder,
                'sharewith' : storedTasks[z].sharewith,
                'task_template_id': storedTasks[z].task_template_id,
                'tip_url' : storedTasks[z].tip_url,
                'tip_title' : storedTasks[z].tip_title
        }
            );
        }
    }

    //task group edit popup start
    $(".taskEditText").createCurveContainer({
        left:12,
        right:12
    });

    $(".taskEditPop .reminder").createCurveContainer({
        left:12,
        right:12
    });

    var editFlag=false;

    var taskgroupEditPop=function(){
    	var removeEmptyGroups = function(){
    		$(".group").each(function(){
    			if($(this).find(".task").length == 0){
    				$(this).remove();
    			}
    		});
    	};
        $("#taskandgroup").find(".group_list .group .gname .data").unbind("click.groupEdit");
        $("#taskandgroup").find(".group_list .group .gname .data").bind("click.groupEdit",function(){
            if($(this).find("input").length==0){
                closeAllPopup();
                var curObj= $(this);
                var orgHtml=$.trim(curObj.text());
                var saveLink;
                var cancelLink;

                var inputDiv=$(document.createElement("div")).attr("class","input");
                var editInput=$(document.createElement("input")).attr("type","text").css({"width": "113%"}).val(orgHtml).bind("keydown",function(e){
                    if(e.keyCode==13){
                    	saveLink.trigger("click");
                    }else if(e.keyCode==27){
                    	cancelLink.trigger('click');
                    }
                })
                .bind("blur", function(){
                	saveLink.trigger("click");
                })
                ;
                inputDiv.append(editInput);
                var buttonDiv=$(document.createElement("div")).attr("class","button").html('<a class="editBtn"  href="javascript:void(0)">'+messages.caption_save+'</a><a class="editBtn"  href="javascript:void(0)">'+messages.caption_cancel+'</a>');
                buttonDiv.css({"display": "none"});

                curObj.html("");
                curObj.append(inputDiv);
                curObj.append(buttonDiv);
                editInput.focus();
                saveLink = curObj.find(".button a:first");
                cancelLink = curObj.find(".button a:last");
                saveLink.click(function(){
                    var param=new Object();
                    param['action']='updateGroupName';
                    param['name']=editInput.val();
                    var groupDiv = curObj.parents(".group");
                    var taskId = groupDiv.find(".task").first().attr("id").split("task-id-")[1];
                    param['task_id'] = taskId;

                    jqueryAjax("checklist.do", param,function(data){
                    	if(data) {
                    		var val = $.trim(editInput.val());
                    		if(val.length == 0){
                    			curObj.html("&nbsp;");
                    		}else{
                    			curObj.html(val);
                    		}
                    		return false;
                    	} else {
                    		location.reload();
                    	}
                    });
                });

                cancelLink.click(function(){
                	if(orgHtml.length == 0){
                		curObj.html("&nbsp;");
                	}else{
                		curObj.html(orgHtml);
                	}
                    return false;
                });
                editInput.focus();
            }
        });

        $("#taskandgroup").find(".group_list .task_list .task").find("div:last").unbind("click.taskedit");
        $("#taskandgroup").find(".group_list .task_list .task").find("div:last").bind("click.taskedit",function(){
            closeAllPopup();
            var curTask=$(this).parent();

            var taskEditObj=$(".taskEditPop").clone();

            var taskid = curTask.attr("id").split("task-id-")[1];          
            var checked = curTask.find("a").hasClass("check");
            
            //turn the "opened_task" into true;
            opened_task=true;
            //first of all: remove visited task from document:
            $('.visited_task').removeClass('visited_task');
            //then add a task visited border:
            curTask.addClass('visited_task');

            //Task Checkbox
            $(".taskTextDiv>a",taskEditObj).click(function(){
                var action = ($(this).hasClass("checked"))?"uncheck":"check";
                if(action == "check"){
                    $(this).addClass("checked");
                }else{
                    $(this).removeClass("checked");
                }
                var param = {
                    'action' : 'updateTaskStatus',
                    'task_id' : taskid,
                    'status' : (action == "check" )? 1 : 0
                };
                jqueryAjax("checklist.do", param,function(data){
                	if(!data) {
                		location.reload();
                	}

                });
            });
            if(checked){
                $(".taskTextDiv>a",taskEditObj).addClass("checked");
            }

            //task html edit
            $(".taskTextDiv input",taskEditObj).val($.trim(curTask.find(".data").html()));
            $(".taskTextDiv input",taskEditObj).blur(function(){
                var param=new Object();
                param['action']='updateTaskName';
                param['task_id']=taskid;
                param[$(this).attr("name")]=$(this).val();
                // maptostring(param);
                jqueryAjax("checklist.do", param,function(data){
                	if(!data) {
                		location.reload();
                	}
                });
            });

            //note html edit
            var noteval = curTask.find(".note").html();
            noteval = (noteval==null || noteval=="")?messages.caption_note:$.trim(curTask.find("div .note").html());
            $("textarea",taskEditObj).val(noteval);            

            $("textarea",taskEditObj).focus(function(){
                if($.trim($(this).val())==messages.caption_note){
                    $(this).val("");
                }
            });

            $("textarea",taskEditObj).blur(function(){
                var curObj=$(this);
                if($.trim(curObj.val())==messages.caption_note){
                    return;
                }
                var param=new Object();
                param['action']='updateTaskNotes';
                param[curObj.attr("name")]=curObj.val();
                param['task_id']=taskid;
                //maptostring(param);
                jqueryAjax("checklist.do", param,function(data){
                	if(data) {
                    if($.trim(curObj.val()).length==0){
                        curObj.val(messages.caption_note);
                    }
                    }  else {
                    	location.reload();
                    }
                });
            });


            //set data using task object
            var taskData=curTask.data("taskData");
            _gaq.push(['_trackEvent', 'open_task', taskData.task_template_id]);
            
            //display tip if tip_url exists
            if(typeof taskData.tip_url!="undefined" && (taskData.tip_url).length>0 && (taskData.tip_title).length>0){
            	_gaq.push(['_trackEvent','ads', 'view', taskData.task_template_id]);
            	
            	var $tip=$('.a_tip',taskEditObj);            	
            	$("a",$tip).attr("href",taskData.tip_url).html(taskData.tip_title).click(function(){
            		_gaq.push(['_trackEvent','ads', 'click', taskData.task_template_id]);
            	});
            	
            	$tip.css("display","block");
            }

            var rmddate=taskData.date;
            if($.trim(rmddate).length==0){
                rmddate=null;
            }
            $("#rmddate",taskEditObj).val(taskData.date);

            if($.trim(taskData.time).length>1){
                $("#rmdtime",taskEditObj).val(taskData.time);
            }

            if($("#rmddate",taskEditObj).val()==""){
            	$("#rmdtime",taskEditObj).val("HH:MM");
            	$("#rmdtime",taskEditObj).attr("disabled","disabled");
            }

            if(taskData.reminder==undefined || $.trim(taskData.reminder).length==0 || $.trim(taskData.reminder)=="set"){
                $("#rmdstatus",taskEditObj).html("set");
                $(".reminder .delRmd", taskEditObj).css('display','none');
            }else{
                $("#rmdstatus",taskEditObj).html($.trim(taskData.reminder));
                $(".reminder .delRmd", taskEditObj).css('display','inline-block');
            }

            $(".reminder .delRmd",taskEditObj).live("click",function(){
                var param=new Object();
                param['task_id']=taskid;
                param['action']="clearReminder";
                // maptostring(param);
                jqueryAjax("checklist.do", param,function(data){
                	if(data == 'ok') {
                    $(".reminder .delRmd",taskEditObj).hide();
                    $("#rmdstatus",taskEditObj).html("set");
                    $("#rmdstatus",taskEditObj).show();
                    $(".reminder .rmdDiv").hide();
                    taskData.reminder='';
                	} else {
                		 location.reload();

                	}
                });
            });

            $("#rmddate",taskEditObj).keydown(function(e){
        		e.preventDefault();
            });
            
            
            //reminder date picker
            $("#rmddate",taskEditObj).datepicker({
                showOn:"both",
                defaultDate:rmddate,
                buttonImage:"../../images/calender.png",
                dateFormat:'dd-M-yy',
                altFormat: "yy-mm-dd",
                altField:	'#alt_datefield',
                minDate:new Date(),
                onSelect:function(){
                    $("#rmdtime",taskEditObj).trigger("blur");
                    $("#rmdtime",taskEditObj).attr("disabled","");
                }
            });

            //reminder date & time blur
            $("#rmdtime",taskEditObj).focus(function(){
                if($.trim($(this).val())=="HH:MM"){
                    $(this).val("");
                }
            });

            $("#rmdtime",taskEditObj).keypress(function(e){
                var charCode;
                if ((e.charCode) && (e.keyCode==0))
                    charCode = e.charCode;
                else
                    charCode = e.keyCode;

                if((charCode>=48 && charCode<=57) || charCode==0 || charCode==58){
                    return true;
                }else{
                    return false;
                }
            });

            $("#rmdtime",taskEditObj).blur(function(){
                var curVal=$.trim($(this).val());
                if(!curVal.match("^([01]?[0-9]|2[0-3]):[0-5][0-9]$")){
                    $(this).val("HH:MM");
                }
                var param=new Object();
                param['action']='updateDueDate';
                param['task_id']=taskid;
                param[$("#rmddate",taskEditObj).attr("name")]=$.trim($("#alt_datefield").val());
                param[$("#rmdtime",taskEditObj).attr("name")]=$.trim($("#rmdtime").val());
                //    maptostring(param);
                jqueryAjax("checklist.do", param,function(data){
                	if(data == 'ok') {
                    taskData.date=$("#rmddate").val();
                    taskData.time=$("#rmdtime").val();
                	} else {
                		location.reload();
                	}
                });
            });

            //reminder status
            $(".reminder",taskEditObj).find(".clr:last").css("display","none");
            $("#rmdstatus",taskEditObj).click(function(){
            	if($("#rmddate",taskEditObj).val()==""){
            		$("#rmdstatus",taskEditObj).html("set");
            		$("#rmdstatus",taskEditObj).attr("disabled","disabled");
            	}else{
                var status=$(this);
                if($.trim(status.html())!="set"){
                    var rmdval=$.trim(taskData.reminder).split(" ");
                    $(".rmdDiv input",taskEditObj).val(rmdval[0]);
                    $(".rmdDiv select",taskEditObj).val(rmdval[1]);
                }else{
                    $(".rmdDiv input",taskEditObj).val("30");
                    $(".rmdDiv select",taskEditObj).val("mins");
                }
                $(this).hide();
                $(".reminder .delRmd", taskEditObj).css('display','inline-block');
                $(".reminder .rmdDiv", taskEditObj).css("display","inline-block");
            }});

            $(".reminder .rmdDiv", taskEditObj).find("input").focus(function(){
                $(this).data("curValue", $(this).val());
            });
            $(".reminder .rmdDiv", taskEditObj).find("input").blur(function(){
                if(isNaN($(this).val()) || parseInt($(this).val()) < 0){
                    $(this).val($(this).data('curValue'));
                }
            });

            $("#btnSet",taskEditObj).click(function(){
                //TODO validate data, if valid then only do the following, otherwise return
                var param=new Object();
                param['action']='updateReminder';
                param['task_id']=taskid;
                $(".rmdDiv",taskEditObj).find("input,select").each(function(){
                    param[$(this).attr("name")]=$(this).val();
                });
                //map tostring(param);
                jqueryAjax("checklist.do", param,function(data){
                	if(data =='ok') {
                    var reminder=$(".rmdDiv input",taskEditObj).val()+" "+$(".rmdDiv select",taskEditObj).val();
                    $("#rmdstatus",taskEditObj).html(reminder);
                    $("#rmdstatus",taskEditObj).show();
                    $(".reminder .rmdDiv", taskEditObj).hide();
                    taskData.reminder=reminder;
                	} else {
                		location.reload();
                	}
                });
            });

            //clear duedate & reminder
            $(".reminder .clrLink",taskEditObj).click(function(){
                var param=new Object();
                param['task_id']=taskid;
                param['action']="clearDueDate";

                jqueryAjax("checklist.do", param,function(data){
                	if(data == 'ok') {
                    $("#rmddate",taskEditObj).val("");
                    $("#rmdtime",taskEditObj).val("HH:MM");

                   // $(".reminder .delRmd",taskEditObj).trigger("click");
                    taskData.date='';
                    taskData.time='';
                    taskData.hours='';
                    taskData.minutes='';
                    $(".reminder .delRmd",taskEditObj).hide();
                    $("#rmdstatus",taskEditObj).html("set");
                    $("#rmdstatus",taskEditObj).show();
                    $(".reminder .rmdDiv").hide();
                    $("#rmdtime",taskEditObj).attr("disabled","disabled");
                    taskData.reminder='';
                	} else {
                		location.reload();
                	}
                });
            });

            //share & invite user
            $(".invite .user",taskEditObj).html("");
            if(taskData.sharewith!=undefined || $.trim(taskData.sharewith).length!=0){
                var users=taskData.sharewith;
                for(var i=0;i<users.length;i++){
                    $(".invite .user",taskEditObj).append('<div class="userIcon" id="user-id-'+users[i].userid+'">'+users[i].username+'<a></a></div>');
                }
            }

            $("#btnInvite",taskEditObj).click(function(){
                var input=$(".invite input",taskEditObj);
                if($.trim(input.val()).length!=0){
                    var param=new Object();
                    param[input.attr("name")]=input.val();

                    jqueryAjax("checklist.do",param,function(data){
                    	if(data) {
                        $(".user",taskEditObj).append('<div class="userIcon">'+input.val()+'<a></a></div>');
                        input.val("");
                    	} else {
                    		location.reload();
                    	}
                    });
                }
            });

            $(".user .userIcon",taskEditObj).find("a").bind("click",function(e){
                var param=new Object();
                param['userid']=$(this).parent().attr("id").split("user-id-")[1];
                param['taskid']=taskid;

                jqueryAjax("checklist.do",param,function(data){
                	if(data) {
                    $(e.target).parent().remove();
                	} else {
                		location.reload();
                	}
                });
            });

            $(document).bind('keydown.taskedit', function(e){
            	//change 27 (escape) into 13 (enter)
            	if(e.keyCode == 13){
            		$(".taskTextDiv input").trigger('blur');
            		$("textarea",taskEditObj).trigger('blur');
            		taskEditObj.trigger('close');
            	}

            });

            //close btn event
            taskEditObj.bind("close",function(immediate){
            	opened_task=false;
            	$("document").unbind('keydown.taskedit');
                var time = 0;
                if(!immediate)
                    time = 300;
                var note=$.trim($("textarea",taskEditObj).val());
                if(note==messages.caption_note){
                    note="";
                }
                curTask.find("div:last").html("<span class='data'>"+$(".taskTextDiv input",taskEditObj).val()+"</span><span class='note'>"+note+"</span>");
                taskEditObj.slideUp(time,function(){
                    editFlag=false;
                    taskEditObj.remove();
                    curTask.css("display","block");
                });
            });



            taskEditObj.find(".close_button .btn ul").click(function(){
                taskEditObj.trigger("close",true);
            });

            //delete icon click
            taskEditObj.find(".close_button .deleteIcon").click(function(){
            	//before deletion: get the index of the inhering task:
            	//get the index of the task we want to delete:
            	task_order=taskEditObj.index();
            	all_tasks=taskEditObj.siblings();

                //curTask.addClass('visited_task');
                var param=new Object();
                param['task_id']=taskid;
                param['action']="deleteTask";

                jqueryAjax("checklist.do", param,function(data){
                	if(data == 'ok') {
                    taskEditObj.slideUp(300,function(){
                        editFlag=false;
                        taskEditObj.remove();
                        curTask.remove();
                        removeEmptyGroups();
	                    });
	                    
	                    //adds the visited class:
	                	//if the deleted task is the first: move border to the next. if not, move border to previes:
	                	if(task_order==1) {
	                		all_tasks.eq(1).addClass('visited_task');
	                	}else{
	                		//-2 because 1 of the 1 backwards and the other 1 because index() in jq starts at 1 and eq() starts with 0
	                		all_tasks.eq(task_order-1-1).addClass('visited_task');
	                	}
	                	opened_task=false;
                    } else {
                    	location.reload();
                    }
                    });

            });

            curTask.css("display","none");
            curTask.after(taskEditObj);
            if(jQuery.browser.version=="7.0"){
                taskEditObj.height(taskEditObj.height());
            }
            taskEditObj.slideDown(500);
            $("#taskandgroup").data("oldObj",taskEditObj);
            $(".taskEditName:first").focus();
        });
    };
    taskgroupEditPop();
    //task group edit popup end

    var makeSortable = function(){
        $('.task_list').sortable({
            handle : $('.task_list .dnd'),
            revert : true,
            opacity : 0.90,
            forcePlaceholderSize : true,
            connectWith : '.task_list',
            start : function (e, ui){
                //save the order of the task before moving
                var movingTaskId = $(ui.item).attr("id");
                var order = 0;
                $(".task_list .task").each(function(index){
                    if($(this).attr('id') == movingTaskId){
                        order = index;
                        return false;
                    }
                    return true;
                });
                ui.item.data("startindex",order);
            },
            stop : function (e, ui){
                //find the moved task order
                var movedTaskId = $(ui.item).attr("id");
                var movedOrder = 0;
                $(".task_list .task").each(function(index){
                    if($(this).attr('id') == movedTaskId){
                        movedOrder = index;
                        return false;
                    }
                    return true;
                });

                //If actually no change in position, return
                if(ui.item.data("startindex") == movedOrder){
                    return;
                }

                ui.item.css("filter","");
                var taskid=movedTaskId.split("task-id-")[1];
                var gname=$(ui.item).parent().parent().find(".gname .data").html();
                var param=new Object();
                param['task_id']=taskid;
                param['group']=gname;
                param['action']='moveTask';
                param['order']= movedOrder;
                jqueryAjax("checklist.do", param,function(data){
                	if(!data) {
                		location.reload();
                	}
                });
            }
        });

        $('.group_list').sortable({
            handle : $('.group .dn'),
            revert : true,
            opacity : 0.90,
            forcePlaceholderSize : true,
            connectWith : '.group_list',
            start : function (e, ui){
                //save the order of the task before moving
                var movingGroupId = $(ui.item).find(".task_list .task:first").attr("id");
                var order = 0;
                $(".task_list .task").each(function(index){
                    if($(this).attr('id') == movingGroupId){
                        order = index;
                        return false;
                    }
                    return true;
                });
                ui.item.data("startindex",order);

            },
            stop : function (e, ui){
                //find the moved group order
                var movedGroupId = $(ui.item).find(".task_list .task:first").attr("id"); //id of the first task in the moved group
                var movedOrder = 0;
                $(".task_list .task").each(function(index){
                    if($(this).attr('id') == movedGroupId){
                        movedOrder = index;
                        return false;
                    }
                    return true;
                });

                //If actually no change in position, return
                if(ui.item.data("startindex") == movedOrder){
                    return;
                }

                ui.item.css("filter","");
                var taskid=movedGroupId.split("task-id-")[1];
                //var gname=$(ui.item).find(".data").html();

                var param=new Object();
                param['task_id']=taskid;
                param['order']=movedOrder;
                param['action']='moveGroup';
                jqueryAjax("checklist.do", param,function(data){
                	if(!data) {
                		location.reload();
                	}
                });
            }
        });
    };

    makeSortable();

    //task & group table initilization
    var initTaskGrpTable=function(taskid){
        if(taskid!=undefined){
            makeSortable();
            var task = $('#task-id-'+taskid);
            task.data('taskData', {
                'id' : taskid,
                'date' : '',
                'isTime' : true,
                'time' : '',
                'hours' : '',
                'minutes' : '',
                'reminder' : '',
                'sharewith' : []
            });
            taskgroupEditPop();
        }
    };
    //this is called on click of task on dashboard. It ensures that the task is opened in edit mode as soon as the checklist page is opened.
    if(taskId != undefined && taskId != ""){
    	var task = $("#task-id-"+taskId);
    	task.find("div:last").trigger("click");
    	$(document).scrollTop(task.next(".taskEditPop").offset().top);
    }
}

function initTop10Tasks(){


    // add task & group
    $("#taskandgroup").createCurveContainer({
        left:40,
        right:12,
        type:"type2"
    });

    $("#taskandgroup .centerCenter").css("min-height",($(".chkmenu").height() + 50));

    $("#addtask-pop").createCurveContainer({
        left:14,
        right:14,
        type:"type4"
    });

    var chkDesc=messages.caption_clname;
    $(".addtask .taskTextField").val(chkDesc); 
    $(".addtask .taskTextField").focus(function(){
        if($.trim($(this).val())==chkDesc){
            $(this).val("").removeClass('default');
        }
    });

    $(".addtask .taskTextField").blur(function(){
        if($.trim($(this).val()).length==0){
        	$(this).val(chkDesc).addClass('default');            
        }
    });

    $("#autotype3").autocomplete(clAutoCompleteURL,{
        actype:"type3",
        minChars:3,
        onItemSelect:function(li){
            var link=$(li).find("div").attr("link");
            window.location=link;
        }
    });
    $("#mini-dashboard form").validate({
    	rules: {
    	name:{
    	required:true,
    	minlength:3,
    	maxlength: 30
    }
    },
    messages: {
    	name:{
    	required: messages.error_required,
    	minlength: messages.error_min_char_3,
    	maxlength: messages.error_max_char_30
    }

    },
    errorPlacement : jqFVErrorHandler,
    success: jqFVSuccess
    });
}

function initLeftColumnPrivatePages() {
	initCreateChecklistPopup();
}

function initCreateChecklistPopup(){
	var addchkpop=$("#addchk-pop");
    $("#createchecklistPopupLink").click(function(){
        addchkpop.css("display","block");
        $(".popupBackLayer").css("display","block");
        $("#addchk-pop input[name=name]").focus();
        setAllPopup(addchkpop);
    });

    addchkpop.find(".btn input[type=button],.btnClose").click(function(){
        addchkpop.find(".textBack input").val("");
        addchkpop.css("display","none");
        $(".popupBackLayer").css("display","none");
    });
    $(".centerAlign").append(addchkpop.remove(true));
}

function initTemplatepage(){
    $("#taskandgroup").createCurveContainer({
        left:40,
        right:12,
        type:"type2"
    });

    $("#taskandgroup .centerCenter.type2:first").css("min-height",$(".chkmenu .chk_menu_center").height()+50);

    $("#carou").carouFredSel();
    $("#carou").carouFredSel({
        items               : 6,
        scroll : {
            items           : 1,
            effect          : "easeOutBounce",
            duration        : 1000,
            pauseOnHover    : true
        }
    });

    $(".template_slide .leftAero").click(function(){
        $("#carou").trigger("prev",1);
    });

    $(".template_slide .rightAero").click(function(){
        $("#carou").trigger("next",1);
    });

    //contact form validation
    $("#contactDetailForm").validate({
        rules: {
            email: {
                required: true,
                email: true
            }
        },
        messages: {
            email: {
                required: messages.error_required,
                email: messages.email_format
            }
        },
        errorPlacement : jqFVErrorHandler,
        success: jqFVSuccess
    });

    var contactValidate=function(){
    	if($("#contactDetailForm input.error").length==0){
    		$('#contactDetailForm .ContactbuttonClass').removeClass("dis");
    	}else{
    		$('#contactDetailForm .ContactbuttonClass').addClass("dis");
    	}
    }

    $('#contactDetailForm input').blur(contactValidate).keyup(contactValidate);



    var reviewObj=$("#review-pop");
    reviewObj.createCurveContainer({
        left:12,
        right:12
    });

    $(".writeReview").createCurveContainer({
        left:12,
        right:12
    });

    var heightOuter=0;
    $(".useThis .outer").find("p").each(function(){
        heightOuter+=$(this).height();
    });

    if(heightOuter<42){
        $(".useThis span").css("display","none");
    }

    $(".useThis span").toggle(function(){
        $(".useThis .outer").animate({
            "height":heightOuter+"px"
        },200);
        $(this).addClass("rev");
    },function(){
        $(".useThis .outer").animate({
            "height":"40px"
        },200);
        $(this).removeClass("rev");
    });

    $("#taskandgroup .group_list").mousemove(function(e){
        $(".useThisHover").css({"left":e.pageX+"px","top":e.pageY+"px","display":"block"});
    });

    $("#taskandgroup .group_list").hover(function(){},function(){$(".useThisHover").css("display","none");});

    $("#taskandgroup .group_list").click(function() {
    	if(!previewPublishedTemplate) {
    		if($(".useThisHover a").attr('name')) {
    			window.location = useListRedirectURL;
    		} else {
    			$("#useThisListLogonPopUP").trigger('click');
    		}
    	}
    });
    $("#wreview").toggle(function(){
    	if(!loggedIn){
    		logonPopup.showLogin();
    	}
        if(jQuery.browser.version=="7.0"){
            reviewObj.height(212);
        }
        reviewObj.slideDown(300);
    },function(){
        reviewObj.slideUp(300);
    });

    $(".writeReview textarea","#review-pop").val(messages.review);
    $(".writeReview textarea","#review-pop").focus(function(){
        if($(this).val()==messages.review){
            $(this).val("").css("color","#002a41");
        }
    });
    $(".writeReview textarea","#review-pop").blur(function(){
        if($.trim($(this).val()).length==0){
            $(this).val(messages.review).css("color","#cacbcc");
        }
    });

    $(".rating span",reviewObj).click(function(){
        var curEle=$(this);
        curEle.parent().find("span").attr("class","rvw_bigStar_grey");
        curEle.parent().find("span:lt("+(curEle.index()+1)+")").attr("class","rvw_bigStar");
    });

    $("#cancel",reviewObj).click(function(){
        $(".rating span",reviewObj).attr("class","rvw_bigStar_grey");
        $("textarea",reviewObj).val(messages.review).css("color","#cacbcc");
        $(".rvwContainer #wreview").trigger("click");
    });

    $("#save",reviewObj).click(function(){
        var textarea=$("textarea",reviewObj);

        var url=$("#reviewForm").attr("action")+"?";
        url+=textarea.attr("name")+"="+textarea.val()+"&rating="+$(".rating span.rvw_bigStar",reviewObj).length;

        document.getElementsByName("reviewForm")[0].action=url;
        document.getElementsByName("reviewForm")[0].submit();

        $(".rating span",reviewObj).attr("class","rvw_bigStar_grey");
        textarea.val(messages.review).css("color","#cacbcc");
        $(".rvwContainer #wreview").trigger("click");

    });
    initchkHeaderMenu('template');
    var customizeChkPop=$("#custom-chk-pop");
    $("#customizeChecklist").click(function(){    	    		
    	_gaq.push(['_trackEvent', 'customize_checklist', 'popup']);
    	customizeChkPop.css("display","block");    	
        $(".popupBackLayer").css("display","block");
        setAllPopup(customizeChkPop);
    });

    customizeChkPop.find(".btnClose").click(function(){
    	customizeChkPop.css("display","none");
        $(".popupBackLayer").css("display","none");
    });

    $("#usethis-pop").createCurveContainer({
        left:14,
        right:14,
        type:"type4"
    });

}


function initTemplatepageNew(){

    $("#taskandgroup").createCurveContainer({
        left:40,
        right:12,
        type:"type2"
    });

    $("#taskandgroup .centerCenter.type2:first").css("min-height",$(".chkmenu .chk_menu_center").height()+50);

    var reviewObj=$("#review-pop");
    reviewObj.createCurveContainer({
        left:12,
        right:12
    });

    $("#rTextfield",reviewObj).createCurveContainer({
        left:12,
        right:12
    });

    $(".writeReview",reviewObj).createCurveContainer({
        left:12,
        right:12
    });

    $("#usethis-pop").createCurveContainer({
        left:14,
        right:14,
        type:"type4"
    });

    
    var heightOuter=0;
    $(".useThis .outer").find("p").each(function(){
        heightOuter+=$(this).height();
    });

    if(heightOuter<42){
        $(".useThis span").css("display","none");
    }

    $(".useThis span").toggle(function(){
        $(".useThis .outer").animate({
            "height":heightOuter+"px"
        },200);
        $(this).addClass("rev");
    },function(){
        $(".useThis .outer").animate({
            "height":"40px"
        },200);
        $(this).removeClass("rev");
    });
    
  //tip link click & google track
    if($(".a_tip .tiplink").length>0){
    	_gaq.push(['_trackEvent','ads', 'view','template_multiple']);    	
    	$(".a_tip .tiplink").click(function(){
    		_gaq.push(['_trackEvent','ads', 'click','template_multiple']);
    	});
    }

    chagePageMode=function(){
        if(saveChagesMode()){return;}
        //use this button change to save checklist button
        $(".useThis:first").addClass("save_checklist");
        $(".useThis").find("a#btn_usethis").html(messages.save_checklist);
        $(".addtaskMain").css("display","block");
        //$(".clist_container.templatenew #createchecklistPopupLink").addClass("disable");
        //$(".clist_container.templatenew #createchecklistPopupLink").unbind();
        removeUsethisEvent();
        $("a.register,a.logon",".headerPanel .right").unbind('click')
        .click(function(e, fromSaveBtn){
	        	if(saveChagesMode()){
	        		var retVal = true;
	        		if(!fromSaveBtn){
	        			retVal = confirm(messages.unsaved_confirm);
	        		}
	                if(retVal){
	                	var curHtml=$(this).html();
	                	
	                	if($(this).hasClass("register")){
	                		logonPopup.showRegister();
	                	}else if($(this).hasClass("logon")){
	                		logonPopup.showLogin();
	                	}
	                }
	            }
        });
    }

    var removeUsethisEvent=function(){
    	$(".useThisHover").css("display","none");
    	$("#taskandgroup .group_list").unbind("mousemove");
    	$("#taskandgroup .group_list").unbind("hover");
    }

    $("#taskandgroup .group_list").mousemove(function(e){
        $(".useThisHover").css({
            "left":e.pageX+"px",
            "top":e.pageY+"px",
            "display":"block"
        });
    });

    $("#taskandgroup .group_list").hover(function(){},function(){
        $(".useThisHover").css("display","none");
    });

    $("#taskandgroup .group_list").click(function(e){
    	if(loggedIn){
    		$("#customizeChecklist").trigger("click");
			e.preventDefault();
		}else{
			chagePageMode();
		}
    });


    $("a").not("#taskandgroup a,.headerPanel .right a,#SaveTemplate,#login-pop a,a#createchecklistPopupLink").click(function(){
        if(saveChagesMode()){
        	var retVal = confirm(messages.unsaved_confirm);
            return retVal;
        }
        return true;
    });

    var sendXMLData=function(){
    	if(saveChagesMode()){
	    	$(".tempPop .btnClose").trigger("click");
	        var tasklist=$("#taskandgroup").find(".group_list .task_list").find(".task");
	        var xml='<?xml version="1.0" encoding="UTF-8"?>';
	        var templateId=$("#taskandgroup").find(".group_list").attr("id").split("template-id-")[1];
	        xml+='<checklist><templateId>'+templateId+'</templateId><checklistName>'+$("#templateName").html()+'</checklistName><tasks>'
	        for(var i=0;i<tasklist.length;i++){
	            var taskData=$(tasklist[i]).data("taskData");
	            var groupdata=$(tasklist[i]).parent().parent().find(".gname").find(".data").html();
	            xml+='<task><group>'+groupdata+'</group>';
	            if(taskData.taskid!=0){
	                xml+='<taskTemplateId>'+taskData.taskid+'</taskTemplateId>';
	            }
	            xml+='<name>'+taskData.task+'</name><note>'+taskData.note+'</note></task>';
	        }
	        xml+='</tasks></checklist>';

	        param = {
                    'action' : 'storeAnonymousEditXMLinSession',
                    'checklistXML' : xml
                };

	        jqueryAjax(urlPrefix+"/checklist_template.do", param, function(data){
            	if(!data) {
            		location.reload();
            	}
            });
    	}
    };

    $("#wreview").toggle(function(){
    	if(nonloggedIn){
    		var redirectUrl = urlPrefix+templateURL + "?writeReview=true";
    		storeRedirectURL(redirectUrl);
    		logonPopup.showLogin();
    		return false;
    	}

        if(jQuery.browser.version=="7.0"){
            reviewObj.height(212);
        }
        reviewObj.slideDown(300);
    },function(){
        reviewObj.slideUp(300);
    });

    var wReviewtext=messages.review;
    $(".writeReview textarea",reviewObj).val(wReviewtext);
    $(".writeReview textarea",reviewObj).focus(function(){
        if($(this).val()==wReviewtext){
            $(this).val("").css("color","#002a41");
        }
    });
    $(".writeReview textarea",reviewObj).blur(function(){
        if($.trim($(this).val()).length==0){
            $(this).val(wReviewtext).css("color","#ABBFCA");
        }
    });

    //contact form validation
	$("#reviewForm").validate({
	    rules: {
			display_name:{
					required: true,
					minlength:5,
					maxlength:25
		    	},
	    		review:{
		    		maxlength:500
		    	}
	    },
	    messages: {
	    	display_name:{
	    		required:messages.error_equired,
	    		minlength:messages.error_min_char_5,
	    		maxlength:messages.error_max_char_20
    		},
    		review:{
    			maxlength:messages.error_max_char_500
    		}
	    },
	    errorPlacement : jqFVErrorHandler,
	    success: jqFVSuccess
	});


    var reviewValidate=function(){
    	if($("input[name='display_name']",reviewObj).length>0  && $.trim($("input[name='display_name']",reviewObj).val()).length==0){
    		$('.btn .c:first',reviewObj).addClass("dis");
    		return false;
    	}

    	if($("input.error,textarea.error",reviewObj).length==0 && $("input[name=rating]",reviewObj).val()!="0"){
    		$('.btn .c:first',reviewObj).removeClass("dis");
    	}else{
    		$('.btn .c:first',reviewObj).addClass("dis");
    	}
    }

    $("input,textarea",reviewObj).blur(reviewValidate);

    $(".rating span",reviewObj).click(function(){
        var curEle=$(this);
        curEle.parent().find("span").attr("class","rvw_bigStar_grey");
        curEle.parent().find("span:lt("+(curEle.index()+1)+")").attr("class","rvw_bigStar");
        $("input[name=rating]",reviewObj).val($(".rating span.rvw_bigStar",reviewObj).length);
        reviewValidate();
    });

    $("#cancel",reviewObj).click(function(){
        $(".rating span",reviewObj).attr("class","rvw_bigStar_grey");
        $("input[name='display_name']",reviewObj).val("").next(".txtErrorIcon").remove();
        $("input[name=rating]",reviewObj).val("0");
        $("textarea",reviewObj).val(messages.review).css("color","#cacbcc");
        $('.btn .c:first',reviewObj).addClass("dis");
        $(".rvwContainer #wreview").trigger("click");
    });

    $("#save",reviewObj).click(function(){
        $("input[name=rating]",reviewObj).val($(".rating span.rvw_bigStar",reviewObj).length);
        if($('.btn .c:first',reviewObj).hasClass("dis")){
        	return false;
        }
        if($(".writeReview textarea",reviewObj).val()==wReviewtext){
        	$(".writeReview textarea",reviewObj).val("");
        }

        $("#reviewForm").submit();

    });

    if(writeReview){
    	$(".rvwContainer #wreview").trigger("click");
    	if($(".rvwContainer #wreview").length==0){
    		$(document).scrollTop($("#reviewMsg").offset().top);
    	}
    	window.setTimeout(function(){
    		$(document).scrollTop(($(".rvwContainer #review-pop").offset().top));
    	},400);
    }

    if(reviewAdded){
    	$(document).scrollTop($("#reviewMsg").offset().top);
    }

    $("#addtask-pop").createCurveContainer({
        left:14,
        right:14,
        type:"type4"
    });

    var singleTaskDeMsg=messages.newtask_group;
    var multipleTaskDeMsg = messages.newtask_perlin;
    $(".addtask .taskTextField").val(singleTaskDeMsg);
    $(".addtask textarea").val(multipleTaskDeMsg);
    /*
    $(".addtask .taskTextField").focus(function(){
        if($.trim($(this).val())==singleTaskDeMsg){
            $(this).val("").removeClass('default');
        }
    });
    
    $(".addtask textarea").focus(function(){
        if($.trim($(this).val())==multipleTaskDeMsg){
            $(this).val("").removeClass('default');
        }
    });

    $(".addtask .taskTextField").blur(function(){
        if($.trim($(this).val()).length==0){
            $(this).val(singleTaskDeMsg).addClass('default');
        }
    });
    $(".addtask textarea").blur(function(){
        if($.trim($(this).val()).length==0){
            $(this).val(multipleTaskDeMsg).addClass('default');
        }
    });
*/
    $(".addtask .taskTextField,.addtask textarea").keyup(function(){
        if($.trim($(this).val()).length>0){
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#000");
        }else{
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
        }
    });

    $(".addtask .clink").click(function(){
        $("#addtask-pop").css("z-index","50");
        $("#addtask-pop").css("display","block");
        $(".addtask .taskTextField").val("");
        $(".addtask textArea").val(multipleTaskDeMsg).css("color","#abbfca");
        $(".addtask_button #btnAddGroup").css("display","none");
        $(".addtaskMain #btnAddTask").find("li.c").html('<a href="javascript:void(0);">Add Tasks</a>');
    });

    $("#addtask-pop textarea").keydown(function(e){
    	if(e.keyCode == 13){
    		 var lines = $(this).val().split("\n");
    		 var totalLines = lines.length + 2;
    		 if(totalLines > 5){
    			 $(this).height(totalLines*27 + "px");
    		 }
    	}
    });
    $("#addtask-pop textarea").keyup(function(e){
    	if(e.keyCode == 8 || e.keyCode == 46){
    		 var lines = $(this).val().split("\n");
    		 var totalLines = lines.length + 1;
    		 if(totalLines > 5){
    			 $(this).height(totalLines*27 + "px");
    		 }else{
    			 if($(this).height() > 27*5){
    				 $(this).height(27*5 + "px");
    			 }
    		 }
    	}
    });

    $("#addtask-pop .taskLink a").click(function(){
        $(this).parent().parent().find("textarea").val("");
        $("#addtask-pop").css("display","none");
        $(".addtask .taskTextField").css("color","#002a41").focus();
        $(".addtaskMain #btnAddTask").find("li.c").html('<a href="javascript:void(0);">Add Task</a>');
        $(".addtask_button #btnAddGroup").css("display","block");
    });

    $(".addtaskMain #btnAddTask").click(function(){
        var task_listObj=$("#taskandgroup").find(".group_list .task_list:first");
        if($("#addtask-pop").css("display")=="block"){
            var textarea=$(".addtask textarea");
            if($.trim(textarea.val())==multipleTaskDeMsg){
                return;
            }
            var taskNames = textarea.val();
            taskNames = taskNames.split("\n");

            for(var i=0; i < taskNames.length; i++){
                if($.trim(taskNames[i]).length!=0){
                    var  html = '<div class="task"><div class="dnd"></div><a></a><div><span class="data">'+taskNames[i]+'</span></div></div>';
                    task_listObj.prepend(html);
                    initTaskGrpTable(task_listObj.find(".task:first"));
                }
            }
            textarea.val(multipleTaskDeMsg).css("color","#cacbcc");
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
            $("#addtask-pop .taskLink a").trigger("click");
            chagePageMode();
        }else{
            var inputObj=$(".addtask .taskTextField");
            if($.trim(inputObj.val())==singleTaskDeMsg){
                return;
            }

            task_listObj.prepend('<div class="task"><div class="dnd"></div><a></a><div><span class="data">'+inputObj.val()+'</span></div></div>');
            inputObj.val(singleTaskDeMsg).css("color","#cacbcc");
            $(".addtask_button #btnAddGroup a,.addtaskMain #btnAddTask a").css("color","#999");
            initTaskGrpTable(task_listObj.find(".task:first"));
            chagePageMode();
        }
    });

    $(".addtaskMain #btnAddGroup").click(function(){
        var inputObj=$(".addtask .taskTextField");

        if($.trim(inputObj.val())==singleTaskDeMsg){
            return;
        }

        var grpObj=$("#taskandgroup").find(".group_list .group:first");
        grpObj.before('<div class="group"><div class="gname"><div class="dn"></div><div class="data">'+inputObj.val()+'</div></div><div class="task_list"><div class="task"><div class="dnd"></div><a></a><div><span class="data">'+messages.caption_newtask+'</span></div></div></div></div>');
        inputObj.val(singleTaskDeMsg).css("color","#cacbcc");
        initTaskGrpTable($("#taskandgroup").find(".group_list .task_list:first").find(".task:first"));
        chagePageMode();
    });

    $(".invite").createCurveContainer({
        left:12,
        right:12
    });

    initchkHeaderMenu('template');

    var customizeChkPop=$("#custom-chk-pop");
    $("#customizeChecklist").click(function(){
    	_gaq.push(['_trackEvent', 'customize_checklist', 'popup']);    	
    	customizeChkPop.css("display","block");
        $(".popupBackLayer").css("display","block");
        setAllPopup(customizeChkPop);
    });

    customizeChkPop.find(".btnClose").click(function(){
    	customizeChkPop.css("display","none");
        $(".popupBackLayer").css("display","none");
    });


    //prestored task data
    var tasklist=$("#taskandgroup").find(".group_list .task_list").find(".task");

    for(i=0;i<tasklist.length;i++){

        var note=$(tasklist[i]).find(".note").html();
        note=(note!=null)?note:"";
        $(tasklist[i]).data('taskData', {
            'taskid' : ($(tasklist[i]).attr("id")).split("task-id-")[1],
            'task' : $(tasklist[i]).find(".data").html(),
            'note' : note
        });
    }


    //task group edit popup start
    $(".taskEditText").createCurveContainer({
        left:12,
        right:12
    });

    $(".taskEditPop .reminder").createCurveContainer({
        left:12,
        right:12
    });


    var taskgroupEditPop=function(){
        $("#taskandgroup").find(".group_list .group .gname .data").unbind("click.groupEdit");
        $("#taskandgroup").find(".group_list .group .gname .data").bind("click.groupEdit",function(){
        	if(loggedIn){
        		return true;
        	}
            if($(this).find("input").length==0){
                closeAllPopup();
                var curObj= $(this);
                var orgHtml=$.trim(curObj.html());
                var saveLink,cancelLink;

                var inputDiv=$(document.createElement("div")).attr("class","input");
                var editInput=$(document.createElement("input")).attr("type","text").val(orgHtml).bind("keydown",function(e){
                    if(e.keyCode==13){
                    	saveLink.trigger("click");
                    }else if(e.keyCode==27){
                    	cancelLink.trigger('click');
                    }
                });
                inputDiv.append(editInput);
                var buttonDiv=$(document.createElement("div")).attr("class","button").html('<a class="editBtn"  href="javascript:void(0)">'+messages.caption_save+'</a><a class="editBtn"  href="javascript:void(0)">'+messages.caption_cancel+'</a>');

                curObj.html("");
                curObj.append(inputDiv);
                curObj.append(buttonDiv);

                saveLink = curObj.find(".button a:first").click(function(){
                    if($.trim(editInput.val()).length!=0){
                    	curObj.html(editInput.val());
                    }else{
                    	curObj.html(orgHtml);
                    }
                    return false;
                });

                cancelLink = curObj.find(".button a:last").click(function(){
                    curObj.html(orgHtml);
                    return false;
                });
                editInput.focus();
            }
        });
        var editFlag=true;

        $("#taskandgroup").find(".group_list .task_list .task").find("div:last").unbind("click.taskedit");
        $("#taskandgroup").find(".group_list .task_list .task").find("div:last").bind("click.taskedit",function(){
        	if(loggedIn){
        		return true;
    		}
            closeAllPopup();

            var curTask=$(this).parent();
            var taskEditObj=$(".taskEditPop").clone();

            var checked = curTask.find("a").hasClass("check");

            //Task Checkbox
            $(".taskTextDiv>a",taskEditObj).click(function(){
                var action = ($(this).hasClass("checked"))?"uncheck":"check";
                if(action == "check"){
                    $(this).addClass("checked");
                }else{
                    $(this).removeClass("checked");
                }
            });

            if(checked){
                $(".taskTextDiv>a",taskEditObj).addClass("checked");
            }

            //task html edit
            var orgHtml=$.trim(curTask.find(".data").html())

            $(".taskTextDiv input",taskEditObj).val(orgHtml).focus();

            //note html edit
            var noteval = curTask.find(".note").html();
            noteval = (noteval==null || noteval=="")?messages.caption_note:$.trim(curTask.find("div .note").html());
            $("textarea",taskEditObj).val(noteval);
            

            $("textarea",taskEditObj).focus(function(){
                if($.trim($(this).val())==messages.caption_note){
                    $(this).val("");
                }
            });

            $("textarea",taskEditObj).blur(function(){
                var curObj=$(this);
                if($.trim(curObj.val())==messages.caption_note){
                    return;
                }
                if($.trim(curObj.val()).length==0){
                    curObj.val(messages.caption_note);
                }
            });

            //set data using task object
            var taskData=curTask.data("taskData");

            $("#rmddate",taskEditObj).val("DD-MMM-YYYY");
            $("#rmddate",taskEditObj).focus(function(){
                openTempPop();
            });


            //reminder date & time blur
            $("#rmdtime",taskEditObj).focus(function(){
                openTempPop();
            });

            //reminder status
            $("#rmdstatus",taskEditObj).click(function(){
                openTempPop();
            });

            //share & invite user
            $(".invite .user",taskEditObj).html("");

            $("#btnInvite",taskEditObj).click(function(){
                openTempPop();
            });

            $(".user .userIcon",taskEditObj).find("a").bind("click",function(e){});

            //close btn event
            taskEditObj.bind("close",function(immediate){
                var time = 0;
                if(!immediate)
                    time = 300;
                var note=$.trim($("textarea",taskEditObj).val());
                if(note==messages.caption_note){
                    note="";
                }
                taskData.task=$(".taskTextDiv input",taskEditObj).val();
                taskData.note=note;
                var newHtml=$(".taskTextDiv input",taskEditObj).val();
                if($.trim(newHtml).length==0){
                	newHtml=orgHtml;
                }

                curTask.find("div:last").html("<span class='data'>"+newHtml+"</span><span class='note'>"+note+"</span>");
                taskEditObj.slideUp(time,function(){
                    editFlag=false;
                    taskEditObj.remove();
                    curTask.css("display","block");
                });
            });

            taskEditObj.find(".close_button .btn ul").click(function(){
                taskEditObj.trigger("close",true);
            });

            //delete icon click
            taskEditObj.find(".close_button .deleteIcon").click(function(){
                taskEditObj.slideUp(300,function(){
                    editFlag=false;
                    taskEditObj.remove();
                    curTask.remove()
                });
            });

            curTask.css("display","none");
            curTask.after(taskEditObj);
            if(jQuery.browser.version=="7.0"){
                taskEditObj.height(taskEditObj.height());
            }
            taskEditObj.slideDown(500);
            $("#taskandgroup").data("oldObj",taskEditObj);
            //setTimeout($('.taskEditName:first').focus(), 2000);
        });
    };
    taskgroupEditPop();
    //task group edit popup end

    var makeSortable = function(){
        $('.task_list').sortable({
            handle : $('.task_list .dnd'),
            revert : true,
            opacity : 0.90,
            forcePlaceholderSize : true,
            connectWith : '.task_list',
            start : function (e, ui){},
            stop : function (e, ui){
            	 ui.item.css("filter","");
            	 chagePageMode();
            }
        });

        $('.group_list').sortable({
            handle : $('.group .dn'),
            revert : true,
            opacity : 0.90,
            forcePlaceholderSize : true,
            connectWith : '.group_list',
            start : function (e, ui){},
            stop : function (e, ui){
            	 ui.item.css("filter","");
            	 chagePageMode();
            }
        });
    };

    makeSortable();
    //task & group table initilization
    var initTaskGrpTable=function(taskObj){

        makeSortable();

        var note=taskObj.find(".note").html();
        note=(note!=null)?note:"";

        taskObj.data('taskData', {
            'taskid' : 0,
            'task' : taskObj.find(".data").html(),
            'note' : note
        });
        taskgroupEditPop();
    };

    //flag as spam click event
    $(".flag",".rvwContainer").flagAsSpam(templateURL);

    if(!loggedIn){
	    $("#login-pop .btnClose").bind("click",function(){
	    	 param = {
	    	            'action' : 'undoAnonymousEditAction'
	    	  };
	    	jqueryAjax(urlPrefix+"/checklist_template.do", param, function(data){
	            return;
	    		if(!data) {
	            	 location.reload();
	             }
	        });
		});
    }

    //anonymous (non-loggedin) user.
    $("a#btn_usethis").click(function(e){
    	if(saveChagesMode()){
    		 _gaq.push(['_trackEvent', 'save_checklist', template_id]);
    		sendXMLData();
    		$("a.register",".headerPanel .right").trigger("click",[true]);
        }else{
        	$("#customizeChecklist").trigger('click');
        }
    	e.preventDefault();
    });

    $("a#btn_usethis_login").click(function(e){
    	$("#customizeChecklist").trigger("click");
    	e.preventDefault();
    });

    $("#SaveTemplate").click(function(){
    	$(".useThis").find("a#btn_usethis").trigger("click");
    });

    $(".tempPop .btnClose").click(function(){
        $(".tempPop").css("display","none");
        $("#outerLayer").css("display","none");
    });

    var openTempPop=function(){
        $(".tempPop").css("display","block");
        $("#outerLayer").css("display","block");
        setAllPopup($(".tempPop"));
    };


}

(function($){
$.fn.flagAsSpam=function(storeUrl){
	this.click(function(e, triggered){
    	var retVal = true;
    	if(!triggered){
    		retVal = confirm(messages.report_spam_confirm);
    	}
		if(retVal){
	    	if(!loggedIn){
	    		var reviewid=$(this).attr("id").split("spam-review-")[1];
	    		var redirectUrl = urlPrefix + storeUrl +"?reportSpam=true&reviewid="+reviewid;
	    		storeRedirectURL(redirectUrl);
	    		$("a.logon",".headerPanel .right").trigger("click");
	    		e.preventDefault();
	    	}else{
    			jqueryAjax($(this).attr("href"),"", function(data){
    				$(document).scrollTop($("#reviewMsg").html(data).offset().top);
//    				window.setTimeout(function(){
//    					$("#reviewMsg").html("&nbsp;");
//    				},3000);
    			});
    		}
    	}
		e.preventDefault();
    });

	if(typeof reportSpam != 'undefined' && reportSpam){
		$("#spam-review-"+spamreviewid+"").trigger("click", [true]);
	}

};
})(jQuery);

var saveChagesMode=function(){
    return ($.trim($(".useThis").find("a#btn_usethis").html())==messages.save_checklist);
}

function setAllPopup(id,div){
    var width=$(id).width();
    var height=$(id).height();
    var baseComponent=(div)? div : window;
    if(height > $(baseComponent).height()){
        $(id).css("top", "10px");
    }else{
        if(parseInt(($(baseComponent).height()-height)/2)>0){
            $(id).css("top", parseInt(($(baseComponent).height()-height)/2)+"px");
        }else{
            $(id).css("top", "10px");
        }
    }
    $(id).css("left", parseInt(($(baseComponent).width()-width)/2)+"px");
    window.scroll(0,0);
}

function storeRedirectURL(redirectUrl){
	param = {
            'action' : 'storeRedirectURLInsession',
            redirectURL : redirectUrl
        };
    jqueryAjax(urlPrefix+"/buyer_logon.do", param, function(data){
    	if(!data) {
    		location.reload();
    	}
    });
}

function cancelTemplateHover(){
	$("#taskandgroup .group_list").unbind('click mousemove mouseenter mouseleave');
	$('.group .task div, .group_list .gname .data').css('cursor','auto');
}

(function($){
    $.fn.createCurveContainer=function(settings){
        settings=jQuery.extend({
            left:12,
            right:12,
            type:"type1"
        }, settings);

        var type=settings.type;
        var curDiv=$(this);
        var topPanel=$(document.createElement("div"));
        topPanel.append($(document.createElement("div")).attr("class","topLeft "+type));
        topPanel.append($(document.createElement("div")).attr("class","topCenter "+type).css("margin","0px "+settings.right+"px 0px "+settings.left+"px"));
        topPanel.append($(document.createElement("div")).attr("class","topRight "+type));

        var centerPanel=$(document.createElement("div")).css("position","relative");
        centerPanel.append($(document.createElement("div")).attr("class","centerLeft "+type));
        centerPanel.append($(document.createElement("div")).attr("class","centerCenter "+type).append($('>*',curDiv).detach()).css("margin","0px "+settings.right+"px 0px "+settings.left+"px"));        //
        centerPanel.append($(document.createElement("div")).attr("class","centerRight "+type));

        var bottomPanel=$(document.createElement("div"));
        bottomPanel.append($(document.createElement("div")).attr("class","botLeft "+type));
        bottomPanel.append($(document.createElement("div")).attr("class","botCenter "+type).css("margin","0px "+settings.right+"px 0px "+settings.left+"px"));
        bottomPanel.append($(document.createElement("div")).attr("class","botRight "+type));

        curDiv.html(topPanel);
        curDiv.append(centerPanel);
        curDiv.append(bottomPanel);

    };

})(jQuery);

function initChecklistpage(){
	//catch the enter key when on the addTask input:
    $(".addtaskMain input").keypress(function(e){
    	if (!e) e = window.event;
    	var code = (e.keyCode) ? e.keyCode : e.which;
    	if (e.keyCode == 13) $("#btnAddTask").trigger('click'); 
	    else return true;
    });
    
    //scrolling: the if is to check if this is a taskmanger page:
    if($('body').find('.fixedBlock').length){
	    fixed_top=$('.fixedBlock').offset().top;
	    fixed_left=$('.fixedBlock').offset().left;
	    $(window).scroll(function(){
	    	if($(window).scrollTop()>fixed_top){    		
				$(".fixedBlock").css({
					//"left": fixed_left+40,
					"width"	:	$('.group_list ').width()
				}).addClass('fixed_cl_header');
	    	}else{
	    		$(".fixedBlock").removeClass('fixed_cl_header');
	    	}
	    });
    }
};
