﻿(function($) {
$.fn.alertSelect = function(settings) {
settings = jQuery.extend({
_baseData: null,
_sonData: null,
_showbase: true,
_saveData: '',
_viewResult: '',
_isMultiSelect: false,
_defaultSaveData: '',
_defaultViewResult: '',
_colcount: 2,
_areaWidth: 360,
_headTitle: '',
_maxSelectItem: 5,
_selectedItemClass: "",
_callbackFunction: null,
_allowSelBigClass: false,
_imageTopLeft: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-topleft.gif',
_imageTopMiddle: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-topmiddle.gif',
_imageTopRight: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-topright.gif',
_imageBorderLeft: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-borderlineleft.gif',
_imageBorderRight: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-borderlineright.gif',
_imageBottomLeft: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-bottomleft.gif',
_imageBottomMiddle: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-bottommiddle.gif',
_imageBottomRight: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-bottomright.gif',
_imageTopHeader: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-itemicon.gif',
_imageGroupLine: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-groupline.gif',
_imageBackGround: '#feeed5',
_imageBtnOK: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-btnok.gif',
_imageBtnCnacel: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-btncancel.gif',
_imageBtnDefault: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-btnmoren.gif',
_imageBtnClose: 'http://img.tjinfo.com/base/jquery.alert.0.4/select-close.gif'
},
settings);
var jQueryMatchedObj = this;
function _initialize() {
_start(this, jQueryMatchedObj);
return false;
}
function _start(objClicked, jQueryMatchedObj) {
_set_interface();
_set_command();
_set_basedataarrary();
_set_sondataarrary();
}
function _set_basedataarrary() {
if (settings._showbase) {
var baseData_id = 0;
if (settings._allowSelBigClass) $('#data_vArea').append('<div style="padding:12px 0px;"><select id="basedata_selList"></select><br/><input type="checkbox" id="basedata_selectall" value="" ></input><label id="labelforselectall" for="basedata_selectall" >&nbsp;</label></div><div id="basedata_selectall_div">&nbsp;</div>');
else $('#data_vArea').append('<div style="padding:12px 0px;"><select id="basedata_selList"></select></div>');
if (!settings._isMultiSelect) {
if ($('#' + settings._saveData).val().length != 0) {
var selectedBaseID = $('#' + settings._saveData).val();
for (var t = 0; t < settings._sonData.length; t++) {
if (settings._sonData[t][1] == selectedBaseID) {
baseData_id = settings._sonData[t][0];
break;
}
}
}
}
for (var r = 0; r < settings._baseData.length; r++) {
if (settings._baseData[r][0] == baseData_id) {
$('#basedata_selList').append('<option value="' + settings._baseData[r][0] + '" selected>' + settings._baseData[r][1] + '</option>');
$('#basedata_selectall').val(settings._baseData[r][0]);
$('#labelforselectall').html(settings._baseData[r][1]);
} else {
$('#basedata_selList').append('<option value="' + settings._baseData[r][0] + '">' + settings._baseData[r][1] + '</option>');
}
}

$('#basedata_selectall').click(function() {
if (!settings._isMultiSelect) {
$('#' + settings._viewResult).text($('#basedata_selList').get(0).options[$('#basedata_selList').get(0).selectedIndex].text);
$('#' + settings._saveData).val($('#basedata_selList').val());
$('#' + settings._viewResult).addClass(settings._selectedItemClass);
_finish();
if (settings._callbackFunction != null) settings._callbackFunction();
return false;
}
else {

if($(this)[0].checked == false) {
if ($('#selectItem' + $(this).val()).length > 0) {
$('#selectItem' + $(this).val()).click();
return true;
}
}

if ($('#multilelectitem #selectItem' + $('#basedata_selList').val()).length > 0) { return false; }
if ($('#alertselect_sondatalist :checkbox[checked=true]').length == 0) {
if ($('#multilelectitem li').length >= settings._maxSelectItem) {
alert('抱歉，您最多只能选择' + settings._maxSelectItem + '个选项！');
return true;
}
}

var itemlist = $('#alertselect_sondatalist :checkbox');
for (var i = 0; i < itemlist.length; i++) {
if (itemlist[i].checked == true) itemlist[i].click();
}

$('#multilelectitem').append('<li><input type="checkbox" id="selectItem' + $('#basedata_selList').val() + '" value="' + $("#basedata_selList").find("option:selected").text() + '" class="mulitieSelected" checked></input><label for="selectItem' + $('#basedata_selList').val() + '" >' + $("#basedata_selList").find("option:selected").text() + '</label></li>');
$('.mulitieSelected').click(function() {
if ($('#chkItem' + $(this).attr('id').substring(10)).length > 0) $('#chkItem' + $(this).attr('id').substring(10))[0].checked = false;
if ($('#basedata_selList').val() == $(this).attr('id').substring(10)) {
$('#alertselect_sondatalist :checkbox').attr('disabled', false);
$('#basedata_selectall')[0].checked = false;
}
$(this).parent("li").remove();
_set_ie6_iframe();
return true;
});
$('#multilelectitem li').css({
width: (settings._areaWidth - 16 - 10) / settings._colcount + 'px',
height: '20px',
float: 'left',
'font-size': '12px',
color: 'blue',
overflow: 'hidden'
});
_set_ie6_iframe();
$('#alertselect_sondatalist :checkbox').attr('disabled', true);
return true;
}
});
$('#basedata_selList').change(_set_sondataarrary);
$('#basedata_selList').css('margin', '0 10px 0 10px');
$('#basedata_selectall').css('margin','10px 0 0 10px');
$('#labelforselectall').css('color','blue');
$('#basedata_selectall_div').css({'background' : 'url(' + settings._imageGroupLine + ') repeat-x top',
'height' : '5px',
'overflow' : 'hidden'
});
}
if (settings._isMultiSelect && settings._saveData != '') {
var _selectitem = $('#' + settings._saveData).val().split(',');
if (settings._allowSelBigClass) {
for (var r = 0; r < settings._baseData.length; r++) {
for (var t = 0; t < _selectitem.length; t++) {
if (settings._baseData[r][0] == _selectitem[t]) {
$('#multilelectitem').append('<li><input type="checkbox" id="selectItem' + settings._baseData[r][0] + '" value="' + settings._baseData[r][1] + '" class="mulitieSelected" checked></input><label for="selectItem' + settings._baseData[r][0] + '" >' + settings._baseData[r][1] + '</label></li>');
$('.mulitieSelected').click(function() {
if ($('#chkItem' + $(this).attr('id').substring(10)).length > 0) $('#chkItem' + $(this).attr('id').substring(10))[0].checked = false;
if ($('#basedata_selList').val() == $(this).attr('id').substring(10)) {
$('#alertselect_sondatalist :checkbox').attr('disabled', false);
$('#basedata_selectall')[0].checked = false;
}
$(this).parent("li").remove();
});
$('#multilelectitem li').css({
width: (settings._areaWidth - 16 - 10) / settings._colcount + 'px',
height: '20px',
float: 'left',
'font-size': '12px',
color: 'blue',
overflow: 'hidden'
});
}
}
}
}
for (var r = 0; r < settings._sonData.length; r++) {
for (var t = 0; t < _selectitem.length; t++) {
if (settings._sonData[r][1] == _selectitem[t]) {
$('#multilelectitem').append('<li><input type="checkbox" id="selectItem' + settings._sonData[r][1] + '" value="' + settings._sonData[r][2] + '" class="mulitieSelected" checked></input><label for="selectItem' + settings._sonData[r][1] + '" >' + settings._sonData[r][2] + '</label></li>');
$('.mulitieSelected').click(function() {
if ($('#chkItem' + $(this).attr('id').substring(10)).length > 0) $('#chkItem' + $(this).attr('id').substring(10))[0].checked = false;
$(this).parent("li").remove();
});
$('#multilelectitem li').css({
width: (settings._areaWidth - 16 - 10) / settings._colcount + 'px',
height: '20px',
float: 'left',
'font-size': '12px',
color: 'blue',
overflow: 'hidden'
});
}
}
}
}
}
function _set_sondataarrary() {
var selectParentid = 0;
if (settings._showbase) {
if ($('#basedata_selList').length > 0) {
selectParentid = $('#basedata_selList').val();
selectParentName = $('#basedata_selList')[0].options[$('#basedata_selList')[0].selectedIndex].text;

if(settings._allowSelBigClass) {
$('#basedata_selectall').val(selectParentid);
$('#labelforselectall').html(selectParentName);
if ($('#selectItem' + selectParentid).length > 0) $('#basedata_selectall')[0].checked = true;
else $('#basedata_selectall')[0].checked = false;
}
}
} else {
selectParentid = settings._baseData[0][0];
}
if ($('#alertselect_dataarea').length > 0) {
$('#alertselect_dataarea').remove();
}
$('#data_vArea').append('<div id="alertselect_dataarea"><ul id="alertselect_sondatalist"></ul><div style="clear:both; height:5px;"></div></div>');
for (var r = 0; r < settings._sonData.length; r++) {
if (settings._sonData[r][0] == selectParentid) {
if (!settings._isMultiSelect) {
$('#alertselect_sondatalist').append('<li><a class="baseselect_itemselect" id="' + settings._sonData[r][1] + '" href="#">' + settings._sonData[r][2] + '</a></li>');
} else {
var checkedval = '';
if ($('#selectItem' + settings._sonData[r][1]).length > 0) checkedval = 'checked';
$('#alertselect_sondatalist').append('<li><input type="checkbox" id="chkItem' + settings._sonData[r][1] + '" value="' + settings._sonData[r][2] + '" class="mulitieItem" ' + checkedval + '></input><label for="chkItem' + settings._sonData[r][1] + '" >' + settings._sonData[r][2] + '</label></li>');
}
}
}
if ($('#multilelectitem #selectItem' + $('#basedata_selList').val()).length > 0) { $('#alertselect_sondatalist :checkbox').attr('disabled', true); }
$('#alertselect_dataarea').css({
margin: '0 0 0 10px',
padding: '5px 0 0 0',
'font-size': '12px'
});
$('#alertselect_sondatalist').css({
margin: '0px',
padding: '0px',
'list-style-type': 'none'
});
if (settings._isMultiSelect) {
$('.mulitieItem').click(function() {
if ($('#selectItem' + $(this).attr('id').substring(7)).length > 0) {
$('#selectItem' + $(this).attr('id').substring(7)).parent('li').remove();
_set_ie6_iframe();
return true;
}
if ($('#multilelectitem li').length >= settings._maxSelectItem) {
alert('抱歉，您最多只能选择' + settings._maxSelectItem + '个选项！');
return false;
}
$('#multilelectitem').append('<li><input type="checkbox" id="selectItem' + $(this).attr('id').substring(7) + '" value="' + $(this).attr('value') + '" class="mulitieSelected" checked></input><label for="selectItem' + $(this).attr('id').substring(7) + '" >' + $(this).attr('value') + '</label></li>');
$('.mulitieSelected').click(function() {
if ($('#chkItem' + $(this).attr('id').substring(10)).length > 0) $('#chkItem' + $(this).attr('id').substring(10))[0].checked = false;
$(this).parent("li").remove();
_set_ie6_iframe();
return true;
});
$('#multilelectitem li').css({
width: (settings._areaWidth - 16 - 10) / settings._colcount + 'px',
height: '20px',
float: 'left',
'font-size': '12px',
color: 'blue',
overflow: 'hidden'
});
_set_ie6_iframe();
return true;
});
} else {
$('.baseselect_itemselect').click(function() {
$('#' + settings._viewResult).text($(this).text());
$('#' + settings._saveData).val($(this).attr('id'));
$('#' + settings._viewResult).addClass(settings._selectedItemClass);
_finish();
if (settings._callbackFunction != null) settings._callbackFunction();
return false;
});
}
$('#alertselect_sondatalist li').css({
width: (settings._areaWidth - 16 - 10) / settings._colcount + 'px',
height: '20px',
float: 'left',
overflow: 'hidden'
});
$('#alertselect_sondatalist a').css({
color: 'Black',
'font-size': '12px',
'text-decoration': 'none'
});
_set_ie6_iframe();
}
function _set_interface() {
if ($('#view_sArea').length > 0) $("#view_sArea").remove();
$('body').append('<div style="z-index:9999; color:#333333; position: absolute; width:' + settings._areaWidth + 'px;text-align:left;" class="divShow" id="view_sArea"></div>');
$('#view_sArea').append('<div style="overflow: hidden;height:8px; width:' + settings._areaWidth + 'px; background:url(' + settings._imageTopLeft + ') no-repeat left top;"><div style="height:8px; width:' + (settings._areaWidth - 8) + 'px; background:url(' + settings._imageTopRight + ') no-repeat right top; margin-left:8px;"><div style="height:8px; width:' + (settings._areaWidth - 16) + 'px; background:url(' + settings._imageTopMiddle + ') repeat-x top; background-color:' + settings._imageBackGround + ';"></div></div></div>');
$('#view_sArea').append('<div style="width:' + settings._areaWidth + 'px; background:url(' + settings._imageBorderLeft + ') repeat-y left; background-color:' + settings._imageBackGround + '"><div style="width:' + (settings._areaWidth - 8) + 'px; background:url(' + settings._imageBorderRight + ') repeat-y right; margin-left:8px;"><div style="width:' + (settings._areaWidth - 16) + 'px;"><img src="' + settings._imageBtnClose + '" style="float: right; cursor: pointer;" id="alertSelect_btn_Close"><img src="' + settings._imageTopHeader + '" style=" margin-left:10px;"/><span style="font-size:13px; font-weight:bold; padding-left:6px; margin-left:10px;">' + settings._headTitle + '</span></div></div></div>');
$('#view_sArea').append('<div style="width:' + settings._areaWidth + 'px; background:url(' + settings._imageBorderLeft + ') repeat-y left; background-color:#FFFFFF;"><div style="width:' + (settings._areaWidth - 8) + 'px; background:url(' + settings._imageBorderRight + ') repeat-y right; margin-left:8px;"><div style="width:' + (settings._areaWidth - 16) + 'px;" id="data_vArea"></div></div></div>');
$('#view_sArea').append('<div style="width:' + settings._areaWidth + 'px; background:url(' + settings._imageBorderLeft + ') repeat-y left; background-color:#FFFFFF;"><div style="width:' + (settings._areaWidth - 8) + 'px; background:url(' + settings._imageBorderRight + ') repeat-y right; margin-left:8px;"><div style="width:' + (settings._areaWidth - 16) + 'px; background:url(' + settings._imageGroupLine + ') repeat-x top; padding-top:10px;" id="command_vArea"></div></div></div>');
$('#view_sArea').append('<div style="height:8px; width:' + settings._areaWidth + 'px; background:url(' + settings._imageBottomLeft + ') no-repeat left top;"><div style="height:8px; width:' + (settings._areaWidth - 8) + 'px; background:url(' + settings._imageBottomRight + ') no-repeat right top; margin-left:8px;"><div style="height:8px; width:' + (settings._areaWidth - 16) + 'px; background:url(' + settings._imageBottomMiddle + ') repeat-x top; background-color:#FFFFFF;"></div></div></div>');
var viewPageX;
var viewPageY;
if (settings._isMultiSelect) {
viewPageX = getPageX(jQueryMatchedObj[0]);
viewPageY = getPageY(jQueryMatchedObj[0]);
} else {
viewPageX = getPageX($('#' + settings._viewResult)[0]);
viewPageY = getPageY($('#' + settings._viewResult)[0]);
}
$('#view_sArea').css('left', viewPageX);
$('#view_sArea').css('top', viewPageY + 23);
if ($.browser.msie && /6.0/.test(navigator.userAgent)) {
$('#view_sArea').append('<iframe id="overInIE6" href="javascript:false;" frameborder="0"></iframe>');
$('#overInIE6').css({
filter: 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
display: 'block',
'z-index': '-1',
position: 'absolute',
opacity: true,
top: '0px',
left: '0px',
width: $('#view_sArea').width()
});
}
}
function _set_command() {
if (!settings._isMultiSelect) {
$('#command_vArea').append('<div style="width:152px; margin:0 auto;"><input type="button" value="" id="alertSelect_btn_Cancle"/><input type="button" value="" id="alertSelect_btn_Default"/></div>');
$('#alertSelect_btn_Cancle').css({
'background-image': 'url(' + settings._imageBtnCnacel + ')',
border: '0 none',
cursor: 'pointer',
height: '21px',
width: '61px'
});
$('#alertSelect_btn_Default').css({
'background-image': 'url(' + settings._imageBtnDefault + ')',
border: '0 none',
cursor: 'pointer',
height: '21px',
width: '61px',
'margin-left': '30px'
});
$('#alertSelect_btn_Cancle').click(_finish);
$('#alertSelect_btn_Close').click(_finish);
$('#alertSelect_btn_Default').click(_set_default);
} else {
$('#command_vArea').append('<div style="padding-top:5px; margin-left:10px;"><ul id="multilelectitem"></ul><div style="clear:both; height:5px;"></div></div>');
$('#multilelectitem').css({
margin: '0px',
padding: '0px',
'list-style-type': 'none'
});
$('#command_vArea').append('<div style="width:243px; margin:0 auto;"><input type="button" value="" id="alertSelect_btn_OK"/><input type="button" value="" id="alertSelect_btn_Cancle"/><input type="button" value="" id="alertSelect_btn_Default"/></div>');
$('#alertSelect_btn_OK').css({
'background-image': 'url(' + settings._imageBtnOK + ')',
border: '0 none',
cursor: 'pointer',
height: '21px',
width: '61px'
});
$('#alertSelect_btn_Cancle').css({
'background-image': 'url(' + settings._imageBtnCnacel + ')',
border: '0 none',
cursor: 'pointer',
height: '21px',
width: '61px',
'margin-left': '30px'
});
$('#alertSelect_btn_Default').css({
'background-image': 'url(' + settings._imageBtnDefault + ')',
border: '0 none',
cursor: 'pointer',
height: '21px',
width: '61px',
'margin-left': '30px'
});
$('#alertSelect_btn_OK').click(_set_multiselect);
$('#alertSelect_btn_Cancle').click(_finish);
$('#alertSelect_btn_Close').click(_finish);
$('#alertSelect_btn_Default').click(_set_default);
}
}
function _set_multiselect() {
var viewResult = '';
var dataResult = '';
$('.mulitieSelected').each(function() {
if (viewResult != '') viewResult += ' <span style="color:blue;">+</span> ';
if (dataResult != '') dataResult += ',';
viewResult += $(this).attr('value');
dataResult += $(this).attr('id').substring(10);
});
$('#' + settings._viewResult).html(viewResult);
$('#' + settings._saveData).val(dataResult);
$('#' + settings._viewResult).addClass(settings._selectedItemClass);
_finish();
if (settings._callbackFunction != null) settings._callbackFunction();
return false;
}
function _set_ie6_iframe() {
$('#overInIE6').css('height', $('#view_sArea').height());
}
function _set_default() {
$('#' + settings._viewResult).text(settings._defaultViewResult);
$('#' + settings._saveData).val(settings._defaultSaveData);
$('#' + settings._viewResult).removeClass(settings._selectedItemClass);
_finish();
if (settings._callbackFunction != null) settings._callbackFunction();
return false;
}
function _finish() {
$("#view_sArea").remove();
}
function _fill_text() {
var viewResule = "";
if (!settings._isMultiSelect) {
if ($('#' + settings._saveData).val().length != 0) {
var selectedBaseID = $('#' + settings._saveData).val();
for (var t = 0; t < settings._sonData.length; t++) {
if (settings._sonData[t][1] == selectedBaseID) {
viewResule = settings._sonData[t][2];
break;
}
}
}
} else if (settings._isMultiSelect && settings._saveData != '') {
var _selectitem = $('#' + settings._saveData).val().split(',');
if (settings._allowSelBigClass) {
for (var r = 0; r < settings._baseData.length; r++) {
for (var t = 0; t < _selectitem.length; t++) {
if (settings._baseData[r][0] == _selectitem[t]) {
if (viewResule.length > 0) {
viewResule = viewResule + ' <span style="color:blue;">+</span> ' + settings._baseData[r][1];
} else {
viewResule = settings._baseData[r][1];
}
}
}
}
}
for (var r = 0; r < settings._sonData.length; r++) {
for (var t = 0; t < _selectitem.length; t++) {
if (settings._sonData[r][1] == _selectitem[t]) {
if (viewResule.length > 0) {
viewResule = viewResule + ' <span style="color:blue;">+</span> ' + settings._sonData[r][2];
} else {
viewResule = settings._sonData[r][2];
}
}
}
}
}
if (viewResule == "") {
$('#' + settings._viewResult).html(settings._defaultViewResult).attr('style', 'color:#7f7f7f;');
}
else {
$('#' + settings._viewResult).html(viewResule);
}
}
_fill_text();
return this.unbind('click').click(_initialize);
};
})(jQuery);
function getPageX(elem) {
return elem.offsetParent ? (elem.offsetLeft + getPageX(elem.offsetParent)) : elem.offsetLeft;
}
function getPageY(elem) {
return elem.offsetParent ? (elem.offsetTop + getPageY(elem.offsetParent)) : elem.offsetTop;
}
