/**
 *  toggle the visibility of the target and change the icon of src accordingly
 */
function toggleVisible(target, src)
{
	var t = document.getElementById(target);
	var s = document.getElementById(src);
	
	var sty = t.style;
	if(sty.display=="none") {
		sty.display="";
		s.innerHTML="<img src='images/buttons/hide.png' title='Hide' alt='Hide'/>";
	} else {
		sty.display="none";
		s.innerHTML="<img src='images/buttons/show.png' title='Show' alt='Show' />";
	}
	return false;
}

function mark(tag_parent_id, tag_vname, flag)
{
	var p = document.getElementById(tag_parent_id);
	var input_list = p.getElementsByTagName('input');
	for(var i=0; i<input_list.length; i++) {
		if(input_list[i].name==tag_vname) {
			if(flag==0) {
				input_list[i].checked = false;
			} else {
				input_list[i].checked = true;
			}
		}
	}
	return false;
}

function sk_clearElement(id) {
	var obj = document.getElementById(id);
	if (obj) {
		obj.innerHTML = '';
		obj.className = '';
	}
}

function sk_showError(id, msg) {
	var msgStr = "<div class='error-short'>"+msg+"</div>";
	$("#"+id).after(msgStr);
}


function sk_isEmail(email) {
    var pattern = "^\\w[\\w\.-]+@\\w[\\w\.-]+\\w$";
    if (email.search(pattern)!=0) {
        return false;
    }
    return true;
}

function sk_ajaxCall(data, callback, fnName, returnDataType) {
    
    var postData = data;
    postData.ajax = 1;
    postData.ajaxFunction = fnName;
    
    var dataType = returnDataType? returnDataType : 'json';
    ajaxUrl = window.location.toString();
    var hashPos = ajaxUrl.indexOf('#');
    if (hashPos>0) {
    	ajaxUrl = ajaxUrl.substr(0, hashPos);
    }
    
    var errorHandler = function(XMLHttpRequest, textStatus, errorThrown) {
    	var msg = 'Failed to talk to server: '+textStatus;
    	if (errorThrown) {
    		msg += "\n"+errorThrown.toString();
    	}
    	alert(msg);
    };
    
    $.ajax({
   	    type: 'POST',
    	url : ajaxUrl,
    	data: postData,
    	dataType: dataType,
    	success: callback,
    	error: errorHandler
    });
}

function sk_ajaxSubmit(formId, callback, fnName, returnDataType) {
    
//    var ajaxTagId = "sk_ajax_tag-"+formId;
//    if (!$("#"+ajaxTagId).val()) {
//	    var ajaxTag = "<input id='"+ajaxTagId+"' type='hidden' name='ajax' value='1' />";
//	    ajaxTag += "<input type='hidden' name='ajaxFunction' value='"+fnName+"' />";
//        $('#'+formId).prepend(ajaxTag);    	
//    }

    var dataType = returnDataType? returnDataType : 'json';
    
    var options = {
    	'data': {'ajaxFunction':fnName},
        'dataType': dataType,
        'success': callback
    };
    
    $('#'+formId).ajaxSubmit(options);
            
//    $('#'+formId).unbind('submit');
//    $('#'+formId).submit(function(e) {
//    	e.preventDefault(); 
//        $(this).ajaxSubmit(options);
//        return false;
//    });
}

function sk_nextTab(tabId, currentTab) {
    $("#"+tabId+" > ul").tabs('enable', currentTab+1);
    $("#"+tabId+" > ul").tabs('select', currentTab+1);
    $("#"+tabId+" > ul").tabs('disable', currentTab);
}

function sk_previousTab(tabId, currentTab) {
    $("#"+tabId+" > ul").tabs('enable', currentTab-1);
    $("#"+tabId+" > ul").tabs('select', currentTab-1);
    $("#"+tabId+" > ul").tabs('disable', currentTab);
}


function sk_login() {
    $('#login-tip').attr('class', '').html('');
    $('#login-submit').attr('disabled', 'disabled');
    $('.loading').show();   
    
    var callback = function(response) {
        if (!response.result) {
            $('#login-submit').attr('disabled', '');
            $('.loading').hide();
            $('#login-tip').attr('class', 'error-short').html(response.msg);
            $('#password').val('').focus();
        } else {
            window.location = response.url;
        }
    };
    
    sk_ajaxSubmit('form-login', callback, 'login');
    return false;
}

function sk_toggleCheck(controllerId, className) {
	var allChecked = $("#"+controllerId).attr("checked");
	if (allChecked) {
		$("."+className).attr("checked", "checked");
	} else {
		$("."+className).removeAttr("checked");
	}
}

