var countDate;
var submitAvaliable = true;
var btnColorObj = {};
$(document).ready(function(){
var fileData = [];
function addFeedBack(){
var generateJSON = $(".formBuilder_example_form").formCreator("generate");
return $.ajax({
url: '/Handle/SubmitQuestionnaireHandler.ashx',
type: 'POST',
// async:false,
data: {
"DATA": "{\"FORMTOKEN\":\""+gToken+"\",\"TEMPLATE\":"+generateJSON+",\"INFO\":\"北京 朝阳区\"}"
},
dataType: 'JSON'
});
}
function submitForm() {
if ( submitAvaliable ) {
var submit_button = $('.validate_submit').text("提交中").css({
'color': '#555',
'background': '#E7E7E7',
'cursor': 'default'
});
submitAvaliable = false;
addFeedBack().done(function (data){
if(data.flag){
if(data.fileMap){
$.each(data.fileMap, function (index, val) {
$('#'+index).find(".input_file").bind('fileuploadsubmit', function (e, data) {
data.formData = {"DATA":'{"TOKEN": "'+gToken+'", "FIELD": "_FILE_", "FUID": "'+val.fileUid+'"}'};
});
});
if(fileData.length > 0){
for (var fileIndex in fileData) {
fileData[fileIndex].submit();
}
}
} else {
finishFeedbackCallback(true);
}
} else {
finishFeedbackCallback(false);
}
submitAvaliable = true;
}).fail(function (data){
finishFeedbackCallback(false);
});
}
return true;
}
function starController(){
function resetStart(ui){
var selectedStar = ui.attr('starSelected');
ui.find('.star').removeAttr('style');
if (selectedStar > 0) {
ui.find('.star').eq(selectedStar-1).attr('style','background-position:0% 100%;').prevAll(ui).attr('style','background-position:0% 100%;');
}
}
$('.starGroup').each(function() {
$(this).find('.star').mouseover(function(event) {
$(this).prevAll().addClass('selected');//css('backgroundPosition','0 0');
$(this).addClass('selected');//.css('backgroundPosition','0 0');
$(this).nextAll().removeClass('selected').removeAttr('style');//.removeClass('selected').removeAttr('style');
// resetStart($(this).parent('.starGroup'));
}).mouseout(function(event) {
$(this).prevAll().removeClass('selected');//.css('backgroundPosition','0 30px');
$(this).removeClass('selected');//.css('backgroundPosition', '0 30px');
$(this).nextAll().removeClass('selected').removeAttr('style');
resetStart($(this).parent('.starGroup'));
}).click(function(event) {
$(this).parent('.starGroup').attr('starSelected',$(this).closest('.starGroup').find('.star').index($(this))+1);
resetStart($(this).parent('.starGroup'));
});
});
}
function dateBind() {
$('.date').each(function () {
var formatType = 'Y-m-d';
if($(this).attr('datetype') === 'm'){
formatType = 'Y-m';
}
$(this).Zebra_DatePicker({
lang_clear_date: '清除',
months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
months_abbr: false,
offset: [5, 125],
pair: true,
readonly_element: true,
select_other_months: true,
show_clear_date: 0,
show_icon: false,
format: formatType,
show_other_months: true,
show_select_today: '今天',
show_week_number: false,
start_date: false,
view: 'days',
weekend_days: [0, 6],
zero_pad: true
});
});
}
function changeBtnColor (title) {
if(mgColorManager.getColorVal(title,'V')<90 || mgColorManager.getColorVal(title,'S')>10){
mgColorManager.setColor(title);
var co = mgColorManager.getColorGroup();
btnColorObj.color = co;
btnColorObj.title = title;
$('.submit').css({
'backgroundColor': co.BK,
// 'borderColor': co.BD,
// 'box-shadow': '0 1px 0 '+co.SD+' inset',
'color': (mgColorManager.getColorVal(title,'G')>192 ? '#222': '#fff')
}).hover(function(){
$(this).css('backgroundColor',co.BKH);
},function(){
$(this).css('backgroundColor',co.BK);
});
}
}
$.ajax({
url: '/Handle/QuestionnaireHandler.ashx',
type: 'POST',
dataType: 'JSON',
data: {
"DATA": "{\"FORMTOKEN\":\""+gToken+"\"}"
},
beforeSend: function(){
$(".formBuilder_example_form").html("
");
},
success: function(data){
$(".formBuilder_example_form").empty();
var submitFormValue = 0;
var validateCount = 0;
if(data.flag){
var themeColor = {
instruction:"background:#"+(data.data.style.ib||'F5F5F5')+";color:#"+(data.data.style.it||'333333'),
highlight:"background:#"+(data.data.style.hb||'FFF8DC')+";color:#"+(data.data.style.ht||'333333'),
title: "background:#"+(data.data.style.lb||'FEFEFE')+";color:#"+(data.data.style.lt||'222222'),
form: "background:#"+(data.data.style.fb||'FFFFFF')+";color:#"+(data.data.style.ft||'333333'),
wallpaper: "background:#"+(data.data.style.wb||'F4F5F0')+";color:#"+(data.data.style.wt||'333333')
};
var usedColor = "333",
backgroundColor = (data.data.style.wb===null)?"FFFFFF":data.data.style.wb,
grayLvl = parseInt(backgroundColor.charAt(0)+backgroundColor.charAt(1))* 0.299 +parseInt(backgroundColor.charAt(2)+backgroundColor.charAt(3))* 0.587+parseInt(backgroundColor.charAt(4)+backgroundColor.charAt(5))* 0.114;
if(mgColorManager.getColorVal(backgroundColor,'G')<192){
usedColor = "EEE";
}
$(".powerby").attr("style","color:#"+usedColor);
gJson = eval("("+data.data.template+")");
$(".formBuilder_example_form").formCreator({
jsonObject: gJson, // eval("("+gJson+")"),
style: themeColor,
isPublic: true
});
var titleColor = '#'+($.trim(data.data.style.lb)||'FEFEFE'),
bkwColor = "#"+(data.data.style.wb||'F4F5F0'),
usedColor = (mgColorManager.getColorVal(titleColor,'V')真遗憾,这张表单还未开始收集,开始收集表单时间为:
'+data.data.startOn.substring(16,0)+'
');
}else if (data.data.countdown) {
countDate = data.data.countdown;
var second = Math.floor(countDate % 60);
var minite = Math.floor((countDate / 60) % 60);
var hour = Math.floor((countDate / 3600) % 24);
$(".form_component").empty().append('真遗憾,这张表单还未开始收集,距离开始收集表单时间还有:
'+datePad(hour)+' 小时 '+datePad(minite)+' 分钟 '+datePad(second)+' 秒
');
window.setInterval(setCountDate,1000);
}
} else if (data.data.status == "STOPPED" || data.data.status == "MAX") {
$(".form_component").empty().append('真遗憾,这张表单已停止收集~~
');
} else if (data.data.status == "OK") {
//必填项的验证
$(".locked").each(function(){
var rule = {
required: false
};
if ($(this).find("span.requireInfo").text() == "*") {
rule['required'] = true;
$(this).find("div input,div textarea").not('.optionValue input').mikeValidate({
rules: rule,
onkeyup: false,
onfocusout: true,
submitHandler: function(){
submitForm();
}
});
$(this).find("div input,div textarea").not('.optionValue input').each(function(index, el) {
validateCount++;
});
}
});
$('.starGroup').each(function(){
if ($(this).parent().siblings(".title").find("span.requireInfo").text() == "*") {
validateCount++;
$(this).mikeValidate({
rules: {
required: true
},
submitHandler: function(){
submitForm();
}
});
}
});
$("input").each(function(){
if ($(this).attr("contactinfo") == "email"){
validateCount++;
if ($(this).parent().siblings(".title").find("span.requireInfo").text() == "*") {
$(this).mikeValidate({
rules: {
required: true,
email: true
},
onkeyup: true,
onfocusout: true,
submitHandler: function(){
submitForm();
}
});
}else{
$(this).mikeValidate({
rules: {
required: false,
email: true
},
onkeyup: true,
onfocusout: true,
submitHandler: function(){
submitForm();
}
});
}
}
});
$('input[type="checkbox"]').each(function(){
var rule = {
required: false
},
$self = $(this).closest('.locked');
validateCount++;
if ($self.find("span.requireInfo").text() == "*") {
rule.required = true;
}
if($self.attr('name') === 'id_checkBox') {
if($self.data('__MGComponentSelect')){
if($self.data('__MGComponentSelect').enable){
if($self.data('__MGComponentSelect').type == 0){
rule['checkboxMin'] = $self.data('__MGComponentSelect').number;
} else if($self.data('__MGComponentSelect').type == 1){
rule['checkboxMax'] = $self.data('__MGComponentSelect').number;
} else if($self.data('__MGComponentSelect').type == 2){
rule['checkboxEqual'] = $self.data('__MGComponentSelect').number;
}
}
}
}
$(this).mikeValidate({
rules: rule,
onkeyup: false,
onfocusout: false,
submitHandler: function(){
submitForm();
}
});
});
$('.other').find('.optionValue>input').keyup(function (e){
$(this).closest('.clickable').find('input[type!="text"]').attr('checked','checked');
if(window.isMobile){
$(this).closest('.clickable').find('input[type!="text"]').trigger('change');
}
}).click(function (e){
if ( e && e.preventDefault ){
e.stopPropagation();
e.preventDefault();
}
}).bind('input',function(event) {
$(this).closest('.clickable').find('input[type!="text"]').attr('checked','checked');
if(window.isMobile){
$(this).closest('.clickable').find('input[type!="text"]').trigger('change');
}
});
if ( !validateCount ){
$(".validate_submit").click(function(){
submitForm();
});
}
// 把*提示换成“必填”
$("span").each(function(){
if ($(this).text() == "*") {
$(this).text(" (必填)");
}
});
// 如果没有指定LOGO,隐藏img标签
if ($(".formLogo img").attr("src") === "") {
$(".formLogo img").hide();
}
if(window.isMobile){
$('select').each(function(index, el) {
// $(this).siblings('.mobiField').find('.mobiSelectFieldValue').text($(this).val());
$(this).bind('change',function(){
// $(this).siblings('.mobiField').find('.mobiSelectFieldValue').text($(this).val());
// alert($(this).val());
});
$(this).hover(function(){
$(this).parent('.mobiSelectField').addClass('mobiSelectHover');
},function(){
$(this).parent('.mobiSelectField').removeClass('mobiSelectHover');
}).focus(function(event) {
$(this).parent('.mobiSelectField').addClass('mobiSelectHover');
}).blur(function(event) {
$(this).parent('.mobiSelectField').removeClass('mobiSelectHover');
});
});
$('.clickable').each(function(index, el) {
$(this).hover(function(){
$(this).closest('.optionsLine').addClass('mobiSelectHover').closest('.optionGarden').addClass('mobiOptionHover');
},function(){
$(this).closest('.optionsLine').removeClass('mobiSelectHover').closest('.optionGarden').removeClass('mobiOptionHover');
}).focus(function(event) {
$(this).closest('.optionsLine').addClass('mobiSelectHover').closest('.optionGarden').addClass('mobiOptionHover');
}).blur(function(event) {
$(this).closest('.optionsLine').removeClass('mobiSelectHover').closest('.optionGarden').removeClass('mobiOptionHover');
}).on('touchend', function (event) {
// event.preventDefault();
$(this).closest('.optionsLine').removeClass('mobiSelectHover').closest('.optionGarden').removeClass('mobiOptionHover');
});
var fakeCheckBox = '';
if($(this).find('input').attr('type').toLowerCase() === 'checkbox'){
fakeCheckBox = '';
}
$(this).find('input[type!="text"]').bind('change',function(){
if($(this).attr('type').toLowerCase() !== 'text' || $(this).attr('type').toLowerCase() !== 'file'){
function removeHover(ui){
return function(){
if(ui.closest('.optionsLine').hasClass('mobiSelectHover')){
ui.closest('.optionsLine').removeClass('mobiSelectHover').closest('.optionGarden').removeClass('mobiOptionHover');
}
};
}
if($(this)[0].checked){
if($(this).attr('type').toLowerCase() === 'radio'){
// $(this).closest('.optionsLine').siblings('.optionsLine').removeClass('mobiOptionSelected');
$(this).closest('.optionsLine').siblings('.optionsLine').find('ins').removeClass('checked');
}
$(this).siblings('ins').addClass('checked');
// $(this).closest('.optionsLine').addClass('mobiOptionSelected');
} else {
if($(this).attr('type').toLowerCase() === 'checkbox'){
$(this).siblings('ins').removeClass('checked');
// $(this).closest('.optionsLine').removeClass('mobiOptionSelected');
}
}
setTimeout(removeHover($(this)),300);
}
}).css('display','none').after(fakeCheckBox);
$(this).after('');
});
var showDropdown = function (element) {
var event;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
element.dispatchEvent(event);
};
/*
$('.mobiField').on('click',function (event){
var dropdown = $(this).closest('.mobiSelectField').find('.insideSelect')[0];
showDropdown(dropdown);
return false;
});
*/
}
$('.upload_file').find('p').click(function(event) {
$(this).siblings('.input_file').trigger('click');
});
$(".input_file").fileupload({
dataType: "json",
drop: function(e){
return false;
},
add: function(e, data){
var num = $(e.target).index('.input_file');
if(data.files[0].size){
if(data.files[0].size < 20000000){
$(this).attr('hasFile',true);
$(this).siblings('p').text(data.files[0].name).css("color","#333333");
data.token = gToken;
fileData[num] = data;
$(this).attr('filePath','%%UID%%');
} else {
$(this).siblings('p').css('color','#B94A48');
}
} else {
$(this).attr('hasFile',true);
$(this).siblings('p').text(data.files[0].name).css("color","#333333");
data.token = gToken;
fileData[num] = data;
$(this).attr('filePath','%%UID%%');
}
// data.submit();
},
start: function (e,data){
$(this).siblings('p').text('开始上传……');
},
progressall: function (e,data) {
var progress = parseInt(data.loaded / data.total * 90, 10);
$(this).siblings('p').css('color','#EEE').text('正在上传……'+progress+'%').siblings('.progress').css('width',progress*0.9+'%');
},
done: function(e, data){
// var uploadFlag = data.result.data.flag;
var uploadFlag = data.result.flag;
if(uploadFlag){
submitFormValue++;
// 这里++
// $(this).attr('filePath',data.result.data.token);
$(this).siblings('p').css('color','#333').text('文件上传成功!').siblings('.progress').css('width','90%');
if(submitFormValue === fileData.length && submitFormValue>0){
finishFeedbackCallback(true);
}
} else {
$(this).siblings('p').css('color','#333').text('文件超过大小,上传失败。').siblings('.progress').css('width','90%');
$('.validate_submit').removeAttr('style').text('提交');
}
$(this).siblings('.progress').fadeOut();
}
});
}
}else{
$("html").css({"background":"#336699","color":"#FFFFFF"});
$(".formBuilder_example_form").append('').after('Powered by 天梯 Mikecrm.com');
}
}
});
});
function setCountDate(){
if (countDate > 0) {
countDate = countDate -1;
var second = Math.floor(countDate % 60);
var minite = Math.floor((countDate / 60) % 60);
var hour = Math.floor((countDate / 3600) % 24);
$(".form_component").empty().append('真遗憾,这张表单还未开始收集,距离开始收集表单时间还有:
'+datePad(hour)+' 小时 '+datePad(minite)+' 分钟 '+datePad(second)+' 秒
');
}else{
window.clearInterval;
location.reload();
}
}
//处理月份或日期为一位的情况
function datePad(date){
var length = date.toString().length;
if (length<2) {
dateP = "0" + date;
}else{
dateP = date;
}
return dateP;
}
function finishFeedbackCallback (flag){
if (flag) {
if(gJson.finishForm.type == 0){
$(".form_component li").not(":last").remove();
var lastLi = $(".form_component li:last");
lastLi.empty().removeClass("submit_button");
lastLi.html(""+((gJson.finishForm.value=="")?"感谢您的填写!":gJson.finishForm.value)+"
");
lastLi.append("返回");
} else {
var reg = /^(file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\//, // 判断是否是http开头
link = gJson.finishForm.value;
if ($.trim(link).length > 0) {
location.href = ( (!reg.test(link))?("http://"+link):link ); // 自动补上 http
}else{
var lastLi = $(".form_component li:last");
lastLi.not(":last").remove();
lastLi.empty().removeClass("submit_button");
lastLi.html("感谢您的填写!
");
lastLi.append("返回");
}
}
}else{
$(".form_component li").not(":last").hide();
$(".form_component li:last").removeClass("submit_button").find('.validate_submit').hide();
$(".form_component li:last").append("抱歉,提交失败,请重试
").find('.re_submit').css({
'padding':'3px 6px',
'margin-left': '4px',
'border-radius': '3px',
'backgroundColor': btnColorObj.color.BK,
'color': (mgColorManager.getColorVal(btnColorObj.title,'G')>192 ? '#222': '#fff')
}).unbind('click').bind('click',function(){
// alert();
$(".form_component li").not(":last").fadeIn(200);
$(".form_component li:last").addClass('submit_button').find('.submit_text').remove();
$(".form_component li:last").find('.validate_submit').fadeIn(210,function(){
submitAvaliable = true;
});
$(".form_component li:last").find('.validate_submit').removeAttr('style').text('提交').css({
'backgroundColor': btnColorObj.color.BK,
'color': (mgColorManager.getColorVal(btnColorObj.title,'G')>192 ? '#222': '#fff')
});
});
}
}
var mgColorManager = (function(){
var mgColor = '#ffffff',
colorInfo = {};
function getColorHSV(r,g,b){
var r = parseInt( (''+r).replace(/\s/g,''),10 );
var g = parseInt( (''+g).replace(/\s/g,''),10 );
var b = parseInt( (''+b).replace(/\s/g,''),10 );
r=r/255; g=g/255; b=b/255;
var minRGB = Math.min(r, Math.min(g,b)),
maxRGB = Math.max(r, Math.max(g,b)),
computedH, computedS, computedV;
var d = (r==minRGB) ? g-b : ((b==minRGB) ? r-g : b-r);
var h = (r==minRGB) ? 3 : ((b==minRGB) ? 1 : 5);
computedH = 60*(h - d/(maxRGB - minRGB));
computedS = (maxRGB - minRGB)/maxRGB;
computedV = maxRGB;
return [computedH,computedS,computedV];
}
function HEX2RGB(hex) {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
return r + r + g + g + b + b;
});
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
function COLORGARYLVL(r, g, b){
return parseInt(r)* 0.299 +parseInt(g)* 0.587+parseInt(b)* 0.114;
}
function HSV2HEX(h, s, v){
var c = s*v,
t = Math.abs((h/60)%2-1),
x = c*(1-t),
m = v - c,
r_t = 0,g_t = 0,b_t = 0;
if(h>=0 && h<60){
r_t = c;
g_t = x;
} else if(h>=60 && h<120){
r_t = x;
g_t = c;
} else if(h>=120 && h<180){
b_t = x;
g_t = c;
} else if(h>=180 && h<240){
g_t = x;
b_t = c;
} else if(h>=240 && h<300){
r_t = x;
b_t = c;
} else if(h>=300 && h<360){
b_t = x;
r_t = c;
}
function _toHEX(v){
return (Math.floor(v*255)).toString(16);
}
return '#'+_toHEX(r_t+m)+_toHEX(g_t+m)+_toHEX(b_t+m); //[(r_t+m)*255, (g_t+m)*255, (b_t+m)*255];
}
return {
setColor: function(str){
mgColor = str;
var rgbC = HEX2RGB(str);
colorInfo.R = rgbC.r;
colorInfo.G = rgbC.g;
colorInfo.B = rgbC.b;
var hsvC = getColorHSV(colorInfo.R, colorInfo.G, colorInfo.B);
colorInfo.H = Math.floor(hsvC[0]);
colorInfo.S = Math.floor(hsvC[1]*100);
colorInfo.V = Math.floor(hsvC[2]*100);
},
getHSV2RGB: function(arrayHSV){
return HSV2HEX(colorInfo.H,colorInfo.S/100,colorInfo.V/100);
},
getColorVal:function(colorStr, valueType){
var rgbC = HEX2RGB(colorStr),
t = {};
t.R = rgbC.r;
t.G = rgbC.g;
t.B = rgbC.b;
var hsvC = getColorHSV(t.R, t.G, t.B);
t.H = Math.floor(hsvC[0]);
t.S = Math.floor(hsvC[1]*100);
t.V = Math.floor(hsvC[2]*100);
t.G = COLORGARYLVL(t.R,t.G,t.B);
return t[valueType];
},
getColorGroup: function(){
var brighten = colorInfo.S/100,
black = colorInfo.V/100;
var bkcolor = mgColor,
bk_hover_color = HSV2HEX(colorInfo.H, (brighten-0.08>0 ? brighten-0.08 : 0), ((black-0)+0.09<1 ? (black-0)+0.09 : 1)),
shadowcolor = HSV2HEX(colorInfo.H, ((brighten-0.07>0) ? brighten+0.07 : 0),(black-0.06>0 ? (black-0.06): 0)),
bordercolor = HSV2HEX(colorInfo.H, ((brighten+0.04<1) ? brighten+0.04 : 1),(black-0.36>0 ? black-0.36 : 0));
shadowcolor = HSV2HEX(colorInfo.H,0.52,0.59);
// bordercolor = HSV2HEX(colorInfo.H,0.60,0.37);
return {
'BK': bkcolor,
'BKH': bk_hover_color,
'SD': shadowcolor,
'BD': bordercolor
};
}
};
})();