/* Thursday 1st of March 2018 03:36:11 PM*/ //Javasript name: My Date Time Picker //Date created: 16-Nov-2003 23:19 //Creator: TengYong Ng //Website: http://www.rainforestnet.com //Copyright (c) 2003 TengYong Ng //FileName: DateTimePicker_css.js //Version: 2.2.4 // Note: Permission given to use and modify this script in ANY kind of applications if // header lines are left unchanged. //Permission is granted to redistribute and modify this javascript under a FreeBSD License. //New Css style version added by Yvan Lavoie (Québec, Canada) 29-Jan-2009 //Formatted for JSLint compatibility by Labsmedia.com (30-Dec-2010) //Global variables var winCal; var dtToday; var Cal; var MonthName; var WeekDayName1; var WeekDayName2; var exDateTime;//Existing Date and Time var selDate;//selected date. version 1.7 var calSpanID = "calBorder"; // span ID var domStyle = null; // span DOM object with style var cnLeft = "0";//left coordinate of calendar span var cnTop = "0";//top coordinate of calendar span var xpos = 0; // mouse x position var ypos = 0; // mouse y position var calHeight = 0; // calendar height var CalWidth = 208;// calendar width var CellWidth = 30;// width of day cell. var TimeMode = 24;// TimeMode value. 12 or 24 var StartYear = 2013; //First Year in drop down year selection var EndYear = 5; // The last year of pickable date. if current year is 2011, the last year that still picker will be 2016 (2011+5) var CalPosOffsetX = -1; //X position offset relative to calendar icon, can be negative value var CalPosOffsetY = 0; //Y position offset relative to calendar icon, can be negative value //Configurable parameters start var SpanBorderColor = "#000000";//span border color var SpanBgColor = "#FFFFFF"; //span background color var MonthYearColor = "#cc0033"; //Font Color of Month and Year in Calendar header. var WeekHeadColor = "#18861B"; //var WeekHeadColor="#18861B";//Background Color in Week header. var SundayColor = "#C0F64F"; //var SundayColor="#C0F64F";//Background color of Sunday. var SaturdayColor = "#C0F64F"; //Background color of Saturday. var WeekDayColor = "#FFEDA6"; //Background color of weekdays. var FontColor = "blue"; //color of font in Calendar day cell. var TodayColor = "#ffbd35"; //var TodayColor="#FFFF33";//Background color of today. var SelDateColor = "#8DD53C"; //var SelDateColor = "#8DD53C";//Backgrond color of selected date in textbox. var YrSelColor = "#cc0033"; //color of font of Year selector. var MthSelColor = "#cc0033"; //color of font of Month selector if "MonthSelector" is "arrow". var HoverColor = "#E0FF38"; //color when mouse move over. var DisableColor = "#999966"; //color of disabled cell. var CalBgColor = "#ffffff"; //Background color of Calendar window. var WeekChar = 2;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed. var DateSeparator = "-";//Date Separator, you can change it to "-" if you want. var ShowLongMonth = true;//Show long month name in Calendar header. example: "January". var ShowMonthYear = true;//Show Month and Year in Calendar header. var ThemeBg = "";//Background image of Calendar window. var PrecedeZero = true;//Preceding zero [true|false] var MondayFirstDay = true;//true:Use Monday as first day; false:Sunday as first day. [true|false] //added in version 1.7 var UseImageFiles = false;//Use image files with "arrows" and "close" button var imageFilesPath = "images2/"; //Configurable parameters end //use the Month and Weekday in your preferred language. var MonthName = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var WeekDayName1 = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var WeekDayName2 = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; //end Configurable parameters //end Global variable // Calendar prototype function Calendar(pDate, pCtrl) { //Properties this.Date = pDate.getDate();//selected date this.Month = pDate.getMonth();//selected month number this.Year = pDate.getFullYear();//selected year in 4 digits this.Hours = pDate.getHours(); if (pDate.getMinutes() < 10) { this.Minutes = "0" + pDate.getMinutes(); } else { this.Minutes = pDate.getMinutes(); } if (pDate.getSeconds() < 10) { this.Seconds = "0" + pDate.getSeconds(); } else { this.Seconds = pDate.getSeconds(); } this.MyWindow = winCal; this.Ctrl = pCtrl; this.Format = "ddMMyyyy"; this.Separator = DateSeparator; this.ShowTime = false; this.Scroller = "DROPDOWN"; if (pDate.getHours() < 12) { this.AMorPM = "AM"; } else { this.AMorPM = "PM"; } this.ShowSeconds = false; this.EnableDateMode = "" } Calendar.prototype.GetMonthIndex = function (shortMonthName) { for (var i = 0; i < 12; i += 1) { if (MonthName[i].substring(0, 3).toUpperCase() === shortMonthName.toUpperCase()) { return i; } } }; Calendar.prototype.IncYear = function () { if (Cal.Year <= dtToday.getFullYear()+EndYear) Cal.Year += 1; }; Calendar.prototype.DecYear = function () { if (Cal.Year > StartYear) Cal.Year -= 1; }; Calendar.prototype.IncMonth = function() { if (Cal.Year <= dtToday.getFullYear() + EndYear) { Cal.Month += 1; if (Cal.Month >= 12) { Cal.Month = 0; Cal.IncYear(); } } }; Calendar.prototype.DecMonth = function() { if (Cal.Year >= StartYear) { Cal.Month -= 1; if (Cal.Month < 0) { Cal.Month = 11; Cal.DecYear(); } } }; Calendar.prototype.SwitchMth = function (intMth) { Cal.Month = parseInt(intMth, 10); }; Calendar.prototype.SwitchYear = function (intYear) { Cal.Year = parseInt(intYear, 10); }; Calendar.prototype.SetHour = function(intHour) { var MaxHour, MinHour, HourExp = new RegExp("^\\d\\d"), SingleDigit = new RegExp("^\\d{1}$"); if (TimeMode === 24) { MaxHour = 23; MinHour = 0; } else if (TimeMode === 12) { MaxHour = 12; MinHour = 1; } else { alert("TimeMode can only be 12 or 24"); } if ((HourExp.test(intHour) || SingleDigit.test(intHour)) && (parseInt(intHour, 10) > MaxHour)) { intHour = MinHour; } else if ((HourExp.test(intHour) || SingleDigit.test(intHour)) && (parseInt(intHour, 10) < MinHour)) { intHour = MaxHour; } intHour = parseInt(intHour, 10); if (SingleDigit.test(intHour)) { intHour = "0" + intHour; } if (HourExp.test(intHour) && (parseInt(intHour, 10) <= MaxHour) && (parseInt(intHour, 10) >= MinHour)) { if ((TimeMode === 12) && (Cal.AMorPM === "PM")) { if (parseInt(intHour, 10) === 12) { Cal.Hours = 12; } else { Cal.Hours = parseInt(intHour, 10) + 12; } } else if ((TimeMode === 12) && (Cal.AMorPM === "AM")) { if (intHour === 12) { intHour -= 12; } Cal.Hours = parseInt(intHour, 10); } else if (TimeMode === 24) { Cal.Hours = parseInt(intHour, 10); } } }; Calendar.prototype.SetMinute = function (intMin) { var MaxMin = 59, MinMin = 0, SingleDigit = new RegExp("\\d"), SingleDigit2 = new RegExp("^\\d{1}$"), MinExp = new RegExp("^\\d{2}$"), strMin = 0; if ((MinExp.test(intMin) || SingleDigit.test(intMin)) && (parseInt(intMin, 10) > MaxMin)) { intMin = MinMin; } else if ((MinExp.test(intMin) || SingleDigit.test(intMin)) && (parseInt(intMin, 10) < MinMin)) { intMin = MaxMin; } strMin = intMin + ""; if (SingleDigit2.test(intMin)) { strMin = "0" + strMin; } if ((MinExp.test(intMin) || SingleDigit.test(intMin)) && (parseInt(intMin, 10) <= 59) && (parseInt(intMin, 10) >= 0)) { Cal.Minutes = strMin; } }; Calendar.prototype.SetSecond = function (intSec) { var MaxSec = 59, MinSec = 0, SingleDigit = new RegExp("\\d"), SingleDigit2 = new RegExp("^\\d{1}$"), SecExp = new RegExp("^\\d{2}$"), strSec = 0; if ((SecExp.test(intSec) || SingleDigit.test(intSec)) && (parseInt(intSec, 10) > MaxSec)) { intSec = MinSec; } else if ((SecExp.test(intSec) || SingleDigit.test(intSec)) && (parseInt(intSec, 10) < MinSec)) { intSec = MaxSec; } strSec = intSec + ""; if (SingleDigit2.test(intSec)) { strSec = "0" + strSec; } if ((SecExp.test(intSec) || SingleDigit.test(intSec)) && (parseInt(intSec, 10) <= 59) && (parseInt(intSec, 10) >= 0)) { Cal.Seconds = strSec; } }; Calendar.prototype.SetAmPm = function (pvalue) { this.AMorPM = pvalue; if (pvalue === "PM") { this.Hours = parseInt(this.Hours, 10) + 12; if (this.Hours === 24) { this.Hours = 12; } } else if (pvalue === "AM") { this.Hours -= 12; } }; Calendar.prototype.getShowHour = function() { var finalHour; if (TimeMode === 12) { if (parseInt(this.Hours, 10) === 0) { this.AMorPM = "AM"; finalHour = parseInt(this.Hours, 10) + 12; } else if (parseInt(this.Hours, 10) === 12) { this.AMorPM = "PM"; finalHour = 12; } else if (this.Hours > 12) { this.AMorPM = "PM"; if ((this.Hours - 12) < 10) { finalHour = "0" + ((parseInt(this.Hours, 10)) - 12); } else { finalHour = parseInt(this.Hours, 10) - 12; } } else { this.AMorPM = "AM"; if (this.Hours < 10) { finalHour = "0" + parseInt(this.Hours, 10); } else { finalHour = this.Hours; } } } else if (TimeMode === 24) { if (this.Hours < 10) { finalHour = "0" + parseInt(this.Hours, 10); } else { finalHour = this.Hours; } } return finalHour; }; Calendar.prototype.getShowAMorPM = function () { return this.AMorPM; }; Calendar.prototype.GetMonthName = function (IsLong) { var Month = MonthName[this.Month]; if (IsLong) { return Month; } else { return Month.substr(0, 3); } }; Calendar.prototype.GetMonDays = function() { //Get number of days in a month var DaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (Cal.IsLeapYear()) { DaysInMonth[1] = 29; } return DaysInMonth[this.Month]; }; Calendar.prototype.IsLeapYear = function () { if ((this.Year % 4) === 0) { if ((this.Year % 100 === 0) && (this.Year % 400) !== 0) { return false; } else { return true; } } else { return false; } }; Calendar.prototype.FormatDate = function (pDate) { var MonthDigit = this.Month + 1; if (PrecedeZero === true) { if ((pDate < 10) && String(pDate).length===1) //length checking added in version 2.2 { pDate = "0" + pDate; } if (MonthDigit < 10) { MonthDigit = "0" + MonthDigit; } } switch (this.Format.toUpperCase()) { case "DDMMYYYY": return (pDate + DateSeparator + MonthDigit + DateSeparator + this.Year); case "DDMMMYYYY": return (pDate + DateSeparator + this.GetMonthName(false) + DateSeparator + this.Year); case "MMDDYYYY": return (MonthDigit + DateSeparator + pDate + DateSeparator + this.Year); case "MMMDDYYYY": return (this.GetMonthName(false) + DateSeparator + pDate + DateSeparator + this.Year); case "YYYYMMDD": return (this.Year + DateSeparator + MonthDigit + DateSeparator + pDate); case "YYMMDD": return (String(this.Year).substring(2, 4) + DateSeparator + MonthDigit + DateSeparator + pDate); case "YYMMMDD": return (String(this.Year).substring(2, 4) + DateSeparator + this.GetMonthName(false) + DateSeparator + pDate); case "YYYYMMMDD": return (this.Year + DateSeparator + this.GetMonthName(false) + DateSeparator + pDate); default: return (pDate + DateSeparator + (this.Month + 1) + DateSeparator + this.Year); } }; // end Calendar prototype function GenCell(pValue, pHighLight, pColor, pClickable) { //Generate table cell with value var PValue, PCellStr, PClickable, vTimeStr; if (!pValue) { PValue = ""; } else { PValue = pValue; } if (pColor === undefined) pColor = CalBgColor; if (pClickable !== undefined){ PClickable = pClickable; } else{ PClickable = true; } if (Cal.ShowTime) { vTimeStr = ' ' + Cal.Hours + ':' + Cal.Minutes; if (Cal.ShowSeconds) { vTimeStr += ':' + Cal.Seconds; } if (TimeMode === 12) { vTimeStr += ' ' + Cal.AMorPM; } } else { vTimeStr = ""; } if (PValue !== "") { if (PClickable === true) { if (Cal.ShowTime === true) { PCellStr = "" + PValue + ""; } else { PCellStr = "" + PValue + ""; } } else { PCellStr = ""+PValue+""; } } else { PCellStr = " "; } return PCellStr; } function RenderCssCal(bNewCal) { if (typeof bNewCal === "undefined" || bNewCal !== true) { bNewCal = false; } var vCalHeader, vCalData, vCalTime = "", vCalClosing = "", winCalData = "", CalDate, i, j, SelectStr, vDayCount = 0, vFirstDay, WeekDayName = [],//Added version 1.7 strCell, showHour, ShowArrows = false, HourCellWidth = "35px", //cell width with seconds. SelectAm, SelectPm, funcCalback, headID, e, cssStr, style, cssText, span; calHeight = 0; // reset the window height on refresh // Set the default cursor for the calendar winCalData = ""; vCalHeader = ""; //Table for Month & Year Selector vCalHeader += ""; //******************End Month and Year selector in arrow****************************** //Calendar header shows Month and Year if (ShowMonthYear && Cal.Scroller === "DROPDOWN") { vCalHeader += ""; calHeight += 19; } //Week day header vCalHeader += ""; //Time picker if (Cal.ShowTime === true) { showHour = Cal.getShowHour(); if (Cal.ShowSeconds === false && TimeMode === 24) { ShowArrows = true; HourCellWidth = "65px"; } vCalTime = ""; calHeight += 31; vCalClosing += "
"; //******************Month and Year selector in dropdown list************************ if (Cal.Scroller === "DROPDOWN") { vCalHeader += ""; //Year selector vCalHeader += "\n"; calHeight += 30; } //******************End Month and Year selector in dropdown list********************* //******************Month and Year selector in arrow********************************* else if (Cal.Scroller === "ARROW") { if (UseImageFiles) { vCalHeader += "\n";//Year scroller (decrease 1 year) vCalHeader += "\n"; //Month scroller (decrease 1 month) vCalHeader += ""; //Month and Year vCalHeader += "\n"; //Month scroller (increase 1 month) vCalHeader += "\n"; //Year scroller (increase 1 year) calHeight += 22; } else { vCalHeader += "";//Year scroller (decrease 1 year) vCalHeader += "\n";//Month scroller (decrease 1 month) vCalHeader += "\n"; //Month and Year vCalHeader += "\n";//Month scroller (increase 1 month) vCalHeader += "\n";//Year scroller (increase 1 year) calHeight += 22; } } vCalHeader += "
"+ Cal.GetMonthName(ShowLongMonth) + " " + Cal.Year + "-<" + Cal.GetMonthName(ShowLongMonth) + " " + Cal.Year + ">+
" + Cal.GetMonthName(ShowLongMonth) + " " + Cal.Year + "
"; if (MondayFirstDay === true) { WeekDayName = WeekDayName2; } else { WeekDayName = WeekDayName1; } for (i = 0; i < 7; i += 1) { vCalHeader += ""; } calHeight += 19; vCalHeader += ""; //Calendar detail CalDate = new Date(Cal.Year, Cal.Month); CalDate.setDate(1); vFirstDay = CalDate.getDay(); //Added version 1.7 if (MondayFirstDay === true) { vFirstDay -= 1; if (vFirstDay === -1) { vFirstDay = 6; } } //Added version 1.7 vCalData = ""; calHeight += 19; for (i = 0; i < vFirstDay; i += 1) { vCalData = vCalData + GenCell(); vDayCount = vDayCount + 1; } //Added version 1.7 for (j = 1; j <= Cal.GetMonDays(); j += 1) { if ((vDayCount % 7 === 0) && (j > 1)) { vCalData = vCalData + ""; } vDayCount = vDayCount + 1; //added version 2.1.2 if (Cal.EnableDateMode === "future" && ((j < dtToday.getDate()) && (Cal.Month === dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Month < dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Year < dtToday.getFullYear()))) { strCell = GenCell(j, false, DisableColor, false); //Before today's date is not clickable } else if (Cal.EnableDateMode === "past" && ((j >= dtToday.getDate()) && (Cal.Month === dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Month > dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Year > dtToday.getFullYear()))) { strCell = GenCell(j, false, DisableColor, false); //After today's date is not clickable } //if End Year + Current Year = Cal.Year. Disable. else if (Cal.Year > (dtToday.getFullYear()+EndYear)) { strCell = GenCell(j, false, DisableColor, false); } else if ((j === dtToday.getDate()) && (Cal.Month === dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear())) { strCell = GenCell(j, true, TodayColor);//Highlight today's date } else { if ((j === selDate.getDate()) && (Cal.Month === selDate.getMonth()) && (Cal.Year === selDate.getFullYear())){ //modified version 1.7 strCell = GenCell(j, true, SelDateColor); } else { if (MondayFirstDay === true) { if (vDayCount % 7 === 0) { strCell = GenCell(j, false, SundayColor); } else if ((vDayCount + 1) % 7 === 0) { strCell = GenCell(j, false, SaturdayColor); } else { strCell = GenCell(j, null, WeekDayColor); } } else { if (vDayCount % 7 === 0) { strCell = GenCell(j, false, SaturdayColor); } else if ((vDayCount + 6) % 7 === 0) { strCell = GenCell(j, false, SundayColor); } else { strCell = GenCell(j, null, WeekDayColor); } } } } vCalData = vCalData + strCell; if ((vDayCount % 7 === 0) && (j < Cal.GetMonDays())) { vCalData = vCalData + ""; calHeight += 19; } } // finish the table proper if (vDayCount % 7 !== 0) { while (vDayCount % 7 !== 0) { vCalData = vCalData + GenCell(); vDayCount = vDayCount + 1; } } vCalData = vCalData + "
" + WeekDayName[i].substr(0, WeekChar) + "
"; if (ShowArrows && UseImageFiles) //this is where the up and down arrow control the hour. { vCalTime += "\n"; } vCalTime += "\n\n"; vCalTime += ""; } else //if not to show time. { vCalTime += "\n\n"; } else { vCalClosing += "x"; } vCalClosing += ""; } vCalClosing += "
 
"; vCalTime += ":"; vCalTime += ""; if (Cal.ShowSeconds) { vCalTime += ":"; vCalTime += ""; } if (TimeMode === 12) { SelectAm = (Cal.AMorPM === "AM") ? "Selected" : ""; SelectPm = (Cal.AMorPM === "PM") ? "Selected" : ""; vCalTime += ""; vCalTime += ""; } if (ShowArrows && UseImageFiles) //this is where the up and down arrow to change the "Minute". { vCalTime += "
"; } vCalTime += "
 
"; //close button if (UseImageFiles) { vCalClosing += "
\n
"; //end time picker funcCalback = "function callback(id, datum) {"; funcCalback += " var CalId = document.getElementById(id);if (datum=== 'undefined') { var d = new Date(); datum = d.getDate() + '/' +(d.getMonth()+1) + '/' + d.getFullYear(); } window.calDatum=datum;CalId.value=datum;"; funcCalback += " if(Cal.ShowTime){"; funcCalback += " CalId.value+=' '+Cal.getShowHour()+':'+Cal.Minutes;"; funcCalback += " if (Cal.ShowSeconds) CalId.value+=':'+Cal.Seconds;"; funcCalback += " if (TimeMode === 12) CalId.value+=''+Cal.getShowAMorPM();"; funcCalback += " window.NfireEvent(CalId, 'change');"; funcCalback += "}if(CalId.onchange!=undefined) CalId.onchange();CalId.focus();winCal.style.visibility='hidden';}"; // determines if there is enough space to open the cal above the position where it is called if (ypos > calHeight) { ypos = ypos - calHeight; } if (!winCal) { headID = document.getElementsByTagName("head")[0]; // add javascript function to the span cal e = document.createElement("script"); e.type = "text/javascript"; e.language = "javascript"; e.text = funcCalback; headID.appendChild(e); // add stylesheet to the span cal cssStr = ".calTD {font-family: verdana; font-size: 12px; text-align: center; border:0; }\n"; cssStr += ".calR {font-family: verdana; font-size: 12px; text-align: center; font-weight: bold;}"; style = document.createElement("style"); style.type = "text/css"; style.rel = "stylesheet"; if (style.styleSheet) { // IE style.styleSheet.cssText = cssStr; } else { // w3c cssText = document.createTextNode(cssStr); style.appendChild(cssText); } headID.appendChild(style); // create the outer frame that allows the cal. to be moved span = document.createElement("span"); span.id = calSpanID; span.style.position = "absolute"; span.style.left = (xpos + CalPosOffsetX) + 'px'; span.style.top = (ypos - CalPosOffsetY) + 'px'; span.style.width = CalWidth + 'px'; span.style.border = "solid 1pt " + SpanBorderColor; span.style.padding = "0"; span.style.cursor = "move"; span.style.backgroundColor = SpanBgColor; span.style.zIndex = 100; document.body.appendChild(span); winCal = document.getElementById(calSpanID); } else { winCal.style.visibility = "visible"; winCal.style.Height = calHeight; // set the position for a new calendar only if (bNewCal === true) { winCal.style.left = (xpos + CalPosOffsetX) + 'px'; winCal.style.top = (ypos - CalPosOffsetY) + 'px'; } } winCal.innerHTML = winCalData + vCalHeader + vCalData + vCalTime + vCalClosing; return true; } function NewCssCal(pCtrl, pFormat, pScroller, pShowTime, pTimeMode, pShowSeconds, pEnableDateMode) { // get current date and time dtToday = new Date(); Cal = new Calendar(dtToday); if (pShowTime !== undefined) { if (pShowTime) { Cal.ShowTime = true; } else { Cal.ShowTime = false; } if (pTimeMode) { pTimeMode = parseInt(pTimeMode, 10); } if (pTimeMode === 12 || pTimeMode === 24) { TimeMode = pTimeMode; } else { TimeMode = 24; } if (pShowSeconds !== undefined) { if (pShowSeconds) { Cal.ShowSeconds = true; } else { Cal.ShowSeconds = false; } } else { Cal.ShowSeconds = false; } } if (pCtrl !== undefined) { Cal.Ctrl = pCtrl; } if (pFormat!== undefined && pFormat !=="") { Cal.Format = pFormat.toUpperCase(); } else { Cal.Format = "MMDDYYYY"; } if (pScroller!== undefined && pScroller!=="") { if (pScroller.toUpperCase() === "ARROW") { Cal.Scroller = "ARROW"; } else { Cal.Scroller = "DROPDOWN"; } } if (pEnableDateMode !== undefined && (pEnableDateMode === "future" || pEnableDateMode === "past")) { Cal.EnableDateMode= pEnableDateMode; } exDateTime = document.getElementById(pCtrl).value; //Existing Date Time value in textbox. if (exDateTime) { //Parse existing Date String var Sp1 = exDateTime.indexOf(DateSeparator, 0),//Index of Date Separator 1 Sp2 = exDateTime.indexOf(DateSeparator, parseInt(Sp1, 10) + 1),//Index of Date Separator 2 tSp1,//Index of Time Separator 1 tSp2,//Index of Time Separator 2 strMonth, strDate, strYear, intMonth, YearPattern, strHour, strMinute, strSecond, winHeight, offset = parseInt(Cal.Format.toUpperCase().lastIndexOf("M"), 10) - parseInt(Cal.Format.toUpperCase().indexOf("M"), 10) - 1, strAMPM = ""; //parse month if (Cal.Format.toUpperCase() === "DDMMYYYY" || Cal.Format.toUpperCase() === "DDMMMYYYY") { if (DateSeparator === "") { strMonth = exDateTime.substring(2, 4 + offset); strDate = exDateTime.substring(0, 2); strYear = exDateTime.substring(4 + offset, 8 + offset); } else { if (exDateTime.indexOf("D*") !== -1) { //DTG strMonth = exDateTime.substring(8, 11); strDate = exDateTime.substring(0, 2); strYear = "20" + exDateTime.substring(11, 13); //Hack, nur für Jahreszahlen ab 2000 } else { strMonth = exDateTime.substring(Sp1 + 1, Sp2); strDate = exDateTime.substring(0, Sp1); strYear = exDateTime.substring(Sp2 + 1, Sp2 + 5); } } } else if (Cal.Format.toUpperCase() === "MMDDYYYY" || Cal.Format.toUpperCase() === "MMMDDYYYY"){ if (DateSeparator === ""){ strMonth = exDateTime.substring(0, 2 + offset); strDate = exDateTime.substring(2 + offset, 4 + offset); strYear = exDateTime.substring(4 + offset, 8 + offset); } else{ strMonth = exDateTime.substring(0, Sp1); strDate = exDateTime.substring(Sp1 + 1, Sp2); strYear = exDateTime.substring(Sp2 + 1, Sp2 + 5); } } else if (Cal.Format.toUpperCase() === "YYYYMMDD" || Cal.Format.toUpperCase() === "YYYYMMMDD") { if (DateSeparator === ""){ strMonth = exDateTime.substring(4, 6 + offset); strDate = exDateTime.substring(6 + offset, 8 + offset); strYear = exDateTime.substring(0, 4); } else{ strMonth = exDateTime.substring(Sp1 + 1, Sp2); strDate = exDateTime.substring(Sp2 + 1, Sp2 + 3); strYear = exDateTime.substring(0, Sp1); } } else if (Cal.Format.toUpperCase() === "YYMMDD" || Cal.Format.toUpperCase() === "YYMMMDD") { if (DateSeparator === "") { strMonth = exDateTime.substring(2, 4 + offset); strDate = exDateTime.substring(4 + offset, 6 + offset); strYear = exDateTime.substring(0, 2); } else { strMonth = exDateTime.substring(Sp1 + 1, Sp2); strDate = exDateTime.substring(Sp2 + 1, Sp2 + 3); strYear = exDateTime.substring(0, Sp1); } } if (isNaN(strMonth)){ intMonth = Cal.GetMonthIndex(strMonth); } else{ intMonth = parseInt(strMonth, 10) - 1; } if ((parseInt(intMonth, 10) >= 0) && (parseInt(intMonth, 10) < 12)) { Cal.Month = intMonth; } //end parse month //parse year YearPattern = /^\d{4}$/; if (YearPattern.test(strYear)) { if ((parseInt(strYear, 10)>=StartYear) && (parseInt(strYear, 10)<= (dtToday.getFullYear()+EndYear))) Cal.Year = parseInt(strYear, 10); } //end parse year //parse Date if ((parseInt(strDate, 10) <= Cal.GetMonDays()) && (parseInt(strDate, 10) >= 1)) { Cal.Date = strDate; } //end parse Date //parse time if (Cal.ShowTime === true) { //parse AM or PM if (TimeMode === 12) { strAMPM = exDateTime.substring(exDateTime.length - 2, exDateTime.length); Cal.AMorPM = strAMPM; } tSp1 = exDateTime.indexOf(":", 0); tSp2 = exDateTime.indexOf(":", (parseInt(tSp1, 10) + 1)); if (tSp1 > 0) { strHour = exDateTime.substring(tSp1, tSp1 - 2); Cal.SetHour(strHour); strMinute = exDateTime.substring(tSp1 + 1, tSp1 + 3); Cal.SetMinute(strMinute); strSecond = exDateTime.substring(tSp2 + 1, tSp2 + 3); Cal.SetSecond(strSecond); } else if (exDateTime.indexOf("D*") !== -1) { //DTG strHour = exDateTime.substring(2, 4); Cal.SetHour(strHour); strMinute = exDateTime.substring(4, 6); Cal.SetMinute(strMinute); } } } selDate = new Date(Cal.Year, Cal.Month, Cal.Date);//version 1.7 RenderCssCal(true); } function closewin(id) { if (Cal.ShowTime === true) { var MaxYear = dtToday.getFullYear() + EndYear; var beforeToday = (Cal.Date < dtToday.getDate()) && (Cal.Month === dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Month < dtToday.getMonth()) && (Cal.Year === dtToday.getFullYear()) || (Cal.Year < dtToday.getFullYear()); if ((Cal.Year <= MaxYear) && (Cal.Year >= StartYear) && (Cal.Month === selDate.getMonth()) && (Cal.Year === selDate.getFullYear())) { if (Cal.EnableDateMode === "future") { if (beforeToday === false) { callback(id, Cal.FormatDate(Cal.Date)); } } else callback(id, Cal.FormatDate(Cal.Date)); } } var CalId = document.getElementById(id); CalId.focus(); winCal.style.visibility = 'hidden'; } function changeBorder(element, col, oldBgColor) { if (col === 0) { element.style.background = HoverColor; element.style.borderColor = "black"; element.style.cursor = "pointer"; } else { if (oldBgColor) { element.style.background = oldBgColor; } else { element.style.background = "white"; } element.style.borderColor = "white"; element.style.cursor = "auto"; } } function selectDate(element, date) { Cal.Date = date; selDate = new Date(Cal.Year, Cal.Month, Cal.Date); element.style.background = SelDateColor; RenderCssCal(); } function pickIt(evt) { var objectID, dom, de, b; // accesses the element that generates the event and retrieves its ID if (document.addEventListener) { // w3c objectID = evt.target.id; if (objectID.indexOf(calSpanID) !== -1) { dom = document.getElementById(objectID); cnLeft = evt.pageX; cnTop = evt.pageY; if (dom.offsetLeft) { cnLeft = (cnLeft - dom.offsetLeft); cnTop = (cnTop - dom.offsetTop); } } // get mouse position on click xpos = (evt.pageX); ypos = (evt.pageY); } else { // IE objectID = event.srcElement.id; cnLeft = event.offsetX; cnTop = (event.offsetY); // get mouse position on click de = document.documentElement; b = document.body; xpos = event.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0); ypos = event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0); } // verify if this is a valid element to pick if (objectID.indexOf(calSpanID) !== -1) { domStyle = document.getElementById(objectID).style; } if (domStyle) { domStyle.zIndex = 100; return false; } else { domStyle = null; return; } } function dragIt(evt) { if (domStyle) { if (document.addEventListener) { //for IE domStyle.left = (event.clientX - cnLeft + document.body.scrollLeft) + 'px'; domStyle.top = (event.clientY - cnTop + document.body.scrollTop) + 'px'; } else { //Firefox domStyle.left = (evt.clientX - cnLeft + document.body.scrollLeft) + 'px'; domStyle.top = (evt.clientY - cnTop + document.body.scrollTop) + 'px'; } } } // performs a single increment or decrement function nextStep(whatSpinner, direction) { if (whatSpinner === "Hour") { if (direction === "plus") { Cal.SetHour(Cal.Hours + 1); RenderCssCal(); } else if (direction === "minus") { Cal.SetHour(Cal.Hours - 1); RenderCssCal(); } } else if (whatSpinner === "Minute") { if (direction === "plus") { Cal.SetMinute(parseInt(Cal.Minutes, 10) + 1); RenderCssCal(); } else if (direction === "minus") { Cal.SetMinute(parseInt(Cal.Minutes, 10) - 1); RenderCssCal(); } } } // starts the time spinner function startSpin(whatSpinner, direction) { document.thisLoop = setInterval(function () { nextStep(whatSpinner, direction); }, 125); //125 ms } //stops the time spinner function stopSpin() { clearInterval(document.thisLoop); } function dropIt() { stopSpin(); if (domStyle) { domStyle = null; } } // Default events configuration document.onmousedown = pickIt; document.onmousemove = dragIt; document.onmouseup = dropIt; /* Simple JavaScript Inheritance * By John Resig http://ejohn.org/ * MIT Licensed. */ // Inspired by base2 and Prototype (function() { var initializing = false, fnTest = /xyz/.test(function() { xyz; }) ? /\b_super\b/ : /.*/; // The base Class implementation (does nothing) this.NClass = function() { }; // Create a new Class that inherits from this class NClass.extend = function(prop) { var _super = this.prototype; // Instantiate a base class (but only create the instance, // don't run the init constructor) initializing = true; var prototype = new this(); initializing = false; // Copy the properties over onto the new prototype for (var name in prop) { // Check if we're overwriting an existing function prototype[name] = typeof prop[name] == "function" && typeof _super[name] == "function" && fnTest.test(prop[name]) ? (function(name, fn) { return function() { var tmp = this._super; // Add a new ._super() method that is the same method // but on the super-class this._super = _super[name]; // The method only need to be bound temporarily, so we // remove it when we're done executing var ret = fn.apply(this, arguments); this._super = tmp; return ret; }; })(name, prop[name]) : prop[name]; } // The dummy class constructor function NClass() { var $this = this; // All construction is actually done in the init method if (!initializing && this.init) this.init.apply(this, arguments); } // Populate our constructed prototype object NClass.prototype = prototype; // Enforce the constructor to be what we expect NClass.prototype.constructor = NClass; // And make this class extendable NClass.extend = arguments.callee; return NClass; }; })(); window.njQuery = typeof jQuery == "undefined" ? null : jQuery; (function ($) { if(typeof bindNextendQ != 'undefined'){ $.each(bindNextendQ, function (index, a) { $(a[0])[a[1]](a[2]); }); } })(njQuery);/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */ function version_compare(e,t,n){this.php_js=this.php_js||{};this.php_js.ENV=this.php_js.ENV||{};var r=0,i=0,s=0,o={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},u=function(e){e=(""+e).replace(/[_\-+]/g,".");e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,".");return!e.length?[-8]:e.split(".")},a=function(e){return!e?0:isNaN(e)?o[e]||-7:parseInt(e,10)};e=u(e);t=u(t);i=Math.max(e.length,t.length);for(r=0;rt[r]){s=1;break}}if(!n){return s}switch(n){case">":case"gt":return s>0;case">=":case"ge":return s>=0;case"<=":case"le":return s<=0;case"==":case"=":case"eq":return s===0;case"<>":case"!=":case"ne":return s!==0;case"":case"<":case"lt":return s<0;default:return null}} (function(){ var tmp = window.njQuery ? jQuery : null; if(!tmp || (tmp && version_compare(jQuery.fn.jquery,'1.9.1','<'))){ (function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null) }),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("'),u.bgiframe.appendTo(c),c.bind("tooltipmove"+h,o.adjustBGIFrame)),m=r("
",{id:"qtip-rcontainer"}).appendTo(t.body),o.redraw(),u.overlay&&!v&&(s=function(){u.overlay[0].style.top=n.scrollTop()+"px"},n.bind("scroll.qtip-ie6, resize.qtip-ie6",s),s(),u.overlay.addClass("qtipmodal-ie6fix"),v=i)},adjustBGIFrame:function(){var e=n.get("dimensions"),t=n.plugins.tip,r=u.tip,i,s;s=parseInt(c.css("border-left-width"),10)||0,s={left:-s,top:-s},t&&r&&(i=t.corner.precedance==="x"?["width","left"]:["height","top"],s[i[1]]-=r[i[0]]()),u.bgiframe.css(s).css(e)},redraw:function(){if(n.rendered<1||d)return o;var e=a.style,t=a.position.container,r,i,s,u;return d=1,e.height&&c.css(l,e.height),e.width?c.css(f,e.width):(c.css(f,"").appendTo(m),i=c.width(),i%2<1&&(i+=1),s=c.css("max-width")||"",u=c.css("min-width")||"",r=(s+u).indexOf("%")>-1?t.width()/100:0,s=(s.indexOf("%")>-1?r:1)*parseInt(s,10)||i,u=(u.indexOf("%")>-1?r:1)*parseInt(u,10)||0,i=s+u?Math.min(Math.max(i,u),s):i,c.css(f,Math.round(i)).appendTo(t)),d=0,o},destroy:function(){p&&u.bgiframe.remove(),c.unbind(h)}}),o.init()}var i=!0,s=!1,o=null,u="x",a="y",f="width",l="height",c="top",h="left",p="bottom",d="right",v="center",m="flip",g="flipinvert",y="shift",b="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",w,E,S,x="qtip",T="data-hasqtip",N={},C=["ui-widget","ui-tooltip"],k="div.qtip."+x,L=x+"-default",A=x+"-focus",O=x+"-hover",M="_replacedByqTip",_="oldtitle",D;w=r.fn.qtip=function(e,t,u){var a=(""+e).toLowerCase(),f=o,l=r.makeArray(arguments).slice(1),c=l[l.length-1],h=this[0]?r.data(this[0],"qtip"):o;if(!arguments.length&&h||a==="api")return h;if("string"==typeof e)return this.each(function(){var e=r.data(this,"qtip");if(!e)return i;c&&c.timeStamp&&(e.cache.event=c);if(a!=="option"&&a!=="options"||!t)e[a]&&e[a].apply(e[a],l);else{if(!r.isPlainObject(t)&&u===n)return f=e.get(t),s;e.set(t,u)}}),f!==o?f:this;if("object"==typeof e||!arguments.length)return h=H(r.extend(i,{},e)),w.bind.call(this,h,c)},w.bind=function(e,t){return this.each(function(o){function p(e){function t(){c.render(typeof e=="object"||u.show.ready),a.show.add(a.hide).unbind(l)}if(c.cache.disabled)return s;c.cache.event=r.extend({},e),c.cache.target=e?r(e.target):[n],u.show.delay>0?(clearTimeout(c.timers.show),c.timers.show=setTimeout(t,u.show.delay),f.show!==f.hide&&a.hide.bind(f.hide,function(){clearTimeout(c.timers.show)})):t()}var u,a,f,l,c,h;h=r.isArray(e.id)?e.id[o]:e.id,h=!h||h===s||h.length<1||N[h]?w.nextid++:N[h]=h,l=".qtip-"+h+"-create",c=j(r(this),h,e);if(c===s)return i;u=c.options,r.each(E,function(){this.initialize==="initialize"&&this(c)}),a={show:u.show.target,hide:u.hide.target},f={show:r.trim(""+u.show.event).replace(/ /g,l+" ")+l,hide:r.trim(""+u.hide.event).replace(/ /g,l+" ")+l},/mouse(over|enter)/i.test(f.show)&&!/mouse(out|leave)/i.test(f.hide)&&(f.hide+=" mouseleave"+l),a.show.bind("mousemove"+l,function(e){P(e),c.cache.onTarget=i}),a.show.bind(f.show,p),(u.show.ready||u.prerender)&&p(t)})},E=w.plugins={Corner:function(e){e=(""+e).replace(/([A-Z])/," $1").replace(/middle/gi,v).toLowerCase(),this.x=(e.match(/left|right/i)||e.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(e.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase();var t=e.charAt(0);this.precedance=t==="t"||t==="b"?a:u,this.string=function(){return this.precedance===a?this.y+this.x:this.x+this.y},this.abbrev=function(){var e=this.x.substr(0,1),t=this.y.substr(0,1);return e===t?e:this.precedance===a?t+e:e+t},this.invertx=function(e){this.x=this.x===h?d:this.x===d?h:e||this.x},this.inverty=function(e){this.y=this.y===c?p:this.y===p?c:e||this.y},this.clone=function(){return{x:this.x,y:this.y,precedance:this.precedance,string:this.string,abbrev:this.abbrev,clone:this.clone,invertx:this.invertx,inverty:this.inverty}}},offset:function(e,n){function c(e,t){i.left+=t*e.scrollLeft(),i.top+=t*e.scrollTop()}var i=e.offset(),s=e.closest("body"),o=E.ie&&t.compatMode!=="CSS1Compat",u=n,a,f,l;if(u){do u.css("position")!=="static"&&(f=u.position(),i.left-=f.left+(parseInt(u.css("borderLeftWidth"),10)||0)+(parseInt(u.css("marginLeft"),10)||0),i.top-=f.top+(parseInt(u.css("borderTopWidth"),10)||0)+(parseInt(u.css("marginTop"),10)||0),!a&&(l=u.css("overflow"))!=="hidden"&&l!=="visible"&&(a=u));while((u=r(u[0].offsetParent)).length);(a&&a[0]!==s[0]||o)&&c(a||s,1)}return i},ie:function(){var e=3,n=t.createElement("div");while(n.innerHTML="")if(!n.getElementsByTagName("i")[0])break;return e>4?e:s}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||s,fn:{attr:function(e,t){if(this.length){var n=this[0],i="title",s=r.data(n,"qtip");if(e===i&&s&&"object"==typeof s&&s.options.suppress)return arguments.length<2?r.attr(n,_):(s&&s.options.content.attr===i&&s.cache.attr&&s.set("content.text",t),this.attr(_,t))}return r.fn["attr"+M].apply(this,arguments)},clone:function(e){var t=r([]),n="title",i=r.fn["clone"+M].apply(this,arguments);return e||i.filter("["+_+"]").attr("title",function(){return r.attr(this,_)}).removeAttr(_),i}}},r.each(E.fn,function(e,t){if(!t||r.fn[e+M])return i;var n=r.fn[e+M]=r.fn[e];r.fn[e]=function(){return t.apply(this,arguments)||n.apply(this,arguments)}}),r.ui||(r["cleanData"+M]=r.cleanData,r.cleanData=function(e){for(var t=0,i;(i=e[t])!==n&&i.getAttribute(T);t++)try{r(i).triggerHandler("removeqtip")}catch(s){}r["cleanData"+M](e)}),w.version="2.0.1-28-",w.nextid=0,w.inactiveEvents="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),w.zindex=15e3,w.defaults={prerender:s,id:s,overwrite:i,suppress:i,content:{text:i,attr:"title",deferred:s,title:{text:s,button:s}},position:{my:"top left",at:"bottom right",target:s,container:s,viewport:s,adjust:{x:0,y:0,mouse:i,scroll:i,resize:i,method:"flipinvert flipinvert"},effect:function(e,t,n){r(this).animate(t,{duration:200,queue:s})}},show:{target:s,event:"mouseenter",effect:i,delay:90,solo:s,ready:s,autofocus:s},hide:{target:s,event:"mouseleave",effect:i,delay:0,fixed:s,inactive:s,leave:"window",distance:s},style:{classes:"",widget:s,width:s,height:s,def:i},events:{render:o,move:o,show:o,hide:o,toggle:o,visible:o,hidden:o,focus:o,blur:o}},E.svg=function(e,n,i,s){var o=r(t),u=n[0],a={width:0,height:0,position:{top:1e10,left:1e10}},f,l,c,h,p;while(!u.getBBox)u=u.parentNode;if(u.getBBox&&u.parentNode){f=u.getBBox(),l=u.getScreenCTM(),c=u.farthestViewportElement||u;if(!c.createSVGPoint)return a;h=c.createSVGPoint(),h.x=f.x,h.y=f.y,p=h.matrixTransform(l),a.position.left=p.x,a.position.top=p.y,h.x+=f.width,h.y+=f.height,p=h.matrixTransform(l),a.width=p.x-a.position.left,a.height=p.y-a.position.top,a.position.left+=o.scrollLeft(),a.position.top+=o.scrollTop()}return a};var F,I=".qtip-ajax",q=/)<[^<]*)*<\/script>/gi;F=E.ajax=function(e){var t=e.plugins.ajax;return"object"==typeof t?t:e.plugins.ajax=new R(e)},F.initialize="render",F.sanitize=function(e){var t=e.content,n;t&&"ajax"in t&&(n=t.ajax,typeof n!="object"&&(n=e.content.ajax={url:n}),"boolean"!=typeof n.once&&n.once&&(n.once=!!n.once))},r.extend(i,w.defaults,{content:{ajax:{loading:i,once:i}}});var U,z=".qtip-tip",W=!!t.createElement("canvas").getContext;U=E.tip=function(e){var t=e.plugins.tip;return"object"==typeof t?t:e.plugins.tip=new V(e)},U.initialize="render",U.sanitize=function(e){var t=e.style,n;t&&"tip"in t&&(n=e.style.tip,typeof n!="object"&&(e.style.tip={corner:n}),/string|boolean/i.test(typeof n.corner)||(n.corner=i),typeof n.width!="number"&&delete n.width,typeof n.height!="number"&&delete n.height,typeof n.border!="number"&&n.border!==i&&delete n.border,typeof n.offset!="number"&&delete n.offset)},r.extend(i,w.defaults,{style:{tip:{corner:i,mimic:s,width:12,height:6,border:i,offset:0}}});var $,J,K="is-modal-qtip",Q=k+"["+K+"]",G=".qtipmodal";J=function(){function h(e){if(r.expr[":"].focusable)return r.expr[":"].focusable;var t=!isNaN(r.attr(e,"tabindex")),n=e.nodeName.toLowerCase(),i,s,o;return"area"===n?(i=e.parentNode,s=i.name,!e.href||!s||i.nodeName.toLowerCase()!=="map"?!1:(o=r("img[usemap=#"+s+"]")[0],!!o&&o.is(":visible"))):/input|select|textarea|button|object/.test(n)?!e.disabled:"a"===n?e.href||t:t}function p(e){u.length<1&&e.length?e.not("body").blur():u.first().focus()}function d(e){if(!c.is(":visible"))return;var t=r(e.target),n=a.elements.tooltip,i=t.closest(k),o;o=i.length<1?s:parseInt(i[0].style.zIndex,10)>parseInt(n[0].style.zIndex,10),!o&&t.closest(k)[0]!==n[0]&&p(t),f=e.target===u[u.length-1]}var n=this,u={},a,f,l,c;r.extend(n,{init:function(){function i(){var e=r(this);c.css({height:e.height(),width:e.width()})}return c=n.elem=r("
",{id:"qtip-overlay",html:"
",mousedown:function(){return s}}).hide(),r(e).bind("resize"+G,i),i(),r(t.body).bind("focusin"+G,d),r(t).bind("keydown"+G,function(e){a&&a.options.show.modal.escape&&e.keyCode===27&&a.hide(e)}),c.bind("click"+G,function(e){a&&a.options.show.modal.blur&&a.hide(e)}),n},update:function(e){a=e,e.options.show.modal.stealfocus!==s?u=e.elements.tooltip.find("*").filter(function(){return h(this)}):u=[]},toggle:function(e,u,f){var h=r(t.body),d=e.elements.tooltip,v=e.options.show.modal,m=v.effect,g=u?"show":"hide",y=c.is(":visible"),b=r(Q).filter(":visible:not(:animated)").not(d),w;return n.update(e),u&&v.stealfocus!==s&&p(r(":focus")),c.toggleClass("blurs",v.blur),u&&c.css({left:0,top:0}).appendTo(t.body),c.is(":animated")&&y===u&&l!==s||!u&&b.length?n:(c.stop(i,s),r.isFunction(m)?m.call(c,u):m===s?c[g]():c.fadeTo(parseInt(f,10)||90,u?1:0,function(){u||c.hide()}),u||c.queue(function(e){c.css({left:"",top:""}),b.length||c.detach(),e()}),l=u,a.destroyed&&(a=o),n)}}),n.init()},J=new J,$=E.modal=function(e){var t=e.plugins.modal;return"object"==typeof t?t:e.plugins.modal=new Y(e)},$.sanitize=function(e){e.show&&(typeof e.show.modal!="object"?e.show.modal={on:!!e.show.modal}:typeof e.show.modal.on=="undefined"&&(e.show.modal.on=i))},$.zindex=w.zindex-200,$.initialize="render",r.extend(i,w.defaults,{show:{modal:{on:s,effect:i,blur:i,stealfocus:i,escape:i}}}),E.viewport=function(n,r,i,s,o,m,b){function j(e,t,n,i,s,o,u,a,f){var l=r[s],c=S[e],h=T[e],p=n===y,d=-O.offset[s]+A.offset[s]+A["scroll"+s],m=c===s?f:c===o?-f:-f/2,b=h===s?a:h===o?-a:-a/2,w=_&&_.size?_.size[u]||0:0,E=_&&_.corner&&_.corner.precedance===e&&!p?w:0,x=d-l+E,N=l+f-A[u]-d+E,C=m-(S.precedance===e||c===S[t]?b:0)-(h===v?a/2:0);return p?(E=_&&_.corner&&_.corner.precedance===t?w:0,C=(c===s?1:-1)*m-E,r[s]+=x>0?x:N>0?-N:0,r[s]=Math.max(-O.offset[s]+A.offset[s]+(E&&_.corner[e]===v?_.offset:0),l-C,Math.min(Math.max(-O.offset[s]+A.offset[s]+A[u],l+C),r[s]))):(i*=n===g?2:0,x>0&&(c!==s||N>0)?(r[s]-=C+i,H["invert"+e](s)):N>0&&(c!==o||x>0)&&(r[s]-=(c===v?-C:C)+i,H["invert"+e](o)),r[s]N&&(r[s]=l,H=S.clone())),r[s]-l}var w=i.target,E=n.elements.tooltip,S=i.my,T=i.at,N=i.adjust,C=N.method.split(" "),k=C[0],L=C[1]||C[0],A=i.viewport,O=i.container,M=n.cache,_=n.plugins.tip,D={left:0,top:0},P,H,B;if(!A.jquery||w[0]===e||w[0]===t.body||N.method==="none")return D;P=E.css("position")==="fixed",A={elem:A,height:A[(A[0]===e?"h":"outerH")+"eight"](),width:A[(A[0]===e?"w":"outerW")+"idth"](),scrollleft:P?0:A.scrollLeft(),scrolltop:P?0:A.scrollTop(),offset:A.offset()||{left:0,top:0}},O={elem:O,scrollLeft:O.scrollLeft(),scrollTop:O.scrollTop(),offset:O.offset()||{left:0,top:0}};if(k!=="shift"||L!=="shift")H=S.clone();return D={left:k!=="none"?j(u,a,k,N.x,h,d,f,s,m):0,top:L!=="none"?j(a,u,L,N.y,c,p,l,o,b):0},H&&M.lastClass!==(B=x+"-pos-"+H.abbrev())&&E.removeClass(n.cache.lastClass).addClass(n.cache.lastClass=B),D},E.imagemap=function(e,t,n,i){function E(e,t,n){var r=0,i=1,s=1,o=0,u=0,a=e.width,f=e.height;while(a>0&&f>0&&i>0&&s>0){a=Math.floor(a/2),f=Math.floor(f/2),n.x===h?i=a:n.x===d?i=e.width-a:i+=Math.floor(a/2),n.y===c?s=f:n.y===p?s=e.height-f:s+=Math.floor(f/2),r=t.length;while(r--){if(t.length<2)break;o=t[r][0]-e.position.left,u=t[r][1]-e.position.top,(n.x===h&&o>=i||n.x===d&&o<=i||n.x===v&&(oe.width-i)||n.y===c&&u>=s||n.y===p&&u<=s||n.y===v&&(ue.height-s))&&t.splice(r,1)}}return{left:t[0][0],top:t[0][1]}}t.jquery||(t=r(t));var s=e.cache.areas={},o=(t[0].shape||t.attr("shape")).toLowerCase(),u=t[0].coords||t.attr("coords"),a=u.split(","),f=[],l=r('img[usemap="#'+t.parent("map").attr("name")+'"]'),m=l.offset(),g={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10}},y=0,b=0,w;m.left+=Math.ceil((l.outerWidth()-l.width())/2),m.top+=Math.ceil((l.outerHeight()-l.height())/2);if(o==="poly"){y=a.length;while(y--)b=[parseInt(a[--y],10),parseInt(a[y+1],10)],b[0]>g.position.right&&(g.position.right=b[0]),b[0]g.position.bottom&&(g.position.bottom=b[1]),b[1] .smartslider-border"); var secondcol = $(".smartslider-secondcol"); var colresize = function(){ firstcol.height("auto"); firstcolborder.height("auto"); var fcolh = firstcol.height(); var scolh = secondcol.height(); if(scolh > fcolh){ firstcol.height(scolh); fcolh = firstcol.height(); } firstcolborder.height(fcolh); }; colresize(); $(window).resize(colresize); $(window).load(colresize); window.nextendsmartslidercolresize = colresize; });/*! jQuery UI - v1.10.2 - 2013-03-14 * http://jqueryui.com * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ (function(e,t){function i(t,i){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&s(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var a=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var s,a,n=e(this[0]);n.length&&n[0]!==document;){if(s=n.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(a=parseInt(n.css("zIndex"),10),!isNaN(a)&&0!==a))return a;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++a)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var s=e.attr(t,"tabindex"),a=isNaN(s);return(a||s>=0)&&i(t,!a)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(i,s){function a(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===s?["Left","Right"]:["Top","Bottom"],r=s.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+s]=function(i){return i===t?o["inner"+s].call(this):this.each(function(){e(this).css(r,a(this,i)+"px")})},e.fn["outer"+s]=function(t,i){return"number"!=typeof t?o["outer"+s].call(this,t):this.each(function(){e(this).css(r,a(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i){var s,a=e.plugins[t];if(a&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(s=0;a.length>s;s++)e.options[a[s][0]]&&a[s][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)}})})(njQuery);/*! jQuery UI - v1.10.2 - 2013-03-14 * http://jqueryui.com * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ (function(e,t){var i=0,s=Array.prototype.slice,n=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(a){}n(t)},e.widget=function(i,s,n){var a,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],a=u+"-"+i,n||(n=s,s=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:n.version,_proto:e.extend({},n),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(n,function(i,n){return e.isFunction(n)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,a=this._superApply;return this._super=e,this._superApply=t,i=n.apply(this,arguments),this._super=s,this._superApply=a,i}}(),t):(l[i]=n,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:a}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var n,a,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(n in r[o])a=r[o][n],r[o].hasOwnProperty(n)&&a!==t&&(i[n]=e.isPlainObject(a)?e.isPlainObject(i[n])?e.widget.extend({},i[n],a):e.widget.extend({},a):a);return i},e.widget.bridge=function(i,n){var a=n.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,n=e.data(this,a);return n?e.isFunction(n[r])&&"_"!==r.charAt(0)?(s=n[r].apply(n,h),s!==n&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,a);t?t.option(r||{})._init():e.data(this,a,new n(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var n,a,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},n=i.split("."),i=n.shift(),n.length){for(a=o[i]=e.widget.extend({},this.options[i]),r=0;n.length-1>r;r++)a[n[r]]=a[n[r]]||{},a=a[n[r]];if(i=n.pop(),s===t)return a[i]===t?null:a[i];a[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var a,r=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=a=e(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,a=this.widget()),e.each(n,function(n,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=n.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?a.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var r,o=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),r=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),r&&e.effects&&e.effects.effect[o]?s[t](n):o!==t&&s[o]?s[o](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}})})(njQuery);/*! jQuery UI - v1.10.2 - 2013-03-14 * http://jqueryui.com * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ (function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(njQuery);/*! * jQuery UI Sortable 1.10.2 * http://jqueryui.com * * Copyright 2013 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/sortable/ * * Depends: * jquery.ui.core.js * jquery.ui.mouse.js * jquery.ui.widget.js */ (function($, undefined) { /*jshint loopfunc: true */ function isOverAxis(x, reference, size) { return (x > reference) && (x < (reference + size)); } function isFloating(item) { return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); } $.widget("ui.sortable", $.ui.mouse, { version: "1.10.2", widgetEventPrefix: "sort", ready: false, options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: "auto", cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: "> *", opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000, // callbacks activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _create: function() { var o = this.options; this.containerCache = {}; this.element.addClass("ui-sortable"); //Get the items this.refresh(); //Let's determine if the items are being displayed horizontally this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false; //Let's determine the parent's offset this.offset = this.element.offset(); //Initialize mouse events for interaction this._mouseInit(); //We're ready to go this.ready = true; }, _destroy: function() { this.element .removeClass("ui-sortable ui-sortable-disabled"); this._mouseDestroy(); for (var i = this.items.length - 1; i >= 0; i--) { this.items[i].item.removeData(this.widgetName + "-item"); } return this; }, _setOption: function(key, value) { if (key === "disabled") { this.options[ key ] = value; this.widget().toggleClass("ui-sortable-disabled", !!value); } else { // Don't call widget base _setOption for disable as it adds ui-state-disabled class $.Widget.prototype._setOption.apply(this, arguments); } }, _mouseCapture: function(event, overrideHandle) { var currentItem = null, validHandle = false, that = this; if (this.reverting) { return false; } if (this.options.disabled || this.options.type === "static") { return false; } //We have to refresh the items data once first this._refreshItems(event); //Find out if the clicked node (or one of its parents) is a actual item in this.items $(event.target).parents().each(function() { if ($.data(this, that.widgetName + "-item") === that) { currentItem = $(this); return false; } }); if ($.data(event.target, that.widgetName + "-item") === that) { currentItem = $(event.target); } if (!currentItem) { return false; } if (this.options.handle && !overrideHandle) { $(this.options.handle, currentItem).find("*").addBack().each(function() { if (this === event.target) { validHandle = true; } }); if (!validHandle) { return false; } } this.currentItem = currentItem; this._removeCurrentsFromItems(); return true; }, _mouseStart: function(event, overrideHandle, noActivation) { var i, body, o = this.options; this.currentContainer = this; //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture this.refreshPositions(); //Create and append the visible helper this.helper = this._createHelper(event); //Cache the helper size this._cacheHelperProportions(); /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //Get the next scrolling parent this.scrollParent = this.helper.scrollParent(); //The element's absolute position on the page minus margins this.offset = this.currentItem.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: {//Where the click happened, relative to the element left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper }); // Only after we got the offset, we can change the helper's position to absolute // TODO: Still need to figure out a way to make relative sorting possible this.helper.css("position", "absolute"); this.cssPosition = this.helper.css("position"); //Generate the original position this.originalPosition = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); //Cache the former DOM position this.domPosition = {prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0]}; //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way if (this.helper[0] !== this.currentItem[0]) { this.currentItem.hide(); } //Create the placeholder this._createPlaceholder(); //Set a containment if given in the options if (o.containment) { this._setContainment(); } if (o.cursor && o.cursor !== "auto") { // cursor option body = this.document.find("body"); // support: IE this.storedCursor = body.css("cursor"); body.css("cursor", o.cursor); this.storedStylesheet = $("").appendTo(body); } if (o.opacity) { // opacity option if (this.helper.css("opacity")) { this._storedOpacity = this.helper.css("opacity"); } this.helper.css("opacity", o.opacity); } if (o.zIndex) { // zIndex option if (this.helper.css("zIndex")) { this._storedZIndex = this.helper.css("zIndex"); } this.helper.css("zIndex", o.zIndex); } //Prepare scrolling if (this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { this.overflowOffset = this.scrollParent.offset(); } //Call callbacks this._trigger("start", event, this._uiHash()); //Recache the helper size if (!this._preserveHelperProportions) { this._cacheHelperProportions(); } //Post "activate" events to possible containers if (!noActivation) { for (i = this.containers.length - 1; i >= 0; i--) { this.containers[ i ]._trigger("activate", event, this._uiHash(this)); } } //Prepare possible droppables if ($.ui.ddmanager) { $.ui.ddmanager.current = this; } if ($.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } this.dragging = true; this.helper.addClass("ui-sortable-helper"); this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position return true; }, _mouseDrag: function(event) { var i, item, itemElement, intersection, o = this.options, scrolled = false; //Compute the helpers position this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); if (!this.lastPositionAbs) { this.lastPositionAbs = this.positionAbs; } //Do scrolling if (this.options.scroll) { if (this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") { if ((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; } else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity) { this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; } if ((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; } else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity) { this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; } } else { if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); } if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); } } if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } } //Regenerate the absolute position used for position checks this.positionAbs = this._convertPositionTo("absolute"); //Set the helper position if (!this.options.axis || this.options.axis !== "y") { this.helper[0].style.left = this.position.left + "px"; } if (!this.options.axis || this.options.axis !== "x") { this.helper[0].style.top = this.position.top + "px"; } //Rearrange for (i = this.items.length - 1; i >= 0; i--) { //Cache variables and intersection, continue if no intersection item = this.items[i]; itemElement = item.item[0]; intersection = this._intersectsWithPointer(item); if (!intersection) { continue; } // Only put the placeholder inside the current Container, skip all // items form other containers. This works because when moving // an item from one container to another the // currentContainer is switched before the placeholder is moved. // // Without this moving items in "sub-sortables" can cause the placeholder to jitter // beetween the outer and inner container. if (item.instance !== this.currentContainer) { continue; } // cannot intersect with itself // no useless actions that have been done before // no action if the item moved is the parent of the item checked if (itemElement !== this.currentItem[0] && this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) ) { this.direction = intersection === 1 ? "down" : "up"; if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { this._rearrange(event, item); } else { break; } this._trigger("change", event, this._uiHash()); break; } } //Post events to containers this._contactContainers(event); //Interconnect with droppables if ($.ui.ddmanager) { $.ui.ddmanager.drag(this, event); } //Call callbacks this._trigger("sort", event, this._uiHash()); this.lastPositionAbs = this.positionAbs; return false; }, _mouseStop: function(event, noPropagation) { if (!event) { return; } //If we are using droppables, inform the manager about the drop if ($.ui.ddmanager && !this.options.dropBehaviour) { $.ui.ddmanager.drop(this, event); } if (this.options.revert) { var that = this, cur = this.placeholder.offset(), axis = this.options.axis, animation = {}; if (!axis || axis === "x") { animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft); } if (!axis || axis === "y") { animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop); } this.reverting = true; $(this.helper).animate(animation, parseInt(this.options.revert, 10) || 500, function() { that._clear(event); }); } else { this._clear(event, noPropagation); } return false; }, cancel: function() { if (this.dragging) { this._mouseUp({target: null}); if (this.options.helper === "original") { this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); } else { this.currentItem.show(); } //Post deactivating events to containers for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("deactivate", null, this._uiHash(this)); if (this.containers[i].containerCache.over) { this.containers[i]._trigger("out", null, this._uiHash(this)); this.containers[i].containerCache.over = 0; } } } if (this.placeholder) { //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! if (this.placeholder[0].parentNode) { this.placeholder[0].parentNode.removeChild(this.placeholder[0]); } if (this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { this.helper.remove(); } $.extend(this, { helper: null, dragging: false, reverting: false, _noFinalSort: null }); if (this.domPosition.prev) { $(this.domPosition.prev).after(this.currentItem); } else { $(this.domPosition.parent).prepend(this.currentItem); } } return this; }, serialize: function(o) { var items = this._getItemsAsjQuery(o && o.connected), str = []; o = o || {}; $(items).each(function() { var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); if (res) { str.push((o.key || res[1] + "[]") + "=" + (o.key && o.expression ? res[1] : res[2])); } }); if (!str.length && o.key) { str.push(o.key + "="); } return str.join("&"); }, toArray: function(o) { var items = this._getItemsAsjQuery(o && o.connected), ret = []; o = o || {}; items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); return ret; }, /* Be careful with the following core functions */ _intersectsWith: function(item) { var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, y1 = this.positionAbs.top, y2 = y1 + this.helperProportions.height, l = item.left, r = l + item.width, t = item.top, b = t + item.height, dyClick = this.offset.click.top, dxClick = this.offset.click.left, isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; if (this.options.tolerance === "pointer" || this.options.forcePointerForContainers || (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) ) { return isOverElement; } else { return (l < x1 + (this.helperProportions.width / 2) && // Right Half x2 - (this.helperProportions.width / 2) < r && // Left Half t < y1 + (this.helperProportions.height / 2) && // Bottom Half y2 - (this.helperProportions.height / 2) < b); // Top Half } }, _intersectsWithPointer: function(item) { var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), isOverElement = isOverElementHeight && isOverElementWidth, verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (!isOverElement) { return false; } return this.floating ? (((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1) : (verticalDirection && (verticalDirection === "down" ? 2 : 1)); }, _intersectsWithSides: function(item) { var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height / 2), item.height), isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width / 2), item.width), verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (this.floating && horizontalDirection) { return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); } else { return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); } }, _getDragVerticalDirection: function() { var delta = this.positionAbs.top - this.lastPositionAbs.top; return delta !== 0 && (delta > 0 ? "down" : "up"); }, _getDragHorizontalDirection: function() { var delta = this.positionAbs.left - this.lastPositionAbs.left; return delta !== 0 && (delta > 0 ? "right" : "left"); }, refresh: function(event) { this._refreshItems(event); this.refreshPositions(); return this; }, _connectWith: function() { var options = this.options; return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; }, _getItemsAsjQuery: function(connected) { var i, j, cur, inst, items = [], queries = [], connectWith = this._connectWith(); if (connectWith && connected) { for (i = connectWith.length - 1; i >= 0; i--) { cur = $(connectWith[i]); for (j = cur.length - 1; j >= 0; j--) { inst = $.data(cur[j], this.widgetFullName); if (inst && inst !== this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); } } } } queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, {options: this.options, item: this.currentItem}) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); for (i = queries.length - 1; i >= 0; i--) { queries[i][0].each(function() { items.push(this); }); } return $(items); }, _removeCurrentsFromItems: function() { var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); this.items = $.grep(this.items, function(item) { for (var j = 0; j < list.length; j++) { if (list[j] === item.item[0]) { return false; } } return true; }); }, _refreshItems: function(event) { this.items = []; this.containers = [this]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items, queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, {item: this.currentItem}) : $(this.options.items, this.element), this]], connectWith = this._connectWith(); if (connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down for (i = connectWith.length - 1; i >= 0; i--) { cur = $(connectWith[i]); for (j = cur.length - 1; j >= 0; j--) { inst = $.data(cur[j], this.widgetFullName); if (inst && inst !== this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, {item: this.currentItem}) : $(inst.options.items, inst.element), inst]); this.containers.push(inst); } } } } for (i = queries.length - 1; i >= 0; i--) { targetData = queries[i][1]; _queries = queries[i][0]; for (j = 0, queriesLength = _queries.length; j < queriesLength; j++) { item = $(_queries[j]); item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) items.push({ item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 }); } } }, refreshPositions: function(fast) { //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change if (this.offsetParent && this.helper) { this.offset.parent = this._getParentOffset(); } var i, item, t, p; for (i = this.items.length - 1; i >= 0; i--) { item = this.items[i]; //We ignore calculating positions of all connected containers when we're not over them if (item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { continue; } t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; if (!fast) { item.width = t.outerWidth(); item.height = t.outerHeight(); } p = t.offset(); item.left = p.left; item.top = p.top; } if (this.options.custom && this.options.custom.refreshContainers) { this.options.custom.refreshContainers.call(this); } else { for (i = this.containers.length - 1; i >= 0; i--) { p = this.containers[i].element.offset(); this.containers[i].containerCache.left = p.left; this.containers[i].containerCache.top = p.top; this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); } } return this; }, _createPlaceholder: function(that) { that = that || this; var className, o = that.options; if (!o.placeholder || o.placeholder.constructor === String) { className = o.placeholder; o.placeholder = { element: function() { var nodeName = that.currentItem[0].nodeName.toLowerCase(), element = $(that.document[0].createElement(nodeName)) .addClass(className || that.currentItem[0].className + " ui-sortable-placeholder") .removeClass("ui-sortable-helper"); if (nodeName === "tr") { // Use a high colspan to force the td to expand the full // width of the table (browsers are smart enough to // handle this properly) element.append("
"); } else if (nodeName === "img") { element.attr("src", that.currentItem.attr("src")); } if (!className) { element.css("visibility", "hidden"); } return element; }, update: function(container, p) { // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified if (className && !o.forcePlaceholderSize) { return; } //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item if (!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop") || 0, 10) - parseInt(that.currentItem.css("paddingBottom") || 0, 10)); } if (!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft") || 0, 10) - parseInt(that.currentItem.css("paddingRight") || 0, 10)); } } }; } //Create the placeholder that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); //Append it after the actual current item that.currentItem.after(that.placeholder); //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) o.placeholder.update(that, that.placeholder); }, _contactContainers: function(event) { var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, innermostContainer = null, innermostIndex = null; // get innermost container that intersects with item for (i = this.containers.length - 1; i >= 0; i--) { // never consider a container that's located within the item itself if ($.contains(this.currentItem[0], this.containers[i].element[0])) { continue; } if (this._intersectsWith(this.containers[i].containerCache)) { // if we've already found a container and it's more "inner" than this, then continue if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { continue; } innermostContainer = this.containers[i]; innermostIndex = i; } else { // container doesn't intersect. trigger "out" event if necessary if (this.containers[i].containerCache.over) { this.containers[i]._trigger("out", event, this._uiHash(this)); this.containers[i].containerCache.over = 0; } } } // if no intersecting containers found, return if (!innermostContainer) { return; } // move the item into the container if it's not there already if (this.containers.length === 1) { if (!this.containers[innermostIndex].containerCache.over) { this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } } else { //When entering a new container, we will find the item with the least distance and append our item near it dist = 10000; itemWithLeastDistance = null; floating = innermostContainer.floating || isFloating(this.currentItem); posProperty = floating ? "left" : "top"; sizeProperty = floating ? "width" : "height"; base = this.positionAbs[posProperty] + this.offset.click[posProperty]; for (j = this.items.length - 1; j >= 0; j--) { if (!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { continue; } if (this.items[j].item[0] === this.currentItem[0]) { continue; } if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { continue; } cur = this.items[j].item.offset()[posProperty]; nearBottom = false; if (Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)) { nearBottom = true; cur += this.items[j][sizeProperty]; } if (Math.abs(cur - base) < dist) { dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; this.direction = nearBottom ? "up" : "down"; } } //Check if dropOnEmpty is enabled if (!itemWithLeastDistance && !this.options.dropOnEmpty) { return; } if (this.currentContainer === this.containers[innermostIndex]) { return; } itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); this._trigger("change", event, this._uiHash()); this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); this.currentContainer = this.containers[innermostIndex]; //Update the placeholder this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } }, _createHelper: function(event) { var o = this.options, helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); //Add the helper to the DOM if that didn't happen already if (!helper.parents("body").length) { $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); } if (helper[0] === this.currentItem[0]) { this._storedCSS = {width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left")}; } if (!helper[0].style.width || o.forceHelperSize) { helper.width(this.currentItem.width()); } if (!helper[0].style.height || o.forceHelperSize) { helper.height(this.currentItem.height()); } return helper; }, _adjustOffsetFromHelper: function(obj) { if (typeof obj === "string") { obj = obj.split(" "); } if ($.isArray(obj)) { obj = {left: +obj[0], top: +obj[1] || 0}; } if ("left" in obj) { this.offset.click.left = obj.left + this.margins.left; } if ("right" in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ("top" in obj) { this.offset.click.top = obj.top + this.margins.top; } if ("bottom" in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _getParentOffset: function() { //Get the offsetParent and cache its position this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); // This is a special case where we need to modify a offset calculated on start, since the following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } // This needs to be actually done for all browsers, since pageX/pageY includes this information // with an ugly IE fix if (this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { po = {top: 0, left: 0}; } return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) }; }, _getRelativeOffset: function() { if (this.cssPosition === "relative") { var p = this.currentItem.position(); return { top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft() }; } else { return {top: 0, left: 0}; } }, _cacheMargins: function() { this.margins = { left: (parseInt(this.currentItem.css("marginLeft"), 10) || 0), top: (parseInt(this.currentItem.css("marginTop"), 10) || 0) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var ce, co, over, o = this.options; if (o.containment === "parent") { o.containment = this.helper[0].parentNode; } if (o.containment === "document" || o.containment === "window") { this.containment = [ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; } if (!(/^(document|window|parent)$/).test(o.containment)) { ce = $(o.containment)[0]; co = $(o.containment).offset(); over = ($(ce).css("overflow") !== "hidden"); this.containment = [ co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top ]; } }, _convertPositionTo: function(d, pos) { if (!pos) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); return { top: ( pos.top + // The absolute mouse position this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) ((this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod) ), left: ( pos.left + // The absolute mouse position this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) ((this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod) ) }; }, _generatePosition: function(event) { var top, left, o = this.options, pageX = event.pageX, pageY = event.pageY, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); // This is another very weird special case that only happens for relative elements: // 1. If the css position is relative // 2. and the scroll parent is the document or similar to the offset parent // we have to refresh the relative offset during the scroll so there are no jumps if (this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { this.offset.relative = this._getRelativeOffset(); } /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ if (this.originalPosition) { //If we are not dragging yet, we won't check for options if (this.containment) { if (event.pageX - this.offset.click.left < this.containment[0]) { pageX = this.containment[0] + this.offset.click.left; } if (event.pageY - this.offset.click.top < this.containment[1]) { pageY = this.containment[1] + this.offset.click.top; } if (event.pageX - this.offset.click.left > this.containment[2]) { pageX = this.containment[2] + this.offset.click.left; } if (event.pageY - this.offset.click.top > this.containment[3]) { pageY = this.containment[3] + this.offset.click.top; } } if (o.grid) { top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; pageY = this.containment ? ((top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; pageX = this.containment ? ((left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; } } return { top: ( pageY - // The absolute mouse position this.offset.click.top - // Click offset (relative to the element) this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top + // The offsetParent's offset without borders (offset + border) ((this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop()))) ), left: ( pageX - // The absolute mouse position this.offset.click.left - // Click offset (relative to the element) this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left + // The offsetParent's offset without borders (offset + border) ((this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())) ) }; }, _rearrange: function(event, i, a, hardRefresh) { a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); //Various things done here to improve the performance: // 1. we create a setTimeout, that calls refreshPositions // 2. on the instance, we have a counter variable, that get's higher after every append // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same // 4. this lets only the last addition to the timeout stack through this.counter = this.counter ? ++this.counter : 1; var counter = this.counter; this._delay(function() { if (counter === this.counter) { this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove } }); }, _clear: function(event, noPropagation) { this.reverting = false; // We delay all events that have to be triggered to after the point where the placeholder has been removed and // everything else normalized again var i, delayedTriggers = []; // We first have to update the dom position of the actual currentItem // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) if (!this._noFinalSort && this.currentItem.parent().length) { this.placeholder.before(this.currentItem); } this._noFinalSort = null; if (this.helper[0] === this.currentItem[0]) { for (i in this._storedCSS) { if (this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { this._storedCSS[i] = ""; } } this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); } else { this.currentItem.show(); } if (this.fromOutside && !noPropagation) { delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); } if ((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed } // Check if the items Container has Changed and trigger appropriate // events. if (this !== this.currentContainer) { if (!noPropagation) { delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); } } //Post events to containers for (i = this.containers.length - 1; i >= 0; i--) { if (!noPropagation) { delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); } if (this.containers[i].containerCache.over) { delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); this.containers[i].containerCache.over = 0; } } //Do what was originally in plugins if (this.storedCursor) { this.document.find("body").css("cursor", this.storedCursor); this.storedStylesheet.remove(); } if (this._storedOpacity) { this.helper.css("opacity", this._storedOpacity); } if (this._storedZIndex) { this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); } this.dragging = false; if (this.cancelHelperRemoval) { if (!noPropagation) { this._trigger("beforeStop", event, this._uiHash()); for (i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); } //Trigger all delayed events this._trigger("stop", event, this._uiHash()); } this.fromOutside = false; return false; } if (!noPropagation) { this._trigger("beforeStop", event, this._uiHash()); } //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! this.placeholder[0].parentNode.removeChild(this.placeholder[0]); if (this.helper[0] !== this.currentItem[0]) { this.helper.remove(); } this.helper = null; if (!noPropagation) { for (i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); } //Trigger all delayed events this._trigger("stop", event, this._uiHash()); } this.fromOutside = false; return true; }, _trigger: function() { if ($.Widget.prototype._trigger.apply(this, arguments) === false) { this.cancel(); } }, _uiHash: function(_inst) { var inst = _inst || this; return { helper: inst.helper, placeholder: inst.placeholder || $([]), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, item: inst.currentItem, sender: _inst ? _inst.element : null }; } }); })(njQuery); (function($) { window.smartSliderSlideOrdering = { init: function(url) { var ul = $(".smartslider-slides-list"); ul.qtip({ id: "slides-ordering", content: { text: window.ss2lang.Ordering_saved }, show: { event: false, ready: false }, hide: false, position: { my: "bottom center", at: "top center", target: ul, viewport: $(window) } }); ul.sortable({ items: "li.smartslider-slide", placeholder: "smartslider-placeholder", forcePlaceholderSize: true, axis: "y", handle: ".smartslider-icon-ordering", stop: function(event, ui) { var ajaxcall = url; ajaxcall += (ajaxcall.indexOf("?") ? "&" : "?") + $(this).sortable("serialize"); $.ajax({ url: ajaxcall, context: document.body }).done(function() { ul.qtip("show"); setTimeout(function() { ul.qtip("hide"); }, 3000); }); } }); ul.disableSelection(); } } })(njQuery);(function ($, scope, undefined) { scope.nextendTabTabbed = NClass.extend({ init: function(container, active){ var $this = this; this.container = njQuery('#'+container); this.options = this.container.find('.smartslider-toolbar-options'); this.panes = this.container.find('.nextend-tab-tabbed-panes'); this.pane = this.container.find('.nextend-tab-tabbed-pane'); this.options.each(function(i){ $(this).on('click', function(){ $this.changePane(i); }); }); }, changePane: function(i){ var $this = this; this.options.eq(i).addClass('active'); this.options.not(this.options.eq(i)).removeClass('active'); this.panes.css((window.nextendDir == 'rtl' ? 'marginRight' : 'marginLeft'), (window.nextendDir == 'rtl' ? (-(Math.abs(i-(this.options.length-1)))*100)+'%' : (-i*100)+'%')); this.pane.eq(i).css('visibility', 'visible'); var hidden = this.pane.not(this.pane.eq(i)); setTimeout(function(){ hidden.css('visibility', 'hidden'); }, 400); } }); })(njQuery, window);// Spectrum Colorpicker v1.0.9 // https://github.com/bgrins/spectrum // Author: Brian Grinstead // License: MIT (function (window, $, undefined) { var defaultOpts = { // Events beforeShow: noop, move: noop, change: noop, show: noop, hide: noop, // Options color: false, flat: false, showInput: false, showButtons: true, clickoutFiresChange: false, showInitial: false, showPalette: false, showPaletteOnly: false, showSelectionPalette: true, localStorageKey: false, maxSelectionSize: 7, cancelText: "cancel", chooseText: "choose", preferredFormat: false, className: "", showAlpha: false, theme: "sp-light", palette: ['fff', '000'], selectionPalette: [], disabled: false }, spectrums = [], IE = !!/msie/i.exec( window.navigator.userAgent ), rgbaSupport = (function() { function contains( str, substr ) { return !!~('' + str).indexOf(substr); } var elem = document.createElement('div'); var style = elem.style; style.cssText = 'background-color:rgba(0,0,0,.5)'; return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); })(), replaceInput = [ "
", "
", "
", "
" ].join(''), markup = (function () { // IE does not support gradients with multiple stops, so we need to simulate // that for the rainbow slider with 8 divs that each have a single gradient var gradientFix = ""; if (IE) { for (var i = 1; i <= 6; i++) { gradientFix += "
"; } } return [ "
", "
", "
", "
", "
", "
" ].join(""); })(); function paletteTemplate (p, color, className) { var html = []; for (var i = 0; i < p.length; i++) { var tiny = tinycolor(p[i]); var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; c += (tinycolor.equals(color, p[i])) ? " sp-thumb-active" : ""; var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); html.push(''); } return "
" + html.join('') + "
"; } function hideAll() { for (var i = 0; i < spectrums.length; i++) { if (spectrums[i]) { spectrums[i].hide(); } } } function instanceOptions(o, callbackContext) { var opts = $.extend({}, defaultOpts, o); opts.callbacks = { 'move': bind(opts.move, callbackContext), 'change': bind(opts.change, callbackContext), 'show': bind(opts.show, callbackContext), 'hide': bind(opts.hide, callbackContext), 'beforeShow': bind(opts.beforeShow, callbackContext) }; return opts; } function spectrum(element, o) { var opts = instanceOptions(o, element), flat = opts.flat, showSelectionPalette = opts.showSelectionPalette, localStorageKey = opts.localStorageKey, theme = opts.theme, callbacks = opts.callbacks, resize = throttle(reflow, 10), visible = false, dragWidth = 0, dragHeight = 0, dragHelperHeight = 0, slideHeight = 0, slideWidth = 0, alphaWidth = 0, alphaSlideHelperWidth = 0, slideHelperHeight = 0, currentHue = 0, currentSaturation = 0, currentValue = 0, currentAlpha = 1, palette = opts.palette.slice(0), paletteArray = $.isArray(palette[0]) ? palette : [palette], selectionPalette = opts.selectionPalette.slice(0), draggingClass = "sp-dragging"; var doc = element.ownerDocument, body = doc.body, boundElement = $(element), disabled = false, container = $(markup, doc).addClass(theme), dragger = container.find(".sp-color"), dragHelper = container.find(".sp-dragger"), slider = container.find(".sp-hue"), slideHelper = container.find(".sp-slider"), alphaSliderInner = container.find(".sp-alpha-inner"), alphaSlider = container.find(".sp-alpha"), alphaSlideHelper = container.find(".sp-alpha-handle"), textInput = container.find(".sp-input"), paletteContainer = container.find(".sp-palette"), initialColorContainer = container.find(".sp-initial"), cancelButton = container.find(".sp-cancel"), chooseButton = container.find(".sp-choose"), isInput = boundElement.is("input"), shouldReplace = isInput && !flat, replacer = (shouldReplace) ? $(replaceInput).addClass(theme) : $([]), offsetElement = (shouldReplace) ? replacer : boundElement, previewElement = replacer.find(".sp-preview-inner"), initialColor = opts.color || (isInput && boundElement.val()), colorOnShow = false, preferredFormat = opts.preferredFormat, currentPreferredFormat = preferredFormat, clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange; function applyOptions() { container.toggleClass("sp-flat", flat); container.toggleClass("sp-input-disabled", !opts.showInput); container.toggleClass("sp-alpha-enabled", opts.showAlpha); container.toggleClass("sp-buttons-disabled", !opts.showButtons || flat); container.toggleClass("sp-palette-disabled", !opts.showPalette); container.toggleClass("sp-palette-only", opts.showPaletteOnly); container.toggleClass("sp-initial-disabled", !opts.showInitial); container.addClass(opts.className); reflow(); } function initialize() { if (IE) { container.find("*:not(input)").attr("unselectable", "on"); } applyOptions(); if (shouldReplace) { //boundElement.hide().after(replacer); boundElement.parent().after(replacer); } if (flat) { boundElement.parent().after(container).hide(); } else { $(body).append(container.hide()); } if (localStorageKey && window.localStorage) { // Migrate old palettes over to new format. May want to remove this eventually. try { var oldPalette = window.localStorage[localStorageKey].split(",#"); if (oldPalette.length > 1) { delete window.localStorage[localStorageKey]; $.each(oldPalette, function(i, c) { addColorToSelectionPalette(c); }); } } catch(e) { } try { selectionPalette = window.localStorage[localStorageKey].split(";"); } catch (e) { } } offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { if (!disabled) { toggle(); } e.stopPropagation(); if (!$(e.target).is("input")) { e.preventDefault(); } }); if(boundElement.is(":disabled") || (opts.disabled === true)) { disable(); } // Prevent clicks from bubbling up to document. This would cause it to be hidden. container.click(stopPropagation); // Handle user typed input textInput.change(setFromTextInput); textInput.bind("paste", function () { setTimeout(setFromTextInput, 1); }); textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); cancelButton.text(opts.cancelText); cancelButton.bind("click.spectrum", function (e) { e.stopPropagation(); e.preventDefault(); hide("cancel"); }); chooseButton.text(opts.chooseText); chooseButton.bind("click.spectrum", function (e) { e.stopPropagation(); e.preventDefault(); if (isValid()) { updateOriginalInput(true); hide(); } }); draggable(alphaSlider, function (dragX, dragY, e) { currentAlpha = (dragX / alphaWidth); if (e.shiftKey) { currentAlpha = Math.round(currentAlpha * 10) / 10; } move(); }); draggable(slider, function (dragX, dragY) { currentHue = parseFloat(dragY / slideHeight); move(); }, dragStart, dragStop); draggable(dragger, function (dragX, dragY) { currentSaturation = parseFloat(dragX / dragWidth); currentValue = parseFloat((dragHeight - dragY) / dragHeight); move(); }, dragStart, dragStop); if (!!initialColor) { set(initialColor); // In case color was black - update the preview UI and set the format // since the set function will not run (default color is black). updateUI(); currentPreferredFormat = preferredFormat || tinycolor(initialColor).format; addColorToSelectionPalette(initialColor); } else { updateUI(); } if (flat) { show(); } function palletElementClick(e) { if (e.data && e.data.ignore) { set($(this).data("color")); move(); } else { set($(this).data("color")); updateOriginalInput(true); move(); hide(); } return false; } var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; paletteContainer.delegate(".sp-thumb-el", paletteEvent, palletElementClick); initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, palletElementClick); } function addColorToSelectionPalette(color) { if (showSelectionPalette) { var colorRgb = tinycolor(color).toRgbString(); if ($.inArray(colorRgb, selectionPalette) === -1) { selectionPalette.push(colorRgb); } if (localStorageKey && window.localStorage) { try { window.localStorage[localStorageKey] = selectionPalette.join(";"); } catch(e) { } } } } function getUniqueSelectionPalette() { var unique = []; var p = selectionPalette; var paletteLookup = {}; var rgb; if (opts.showPalette) { for (var i = 0; i < paletteArray.length; i++) { for (var j = 0; j < paletteArray[i].length; j++) { rgb = tinycolor(paletteArray[i][j]).toRgbString(); paletteLookup[rgb] = true; } } for (i = 0; i < p.length; i++) { rgb = tinycolor(p[i]).toRgbString(); if (!paletteLookup.hasOwnProperty(rgb)) { unique.push(p[i]); paletteLookup[rgb] = true; } } } return unique.reverse().slice(0, opts.maxSelectionSize); } function drawPalette() { var currentColor = get(); var html = $.map(paletteArray, function (palette, i) { return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i); }); if (selectionPalette) { html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection")); } paletteContainer.html(html.join("")); } function drawInitial() { if (opts.showInitial) { var initial = colorOnShow; var current = get(); initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial")); } } function dragStart() { if (dragHeight === 0 || dragWidth === 0 || slideHeight === 0) { reflow(); } container.addClass(draggingClass); } function dragStop() { container.removeClass(draggingClass); } function setFromTextInput() { var tiny = tinycolor(textInput.val()); if (tiny.ok) { set(tiny); } else { textInput.addClass("sp-validation-error"); } } function toggle() { if (visible) { hide(); } else { show(); } } function show() { if (visible) { reflow(); return; } if (callbacks.beforeShow(get()) === false) return; hideAll(); visible = true; $(doc).bind("click.spectrum", hide); $(window).bind("resize.spectrum", resize); replacer.addClass("sp-active"); container.show(); if (opts.showPalette) { drawPalette(); } reflow(); updateUI(); colorOnShow = get(); drawInitial(); callbacks.show(colorOnShow); } function hide(e) { // Return on right click if (e && e.type == "click" && e.button == 2) { return; } // Return if hiding is unnecessary if (!visible || flat) { return; } visible = false; $(doc).unbind("click.spectrum", hide); $(window).unbind("resize.spectrum", resize); replacer.removeClass("sp-active"); container.hide(); var colorHasChanged = !tinycolor.equals(get(), colorOnShow); if (colorHasChanged) { if (clickoutFiresChange && e !== "cancel") { updateOriginalInput(true); } else { revert(); } } callbacks.hide(get()); } function revert() { set(colorOnShow, true); } function set(color, ignoreFormatChange) { if (tinycolor.equals(color, get())) { return; } var newColor = tinycolor(color); var newHsv = newColor.toHsv(); currentHue = newHsv.h; currentSaturation = newHsv.s; currentValue = newHsv.v; currentAlpha = newHsv.a; updateUI(); if (!ignoreFormatChange) { currentPreferredFormat = preferredFormat || newColor.format; } } function get() { return tinycolor.fromRatio({ h: currentHue, s: currentSaturation, v: currentValue, a: Math.round(currentAlpha * 100) / 100 }); } function isValid() { return !textInput.hasClass("sp-validation-error"); } function move() { updateUI(); callbacks.move(get()); } function updateUI() { textInput.removeClass("sp-validation-error"); updateHelperLocations(); // Update dragger background color (gradients take care of saturation and value). var flatColor = tinycolor({ h: currentHue, s: "1.0", v: "1.0" }); dragger.css("background-color", '#'+flatColor.toHexString()); // Get a format that alpha will be included in (hex and names ignore alpha) var format = currentPreferredFormat; if (currentAlpha < 1) { if (format === "hex" || format === "name") { format = "rgb"; } } var realColor = get(), realHex = realColor.toHexString(), realRgb = realColor.toRgbString(); // Update the replaced elements background color (with actual selected color) if (rgbaSupport || realColor.alpha === 1) { previewElement.css("background-color", realRgb); } else { previewElement.css("background-color", "transparent"); previewElement.css("filter", realColor.toFilter()); } if (opts.showAlpha) { var rgb = realColor.toRgb(); rgb.a = 0; var realAlpha = tinycolor(rgb).toRgbString(); var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; if (IE) { alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); } else { alphaSliderInner.css("background", "-webkit-" + gradient); alphaSliderInner.css("background", "-moz-" + gradient); alphaSliderInner.css("background", "-ms-" + gradient); alphaSliderInner.css("background", gradient); } } // Update the text entry input as it changes happen if (opts.showInput) { if (currentAlpha < 1) { if (format === "hex" || format === "name") { format = "rgb"; } } textInput.val(realColor.toString(format)); } if (opts.showPalette) { drawPalette(); } drawInitial(); } function updateHelperLocations() { var s = currentSaturation; var v = currentValue; // Where to show the little circle in that displays your current selected color var dragX = s * dragWidth; var dragY = dragHeight - (v * dragHeight); dragX = Math.max( -dragHelperHeight, Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) ); dragY = Math.max( -dragHelperHeight, Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) ); dragHelper.css({ "top": dragY, "left": dragX }); var alphaX = currentAlpha * alphaWidth; alphaSlideHelper.css({ "left": alphaX - (alphaSlideHelperWidth / 2) }); // Where to show the bar that displays your current selected hue var slideY = (currentHue) * slideHeight; slideHelper.css({ "top": slideY - slideHelperHeight }); } function updateOriginalInput(fireCallback) { var color = get(); if (isInput) { boundElement.val(color.toString(currentPreferredFormat)).change(); } //var hasChanged = !tinycolor.equals(color, colorOnShow); var hasChanged = 1; colorOnShow = color; // Update the selection palette with the current color addColorToSelectionPalette(color); if (fireCallback && hasChanged) { callbacks.change(color); } } function reflow() { dragWidth = dragger.width(); dragHeight = dragger.height(); dragHelperHeight = dragHelper.height(); slideWidth = slider.width(); slideHeight = slider.height(); slideHelperHeight = slideHelper.height(); alphaWidth = alphaSlider.width(); alphaSlideHelperWidth = alphaSlideHelper.width(); if (!flat) { container.offset(getOffset(container, offsetElement)); } updateHelperLocations(); } function destroy() { boundElement.show(); offsetElement.unbind("click.spectrum touchstart.spectrum"); container.remove(); replacer.remove(); spectrums[spect.id] = null; } function option(optionName, optionValue) { if (optionName === undefined) { return $.extend({}, opts); } if (optionValue === undefined) { return opts[optionName]; } opts[optionName] = optionValue; applyOptions(); } function enable() { disabled = false; boundElement.attr("disabled", false); offsetElement.removeClass("sp-disabled"); } function disable() { hide(); disabled = true; boundElement.attr("disabled", true); offsetElement.addClass("sp-disabled"); } initialize(); var spect = { show: show, hide: hide, toggle: toggle, reflow: reflow, option: option, enable: enable, disable: disable, set: function (c) { set(c); updateOriginalInput(); }, get: get, destroy: destroy, container: container }; spect.id = spectrums.push(spect) - 1; return spect; } /** * checkOffset - get the offset below/above and left/right element depending on screen position * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js */ function getOffset(picker, input) { var extraY = 0; var dpWidth = picker.outerWidth(); var dpHeight = picker.outerHeight(); var inputHeight = input.outerHeight(); var doc = picker[0].ownerDocument; var docElem = doc.documentElement; var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); var viewHeight = docElem.clientHeight + $(doc).scrollTop(); var offset = input.offset(); offset.top += inputHeight; offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); offset.top -= Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight - extraY) : extraY)); return offset; } /** * noop - do nothing */ function noop() { } /** * stopPropagation - makes the code only doing this a little easier to read in line */ function stopPropagation(e) { e.stopPropagation(); } /** * Create a function bound to a given object * Thanks to underscore.js */ function bind(func, obj) { var slice = Array.prototype.slice; var args = slice.call(arguments, 2); return function () { return func.apply(obj, args.concat(slice.call(arguments))); }; } /** * Lightweight drag helper. Handles containment within the element, so that * when dragging, the x is within [0,element.width] and y is within [0,element.height] */ function draggable(element, onmove, onstart, onstop) { onmove = onmove || function () { }; onstart = onstart || function () { }; onstop = onstop || function () { }; var doc = element.ownerDocument || document; var dragging = false; var offset = {}; var maxHeight = 0; var maxWidth = 0; var hasTouch = ('ontouchstart' in window); var duringDragEvents = {}; duringDragEvents["selectstart"] = prevent; duringDragEvents["dragstart"] = prevent; duringDragEvents[(hasTouch ? "touchmove" : "mousemove")] = move; duringDragEvents[(hasTouch ? "touchend" : "mouseup")] = stop; function prevent(e) { if (e.stopPropagation) { e.stopPropagation(); } if (e.preventDefault) { e.preventDefault(); } e.returnValue = false; } function move(e) { if (dragging) { // Mouseup happened outside of window if (IE && document.documentMode < 9 && !e.button) { return stop(); } var touches = e.originalEvent.touches; var pageX = touches ? touches[0].pageX : e.pageX; var pageY = touches ? touches[0].pageY : e.pageY; var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); if (hasTouch) { // Stop scrolling in iOS prevent(e); } onmove.apply(element, [dragX, dragY, e]); } } function start(e) { var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); var touches = e.originalEvent.touches; if (!rightclick && !dragging) { if (onstart.apply(element, arguments) !== false) { dragging = true; maxHeight = $(element).height(); maxWidth = $(element).width(); offset = $(element).offset(); $(doc).bind(duringDragEvents); $(doc.body).addClass("sp-dragging"); if (!hasTouch) { move(e); } prevent(e); } } } function stop() { if (dragging) { $(doc).unbind(duringDragEvents); $(doc.body).removeClass("sp-dragging"); onstop.apply(element, arguments); } dragging = false; } $(element).bind(hasTouch ? "touchstart" : "mousedown", start); } function throttle(func, wait, debounce) { var timeout; return function () { var context = this, args = arguments; var throttler = function () { timeout = null; func.apply(context, args); }; if (debounce) clearTimeout(timeout); if (debounce || !timeout) timeout = setTimeout(throttler, wait); }; } /** * Define a jQuery plugin */ var dataID = "spectrum.id"; $.fn.spectrum = function (opts, extra) { if (typeof opts == "string") { var returnValue = this; var args = Array.prototype.slice.call( arguments, 1 ); this.each(function () { var spect = spectrums[$(this).data(dataID)]; if (spect) { var method = spect[opts]; if (!method) { throw new Error( "Spectrum: no such method: '" + opts + "'" ); } if (opts == "get") { returnValue = spect.get(); } else if (opts == "container") { returnValue = spect.container; } else if (opts == "option") { returnValue = spect.option.apply(spect, args); } else if (opts == "destroy") { spect.destroy(); $(this).removeData(dataID); } else { method.apply(spect, args); } } }); return returnValue; } // Initializing a new instance of spectrum return this.spectrum("destroy").each(function () { var spect = spectrum(this, opts); $(this).data(dataID, spect.id); }); }; $.fn.spectrum.load = true; $.fn.spectrum.loadOpts = {}; $.fn.spectrum.draggable = draggable; $.fn.spectrum.defaults = defaultOpts; $.spectrum = { }; $.spectrum.localization = { }; $.spectrum.palettes = { }; $.fn.spectrum.processNativeColorInputs = function () { var colorInput = $("")[0]; var supportsColor = colorInput.type === "color" && colorInput.value != "!"; if (!supportsColor) { $("input[type=color]").spectrum({ preferredFormat: "hex6" }); } }; // TinyColor.js - - 2011 Brian Grinstead - v0.5 (function (window) { var trimLeft = /^[\s,#]+/, trimRight = /\s+$/, tinyCounter = 0, math = Math, mathRound = math.round, mathMin = math.min, mathMax = math.max, mathRandom = math.random, parseFloat = window.parseFloat; function tinycolor(color, opts) { // If input is already a tinycolor, return itself if (typeof color == "object" && color.hasOwnProperty("_tc_id")) { return color; } var rgb = inputToRGB(color); var r = rgb.r, g = rgb.g, b = rgb.b, a = parseFloat(rgb.a), format = rgb.format; return { ok: rgb.ok, format: format, _tc_id: tinyCounter++, alpha: a, toHsv: function () { var hsv = rgbToHsv(r, g, b); return { h: hsv.h, s: hsv.s, v: hsv.v, a: a }; }, toHsvString: function () { var hsv = rgbToHsv(r, g, b); var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); return (a == 1) ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, " + a + ")"; }, toHsl: function () { var hsl = rgbToHsl(r, g, b); return { h: hsl.h, s: hsl.s, l: hsl.l, a: a }; }, toHslString: function () { var hsl = rgbToHsl(r, g, b); var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); return (a == 1) ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, " + a + ")"; }, toHex: function () { return rgbToHex(r, g, b); }, toHexString: function (force6Char) { return rgbToHex(r, g, b, force6Char); }, toHexString8: function () { return rgbToHex(r, g, b, true)+pad2(mathRound(a*255).toString(16)); }, toRgb: function () { return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a }; }, toRgbString: function () { return (a == 1) ? "rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" : "rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + a + ")"; }, toName: function () { return hexNames[rgbToHex(r, g, b)] || false; }, toFilter: function (opts, secondColor) { var hex = rgbToHex(r, g, b, true); var secondHex = hex; var alphaHex = Math.round(parseFloat(a) * 255).toString(16); var secondAlphaHex = alphaHex; var gradientType = opts && opts.gradientType ? "GradientType = 1, " : ""; if (secondColor) { var s = tinycolor(secondColor); secondHex = s.toHex(); secondAlphaHex = Math.round(parseFloat(s.alpha) * 255).toString(16); } return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr=#" + pad2(alphaHex) + hex + ",endColorstr=#" + pad2(secondAlphaHex) + secondHex + ")"; }, toString: function (format) { format = format || this.format; var formattedString = false; if (format === "rgb") { formattedString = this.toRgbString(); } if (format === "hex") { formattedString = this.toHexString(); } if (format === "hex6") { formattedString = this.toHexString(true); } if (format === "hex8") { formattedString = this.toHexString8(); } if (format === "name") { formattedString = this.toName(); } if (format === "hsl") { formattedString = this.toHslString(); } if (format === "hsv") { formattedString = this.toHsvString(); } return formattedString || this.toHexString(true); } }; } // If input is an object, force 1 into "1.0" to handle ratios properly // String input requires "1.0" as input, so 1 will be treated as 1 tinycolor.fromRatio = function (color) { if (typeof color == "object") { for (var i in color) { if (color[i] === 1) { color[i] = "1.0"; } } } return tinycolor(color); }; // Given a string or object, convert that input to RGB // Possible string inputs: // // "red" // "#f00" or "f00" // "#ff0000" or "ff0000" // "rgb 255 0 0" or "rgb (255, 0, 0)" // "rgb 1.0 0 0" or "rgb (1, 0, 0)" // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" // function inputToRGB(color) { var rgb = { r: 0, g: 0, b: 0 }; var a = 1; var ok = false; var format = false; if (typeof color == "string") { color = stringInputToObject(color); } if (typeof color == "object") { if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { rgb = rgbToRgb(color.r, color.g, color.b); ok = true; format = "rgb"; } else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { rgb = hsvToRgb(color.h, color.s, color.v); ok = true; format = "hsv"; } else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { rgb = hslToRgb(color.h, color.s, color.l); ok = true; format = "hsl"; } if (color.hasOwnProperty("a")) { a = color.a; } } rgb.r = mathMin(255, mathMax(rgb.r, 0)); rgb.g = mathMin(255, mathMax(rgb.g, 0)); rgb.b = mathMin(255, mathMax(rgb.b, 0)); // Don't let the range of [0,255] come back in [0,1]. // Potentially lose a little bit of precision here, but will fix issues where // .5 gets interpreted as half of the total, instead of half of 1. // If it was supposed to be 128, this was already taken care of in the conversion function if (rgb.r < 1) { rgb.r = mathRound(rgb.r); } if (rgb.g < 1) { rgb.g = mathRound(rgb.g); } if (rgb.b < 1) { rgb.b = mathRound(rgb.b); } return { ok: ok, format: (color && color.format) || format, r: rgb.r, g: rgb.g, b: rgb.b, a: a }; } // Conversion Functions // -------------------- // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: // // `rgbToRgb` // Handle bounds / percentage checking to conform to CSS color spec // // *Assumes:* r, g, b in [0, 255] or [0, 1] // *Returns:* { r, g, b } in [0, 255] function rgbToRgb(r, g, b) { return { r: bound01(r, 255) * 255, g: bound01(g, 255) * 255, b: bound01(b, 255) * 255 }; } // `rgbToHsl` // Converts an RGB color value to HSL. // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] // *Returns:* { h, s, l } in [0,1] function rgbToHsl(r, g, b) { r = bound01(r, 255); g = bound01(g, 255); b = bound01(b, 255); var max = mathMax(r, g, b), min = mathMin(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; // achromatic } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, l: l }; } // `hslToRgb` // Converts an HSL color value to RGB. // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] // *Returns:* { r, g, b } in the set [0, 255] function hslToRgb(h, s, l) { var r, g, b; h = bound01(h, 360); s = bound01(s, 100); l = bound01(l, 100); function hue2rgb(p, q, t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; } if (s === 0) { r = g = b = l; // achromatic } else { var q = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return { r: r * 255, g: g * 255, b: b * 255 }; } // `rgbToHsv` // Converts an RGB color value to HSV // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] // *Returns:* { h, s, v } in [0,1] function rgbToHsv(r, g, b) { r = bound01(r, 255); g = bound01(g, 255); b = bound01(b, 255); var max = mathMax(r, g, b), min = mathMin(r, g, b); var h, s, v = max; var d = max - min; s = max === 0 ? 0 : d / max; if (max == min) { h = 0; // achromatic } else { switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, v: v }; } // `hsvToRgb` // Converts an HSV color value to RGB. // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] // *Returns:* { r, g, b } in the set [0, 255] function hsvToRgb(h, s, v) { h = bound01(h, 360) * 6; s = bound01(s, 100); v = bound01(v, 100); var i = math.floor(h), f = h - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s), mod = i % 6, r = [v, q, p, p, t, v][mod], g = [t, v, v, q, p, p][mod], b = [p, p, t, v, v, q][mod]; return { r: r * 255, g: g * 255, b: b * 255 }; } // `rgbToHex` // Converts an RGB color to hex // Assumes r, g, and b are contained in the set [0, 255] // Returns a 3 or 6 character hex function rgbToHex(r, g, b, force6Char) { var hex = [ pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)) ]; // Return a 3 character hex if possible if (!force6Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); } return hex.join(""); } // `equals` // Can be called with any tinycolor input tinycolor.equals = function (color1, color2) { if (!color1 || !color2) { return false; } return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); }; tinycolor.random = function () { return tinycolor.fromRatio({ r: mathRandom(), g: mathRandom(), b: mathRandom() }); }; // Modification Functions // ---------------------- // Thanks to less.js for some of the basics here // tinycolor.desaturate = function (color, amount) { var hsl = tinycolor(color).toHsl(); hsl.s -= ((amount || 10) / 100); hsl.s = clamp01(hsl.s); return tinycolor(hsl); }; tinycolor.saturate = function (color, amount) { var hsl = tinycolor(color).toHsl(); hsl.s += ((amount || 10) / 100); hsl.s = clamp01(hsl.s); return tinycolor(hsl); }; tinycolor.greyscale = function (color) { return tinycolor.desaturate(color, 100); }; tinycolor.lighten = function (color, amount) { var hsl = tinycolor(color).toHsl(); hsl.l += ((amount || 10) / 100); hsl.l = clamp01(hsl.l); return tinycolor(hsl); }; tinycolor.darken = function (color, amount) { var hsl = tinycolor(color).toHsl(); hsl.l -= ((amount || 10) / 100); hsl.l = clamp01(hsl.l); return tinycolor(hsl); }; tinycolor.complement = function (color) { var hsl = tinycolor(color).toHsl(); hsl.h = (hsl.h + 0.5) % 1; return tinycolor(hsl); }; // Combination Functions // --------------------- // Thanks to jQuery xColor for some of the ideas behind these // tinycolor.triad = function (color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h * 360; return [ tinycolor(color), tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) ]; }; tinycolor.tetrad = function (color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h * 360; return [ tinycolor(color), tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) ]; }; tinycolor.splitcomplement = function (color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h * 360; return [ tinycolor(color), tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }) ]; }; tinycolor.analogous = function (color, results, slices) { results = results || 6; slices = slices || 30; var hsl = tinycolor(color).toHsl(); var part = 360 / slices; var ret = [tinycolor(color)]; hsl.h *= 360; for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { hsl.h = (hsl.h + part) % 360; ret.push(tinycolor(hsl)); } return ret; }; tinycolor.monochromatic = function (color, results) { results = results || 6; var hsv = tinycolor(color).toHsv(); var h = hsv.h, s = hsv.s, v = hsv.v; var ret = []; var modification = 1 / results; while (results--) { ret.push(tinycolor({ h: h, s: s, v: v })); v = (v + modification) % 1; } return ret; }; tinycolor.readable = function (color1, color2) { var a = tinycolor(color1).toRgb(), b = tinycolor(color2).toRgb(); return ( (b.r - a.r) * (b.r - a.r) + (b.g - a.g) * (b.g - a.g) + (b.b - a.b) * (b.b - a.b) ) > 0x28A4; }; // Big List of Colors // --------- // var names = tinycolor.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }; // Make it easy to access colors via `hexNames[hex]` var hexNames = tinycolor.hexNames = flip(names); // Utilities // --------- // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` function flip(o) { var flipped = {}; for (var i in o) { if (o.hasOwnProperty(i)) { flipped[o[i]] = i; } } return flipped; } // Take input from [0, n] and return it as [0, 1] function bound01(n, max) { if (isOnePointZero(n)) { n = "100%"; } var processPercent = isPercentage(n); n = mathMin(max, mathMax(0, parseFloat(n))); // Automatically convert percentage into number if (processPercent) { n = n * (max / 100); } // Handle floating point rounding errors if (math.abs(n - max) < 0.000001) { return 1; } else if (n >= 1) { return (n % max) / parseFloat(max); } return n; } // Force a number between 0 and 1 function clamp01(val) { return mathMin(1, mathMax(0, val)); } // Parse an integer into hex function parseHex(val) { return parseInt(val, 16); } // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 // function isOnePointZero(n) { return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; } // Check to see if string passed in is a percentage function isPercentage(n) { return typeof n === "string" && n.indexOf('%') != -1; } // Force a hex value to have 2 characters function pad2(c) { return c.length == 1 ? '0' + c : '' + c; } var matchers = (function () { // var CSS_INTEGER = "[-\\+]?\\d+%?"; // var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; // Actual matching. // Parentheses and commas are optional, but not required. // Whitespace can take the place of commas or opening paren var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; return { rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ }; })(); // `stringInputToObject` // Permissive string parsing. Take in a number of formats, and output an object // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` function stringInputToObject(color) { color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase(); var named = false; if (names[color]) { color = names[color]; named = true; } else if (color == 'transparent') { return { r: 0, g: 0, b: 0, a: 0 }; } // Try to match string input using regular expressions. // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] // Just return an object and let the conversion functions handle that. // This way the result will be the same whether the tinycolor is initialized with string or object. var match; if ((match = matchers.rgb.exec(color))) { return { r: match[1], g: match[2], b: match[3] }; } if ((match = matchers.rgba.exec(color))) { return { r: match[1], g: match[2], b: match[3], a: match[4] }; } if ((match = matchers.hsl.exec(color))) { return { h: match[1], s: match[2], l: match[3] }; } if ((match = matchers.hsla.exec(color))) { return { h: match[1], s: match[2], l: match[3], a: match[4] }; } if ((match = matchers.hsv.exec(color))) { return { h: match[1], s: match[2], v: match[3] }; } if ((match = matchers.hex6.exec(color))) { return { r: parseHex(match[1]), g: parseHex(match[2]), b: parseHex(match[3]), format: named ? "name" : "hex" }; } if ((match = matchers.hex8.exec(color))) { return { r: parseHex(match[1]), g: parseHex(match[2]), b: parseHex(match[3]), a: parseHex(match[4])/255, format: named ? "name" : "hex" }; } if ((match = matchers.hex3.exec(color))) { return { r: parseHex(match[1] + '' + match[1]), g: parseHex(match[2] + '' + match[2]), b: parseHex(match[3] + '' + match[3]), format: named ? "name" : "hex" }; } return false; } // Everything is ready, expose to window window.tinycolor = tinycolor; })(this); $(function () { if ($.fn.spectrum.load) { $.fn.spectrum.processNativeColorInputs(); } }); })(window, njQuery); (function($, scope, undefined) { scope.ssItemParser = NClass.extend({ parse: function(name, data){ var o = {}; o[name] = data; //o[name+'_esc'] = data.replace(/"/g, '"').replace(/'/g, '''); return o; }, render: function(node, data){ return node; } }); })(njQuery, window);(function($, scope, undefined) { scope.ssItemParserbutton = scope.ssItemParser.extend({ parse: function(name, data){ var o = this._super(name, data); if(name === 'link'){ var _d = data.split('|*|'); o.url = _d[0]; o.target = _d[1]; delete o.size; } return o; } }); })(njQuery, window);(function ($, scope, undefined) { scope.ssItemParserheading = scope.ssItemParser.extend({ parse: function (name, data) { var o = this._super(name, data); if (name === 'link') { var _d = data.split('|*|'); o.url = _d[0]; o.target = _d[1]; delete o.size; }else if(name === 'fontsize'){ if(data != '' && data != 'auto'){ o.fontsizer = 'font-size:'+data+'%;'; }else{ o.fontsizer = ''; } }else if(name === 'fontcolor'){ var _d = data.split('|*|'); if(parseInt(_d[0])){ o.fontcolorr = 'color: #'+_d[1]+';'; }else{ o.fontcolorr = ''; } }else if(name === 'css'){ o[name+'_esc'] = data.replace(/"/g, '"').replace(/'/g, '''); } return o; }, render: function(node, data){ if(data['url'] == '#'){ node.html(node.children('a').html()); } return node; } }); })(njQuery, window);(function($, scope, undefined) { scope.ssItemParserimage = scope.ssItemParser.extend({ parse: function(name, data){ var o = this._super(name, data); if(name === 'size'){ var _d = data.split('|*|'); o.width = _d[0]; o.height = _d[1]; delete o.size; }else if(name === 'link'){ var _d = data.split('|*|'); o.url = _d[0]; o.target = _d[1]; delete o.size; }else if(name === 'kenburns'){ var _d = data.split('|*|'); if(parseInt(_d[0])){ o.kenburnsclass = 'haskenburns '; }else{ o.kenburnsclass = ''; } }else if(name === 'image'){ o.image = nextendFixRelative(o.image); } return o; }, render: function(node, data){ if(data['url'] == '#'){ node.html(node.children('a').html()); } return node; } }); })(njQuery, window); ;(function($) { var retina = window.devicePixelRatio > 1; $.fn.nextendunveil = function(mode) { if(mode == 'phone') mode = 'mobile'; var images = this, deferred = $.Deferred(), loadedimages = []; function loaded(img){ loadedimages.push(img); if(loadedimages.length == images.length){ deferred.resolve(images) } }; function getSrc(im, mode){ var src; switch(mode){ case 'mobile': if(retina){ src = im.data('mobileretina'); if(src) return src; } src = im.data('mobile'); if(src) return src; case 'tablet': if(retina){ src = im.data('tabletretina'); if(src) return src; } src = im.data('tablet'); if(src) return src; default: if(retina){ src = im.data('desktopretina'); if(src) return src; } return im.data('desktop'); } } this.each(function() { var targetimg = $(this), source = getSrc(targetimg, mode); if (!this.getAttribute("old-src") && source) { var oldsrc = this.getAttribute("src"), img = $(''); this.setAttribute("old-src", oldsrc); img[0].setAttribute("src", source); img.one('load', function() { targetimg[0].setAttribute("src", img[0].getAttribute("src")); targetimg.trigger('lazyloaded'); loaded(targetimg); }).one('error', function() { targetimg[0].setAttribute("src", oldsrc); loaded(targetimg); }); }else{ loaded(targetimg); } }); if(!images.length){ deferred.resolve(images) } return deferred.promise(); }; })(njQuery); /*! waitForImages jQuery Plugin - v1.5.0 - 2013-07-20 * https://github.com/alexanderdickson/waitForImages * Copyright (c) 2013 Alex Dickson; Licensed MIT */ ;(function ($) { // Namespace all events. var eventNamespace = 'waitForImages'; // CSS properties which contain references to images. $.waitForImages = { hasImageProperties: ['backgroundImage', 'listStyleImage', 'borderImage', 'borderCornerImage', 'cursor'] }; // Custom selector to find `img` elements that have a valid `src` attribute and have not already loaded. $.expr[':'].uncached = function (obj) { // Ensure we are dealing with an `img` element with a valid `src` attribute. if (!$(obj).is('img[src!=""]')) { return false; } // Firefox's `complete` property will always be `true` even if the image has not been downloaded. // Doing it this way works in Firefox. var img = new Image(); img.src = obj.src; return !img.complete; }; $.fn.waitForImages = function (finishedCallback, eachCallback, waitForAll) { var allImgsLength = 0; var allImgsLoaded = 0; // Handle options object. if ($.isPlainObject(arguments[0])) { waitForAll = arguments[0].waitForAll; eachCallback = arguments[0].each; // This must be last as arguments[0] // is aliased with finishedCallback. finishedCallback = arguments[0].finished; } // Handle missing callbacks. finishedCallback = finishedCallback || $.noop; eachCallback = eachCallback || $.noop; // Convert waitForAll to Boolean waitForAll = !! waitForAll; // Ensure callbacks are functions. if (!$.isFunction(finishedCallback) || !$.isFunction(eachCallback)) { throw new TypeError('An invalid callback was supplied.'); } return this.each(function () { // Build a list of all imgs, dependent on what images will be considered. var obj = $(this); var allImgs = []; // CSS properties which may contain an image. var hasImgProperties = $.waitForImages.hasImageProperties || []; // To match `url()` references. // Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri var matchUrl = /url\(\s*(['"]?)(.*?)\1\s*\)/g; if (waitForAll) { // Get all elements (including the original), as any one of them could have a background image. obj.find('*').addBack().each(function () { var element = $(this); // If an `img` element, add it. But keep iterating in case it has a background image too. if (element.is('img:uncached')) { allImgs.push({ src: element.attr('src'), element: element[0] }); } $.each(hasImgProperties, function (i, property) { var propertyValue = element.css(property); var match; // If it doesn't contain this property, skip. if (!propertyValue) { return true; } // Get all url() of this element. while (match = matchUrl.exec(propertyValue)) { allImgs.push({ src: match[2], element: element[0] }); } }); }); } else { // For images only, the task is simpler. obj.find('img:uncached') .each(function () { allImgs.push({ src: this.src, element: this }); }); } allImgsLength = allImgs.length; allImgsLoaded = 0; // If no images found, don't bother. if (allImgsLength === 0) { finishedCallback.call(obj[0]); } $.each(allImgs, function (i, img) { var image = new Image(); // Handle the image loading and error with the same callback. $(image).on('load.' + eventNamespace + ' error.' + eventNamespace, function (event) { allImgsLoaded++; // If an error occurred with loading the image, set the third argument accordingly. eachCallback.call(img.element, allImgsLoaded, allImgsLength, event.type == 'load'); if (allImgsLoaded == allImgsLength) { finishedCallback.call(obj[0]); return false; } }); image.src = img.src; }); }); }; }(njQuery)); /* ============================================================ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ * * Open source under the BSD License. * * Copyright © 2008 George McGinley Smith * All rights reserved. * https://raw.github.com/danro/jquery-easing/master/LICENSE * ======================================================== */ (function (jQuery) { jQuery.easing['jswing'] = jQuery.easing['swing']; jQuery.extend(jQuery.easing, { easeInQuad: function(x, t, b, c, d) { return c * (t /= d) * t + b; }, easeOutQuad: function(x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b; }, easeInOutQuad: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b; }, easeInCubic: function(x, t, b, c, d) { return c * (t /= d) * t * t + b; }, easeOutCubic: function(x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b; }, easeInOutCubic: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b; }, easeInQuart: function(x, t, b, c, d) { return c * (t /= d) * t * t * t + b; }, easeOutQuart: function(x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeInOutQuart: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b; }, easeInQuint: function(x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b; }, easeOutQuint: function(x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }, easeInOutQuint: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; }, easeInSine: function(x, t, b, c, d) { return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; }, easeOutSine: function(x, t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b; }, easeInOutSine: function(x, t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; }, easeInExpo: function(x, t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; }, easeOutExpo: function(x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; }, easeInOutExpo: function(x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; }, easeInCirc: function(x, t, b, c, d) { return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; }, easeOutCirc: function(x, t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; }, easeInOutCirc: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; }, easeInElastic: function(x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * Math.PI) * Math.asin(c / a); return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; }, easeOutElastic: function(x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * Math.PI) * Math.asin(c / a); return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; }, easeInOutElastic: function(x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < Math.abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * Math.PI) * Math.asin(c / a); if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b; }, easeInBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b; }, easeOutBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }, easeInOutBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; }, easeInBounce: function(x, t, b, c, d) { return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b; }, easeOutBounce: function(x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } }, easeInOutBounce: function(x, t, b, c, d) { if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b; return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b; } }); jQuery.csseasing = jQuery(); jQuery.extend(jQuery.csseasing, { linear: function() { return 'linear'; }, easeInQuad: function() { return 'cubic-bezier(0.550, 0.085, 0.680, 0.530)'; }, easeOutQuad: function() { return 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; }, easeInOutQuad: function() { return 'cubic-bezier(0.455, 0.030, 0.515, 0.955)'; }, easeInCubic: function() { return 'cubic-bezier(0.550, 0.055, 0.675, 0.190)'; }, easeOutCubic: function() { return 'cubic-bezier(0.215, 0.610, 0.355, 1.000)'; }, easeInOutCubic: function() { return 'cubic-bezier(0.645, 0.045, 0.355, 1.000)'; }, easeInQuart: function() { return 'cubic-bezier(0.895, 0.030, 0.685, 0.220)'; }, easeOutQuart: function() { return 'cubic-bezier(0.165, 0.840, 0.440, 1.000)'; }, easeInOutQuart: function() { return 'cubic-bezier(0.770, 0.000, 0.175, 1.000)'; }, easeInQuint: function() { return 'cubic-bezier(0.755, 0.050, 0.855, 0.060)'; }, easeOutQuint: function() { return 'cubic-bezier(0.230, 1.000, 0.320, 1.000)'; }, easeInOutQuint: function() { return 'cubic-bezier(0.860, 0.000, 0.070, 1.000)'; }, easeInSine: function() { return 'cubic-bezier(0.470, 0.000, 0.745, 0.715)'; }, easeOutSine: function() { return 'cubic-bezier(0.390, 0.575, 0.565, 1.000)'; }, easeInOutSine: function() { return 'cubic-bezier(0.445, 0.050, 0.550, 0.950)'; }, easeInExpo: function() { return 'cubic-bezier(0.950, 0.050, 0.795, 0.035)'; }, easeOutExpo: function() { return 'cubic-bezier(0.190, 1.000, 0.220, 1.000)'; }, easeInOutExpo: function() { return 'cubic-bezier(1.000, 0.000, 0.000, 1.000)'; }, easeInCirc: function() { return 'cubic-bezier(0.600, 0.040, 0.980, 0.335)'; }, easeOutCirc: function() { return 'cubic-bezier(0.075, 0.820, 0.165, 1.000)'; }, easeInOutCirc: function() { return 'cubic-bezier(0.785, 0.135, 0.150, 0.860)'; }, easeInElastic: function() { return 'ease-in'; }, easeOutElastic: function() { return 'ease-out'; }, easeInOutElastic: function() { return 'ease-in-out'; }, easeInBack: function() { return 'cubic-bezier(0.600, -0.280, 0.735, 0.045)'; }, easeOutBack: function() { return 'cubic-bezier(0.175, 0.885, 0.320, 1.275)'; }, easeInOutBack: function() { return 'cubic-bezier(0.680, -0.550, 0.265, 1.550)'; }, easeInBounce: function() { return 'ease-in'; }, easeOutBounce: function() { return 'ease-out'; }, easeInOutBounce: function() { return 'ease-in-out'; } }); })(njQuery);/*! * jQuery Transit - CSS3 transitions and transformations * (c) 2011-2012 Rico Sta. Cruz * MIT Licensed. * * http://ricostacruz.com/jquery.transit * http://github.com/rstacruz/jquery.transit */ (function ($) { $.transit = { version: "0.9.9", // Map of $.css() keys to values for 'transitionProperty'. // See https://developer.mozilla.org/en/CSS/CSS_transitions#Properties_that_can_be_animated propertyMap: { marginLeft: 'margin', marginRight: 'margin', marginBottom: 'margin', marginTop: 'margin', paddingLeft: 'padding', paddingRight: 'padding', paddingBottom: 'padding', paddingTop: 'padding' }, // Will simply transition "instantly" if false enabled: true, // Set this to false if you don't want to use the transition end property. useTransitionEnd: false }; var div = document.createElement('div'); var support = {}; // Helper function to get the proper vendor property name. // (`transition` => `WebkitTransition`) function getVendorPropertyName(prop) { // Handle unprefixed versions (FF16+, for example) if (prop in div.style) return prop; var prefixes = ['Moz', 'Webkit', 'O', 'ms']; var prop_ = prop.charAt(0).toUpperCase() + prop.substr(1); if (prop in div.style) { return prop; } for (var i = 0; i < prefixes.length; ++i) { var vendorProp = prefixes[i] + prop_; if (vendorProp in div.style) { return vendorProp; } } } // Helper function to check if transform3D is supported. // Should return true for Webkits and Firefox 10+. function checkTransform3dSupport() { div.style[support.transform] = ''; div.style[support.transform] = 'rotateY(90deg)'; return div.style[support.transform] !== ''; } var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; // Check for the browser's transitions support. support.transition = getVendorPropertyName('transition'); support.transitionDelay = getVendorPropertyName('transitionDelay'); support.transitionProperty = getVendorPropertyName('transitionProperty'); support.transform = getVendorPropertyName('transform'); support.transformOrigin = getVendorPropertyName('transformOrigin'); support.transform3d = checkTransform3dSupport(); // Non-working transitionend event names are gonna get spliced out on the first event var eventNames = [ 'transitionend', 'webkitTransitionEnd', 'otransitionend', 'oTransitionEnd' ]; var transitionEnd = support.transitionEnd = eventNames[support.transition] || null; // Populate jQuery's `$.support` with the vendor prefixes we know. // As per [jQuery's cssHooks documentation](http://api.jquery.com/jQuery.cssHooks/), // we set $.support.transition to a string of the actual property name used. for (var key in support) { if (support.hasOwnProperty(key) && typeof $.support[key] === 'undefined') { $.support[key] = support[key]; } } // Avoid memory leak in IE. div = null; // ## $.cssEase // List of easing aliases that you can use with `$.fn.transition`. $.cssEase = { '_default': 'ease', 'in': 'ease-in', 'out': 'ease-out', 'in-out': 'ease-in-out', 'snap': 'cubic-bezier(0,1,.5,1)', // Penner equations 'easeOutCubic': 'cubic-bezier(.215,.61,.355,1)', 'easeInOutCubic': 'cubic-bezier(.645,.045,.355,1)', 'easeInCirc': 'cubic-bezier(.6,.04,.98,.335)', 'easeOutCirc': 'cubic-bezier(.075,.82,.165,1)', 'easeInOutCirc': 'cubic-bezier(.785,.135,.15,.86)', 'easeInExpo': 'cubic-bezier(.95,.05,.795,.035)', 'easeOutExpo': 'cubic-bezier(.19,1,.22,1)', 'easeInOutExpo': 'cubic-bezier(1,0,0,1)', 'easeInQuad': 'cubic-bezier(.55,.085,.68,.53)', 'easeOutQuad': 'cubic-bezier(.25,.46,.45,.94)', 'easeInOutQuad': 'cubic-bezier(.455,.03,.515,.955)', 'easeInQuart': 'cubic-bezier(.895,.03,.685,.22)', 'easeOutQuart': 'cubic-bezier(.165,.84,.44,1)', 'easeInOutQuart': 'cubic-bezier(.77,0,.175,1)', 'easeInQuint': 'cubic-bezier(.755,.05,.855,.06)', 'easeOutQuint': 'cubic-bezier(.23,1,.32,1)', 'easeInOutQuint': 'cubic-bezier(.86,0,.07,1)', 'easeInSine': 'cubic-bezier(.47,0,.745,.715)', 'easeOutSine': 'cubic-bezier(.39,.575,.565,1)', 'easeInOutSine': 'cubic-bezier(.445,.05,.55,.95)', 'easeInBack': 'cubic-bezier(.6,-.28,.735,.045)', 'easeOutBack': 'cubic-bezier(.175, .885,.32,1.275)', 'easeInOutBack': 'cubic-bezier(.68,-.55,.265,1.55)' }; // ## 'transform' CSS hook // Allows you to use the `transform` property in CSS. // // $("#hello").css({ transform: "rotate(90deg)" }); // // $("#hello").css('transform'); // //=> { rotate: '90deg' } // $.cssHooks['transit:transform'] = { // The getter returns a `Transform` object. get: function (elem) { return $(elem).data('transform') || new Transform(); }, // The setter accepts a `Transform` object or a string. set: function (elem, v) { var value = v; if (!(value instanceof Transform)) { value = new Transform(value); } // We've seen the 3D version of Scale() not work in Chrome when the // element being scaled extends outside of the viewport. Thus, we're // forcing Chrome to not use the 3d transforms as well. Not sure if // translate is affectede, but not risking it. Detection code from // http://davidwalsh.name/detecting-google-chrome-javascript if (support.transform === 'WebkitTransform' && !isChrome) { elem.style[support.transform] = value.toString(true); } else { elem.style[support.transform] = value.toString(); } $(elem).data('transform', value); } }; // Add a CSS hook for `.css({ transform: '...' })`. // In jQuery 1.8+, this will intentionally override the default `transform` // CSS hook so it'll play well with Transit. (see issue #62) $.cssHooks.transform = { set: $.cssHooks['transit:transform'].set }; // jQuery 1.8+ supports prefix-free transitions, so these polyfills will not // be necessary. if ($.fn.jquery < "1.8") { // ## 'transformOrigin' CSS hook // Allows the use for `transformOrigin` to define where scaling and rotation // is pivoted. // // $("#hello").css({ transformOrigin: '0 0' }); // $.cssHooks.transformOrigin = { get: function (elem) { return elem.style[support.transformOrigin]; }, set: function (elem, value) { elem.style[support.transformOrigin] = value; } }; // ## 'transition' CSS hook // Allows you to use the `transition` property in CSS. // // $("#hello").css({ transition: 'all 0 ease 0' }); // $.cssHooks.transition = { get: function (elem) { return elem.style[support.transition]; }, set: function (elem, value) { elem.style[support.transition] = value; } }; } // ## Other CSS hooks // Allows you to rotate, scale and translate. registerCssHook('scale'); registerCssHook('translate'); registerCssHook('translate3d'); registerCssHook('rotate'); registerCssHook('rotateX'); registerCssHook('rotateY'); registerCssHook('rotateZ'); registerCssHook('rotate3d'); registerCssHook('perspective'); registerCssHook('skewX'); registerCssHook('skewY'); registerCssHook('x', true); registerCssHook('y', true); registerCssHook('z', true); // ## Transform class // This is the main class of a transformation property that powers // `$.fn.css({ transform: '...' })`. // // This is, in essence, a dictionary object with key/values as `-transform` // properties. // // var t = new Transform("rotate(90) scale(4)"); // // t.rotate //=> "90deg" // t.scale //=> "4,4" // // Setters are accounted for. // // t.set('rotate', 4) // t.rotate //=> "4deg" // // Convert it to a CSS string using the `toString()` and `toString(true)` (for WebKit) // functions. // // t.toString() //=> "rotate(90deg) scale(4,4)" // t.toString(true) //=> "rotate(90deg) scale3d(4,4,0)" (WebKit version) // function Transform(str) { if (typeof str === 'string') { this.parse(str); } return this; } Transform.prototype = { // ### setFromString() // Sets a property from a string. // // t.setFromString('scale', '2,4'); // // Same as set('scale', '2', '4'); // setFromString: function (prop, val) { var args = (typeof val === 'string') ? val.split(',') : (val.constructor === Array) ? val : [ val ]; args.unshift(prop); Transform.prototype.set.apply(this, args); }, // ### set() // Sets a property. // // t.set('scale', 2, 4); // set: function (prop) { var args = Array.prototype.slice.apply(arguments, [1]); if (this.setter[prop]) { this.setter[prop].apply(this, args); } else { this[prop] = args.join(','); } }, get: function (prop) { if (this.getter[prop]) { return this.getter[prop].apply(this); } else { return this[prop] || 0; } }, setter: { // ### rotate // // .css({ rotate: 30 }) // .css({ rotate: "30" }) // .css({ rotate: "30deg" }) // .css({ rotate: "30deg" }) // rotate: function (theta) { this.rotate = unit(theta, 'deg'); }, rotateX: function (theta) { this.rotateX = unit(theta, 'deg'); }, rotateY: function (theta) { this.rotateY = unit(theta, 'deg'); }, rotateZ: function (theta) { this.rotateZ = unit(theta, 'deg'); }, // ### scale // // .css({ scale: 9 }) //=> "scale(9,9)" // .css({ scale: '3,2' }) //=> "scale(3,2)" // scale: function (x, y) { if (y === undefined) { y = x; } this.scale = x + "," + y; }, // ### skewX + skewY skewX: function (x) { this.skewX = unit(x, 'deg'); }, skewY: function (y) { this.skewY = unit(y, 'deg'); }, // ### perspectvie perspective: function (dist) { this.perspective = unit(dist, 'px'); }, // ### x / y / z // Translations. Notice how this keeps the other value. // // .css({ x: 4 }) //=> "translate(4px, 0)" // .css({ y: 10 }) //=> "translate(4px, 10px)" // x: function (x) { this.set('translate', x, null, null); }, y: function (y) { this.set('translate', null, y, null); }, z: function(z) { this.set('translate3d', null, null, z); }, // ### translate // Notice how this keeps the other value. // // .css({ translate: '2, 5' }) //=> "translate(2px, 5px)" // translate: function (x, y) { this.set('translate3d', x, y, 0); }, translate3d: function(x, y, z) { if (this._translateX === undefined) { this._translateX = 0; } if (this._translateY === undefined) { this._translateY = 0; } if (this._translateZ === undefined) { this._translateZ = 0; } if (x !== null && x !== undefined) { this._translateX = unit(x, 'px'); } if (y !== null && y !== undefined) { this._translateY = unit(y, 'px'); } if (z !== null && z !== undefined) { this._translateZ = unit(z, 'px'); } this.translate3d = this._translateX + "," + this._translateY + "," + this._translateZ; } }, getter: { x: function () { return this._translateX || 0; }, y: function () { return this._translateY || 0; }, z: function () { return this._translateZ || 0; }, scale: function () { var s = (this.scale || "1,1").split(','); if (s[0]) { s[0] = parseFloat(s[0]); } if (s[1]) { s[1] = parseFloat(s[1]); } // "2.5,2.5" => 2.5 // "2.5,1" => [2.5,1] return (s[0] === s[1]) ? s[0] : s; }, rotate3d: function () { var s = (this.rotate3d || "0,0,0,0deg").split(','); for (var i = 0; i <= 3; ++i) { if (s[i]) { s[i] = parseFloat(s[i]); } } if (s[3]) { s[3] = unit(s[3], 'deg'); } return s; } }, // ### parse() // Parses from a string. Called on constructor. parse: function (str) { var self = this; str.replace(/([a-zA-Z0-9]+)\((.*?)\)/g, function (x, prop, val) { self.setFromString(prop, val); }); }, // ### toString() // Converts to a `transition` CSS property string. If `use3d` is given, // it converts to a `-webkit-transition` CSS property string instead. toString: function (use3d) { var re = []; for (var i in this) { if (this.hasOwnProperty(i)) { // Don't use 3D transformations if the browser can't support it. if ((!support.transform3d) && ( (i === 'rotateX') || (i === 'rotateY') || (i === 'rotateZ') || (i === 'perspective') || (i === 'transformOrigin'))) { continue; } if (i[0] !== '_') { if (use3d && (i === 'scale')) { re.push(i + "3d(" + this[i] + ",1)"); } else if (use3d && (i === 'translate')) { re.push(i + "3d(" + this[i] + ")"); } else { re.push(i + "(" + this[i] + ")"); } } } } return re.join(" "); } }; function callOrQueue(self, queue, fn) { if (queue === true) { self.queue(fn); } else if (queue) { self.queue(queue, fn); } else { fn(); } } // ### getProperties(dict) // Returns properties (for `transition-property`) for dictionary `props`. The // value of `props` is what you would expect in `$.css(...)`. function getProperties(props) { var re = []; $.each(props, function (key) { key = $.camelCase(key); // Convert "text-align" => "textAlign" key = $.transit.propertyMap[key] || $.cssProps[key] || key; key = uncamel(key); // Convert back to dasherized if ($.inArray(key, re) === -1) { re.push(key); } }); return re; } // ### getTransition() // Returns the transition string to be used for the `transition` CSS property. // // Example: // // getTransition({ opacity: 1, rotate: 30 }, 500, 'ease'); // //=> 'opacity 500ms ease, -webkit-transform 500ms ease' // function getTransition(properties, duration, easing, delay) { // Get the CSS properties needed. var props = getProperties(properties); // Account for aliases (`in` => `ease-in`). if ($.cssEase[easing]) { easing = $.cssEase[easing]; } // Build the duration/easing/delay attributes for it. var attribs = '' + toMS(duration) + ' ' + easing; if (parseInt(delay, 10) > 0) { attribs += ' ' + toMS(delay); } // For more properties, add them this way: // "margin 200ms ease, padding 200ms ease, ..." var transitions = []; $.each(props, function (i, name) { transitions.push(name + ' ' + attribs); }); return transitions.join(', '); } // ## $.fn.transition // Works like $.fn.animate(), but uses CSS transitions. // // $("...").transition({ opacity: 0.1, scale: 0.3 }); // // // Specific duration // $("...").transition({ opacity: 0.1, scale: 0.3 }, 500); // // // With duration and easing // $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in'); // // // With callback // $("...").transition({ opacity: 0.1, scale: 0.3 }, function() { ... }); // // // With everything // $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in', function() { ... }); // // // Alternate syntax // $("...").transition({ // opacity: 0.1, // duration: 200, // delay: 40, // easing: 'in', // complete: function() { /* ... */ } // }); // $.fn.transition = $.fn.transit = function (properties, duration, easing, callback) { var self = this; var delay = 0; var queue = true; var theseProperties = $.extend(true, {}, properties); // Account for `.transition(properties, callback)`. if (typeof duration === 'function') { callback = duration; duration = undefined; } // Account for `.transition(properties, options)`. if (typeof duration === 'object') { easing = duration.easing; delay = duration.delay || 0; queue = duration.queue || true; callback = duration.complete; duration = duration.duration; } // Account for `.transition(properties, duration, callback)`. if (typeof easing === 'function') { callback = easing; easing = undefined; } // Alternate syntax. if (typeof theseProperties.easing !== 'undefined') { easing = theseProperties.easing; delete theseProperties.easing; } if (typeof theseProperties.duration !== 'undefined') { duration = theseProperties.duration; delete theseProperties.duration; } if (typeof theseProperties.complete !== 'undefined') { callback = theseProperties.complete; delete theseProperties.complete; } if (typeof theseProperties.queue !== 'undefined') { queue = theseProperties.queue; delete theseProperties.queue; } if (typeof theseProperties.delay !== 'undefined') { delay = theseProperties.delay; delete theseProperties.delay; } // Set defaults. (`400` duration, `ease` easing) if (typeof duration === 'undefined') { duration = $.fx.speeds._default; } if (typeof easing === 'undefined') { easing = $.cssEase._default; } duration = toMS(duration); // Build the `transition` property. var transitionValue = getTransition(theseProperties, duration, easing, delay); // Compute delay until callback. // If this becomes 0, don't bother setting the transition property. //var work = $.transit.enabled && support.transition; var i = $.transit.enabled ? (parseInt(duration, 10) + parseInt(delay, 10)) : 0; if(!support.transition && i > 0){ var end = self.data('sstransit'); if(end){ var s = 0, e = 1; if(end == 'onAnimateOutEnd'){ s = 1; e = 0; } theseProperties.opacity = s; self.css(theseProperties); var fn = function (next) { self.stop().animate({opacity: e}, { duration: i, easing: easing, complete: function(){ self.data('sstransit', null); if (callback) { callback.apply(self); } } }); if (next) { next(); } }; callOrQueue(self, queue, fn); return self; } i = 0; } // If there's nothing to do... if (i === 0) { var fn = function (next) { self.css(theseProperties); if (callback) { callback.apply(self); } if (next) { next(); } }; callOrQueue(self, queue, fn); return self; } // Save the old transitions of each element so we can restore it later. var run = function (nextCall, element) { var bound = false; var self = $(element); var oldTransitions = {}; // Prepare the callback. var cb = function (event) { if (bound) { for (var j = bound.length; j > 0; --j) { self.unbind(bound[j], cb); if ((eventNames.length > 1) && (bound[j] !== event.type) && (eventNames.indexOf(bound[j]) !== -1)) { eventNames.splice(eventNames.indexOf(bound[j]), 1); } } } if (i > 0) { self.each(function () { this.style[support.transition] = (oldTransitions[this] || null); }); } if (typeof callback === 'function') { callback.apply(self); } if (typeof nextCall === 'function') { nextCall(); } }; if ((i > 0) && ($.transit.useTransitionEnd)) { // Use the 'transitionend' event if it's available. bound = eventNames; for (var j = 0; j < eventNames.length; ++j) { self.bind(eventNames[j], cb); } } else { // Fallback to timers if the 'transitionend' event isn't supported. var id = window.setTimeout(cb, i + 80); self.data('transitTimer', id); } self.data('transitCallback', cb); // Apply transitions. self.each(function () { if (i > 0) { this.style[support.transition] = transitionValue; } $(this).css(properties); }); }; // Defer running. This allows the browser to paint any pending CSS it hasn't // painted yet before doing the transitions. var deferredRun = function (next) { this.offsetWidth; // force a repaint run(next, this); }; // Use jQuery's fx queue. callOrQueue(self, queue, deferredRun); // Chainability. return this; }; // ## $.fn.transitionStop // Works like $.fn.stop( [clearQueue ] [, jumpToEnd ] ) // $.fn.transitionStop = $.fn.transitStop = function (clearQueue, jumpToEnd) { this.each(function () { var self = $(this); var id = self.data('transitTimer'); clearTimeout(id); self.data('transitTimer', null); var properties = this.style[support.transitionProperty]; if (properties) { properties = properties.replace(/-([a-z])/gi, function(s, group1) { return group1.toUpperCase(); }).replace(/\s*/g, '').split(','); var style = window.getComputedStyle(this), css = {}; for (var i = 0; i < properties.length; i++) { css[properties[i]] = this.style[properties[i]]; this.style[properties[i]] = style[properties[i]]; } this.offsetWidth; // force a repaint this.style[support.transition] = 'none'; if (jumpToEnd) { for (var i = 0; i < properties.length; i++) this.style[properties[i]] = css[properties[i]]; var cb = self.data('transitCallback'); if (typeof cb === 'function') cb(); self.data('transitCallback', null); } else if (clearQueue) { self.clearQueue(); self.unbind(transitionEnd); } else { self.dequeue(); } ; } ; }); return this; }; function registerCssHook(prop, isPixels) { // For certain properties, the 'px' should not be implied. if (!isPixels) { $.cssNumber[prop] = true; } $.transit.propertyMap[prop] = support.transform; $.cssHooks[prop] = { get: function (elem) { var t = $(elem).css('transit:transform'); return t.get(prop); }, set: function (elem, value) { var t = $(elem).css('transit:transform'); t.setFromString(prop, value); $(elem).css({ 'transit:transform': t }); } }; } // ### uncamel(str) // Converts a camelcase string to a dasherized string. // (`marginLeft` => `margin-left`) function uncamel(str) { return str.replace(/([A-Z])/g, function (letter) { return '-' + letter.toLowerCase(); }); } // ### unit(number, unit) // Ensures that number `number` has a unit. If no unit is found, assume the // default is `unit`. // // unit(2, 'px') //=> "2px" // unit("30deg", 'rad') //=> "30deg" // function unit(i, units) { if ((typeof i === "string") && (!i.match(/^[\-0-9\.]+$/))) { return i; } else { return "" + i + units; } } // ### toMS(duration) // Converts given `duration` to a millisecond string. // // toMS('fast') => $.fx.speeds[i] => "200ms" // toMS('normal') //=> $.fx.speeds._default => "400ms" // toMS(10) //=> '10ms' // toMS('100ms') //=> '100ms' // function toMS(duration) { var i = duration; // Allow string durations like 'fast' and 'slow', without overriding numeric values. if (typeof i === 'string' && (!i.match(/^[\-0-9\.]+/))) { i = $.fx.speeds[i] || $.fx.speeds._default; } return unit(i, 'ms'); } // Export some functions for testable-ness. $.transit.getTransitionValue = getTransition; })(njQuery); (function ($, scope, undefined) { scope.ssAnimation = NClass.extend({ _outplayed: false, endFN: null, endFired: true, init: function (layer, options) { var _this = this; this.layer = layer; this.canvas = $(this.layer).data('slide'); if (!this.canvas) this.canvas = this.layer; if (this.layer.animated === undefined) this.layer.animated = false; this.options = $.extend({ easingIn: 'linear', easingOut: 'linear', intervalIn: 400, intervalOut: 400, delayIn: 0, delayOut: 0, parallaxIn: 0.45, parallaxOut: 0.45, animate: "smart-slider-animate", animateIn: "smart-slider-animate-in", animateOut: "smart-slider-animate-out", endFn: function () { } }, options); }, _initAnimation: function () { var $layer = this.layer; $(this.canvas).trigger('incrementanimation'); this.layer.on('ssanimateinstart.ssdefault',function (event) { event.stopPropagation(); $layer.off('ssanimateinstart.ssdefault'); }).on('ssanimateoutstart.ssdefault',function (event) { event.stopPropagation(); $layer.off('ssanimateoutstart.ssdefault'); }).on('ssanimateinend.ssdefault',function (event) { event.stopPropagation(); $layer.off('ssanimateinend.ssdefault'); }).on('ssanimateoutend.ssdefault', function (event) { event.stopPropagation(); $layer.off('ssanimateoutend.ssdefault'); }); }, onResize: function (ratio) { }, refreshPosition: function(dim){ }, setHiddenState: function () { if (!this.layer.animated) { this._setHiddenState(); } }, stop: function () { if (!this.endFired) { this[this.endFN](true); this._stop(); this.endFired = 1; } }, _stop: function () { }, _setHiddenState: function () { }, reset: function () { }, setInStart: function () { if (!this.layer.animated) { this._setInStart(); } }, _setInStart: function () { }, outPlayed: function (state) { if (state === undefined) { return this._outplayed; } this._outplayed = state; }, setOutStart: function () { if (!this.layer.animated) { this._setOutStart(); } }, _setOutStart: function () { this.layer.css('display', 'block'); }, animateIn: function () { if (this._canAnimate()) { this._initAnimation(); this.layer.trigger('ssanimateinstart'); var out = this.layer.data('motionout'); if (out) out.outPlayed(false); this.endFired = 0; this._animateIn(); return true; } return false; }, onAnimateInEnd: function (forced) { if (typeof forced == 'undefined') forced = false; if (!this.endFired) { this._endAnimate(); var playoutafter = this.layer.data('playoutafter'); if (!forced && playoutafter) { var motion = this.layer.data('motionout'); motion.animateOut(); motion.outPlayed(true); } else { this.layer.trigger('ssanimateinend'); } this.endFired = 1; } }, animateOut: function () { if (this._canAnimate()) { this._initAnimation(); this.layer.trigger('ssanimateoutstart'); if (this.outPlayed()) { var $this = this; setTimeout(function () { $this.endFired = 0; $this.onAnimateOutEnd(); }, 200); // Hack to fire end with some delay if playafterin } else { this.endFired = 0; this._animateOut(); } return true; } return false; }, onAnimateOutEnd: function (forced) { if (!this.endFired) { this._endAnimate(); this.layer.trigger('ssanimateoutend'); this.endFired = 1; } }, _canAnimate: function () { if (this.layer.animated) return false; return this.layer.animated = true; }, _endAnimate: function () { this.layer.animated = false; this.options.endFn(); $(this.canvas).trigger('decrementanimation'); } }); scope.ssAnimationManagerClass = NClass.extend({ init: function () { this.animations = {}; }, addAnimation: function (name, classdefinition, options) { this.animations[name] = { classdefinition: classdefinition, options: options }; }, getAnimation: function (name, layer, options) { if (this.animations[name] === undefined) { name = 'no'; } return new this.animations[name].classdefinition(layer, $.extend(this.animations[name].options, options)); } }); if (scope.ssAnimationManager === undefined) scope.ssAnimationManager = new scope.ssAnimationManagerClass(); })(njQuery, window);; (function ($, scope, undefined) { var methods = { init: function (options) { var settings = $.extend({ }, options); return this.each(function () { var $this = $(this), data = $this.data('smartslider'); if (!data) { var slider = smartsliderbase($this, settings) $(this).data('smartslider', { slider: slider }); data = $this.data('smartslider'); $this.trigger('inited', [slider]); } }); }, onInit: function(fn){ return this.each(function () { var $this = $(this), data = $this.data('smartslider'); if(data){ fn({}, data.slider); }else{ $this.on('inited', fn); } }); }, next: function () { return this.each(function () { var $this = $(this), data = $this.data('smartslider'); data.slider.next(); }); }, previous: function () { return this.each(function () { var $this = $(this), data = $this.data('smartslider'); data.slider.previous(); }); }, goto: function (i, reversed) { return this.each(function () { var $this = $(this), data = $this.data('smartslider'); data.slider.goto(i, reversed); }); }, startautoplay: function () { return this.each(function () { var $this = $(this), data = $this.data('smartslider'); data.slider.startautoplay(); }); }, pauseautoplay: function () { return this.each(function () { var $this = $(this), data = $this.data('smartslider'); data.slider.pauseautoplay(); }); } }; $.fn.extend({ smartslider: function (method) { this.defaultOptions = {}; var options = $.extend({}, this.defaultOptions, options); if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.tooltip'); } } }); window.smartslider = {}; window.smartslider.motions = {}; window.smartsliderbase = function (el, options) { var proto = function (el, options) { var $this = this; this.$el = el; this.options = options; this.canvasList = null; this.slideAnimateIn = "smart-slider-slide-animate-in"; this.slideAnimateOut = "smart-slider-slide-animate-out"; this.slideActive = "smart-slider-slide-active"; this.mainslider = new scope[options.type](this, el, options); this.next = function () { this.mainslider.next(); }; this.previous = function () { this.mainslider.previous(); }; this.goto = function (i, reversed) { this.mainslider.changeTo(i, reversed); }; this.startautoplay = function () { this.mainslider.reStartAutoPlay(); }; this.pauseautoplay = function () { this.mainslider.pauseAutoPlay(); }; }; return new proto(el, options); }; })(njQuery, window);; (function ($, scope, undefined) { scope.ssTypeBase = NClass.extend({ $this: null, $slider: null, slideList: null, _parent: null, _active: -1, _lastActive: -1, _animating: false, _runningAnimations: 0, lastAvailableWidth: 0, _ready: false, _currentmode: 'desktop', _device: 'desktop', init: function (parent, $el, options) { this.options = { syncAnimations: 1, translate3d: 1, mainlayer: true, playfirstlayer: 0, mainafterout: 1, inaftermain: 1, fadeonscroll: 0, autoplay: 0, autoplayConfig: { duration: 5000, counter: 0, autoplayToSlide: 0, stopautoplay: { click: 1, mouseenter: 1, slideplaying: 1 }, resumeautoplay: { mouseleave: 0, slideplayed: 1 } }, responsive: { downscale: 0, upscale: 0 }, controls: { scroll: 0, touch: 0, keyboard: 0 }, blockrightclick: 0, lazyload: 1, lazyloadneighbor: 0 }; this.slideDimension = { w: 0, h: 0 }; this.ssplay = false; var _this = this; this._parent = parent; $.extend(this.options, options); this.options.syncAnimations = this.options.mainafterout; this.$slider = $el; this.initVariables(); if (this.options.translate3d && nModernizr && nModernizr.csstransforms3d) { this.$slider.css(nModernizr.prefixed('transform'), 'translate3d(0,0,0)'); this.$slider.css(nModernizr.prefixed('perspective'), '1000'); } if(this.options.blockrightclick && window.ssadmin !== 1){ this.$slider.bind("contextmenu",function(e){ e.preventDefault(); }); } if(this.options.lazyload == 1){ this.lazyLoadEnable(false); }else if(this.options.lazyload == 2){ this.lazyLoadEnable(true); } this.id = $el.attr('id'); this.$this = $(this); if(this.options.randomize) this.randomize(); this.slideList = $('.smart-slider-canvas', $el); this._afterInitCheck(); }, _afterInitCheck: function(){ if(this.$slider.parent().parent().is(':visible')){ this.afterInit(); }else{ var _this = this; setTimeout(function(){ _this._afterInitCheck(); }, 500); } }, afterInit: function(){ var _this = this; this.slideDimension.w = this.slideList.width(); this.slideDimension.h = this.slideList.height(); for (var i = 0; i < this.slideList.length; i++) { var slide = this.slideList[i]; // syncronize layer animations with the slide changing slide.ssanimation = 0; this.slideList.eq(i).on('incrementanimation.ssanimation',function () { this.ssanimation++; }).on('decrementanimation.ssanimation',function () { this.ssanimation--; if (this.ssanimation === 0) { $(this).trigger('ssanimationsended'); } }).on('noanimation.ssanimation', function () { if (this.ssanimation === 0) { $(this).trigger('ssanimationsended'); } }); // init layers slide.layers = new scope.ssLayers(this, slide, { width: this.slideDimension.w, height: this.slideDimension.h, mainlayer: this.options.mainlayer }); slide.layers.changeMode(this._currentmode); } this.slidebgList = $('.nextend-slide-bg', this.$slider); this.slidebgList.width(this.slideDimension.w); this._active = this.slideList.index($('.' + this._parent.slideActive, this.$slider)); this.sizeInited(); this._bullets = this.$slider.find('.nextend-bullet-container > .nextend-bullet'); this._bullets.removeClass('active'); this._bullets.eq(this._active).addClass('active'); this._bar = this.$slider.find('.nextend-bar-slide'); this._bar.removeClass('active'); this._bar.eq(this._active).addClass('active'); this._thumbnails = window[this.id + '-thumbnail']; this.changeThumbnail(this._active); if (window.ssadmin !== 1) { this._device = this.deviceType(); _this._animating = true; $(this).on('load.first', function () { $(this).off('load.first'); this._ready = true; var show = function(){ _this.$slider.addClass('nextend-loaded'); $('#'+_this.id+'-placeholder').remove(); _this.$slider.trigger('loaded'); _this._animating = false; if (_this.options.playfirstlayer) { var canvas = $(_this.slideList[_this._active]); canvas.on('ssanimationsended.first',function () { $(this).off('ssanimationsended.first'); }).trigger('ssanimatelayersin'); } _this.startAutoplay(); }; if(_this.options.fadeonscroll){ var w = $(window), t = _this.$slider.offset().top+_this.$slider.outerHeight(false)/2; if(w.scrollTop()+w.height() > t){ show(); }else{ w.on('scroll.'+_this.id, function(){ if(w.scrollTop()+w.height() > t){ w.off('scroll.'+_this.id); show(); } }); } }else{ show(); } }); if (this.options.responsive.downscale || this.options.responsive.upscale) { this.storeDefaults(); this.onResize(); $(window).on('resize', function () { _this.onResize(); }); if(typeof artxJQuery != "undefined" && typeof artxJQuery.fn.on != "undefined"){ artxJQuery(window).on('responsive', function () { _this.onResize(); }); } if(typeof jQuery != "undefined" && typeof jQuery.fn.on != "undefined"){ jQuery(window).on('responsive', function () { _this.onResize(); }); } if(typeof jQuery.fn.fitText != 'undefined') jQuery(window).trigger('resize'); } else { this.storeDefaults(); this.onResize(1); this.load(function () { $(_this).trigger('load'); }); } if (!this.options.playfirstlayer) { this.slideList[this._active].layers.setOutStart(); } this.initAutoplay(); this.initWidgets(); this.initScroll(); this.initTouch(); this.initKeyboard(); this.initEvents(); } else { this.storeDefaults(); $(this).trigger('load'); } }, load: function(fn){ this.$slider.waitForImages(fn); }, ready: function(fn){ if(this._ready){ fn(); }else{ $(this).on('load.first', fn); } }, refreshMode: function(){ var basedon = this.options.responsive.basedon, screenwidth = window.innerWidth, mode = 'desktop'; if(basedon == 'screen' || basedon == 'combined'){ if(screenwidth < this.options.responsive.screenwidth.phone){ mode = 'phone'; }else if(screenwidth < this.options.responsive.screenwidth.tablet){ mode = 'tablet'; } } if(basedon == 'combined') basedon = 'device'; if(basedon == 'device'){ if(this._device == 'mobile'){ mode = 'phone'; }else if(this._device == 'tablet'){ mode = 'tablet'; } } if(this._currentmode != mode){ this.$slider.addClass('nextend-'+mode).removeClass('nextend-'+this._currentmode); this._currentmode = mode; for (var i = 0; i < this.slideList.length; i++) { var slide = this.slideList[i]; slide.layers.changeMode(mode); } return true; } return false; }, sizeInited: function(){ }, storeDefaults: function () { this.variablesRefreshed(); }, onResize: function () { var _this = this; this.load(function () { $(_this).trigger('load'); }); }, initVariables: function(){ this.variables = {}; this.variableEls = { top: this.$slider.find('[data-sstop]'), right: this.$slider.find('[data-ssright]'), bottom: this.$slider.find('[data-ssbottom]'), left: this.$slider.find('[data-ssleft]'), width: this.$slider.find('[data-sswidth]'), height: this.$slider.find('[data-ssheight]') }; this.widgets = { previous: this.$slider.find('.nextend-arrow-previous'), next: this.$slider.find('.nextend-arrow-next'), bullet: this.$slider.find('.nextend-widget-bullet'), autoplay: this.$slider.find('.nextend-autoplay-button'), indicator: this.$slider.find('.nextend-indicator'), bar: this.$slider.find('.nextend-bar'), thumbnail: this.$slider.find('.nextend-thumbnail-container'), shadow: this.$slider.find('.nextend-shadow'), html: this.$slider.find('.nextend-widget-html') }; }, variablesRefreshed: function(){ for (var key in this.widgets) { var el = this.widgets[key], visible = el.is(":visible"); this.variables[key+'width'] = visible ? el.outerWidth(false) : 0; this.variables[key+'height'] = visible ? el.outerHeight(false) : 0; } for (var key in this.variables) { eval("var " + key + " = " + this.variables[key] + ""); } for (var k in this.variableEls) { for(var i = 0; i < this.variableEls[k].length;i++){ var el = this.variableEls[k].eq(i); try{ el.css(k, eval(el.data('ss'+k))+'px'); }catch(e){ alert('Error in widget(#'+el.attr('id')+') position variable: '+e.message); } } } }, initWidgets: function () { var timeout = null, block = false, widgets = this.$slider.find('.nextend-widget-hover'); if (widgets.length > 0) { this.$slider.on('mouseenter touchstart', function (e) { if(block) return; var slider = $(this); if (timeout) clearTimeout(timeout); widgets.css('visibility', 'visible'); if(e.type == 'touchstart'){ block = true; setTimeout(function () { block = false; }, 1000); }else{ setTimeout(function () { slider.addClass('nextend-widget-hover-show'); }, 50); } }).on('mouseleave', function () { var slide = this; if (timeout) clearTimeout(timeout); timeout = setTimeout(function () { $(slide).removeClass('nextend-widget-hover-show'); timeout = setTimeout(function () { widgets.css('visibility', 'hidden'); }, 400); }, 500); }); } }, initScroll: function () { if (this.options.controls.scroll == 0) return; var _this = this; this.$slider.on('mousewheel', function (e, delta, deltaX, deltaY) { if (delta < 0) { _this.next(); } else { _this.previous(); } e.preventDefault(); }); }, initTouch: function () { if (this.options.controls.touch == '0') return; var _this = this; var mode = this.options.controls.touch; var delayBetween = 500, last = 0; if(typeof jQuery != 'undefined' && typeof jQuery.UIkit != 'undefined'){ var el = this.$slider.find('> div').eq(0); if (mode == 'horizontal') { el.on('swipeRight', function(){ _this.previous(); }).on('swipeLeft', function(){ _this.next(); }); } else if (mode == 'vertical') { el.on('swipeDown', function(){ _this.previous(); }).on('swipeUp', function(){ _this.next(); }); } el.on('tap', function(e){ var target = e.target; var prevent = false; var a = null; if(target.tagName == 'A') a = $(target); else a = $(target).closest('a'); if(a.length){ window.open(a.attr('href'),a.attr('target')); prevent = true; } var accordion = null; if(!prevent){ accordion = $(target).closest('.accordion-vertical-title, .accordion-horizontal-title'); if(accordion.length){ accordion.trigger('click'); prevent = true; } } if(!prevent){ var act = _this.slideList.eq(_this._active).trigger('click'); if(typeof act.attr("onclick") != 'undefined') prevent = true; } if(prevent){ event.preventDefault(); event.stopPropagation(); } }); }else{ this.$slider.find('> div').eq(0).swipe({ tap: function(event, target) { var prevent = false; var a = null; if(target.tagName == 'A') a = $(target); else a = $(target).closest('a'); if(a.length){ window.open(a.attr('href'),a.attr('target')); prevent = true; } var accordion = null; if(!prevent){ accordion = $(target).closest('.accordion-vertical-title, .accordion-horizontal-title'); if(accordion.length){ accordion.trigger('click'); prevent = true; } } if(!prevent){ var act = _this.slideList.eq(_this._active).trigger('click'); if(typeof act.attr("onclick") != 'undefined') prevent = true; } if(prevent){ event.preventDefault(); event.stopPropagation(); } }, swipe: function (event, direction, distance, duration, fingerCount) { var c = Date.now(); if(last < c - delayBetween){ if (mode == 'horizontal') { if (direction == 'right') { _this.previous(); } else if (direction == 'left') { _this.next(); } } else if (mode == 'vertical') { if (direction == 'down') { _this.previous(); } else if (direction == 'up') { _this.next(); } } last = c; } }, fallbackToMouseEvents: false, allowPageScroll: (mode == 'horizontal' ? 'vertical' : 'horizontal') }); } if(typeof window.MSGesture !== 'undefined'){ var gesture = new MSGesture(), el = this.$slider.find('> div').get(0), start = { x: 0, y: 0 }; gesture.target = el; if (mode == 'horizontal') { el.style['-ms-touch-action'] = 'pan-x'; el.style['-ms-scroll-chaining'] = 'none'; el.style['touch-action'] = 'pan-x'; el.style['scroll-chaining'] = 'none'; } else if (mode == 'vertical') { el.style['-ms-touch-action'] = 'pan-y'; el.style['-ms-scroll-chaining'] = 'none'; el.style['touch-action'] = 'pan-y'; el.style['scroll-chaining'] = 'none'; } var eventType = ''; if (window.navigator.pointerEnabled) { eventType = "pointerdown"; } else if (window.navigator.msPointerEnabled) { eventType = "MSPointerDown"; } if(eventType){ el.addEventListener(eventType, function (evt) { gesture.addPointer(evt.pointerId); }); } el.addEventListener("MSGestureStart", function(e){ start.x = e.offsetX; start.y = e.offsetY; }); el.addEventListener("MSGestureEnd", function(e){ var zoom = document.documentElement.clientWidth / window.innerWidth; var hOffset = 10, vOffset = 10; if (mode == 'horizontal') { if (start.x-hOffset >= e.offsetX) { _this.next(); } else if (start.x+hOffset <= e.offsetX) { _this.previous(); } } else if (mode == 'vertical') { if (start.y-vOffset >= e.offsetY) { _this.next(); } else if (start.y+vOffset <= e.offsetY) { _this.previous(); } } }); } }, initKeyboard: function () { if (this.options.controls.keyboard == '0') return; var _this = this; var delayBetween = 500, last = 0; $(document).keydown(function(e){ var c = Date.now(); if(last < c - delayBetween){ if (e.keyCode == 37) { _this.previous(); }else if (e.keyCode == 39) { _this.next(); } last = c; } }); }, initEvents: function(){ this.$slider.find("*[data-click]").each(function(){ var thisme = $(this); if(thisme.data('click')!=""){ thisme.on("click", function(e){ var result = eval('(function() {' + thisme.data('click') + '}())'); if(!result){ e.preventDefault(); } }); } }); this.$slider.find("*[data-enter]").each(function(){ var thisme = $(this); if(thisme.data('enter')!=""){ thisme.on("mouseenter", function(){eval(thisme.data('enter'));}); } }); this.$slider.find("*[data-leave]").each(function(){ var thisme = $(this); if(thisme.data('leave')!=""){ thisme.on("mouseleave", function(){eval(thisme.data('leave'));}); } }); }, next: function (autoplay) { var i = this._active + 1; if (i === this.slideList.length) i = 0; return this.changeTo(i, false, autoplay); }, previous: function (autoplay) { var i = this._active - 1; if (i < 0) i = this.slideList.length - 1; return this.changeTo(i, true, autoplay); }, lazyLoadEnable: function(delayed){ if(this.admin) return; var _this = this; this.lazyloaded = []; this.spinner = $('
'); this.spinner.appendTo(this.$slider); this._changeTo = this.changeTo; this.changeTo = this.lazyChangeTo; this.___animateTouch = this.__animateTouch; this.__animateTouch = this.lazy__animateTouch; if(delayed){ $(this).one('load', function(){ $(window).on('load', function(){ _this.slideList.each(function(i){ _this.lazyLoadSlide(i, true, true); _this.lazyLoadFlux(i, true); }); }); }); }else{ $(this).one('load', function(){ _this.lazyLoadSlide(_this._active, true, true); _this.lazyLoadFlux(_this._active, true); }); } }, lazyLoadSlide: function(i, neighbor, delayed){ if(!this.lazyloaded[i]){ if(!delayed) this.spinner.addClass('nextend-spinner'); var _this = this, deferred = this.slideList.eq(i).find('img').nextendunveil(this._currentmode); this.lazyloaded[i] = deferred; $.when(deferred).then(function(){ _this.lazyloaded[i] = true; }); } var v = this.options.lazyloadneighbor; if(!neighbor && v){ var j = 0, k = i; while(j < v){ k--; if(k < 0) k = this.slideList.length-1; this.lazyLoadSlide(k, true, false); j++; } j = 0; k = i; while(j < v){ k++; if(k >= this.slideList.length) k = 0; this.lazyLoadSlide(k, true, false); j++; } } return this.lazyloaded[i]; }, lazyLoadFlux: function(i, delayed){ if(typeof this.flux != 'undefined'){ if(!delayed) this.spinner.addClass('nextend-spinner'); return $(this.flux.images[i]).nextendunveil(this._currentmode); } }, lazyChangeTo: function (i, reversed, autoplay) { var _this = this; this.pauseAutoPlay(true); $.when(this.lazyLoadSlide(i, false, false), this.lazyLoadFlux(i, false)).then(function(){ _this.spinner.removeClass('nextend-spinner'); _this._changeTo(i, reversed, autoplay); }); }, lazy__animateTouch: function(i, lastActive, prop, target, targetActive){ var _this = this; this.pauseAutoPlay(true); $.when(this.lazyLoadSlide(i, false, false), this.lazyLoadFlux(i, false)).then(function(){ _this.spinner.removeClass('nextend-spinner'); _this.___animateTouch(i, lastActive, prop, target, targetActive); }); }, changeTo: function (i, reversed, autoplay) { if (window.ssadmin || i === this._active || this._animating) return false; if (!this.options.syncAnimations) { if (this._lastActive != i) this.slideList.eq(this._lastActive).trigger('ssanimatestop'); this.slideList.eq(this._active).trigger('ssanimatestop'); } this.ssplay = false; var _this = this; this.pauseAutoPlay(true); this._animating = true; if (this.options.syncAnimations) _this._runningAnimations++; this._nextActive = i; this.changeBullet(i); $(this).trigger('mainanimationstart'); var $currentactiveslide = this.slideList.eq(this._active), $nextactiveslide = this.slideList.eq(i), playin = function () { if (_this.options.inaftermain) { $nextactiveslide.trigger('ssanimatelayerssetinstart'); _this.$this.on('mainanimationinend.inaftermain', function () { _this.$this.off('mainanimationinend.inaftermain'); $nextactiveslide.trigger('ssanimatelayersin'); }); _this._runningAnimations++; _this.animateIn(i, reversed); } else { _this._runningAnimations++; _this.animateIn(i, reversed); $nextactiveslide.trigger('ssanimatelayersin'); } }; if (this.options.mainafterout) { $currentactiveslide.on('ssanimationsended.ssinaftermain', function () { $currentactiveslide.off('ssanimationsended.ssinaftermain'); _this._runningAnimations++; _this.animateOut(_this._active, reversed); playin(); }); if (this.options.syncAnimations) { $currentactiveslide.trigger('ssanimatelayersout'); } } else { this._runningAnimations++; this.animateOut(this._active, reversed); if (this.options.syncAnimations) { $currentactiveslide.trigger('ssanimatelayersout'); } playin(); } }, animateOut: function (i, reversed) { var _this = this; this._lastActive = i; var $slide = this.slideList.eq(i); var motion = ssAnimationManager.getAnimation('no', $slide); $slide.on('ssanimationsended.ssmainanimateout',function () { $slide.off('ssanimationsended.ssmainanimateout'); _this.$this.trigger('mainanimationoutend'); _this.mainanimationended(); }).trigger('ssoutanimationstart'); motion.animateOut(); }, animateIn: function (i, reversed) { var _this = this; this._active = i; var $slide = this.slideList.eq(i); var motion = ssAnimationManager.getAnimation('no', $slide); $slide.on('ssanimationsended.ssmainanimatein',function () { $slide.off('ssanimationsended.ssmainanimatein'); _this.$this.trigger('mainanimationinend'); _this.mainanimationended(); _this.mainanimationended(); }).trigger('ssinanimationstart'); motion.animateIn(); }, mainanimationended: function () { this._runningAnimations--; if (this._runningAnimations === 0) { this.slideList.eq(this._lastActive).removeClass(this._parent.slideActive); this.slideList[this._lastActive].layers.setHiddenState(); this.slideList.eq(this._active).addClass(this._parent.slideActive); this._animating = false; this.$this.trigger('mainanimationend'); this.startAutoplay(); if(this.options.autoplayConfig.resumeautoplay.slidechanged) this.reStartAutoPlay(); } else if (this._runningAnimations < 0) { this._runningAnimations = 0; } }, changeBullet: function (i) { this._bullets.removeClass('active'); this._bullets.eq(i).addClass('active'); this._bar.removeClass('active'); this._bar.eq(i).addClass('active'); this.changeThumbnail(i); }, changeThumbnail: function (i) { if (this._thumbnails) this._thumbnails.change(i); }, initAutoplay: function () { var _this = this; this.indicator = window[this.id + '-indicator']; if (!this.indicator) { this.indicator = { hide: function () { }, show: function () { }, refresh: function (val) { } }; } this.indicator.reset = function () { _this.indicatorProgress = 0; this.refresh(0); } this.autoplayTimer = null; var autoplay = this.options.autoplayConfig; if (autoplay.stopautoplay.click) { this.$slider.find('> div').eq(0).on('click', function () { _this.pauseAutoPlay(); }); } if (autoplay.stopautoplay.mouseenter) { this.$slider.find('> div').eq(0).on('mouseenter', function () { _this.pauseAutoPlay(); }); } if (autoplay.stopautoplay.slideplaying) { this.$slider.on('ssplaystarted', function () { _this.ssplay = true; _this.pauseAutoPlay(); }); } if (autoplay.resumeautoplay.mouseleave) { this.$slider.on('mouseleave', function () { if (!_this.autoplayTimer){ if(!_this.ssplay){ _this.reStartAutoPlay(); } } }); } this.$slider.on('ssplayended', function () { _this.ssplay = false; }); if (autoplay.resumeautoplay.slideplayed) { this.$slider.on('ssplayended', function () { if (!_this.autoplayTimer) _this.reStartAutoPlay(); }); } if (!this.autoplaybutton) this.autoplaybutton = this.$slider.find('.nextend-autoplay-button'); if (!this.indicatorEl) this.indicatorEl = $('
'); if (this.options.autoplay) { this.startAutoplay = this.startAutoplayWorking; this.startAutoplay(); } else { this.pauseAutoPlay(); } }, startAutoplay: function () { }, startAutoplayWorking: function () { var _this = this, duration = this.options.autoplayConfig.duration; if (this.autoplayTimer) { clearTimeout(this.autoplayTimer); this.autoplayTimer = null; } if (this.indicator) { var shift = 0, d = duration, prevProgress = 0, invPrevProgress = 1; if (this.indicatorEl.data('animating') && _this.indicatorProgress) { d *= (1 - _this.indicatorProgress); prevProgress = _this.indicatorProgress; invPrevProgress = 1 - prevProgress; } else { this.indicator.refresh(0); } this.indicatorEl.animate({ width: 1 }, { duration: d, progress: function (e, i) { var j = prevProgress + invPrevProgress * i; _this.indicator.refresh(j * 100); _this.indicatorProgress = j; }, complete: function () { _this.options.autoplayConfig.counter++; _this.next(true); _this.indicatorEl.data('animating', false); _this.indicatorEl.stop(true); _this.indicatorProgress = 0; if(!_this.options.autoplayConfig.autoplayToSlide || _this.options.autoplayConfig.counter < _this.options.autoplayConfig.autoplayToSlide-1) _this.reStartAutoPlay(); } }); this.indicatorEl.data('animating', true); } else { this.autoplayTimer = setTimeout(function () { this.options.autoplayConfig.counter++; _this.next(true); _this.indicatorEl.stop(true); _this.indicator.refresh(100); if(!_this.options.autoplayConfig.autoplayToSlide || _this.options.autoplayConfig.counter < _this.options.autoplayConfig.autoplayToSlide-1) _this.reStartAutoPlay(); }, duration); } }, pauseAutoPlay: function (reset) { if (this.autoplayTimer) { clearTimeout(this.autoplayTimer); this.autoplayTimer = null; } this.autoplaybutton.addClass('paused'); this.indicatorEl.stop(true); if (reset) { this.indicator.reset(); } this.startAutoplay = function () { }; }, reStartAutoPlay: function () { this.autoplaybutton.removeClass('paused'); this.startAutoplay = this.startAutoplayWorking; if (this._runningAnimations === 0) this.startAutoplay(); }, deviceType: function(){ var ua = window.navigator ? window.navigator.userAgent : window.request ? window.request.headers['user-agent'] : 'No User-Agent Provided'; // smart tv return ua.match(/GoogleTV|SmartTV|Internet.TV|NetCast|NETTV|AppleTV|boxee|Kylo|Roku|DLNADOC|CE\-HTML/i) ? 'desktop' // tv-based gaming console : ua.match(/Xbox|PLAYSTATION.3|Wii/i) ? 'desktop' // tablet : ua.match(/iPad/i) || ua.match(/tablet/i) && !ua.match(/tablet pc/i) && !ua.match(/RX-34/i) || ua.match(/FOLIO/i) ? 'tablet' // android tablet : ua.match(/Linux/i) && ua.match(/Android/i) && !ua.match(/Fennec|mobi|HTC.Magic|HTCX06HT|Nexus.One|SC-02B|fone.945/i) ? 'tablet' // Kindle or Kindle Fire : ua.match(/Kindle/i) || ua.match(/Mac.OS/i) && ua.match(/Silk/i) ? 'tablet' // pre Android 3.0 Tablet : ua.match(/GT-P10|SC-01C|SHW-M180S|SGH-T849|SCH-I800|SHW-M180L|SPH-P100|SGH-I987|zt180|HTC(.Flyer|\_Flyer)|Sprint.ATP51|ViewPad7|pandigital(sprnova|nova)|Ideos.S7|Dell.Streak.7|Advent.Vega|A101IT|A70BHT|MID7015|Next2|nook/i) || ua.match(/MB511/i) && ua.match(/RUTEM/i) ? 'tablet' // unique Mobile User Agent : ua.match(/BOLT|Fennec|Iris|Maemo|Minimo|Mobi|mowser|NetFront|Novarra|Prism|RX-34|Skyfire|Tear|XV6875|XV6975|Google.Wireless.Transcoder/i) ? 'mobile' // odd Opera User Agent - http://goo.gl/nK90K : ua.match(/Opera/i) && ua.match(/Windows.NT.5/i) && ua.match(/HTC|Xda|Mini|Vario|SAMSUNG\-GT\-i8000|SAMSUNG\-SGH\-i9/i) ? 'mobile' // Windows Desktop : ua.match(/Windows.(NT|XP|ME|9)/) && !ua.match(/Phone/i) || ua.match(/Win(9|.9|NT)/i) ? 'desktop' // Mac Desktop : ua.match(/Macintosh|PowerPC/i) && !ua.match(/Silk/i) ? 'desktop' // Linux Desktop : ua.match(/Linux/i) && ua.match(/X11/i) ? 'desktop' // Solaris, SunOS, BSD Desktop : ua.match(/Solaris|SunOS|BSD/i) ? 'desktop' // Desktop BOT/Crawler/Spider : ua.match(/Bot|Crawler|Spider|Yahoo|ia_archiver|Covario-IDS|findlinks|DataparkSearch|larbin|Mediapartners-Google|NG-Search|Snappy|Teoma|Jeeves|TinEye/i) && !ua.match(/Mobile/i) ? 'desktop' : 'desktop'; }, randomize: function(){ var sl = this.$slider.find('.smart-slider-canvas'); var p = sl.parent(); sl = this.shuffle(sl); sl.each(function(){ p.append(this); }); sl.filter('.'+this._parent.slideActive).removeClass(this._parent.slideActive); sl.eq(0).addClass(this._parent.slideActive); }, shuffle: function(array) { var m = array.length, t, i; // While there remain elements to shuffle… while (m) { // Pick a remaining element… i = Math.floor(Math.random() * m--); // And swap it with the current element. t = array[m]; array[m] = array[i]; array[i] = t; } return array; } }); })(njQuery, window); if (!Date.now) { Date.now = function now() { return new Date().getTime(); }; }; (function ($, scope, undefined) { scope.ssLayers = NClass.extend({ slide: null, $slide: null, layers: null, show: null, mode: 'desktop', init: function (slider, slide, options) { var _this = this; this.options = {}; this.slider = slider; this.slide = slide; this.$slide = $(slide); $.extend(this.options, options); this.refresh(); $(slider).on('resize', function (e, ratio, width, height) { _this.onResize(ratio, width, height); }); this.$slide.on('ssanimatelayersin',function () { _this.animateIn(); }).on('ssanimatelayerssetinstart',function () { _this.setInStart(); }).on('ssanimatelayerssetoutstart',function () { _this.setOutStart(); }).on('ssanimatelayersresetin',function () { _this.resetIn(); }).on('ssanimatelayersresetout',function () { _this.resetOut(); }).on('ssanimatelayersout',function () { _this.animateOut(); }).on('ssanimatestop', function () { _this.stop(); }); }, refresh: function () { var _this = this; this.layers = $([]); var _layers = $('.smart-slider-layer', this.slide), _active = $(this.slide).hasClass('smart-slider-slide-active'); _layers.each(function () { var $layer = $(this); if ($layer.data('animation') !== undefined) { //$layer.css('display', 'none'); _this.layers.push(this); $layer.data('slide', _this.slide); $layer.data('layermanager', _this); var motionin = _this.getMotionIn($layer); $layer.data('motionin', motionin); var motionout = _this.getMotionOut($layer); $layer.data('motionout', motionout); if (window.ssadmin === 1) { motionout.setOutStart(); motionout.reset(); motionin.reset(); } if(!_active){ motionin.setInStart(); } } }); this.show = { realall: _layers, notall: $(), hidden: _layers.filter('*[data-showdesktop="0"][data-showtablet="0"][data-showphone="0"]'), desktop: _layers.filter('*[data-showdesktop="1"]'), tablet: _layers.filter('*[data-showtablet="1"]') , phone: _layers.filter('*[data-showphone="1"]') }; this.show.all = _layers.not(this.show.hidden).not(this.show.desktop).not(this.show.tablet).not(this.show.phone) this.show.notdesktop = $.merge($.merge($([]), this.show.tablet), this.show.phone); this.show.nottablet = $.merge($.merge($([]), this.show.desktop), this.show.phone); this.show.notphone = $.merge($.merge($([]), this.show.desktop), this.show.tablet); this.show.hidden.css('display', 'none'); return this; }, onResize: function (ratio, width, height) { this.options.width = width; this.options.height = height; }, changeMode: function(mode){ this.mode = mode; if(mode == 'all'){ this.show['realall'].css('display', 'block'); this.layers = $.merge($([]), this.show['realall']); mode = 'desktop'; }else{ this.show['not'+mode].css('display', 'none'); this.show['all'].css('display', 'block'); this.show[mode].css('display', 'block'); this.layers = $.merge($.merge($([]), this.show[mode]), this.show['all']); } this.layers.each(function(){ var $this = $(this); var dim = { left: $this.data(mode+'left'), top: $this.data(mode+'top'), width: $this.data(mode+'width'), height: $this.data(mode+'height') }; for(var k in dim){ if(typeof dim[k] == 'undefined') dim[k] = $this.data('desktop'+k); if(typeof dim[k] != 'undefined') this.style[k] = dim[k]; } $this.data('motionin').refreshPosition(dim); $this.data('motionout').refreshPosition(dim); }); }, stop: function () { this.layers.each(function () { $(this).data('motionin').stop(); $(this).data('motionout').stop(); }); return this; }, resetIn: function () { this.layers.each(function () { $(this).data('motionin').reset(); }); return this; }, resetOut: function () { this.layers.each(function () { $(this).data('motionout').reset(); }); return this; }, animateIn: function () { if (this.layers.length === 0) { $(this.slide).trigger('noanimation'); } else { this.layers.each(function () { $(this).data('motionin').animateIn(); }); } return this; }, setInStart: function () { this.layers.each(function () { $(this).data('motionout').setOutStart(); $(this).data('motionin').setInStart(); }); return this; }, animateOut: function () { if (this.layers.length === 0) { $(this.slide).trigger('noanimation'); } else { this.layers.each(function () { $(this).data('motionout').animateOut(); }); } return this; }, setOutStart: function () { this.layers.each(function () { $(this).data('motionout').setOutStart(); }); return this; }, setHiddenState: function () { this.layers.each(function () { $(this).data('motionout').setHiddenState(); }); return this; }, getMotionIn: function ($layer) { var options = this.options; return ssAnimationManager.getAnimation($layer.data('animationin'), $layer, { width: options.width, height: options.height, intervalIn: parseInt($layer.data('durationin')), easingIn: $layer.data('easingin'), delayIn: parseInt($layer.data('delayin')), parallaxIn: parseFloat($layer.data('parallaxin')) }); }, getMotionOut: function ($layer) { var options = this.options; return ssAnimationManager.getAnimation($layer.data('animationout'), $layer, { width: options.width, height: options.height, intervalOut: parseInt($layer.data('durationout')), easingOut: $layer.data('easingout'), delayOut: parseInt($layer.data('delayout')), parallaxOut: parseFloat($layer.data('parallaxout')) }); } }); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationNo = scope.ssAnimation.extend({ init: function (layer, options) { this._super(layer, options); }, _setInStart: function () { this.layer.css('display', 'block'); }, _animateIn: function () { this.endFN = 'onAnimateInEnd'; this.layer.css('display', 'block'); this['onAnimateInEnd'](); }, _animateOut: function () { this.endFN = 'onAnimateOutEnd'; this['onAnimateOutEnd'](); } }); scope.ssAnimationManager.addAnimation('no', scope.ssAnimationNo, {}); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationNoStatic = scope.ssAnimation.extend({ init: function (layer, options) { this._super(layer, options); }, _setInStart: function () { }, _animateIn: function () { this.endFN = 'onAnimateInEnd'; this.layer.css('left', 0); this['onAnimateInEnd'](); }, _animateOut: function () { this.endFN = 'onAnimateOutEnd'; this.layer.css('left', '-1000%'); this['onAnimateOutEnd'](); } }); scope.ssAnimationManager.addAnimation('nostatic', scope.ssAnimationNoStatic, {}); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationFade = scope.ssAnimation.extend({ timeout: null, init: function (layer, options) { this._super(layer, options); this.options.animate += " smart-slider-animate-fade"; }, _stop: function () { var $this = this, slider = $(this.layer.data('layermanager').slider); slider.on('mainanimationend.layerstop', function () { if ($this.timeout) clearTimeout($this.timeout); $this.layer.stop(true).css('display', 'none'); slider.off('mainanimationend.layerstop'); }); }, _setHiddenState: function () { this.layer.css('opacity', '1'); }, _setInStart: function () { this.layer.css('display', 'none'); }, _animateIn: function () { this._animate(0, 1, this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd'); }, _setOutStart: function () { this.layer.css('display', 'block').css('opacity', '1'); }, _animateOut: function () { this._animate(1, 0, this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd'); }, _animate: function (startOpacity, endOpacity, cssclass, interval, easing, delay, endfn) { this.endFN = endfn; if (this.timeout) clearTimeout(this.timeout); var $this = this; var endDisplay = (endOpacity === 0) ? 'none' : 'block'; this.layer.addClass(cssclass).css('opacity', startOpacity).css('display', 'block'); this.timeout = setTimeout(function () { $this.layer.animate({ opacity: endOpacity }, { duration: interval, complete: function () { $this.layer.css('display', endDisplay).removeClass(cssclass); $this[endfn](); } }); }, 50 + delay); } }); scope.ssAnimationManager.addAnimation('fade', scope.ssAnimationFade, {}); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationFadestatic = scope.ssAnimationFade.extend({ timeout: null, init: function (layer, options) { this._super(layer, options); this.options.animate += " smart-slider-animate-fade"; }, _stop: function () { var $this = this, slider = $(this.layer.data('layermanager').slider); slider.on('mainanimationend.layerstop', function () { if ($this.timeout) clearTimeout($this.timeout); $this.layer.stop(true).css('opacity', '0'); slider.off('mainanimationend.layerstop'); }); }, _setHiddenState: function () { this.layer.css('opacity', '1'); }, _setInStart: function () { this.layer.css('opacity', '0'); }, _animateIn: function () { this._animate(0, 1, this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd'); }, _setOutStart: function () { this.layer.css('display', 'block').css('opacity', '1'); }, _animateOut: function () { this._animate(1, 0, this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd'); }, _animate: function (startOpacity, endOpacity, cssclass, interval, easing, delay, endfn) { this.endFN = endfn; if (this.timeout) clearTimeout(this.timeout); var $this = this; this.layer.addClass(cssclass).css('opacity', startOpacity).css('left', 0).css('top', 0); this.timeout = setTimeout(function () { $this.layer.animate({ opacity: endOpacity }, { duration: interval, complete: function () { $this.layer.removeClass(cssclass); $this[endfn](); } }); }, 50 + delay); } }); scope.ssAnimationManager.addAnimation('fadestatic', scope.ssAnimationFadestatic, {}); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationSlide = scope.ssAnimation.extend({ timeout: null, delayfnstring: '', init: function (layer, options) { var _this = this; if (!options.target) options.target = {}; this._super(layer, options); this.options.animate += " smart-slider-animate-slide"; var l = layer[0]; l.origLeftPercent = parseFloat(l.style.left); l.origTopcent = parseFloat(l.style.top); if (!l.origLeftPercent) l.origLeftPercent = 0; if (!l.origTopcent) l.origTopcent = 0; var layermanager = $(this.layer).data('layermanager'); if (layermanager) { $(layermanager.slider).on('resize', function (e, ratio, width, height) { _this.onResize(ratio, width, height); }); } }, _stop: function () { var $this = this, slider = $(this.layer.data('layermanager').slider); window[$this.delayfnstring] = null; try { delete window[$this.delayfnstring]; } catch (e) { } if (this.timeout) clearTimeout(this.timeout); slider.on('mainanimationend.layerstop', function () { $this.layer.css('display', 'none').stop(true); slider.off('mainanimationend.layerstop'); }); }, onResize: function (ratio, width, height) { this.options.width = width; this.options.height = height; }, refreshPosition: function(dim){ var l = this.layer[0]; l.origLeftPercent = parseFloat(dim.left); l.origTopcent = parseFloat(dim.top); }, _setInStart: function () { var coords = this.getCoords(this.options.mode, this.options.parallaxIn, false); var left = this.layer[0].origLeftPercent / 100 * this.options.width; var top = this.layer[0].origTopcent / 100 * this.options.height; this.layer.css('visibility', 'hidden') .css('left', left + coords.origX) .css('top', top + coords.origY); }, _animateIn: function () { this._animate(this.getCoords(this.options.mode, this.options.parallaxIn, false), 'hidden', 'block', 'block', this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd'); }, _setOutStart: function () { this.layer.css('left', this.layer[0].origLeftPercent + '%') .css('top', this.layer[0].origTopcent + '%') .css('display', 'block'); }, _animateOut: function () { this._animate(this.getCoords(this.options.mode, this.options.parallaxOut, true), 'visible', 'block', 'none', this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd'); }, _animate: function (coords, startVisibility, startDisplay, endDisplay, cssclass, interval, easing, delay, endfn) { this.endFN = endfn; var $this = this, options = this.options; var left = this.layer[0].origLeftPercent / 100 * options.width; var top = this.layer[0].origTopcent / 100 * options.height; this.layer.addClass(cssclass).css('left', left + coords.origX).css('top', top + coords.origY).css('visibility', startVisibility).css('display', startDisplay); var target = {}; $.extend(target, this.options.target); if (coords.targetX !== null) target.left = left + coords.targetX; if (coords.targetY !== null) target.top = top + coords.targetY; if (typeof $.easing[easing] != 'function') easing = 'linear'; var delay = 50 + delay, delaystring = 'sstimer' + delay, delayfnstring = delaystring + 'fns'; this.delayfnstring = delayfnstring; if (!window[delayfnstring]) window[delayfnstring] = []; window[delayfnstring].push(function () { $this.layer.css('visibility', 'visible').animate(target, { duration: interval, easing: easing, complete: function () { $this.layer.css('display', endDisplay).removeClass(cssclass).css('left', $this.layer[0].origLeftPercent + '%').css('top', $this.layer[0].origTopcent + '%'); $this[endfn](); } }); }); if (window[delaystring]) clearTimeout(window[delaystring]); this.timeout = window[delaystring] = setTimeout(function () { for (var i = 0; i < window[delayfnstring].length; i++) { window[delayfnstring][i](); } window[delayfnstring] = null; try { delete window[delayfnstring]; } catch (e) { } }, delay); }, getCoords: function (direction, parallax, out) { var coords = { targetX: null, targetY: null, origX: 0, origY: 0 }, options = this.options; if (out) { switch (direction) { case 'righttoleft': coords.origX = 0; coords.targetX = -1 * options.width * parallax; break; case 'lefttoright': coords.origX = 0; coords.targetX = options.width * parallax; break; case 'toptobottom': coords.origY = 0; coords.targetY = options.height * parallax; break; case 'bottomtotop': coords.origY = 0; coords.targetY = -1 * options.height * parallax; break; default: } } else { switch (direction) { case 'righttoleft': coords.origX = options.width * parallax; coords.targetX = 0; break; case 'lefttoright': coords.origX = -1 * options.width * parallax; coords.targetX = 0; break; case 'toptobottom': coords.origY = -1 * options.height * parallax; coords.targetY = 0; break; case 'bottomtotop': coords.origY = options.height * parallax; coords.targetY = 0; break; default: } } return coords; } }); scope.ssAnimationManager.addAnimation('slidelefttoright', scope.ssAnimationSlide, { mode: 'lefttoright' }); scope.ssAnimationManager.addAnimation('sliderighttoleft', scope.ssAnimationSlide, { mode: 'righttoleft' }); scope.ssAnimationManager.addAnimation('slidetoptobottom', scope.ssAnimationSlide, { mode: 'toptobottom' }); scope.ssAnimationManager.addAnimation('slidebottomtotop', scope.ssAnimationSlide, { mode: 'bottomtotop' }); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationSlideStatic = scope.ssAnimationSlide.extend({ timeout: null, delayfnstring: '', init: function (layer, options) { var _this = this; if (!options.target) options.target = {}; this._super(layer, options); this.options.animate += " smart-slider-animate-slide"; var layermanager = $(this.layer).data('layermanager'); if (layermanager) { $(layermanager.slider).on('resize', function (e, ratio, width, height) { _this.onResize(ratio, width, height); }); } }, _stop: function () { var $this = this, slider = $(this.layer.data('layermanager').slider); window[$this.delayfnstring] = null; try { delete window[$this.delayfnstring]; } catch (e) { } if (this.timeout) clearTimeout(this.timeout); slider.on('mainanimationend.layerstop', function () { $this.layer.stop(true); slider.off('mainanimationend.layerstop'); }); }, refreshPosition: function(){ }, _setInStart: function () { var coords = this.getCoords(this.options.mode, this.options.parallaxIn, false); this.layer.css('visibility', 'hidden').css('left', coords.origX).css('top', coords.origY); }, _animateIn: function () { this._animate(this.getCoords(this.options.mode, this.options.parallaxIn, false), this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd'); }, _setOutStart: function () { this.layer.css('left', '0%').css('top', '0%'); }, _animateOut: function () { this._animate(this.getCoords(this.options.mode, this.options.parallaxOut, true), this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd'); }, _animate: function (coords, cssclass, interval, easing, delay, endfn) { this.endFN = endfn; var $this = this, options = this.options; this.layer.addClass(cssclass).css('left', coords.origX).css('top', coords.origY).css('opacity', 1); var target = {}; $.extend(target, this.options.target); if (coords.targetX !== null) target.left = coords.targetX; if (coords.targetY !== null) target.top = coords.targetY; if (typeof $.easing[easing] != 'function') easing = 'linear'; var delay = 50 + delay, delaystring = 'sstimer' + delay, delayfnstring = delaystring + 'fns'; this.delayfnstring = delayfnstring; if (!window[delayfnstring]) window[delayfnstring] = []; window[delayfnstring].push(function () { $this.layer.animate(target, { duration: interval, easing: easing, complete: function () { $this.layer.removeClass(cssclass); if(typeof target.left != 'undefined' && target.left != 0) $this.layer.css('left', '-1000%'); if(typeof target.top != 'undefined' && target.top != 0) $this.layer.css('left', '-1000%'); $this[endfn](); } }); }); if (window[delaystring]) clearTimeout(window[delaystring]); this.timeout = window[delaystring] = setTimeout(function () { for (var i = 0; i < window[delayfnstring].length; i++) { window[delayfnstring][i](); } window[delayfnstring] = null; try { delete window[delayfnstring]; } catch (e) { } }, delay); } }); scope.ssAnimationManager.addAnimation('slidestaticlefttoright', scope.ssAnimationSlideStatic, { mode: 'lefttoright' }); scope.ssAnimationManager.addAnimation('slidestaticrighttoleft', scope.ssAnimationSlideStatic, { mode: 'righttoleft' }); scope.ssAnimationManager.addAnimation('slidestatictoptobottom', scope.ssAnimationSlideStatic, { mode: 'toptobottom' }); scope.ssAnimationManager.addAnimation('slidestaticbottomtotop', scope.ssAnimationSlideStatic, { mode: 'bottomtotop' }); })(njQuery, window);(function ($, scope, undefined) { scope.ssAnimationTransit = scope.ssAnimation.extend({ timeout: null, init: function (layer, options) { var _this = this; //$.transit.useTransitionEnd = true; this._super(layer, options); this.options.animate += " smart-slider-animate-slide"; }, reset: function () { if (this.options.reset) { this.layer.css(this.options.reset); } }, _stop: function () { if (this.timeout) clearTimeout(this.timeout); var $this = this, slider = $(this.layer.data('layermanager').slider); slider.on('mainanimationend.layerstop', function () { $this.layer.transitionStop(true).css('display', 'none'); slider.off('mainanimationend.layerstop'); }); }, _setInStart: function () { this.layer.css('visibility', 'hidden').css(this.options.startCSS); }, _animateIn: function () { this._animate(this.options.animationin, $.extend({}, this.options.startCSS), $.extend({}, this.options.endCSS), 'hidden', 'block', 'block', this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, this.options.parallaxIn, 'onAnimateInEnd'); }, _setOutStart: function () { var endcss = $.extend({}, this.options.endCSS); if (this.options.parallax) { for (var i = 0; i < this.options.parallax.length; i++) { var prop = this.options.parallax[i]; endcss[prop] *= this.options.parallaxOut; } } this.layer.css(endcss).css('display', 'block'); }, _animateOut: function () { this._animate(this.options.animationout, $.extend({}, this.options.endCSS), $.extend({}, this.options.startCSS), 'visible', 'block', 'block', this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, this.options.parallaxOut, 'onAnimateOutEnd'); }, _animate: function (animation, startcss, endcss, startVisibility, startDisplay, endDisplay, cssclass, interval, easing, delay, parallax, endfn) { this.endFN = endfn; var $this = this, options = this.options; var left = this.layer[0].origLeftPercent / 100 * options.width; var top = this.layer[0].origTopcent / 100 * options.height; if (this.options.parallax) { for (var i = 0; i < this.options.parallax.length; i++) { var prop = this.options.parallax[i]; startcss[prop] *= parallax; endcss[prop] *= parallax; } } this.layer.addClass(cssclass).css('visibility', startVisibility).css(startcss).css('display', startDisplay); if (typeof $.easing[easing] != 'function') easing = 'linear'; this.timeout = setTimeout(function () { var layer = $this.layer, percent = 0; if (nModernizr.csstransitions && animation && animation.length > 0) { for (var i = 0; i < animation.length; i++) { layer.css('visibility', 'visible').transition( animation[i].css, interval * (animation[i].percent - percent) / 100, easing ); percent = animation[i].percent; } } layer.data('sstransit', endfn); layer.css('visibility', 'visible').transition( endcss, interval * (100 - percent) / 100, easing, function () { $this.layer.css('display', endDisplay).removeClass(cssclass); $this[endfn](); } ); }, 50 + parseInt(delay)); } }); scope.ssAnimationManager.addAnimation('flipx', scope.ssAnimationTransit, { startCSS: { opacity: 0, perspective: '400px', rotateX: 90 }, animationin: [ { percent: 40, css: { opacity: 0.4, rotateX: -10 } }, { percent: 70, css: { opacity: 0.7, rotateX: 10 } } ], endCSS: { opacity: 1, rotateX: 0 } }); scope.ssAnimationManager.addAnimation('flipy', scope.ssAnimationTransit, { startCSS: { opacity: 0, perspective: '400px', rotateY: 90 }, animationin: [ { percent: 40, css: { opacity: 0.4, rotateY: -10 } }, { percent: 70, css: { opacity: 0.7, rotateY: 10 } } ], endCSS: { opacity: 1, rotateY: 0 } }); scope.ssAnimationManager.addAnimation('fadeup', scope.ssAnimationTransit, { startCSS: { opacity: 0, y: 1000 }, endCSS: { opacity: 1, y: 0 }, parallax: ['y'] }); scope.ssAnimationManager.addAnimation('faderight', scope.ssAnimationTransit, { startCSS: { opacity: 0, x: 1000 }, endCSS: { opacity: 1, x: 0 }, parallax: ['x'] }); scope.ssAnimationManager.addAnimation('fadedown', scope.ssAnimationTransit, { startCSS: { opacity: 0, y: -1000 }, endCSS: { opacity: 1, y: 0 }, parallax: ['y'] }); scope.ssAnimationManager.addAnimation('fadeleft', scope.ssAnimationTransit, { startCSS: { opacity: 0, x: -1000 }, endCSS: { opacity: 1, x: 0 }, parallax: ['x'] }); scope.ssAnimationManager.addAnimation('bounce', scope.ssAnimationTransit, { startCSS: { opacity: 0, scale: 0 }, animationin: [ { percent: 50, css: { opacity: 1, scale: 1.05 } }, { percent: 70, css: { scale: 0.9 } } ], endCSS: { opacity: 1, scale: 1 } }); scope.ssAnimationManager.addAnimation('rotate', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'center center', rotate: -360 }, endCSS: { transformOrigin: 'center center', rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rotateupleft', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'left bottom', rotate: 90 }, endCSS: { transformOrigin: 'left bottom', rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rotatedownleft', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'left bottom', rotate: -90 }, endCSS: { transformOrigin: 'left bottom', rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rotateupright', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'right bottom', rotate: 90 }, endCSS: { transformOrigin: 'right bottom', rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rotatedownright', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'right bottom', rotate: -90 }, endCSS: { transformOrigin: 'right bottom', rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rollin', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'center center', opacity: 0, x: '-100%', rotate: -360 }, endCSS: { transformOrigin: 'center center', opacity: 1, x: 0, rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('rollout', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'center center', opacity: 0, x: '100%', rotate: 360 }, endCSS: { transformOrigin: 'center center', opacity: 1, x: 0, rotate: 0 }, parallax: ['rotate'] }); scope.ssAnimationManager.addAnimation('scale', scope.ssAnimationTransit, { startCSS: { transformOrigin: 'center center', scale: 0 }, endCSS: { transformOrigin: 'center center', scale: 1 } }); })(njQuery, window);(function ($, scope, undefined) { scope.ssSimpleSlider = scope.ssTypeBase.extend({ extraParallax: 1, init: function (parent, $el, options) { var _this = this; options.flux[0] = (options.flux[0] && parseInt(options.flux[0])) ? true : false; this._super(parent, $el, options); }, afterInit: function(){ var _this = this; this._super(); this.smartsliderborder2 = this.$slider.find('.smart-slider-border2'); this.slideList.not(this.slideList.eq(this._active)).css('left', '-1000%'); this.$this.on('mainanimationoutend', function () { var $slide = this.slideList.eq(_this._lastActive); //$slide.css('display', 'none'); }); $(this).on('load.firstsub', function () { $(this).off('load.firstsub'); }); }, sizeInited: function () { if(njQuery('#'+this.id+' .nextend-flux img').length != this.slideList.length) this.options.flux[0] = 0; if (this.options.flux[0]) { this.flux = new flux.slider('#'+this.id+' .nextend-flux', { transitions: this.options.flux[1], width: this.slideDimension.w, height: this.slideDimension.h, currentImageIndex: this._active, nextImageIndex: this._active + 1 }); } }, storeDefaults: function () { var _this = this, ss = this.$slider; ss.data('ss-outerwidth', ss.outerWidth(true)); //ss.data('ss-fontsize', parseInt(ss.css('fontSize'))); this.variables.margintop = parseInt(ss.css('marginTop')); this.variables.marginright = parseInt(ss.css('marginRight')); this.variables.marginbottom = parseInt(ss.css('marginBottom')); this.variables.marginleft = parseInt(ss.css('marginLeft')); ss.data('ss-m-t', this.variables.margintop); ss.data('ss-m-r', this.variables.marginright); ss.data('ss-m-b', this.variables.marginbottom); ss.data('ss-m-l', this.variables.marginleft); this.variables.outerwidth = ss.parent().width(); this.variables.outerheight = ss.parent().height(); this.variables.width = ss.width(); this.variables.height = ss.height(); ss.data('ss-w', this.variables.width); ss.data('ss-h', this.variables.height); var smartsliderborder1 = this.smartsliderborder1 = ss.find('.smart-slider-border1'); smartsliderborder1.data('ss-w', smartsliderborder1.width()); smartsliderborder1.data('ss-h', smartsliderborder1.height()); smartsliderborder1.data('ss-p-t', parseInt(smartsliderborder1.css('paddingTop'))); smartsliderborder1.data('ss-p-r', parseInt(smartsliderborder1.css('paddingRight'))); smartsliderborder1.data('ss-p-b', parseInt(smartsliderborder1.css('paddingBottom'))); smartsliderborder1.data('ss-p-l', parseInt(smartsliderborder1.css('paddingLeft'))); var canvases = this.smartslidercanvasinner = this.slideList.find('.smart-slider-canvas-inner'); this.variables.canvaswidth = canvases.width(); this.variables.canvasheight = canvases.height(); canvases.data('ss-w', this.variables.canvaswidth); canvases.data('ss-h', this.variables.canvasheight); this.slideList.css({ width: this.variables.canvaswidth, height: this.variables.canvasheight }); this.imagesinited = false; this.load(function () { $.each(_this.slidebgList, function(){ var $img = $(this); var im = $("").attr("src", $img.attr("src")); $img.data('ss-w', im[0].width < 10 ? _this.variables.canvaswidth : im[0].width); $img.data('ss-h', im[0].height < 10 ? _this.variables.canvasheight : im[0].height); }); _this.imagesinited = true; _this.$slider.trigger('imagesinited'); }); this.slidebgList.on('lazyloaded', function(){ var $img = $(this); var im = $("").attr("src", $img.attr("src")); $img.data('ss-w', im[0].width < 10 ? _this.variables.canvaswidth : im[0].width); $img.data('ss-h', im[0].height < 10 ? _this.variables.canvasheight : im[0].height); if(typeof _this.variables.oCanvasWidth != 'undefined') $img.height(parseInt(_this.variables.oCanvasWidth/$img.data('ss-w')*$img.data('ss-h'))); }); this.variablesRefreshed(); }, onResize: function (fixedratio) { var _this = this, ss = this.$slider; var modechanged = this.refreshMode(); //this._currentmode var ratio = 1; var availableWidth = ss.parent().width(); var outerWidth = ss.data('ss-outerwidth'); if (!this.options.responsive.upscale && availableWidth > outerWidth) availableWidth = outerWidth; if(typeof fixedratio == 'undefined'){ if (availableWidth != outerWidth) { ratio = availableWidth / outerWidth; } if (!modechanged && (this.lastAvailableWidth == availableWidth || !this.options.responsive.downscale && ratio < 1)) { var _this = this; this.load(function () { $(_this).trigger('load'); }); return true; } }else{ ratio = fixedratio; } this.lastAvailableWidth = availableWidth; ss.css('fontSize', ss.data(this._currentmode+'fontsize') * ratio + 'px'); this.variables.margintop = parseInt(ss.data('ss-m-t') * ratio); this.variables.marginright = parseInt(ss.data('ss-m-r') * ratio); this.variables.marginbottom = parseInt(ss.data('ss-m-b') * ratio); this.variables.marginleft = parseInt(ss.data('ss-m-l') * ratio); ss.css('marginTop', this.variables.margintop); ss.css('marginRight', this.variables.marginright); ss.css('marginBottom', this.variables.marginbottom); ss.css('marginLeft', this.variables.marginleft); var smartsliderborder1 = this.smartsliderborder1; smartsliderborder1.css('paddingTop', parseInt(smartsliderborder1.data('ss-p-t') * ratio) + 'px'); smartsliderborder1.css('paddingRight', parseInt(smartsliderborder1.data('ss-p-r') * ratio) + 'px'); smartsliderborder1.css('paddingBottom', parseInt(smartsliderborder1.data('ss-p-b') * ratio) + 'px'); smartsliderborder1.css('paddingLeft', parseInt(smartsliderborder1.data('ss-p-l') * ratio) + 'px'); smartsliderborder1.width(parseInt(smartsliderborder1.data('ss-w') * ratio)); this.variables.width = smartsliderborder1.outerWidth(true); ss.width(this.variables.width); var canvases = this.smartslidercanvasinner; var oCanvasWidth = canvasWidth = parseInt(canvases.data('ss-w') * ratio), oCanvasHeight = parseInt(canvases.data('ss-h') * ratio), margin = 0, maxw = this.options.responsive.maxwidth, ratio2 = ratio; if (canvasWidth > this.options.responsive.maxwidth) { margin = parseInt((canvasWidth - maxw) / 2); ratio2 = maxw / canvases.data('ss-w'); canvasWidth = parseInt(canvases.data('ss-w') * ratio2); } this.extraParallax = ratio / ratio2; var canvasHeight = parseInt(canvases.data('ss-h') * ratio2); this.variables.oCanvasWidth = oCanvasWidth; if (this.options.flux[0]) this.flux.changeSize(oCanvasWidth, canvasHeight); canvases.width(canvasWidth).height(canvasHeight).css({ marginLeft: margin, marginRight: margin }); this.slideList.css({ width: canvases.outerWidth(true), height: canvases.outerHeight(true) }); smartsliderborder1.css('fontSize', ss.data(this._currentmode+'fontsize') * ratio2 + 'px'); smartsliderborder1.height(canvasHeight); this.variables.height = smartsliderborder1.outerHeight(true); ss.height(this.variables.height); this.slideDimension.w = canvasWidth; this.slideDimension.h = canvasHeight; this.variables.canvaswidth = canvasWidth; this.variables.canvasheight = canvasHeight; this.variables.outerwidth = ss.parent().width(); this.variables.outerheight = ss.parent().height(); this.slidebgList.width(oCanvasWidth); var bgfn = function () { $.each(_this.slidebgList, function(){ var $img = $(this); $img.height(parseInt(oCanvasWidth/$img.data('ss-w')*$img.data('ss-h'))); }); }; if(_this.imagesinited){ bgfn(); }else{ _this.$slider.on('imagesinited', function(){ bgfn(); }); } for (var i = 0; i < window[this.id + '-onresize'].length; i++) { window[this.id + '-onresize'][i](ratio); } $(this).trigger('resize', [ratio, canvasWidth, canvasHeight]); var _this = this; this.load(function () { $(_this).trigger('load'); }); this.variablesRefreshed(); }, animateOut: function (i, reversed) { var _this = this; this._lastActive = i; this.initAnimation(); var $slide = this.slideList.eq(i); $slide.on('ssanimationsended.ssmainanimateout',function () { $slide.off('ssanimationsended.ssmainanimateout'); _this.$this.trigger('mainanimationoutend'); _this.mainanimationended(); }).trigger('ssoutanimationstart'); this.__animateOut($slide, reversed).animateOut(); }, animateIn: function (i, reversed) { this._active = i; var _this = this, $slide = this.slideList.eq(i); $slide.width(this.slideList.width()); $slide.on('ssanimationsended.ssmainanimatein',function () { $slide.off('ssanimationsended.ssmainanimatein'); _this.$this.trigger('mainanimationinend'); _this.mainanimationended(); }).trigger('ssinanimationstart'); if (this.options.flux[0]) { //make them synced var ended = null, endFN = function(){ _this.mainanimationended(); $slide.trigger('decrementanimation'); }; ended = function(){ ended = endFN; }; $slide.trigger('incrementanimation'); this.__animateIn($slide, reversed,function () { ended(); }).animateIn(); this.flux.element.on('fluxTransitionEnd.ss', function (event) { $(this).off('fluxTransitionEnd.ss'); ended(); }); this.flux.showImage(i); } else { this.__animateIn($slide, reversed,function () { _this.mainanimationended(); }).animateIn(); } }, initAnimation: function () { var currentAnimation = this.options.animation[Math.floor(Math.random() * this.options.animation.length)]; this._animationOptions = { next: {}, current: {} }; this._animationOptions.next = $.merge(this.options.animationSettings, this._animationOptions.next); this._animationOptions.current = $.merge(this.options.animationSettings, this._animationOptions.current); switch (currentAnimation) { case 'horizontal': this.__animateIn = this.__animateInHorizontal; this.__animateOut = this.__animateOutHorizontal; break; case 'vertical': this.__animateIn = this.__animateInVertical; this.__animateOut = this.__animateOutVertical; break; case 'fade': this.__animateIn = this.__animateInFade; this.__animateOut = this.__animateOutFade; break; default: this.__animateIn = this.__animateInNo; this.__animateOut = this.__animateOutNo; break; } }, __animateIn: function ($slide, reversed, end) { }, __animateOut: function ($slide, reversed, end) { }, __animateInNo: function ($slide, reversed, end) { if (end) end(); return ssAnimationManager.getAnimation('nostatic', $slide, {}); }, __animateOutNo: function ($slide, reversed, end) { if (end) end(); return ssAnimationManager.getAnimation('nostatic', $slide, {}); }, __animateInHorizontal: function ($slide, reversed, end) { var option = this._animationOptions.next; return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestaticlefttoright' : 'slidestaticrighttoleft', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalIn: option.duration, easingIn: option.easing, delayIn: option.delay, parallaxIn: option.parallax * this.extraParallax, target: {}, endFn: function () { if (end) end(); } }); }, __animateOutHorizontal: function ($slide, reversed, end) { var _this = this, option = this._animationOptions.current, target = option.parallax < 1 ? {width: this.smartsliderborder2.width() * option.parallax} : {}; return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestaticlefttoright' : 'slidestaticrighttoleft', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalOut: option.duration, easingOut: option.easing, delayOut: option.delay, parallaxOut: option.parallax * this.extraParallax, target: target, endFn: function () { $slide.width(_this.smartsliderborder2.width()); if (end) end(); } }); }, __animateInVertical: function ($slide, reversed, end) { var option = this._animationOptions.next; return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestatictoptobottom' : 'slidestaticbottomtotop', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalIn: option.duration, easingIn: option.easing, delayIn: option.delay, parallaxIn: option.parallax * this.extraParallax, target: {}, endFn: function () { if (end) end(); } }); }, __animateOutVertical: function ($slide, reversed, end) { var _this = this, option = this._animationOptions.current, target = option.parallax < 1 ? {height: this.smartsliderborder2.height() * option.parallax} : {}; return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestatictoptobottom' : 'slidestaticbottomtotop', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalOut: option.duration, easingOut: option.easing, delayOut: option.delay, parallaxOut: option.parallax * this.extraParallax, target: target, endFn: function () { $slide.height(_this.smartsliderborder2.height()); if (end) end(); } }); }, __animateInFade: function ($slide, reversed, end) { var option = this._animationOptions.next; return ssAnimationManager.getAnimation('fadestatic', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalIn: option.duration, easingIn: option.easing, delayIn: option.delay, parallaxIn: option.parallax * this.extraParallax, endFn: function () { if (end) end(); } }); }, __animateOutFade: function ($slide, reversed, end) { var option = this._animationOptions.current; return ssAnimationManager.getAnimation('fadestatic', $slide, { width: this.slideDimension.w, height: this.slideDimension.h, intervalOut: option.duration, easingOut: option.easing, delayOut: option.delay, parallaxOut: option.parallax * this.extraParallax, endFn: function () { if (end) end(); } }); }, initTouch: function () { if((this.options.touchanimation != 'horizontal' && this.options.touchanimation != 'vertical') || (typeof jQuery != 'undefined' && typeof jQuery.UIkit != 'undefined')){ this._super(); return; } var _this = this; var mode = this.options.touchanimation, reset = []; this.$slider.find('> div').eq(0).swipe({ tap: function(event, target) { var act = _this.slideList.eq(_this._active).trigger('click'); if(typeof act.attr("onclick") != undefined){ event.preventDefault(); event.stopPropagation(); } }, swipe: function (event, direction, distance, duration, fingerCount) { if(_this._animating) return; if(_this.options.touchanimation == 'horizontal'){ _this.__animateHorizontalTouch(direction); }else if(_this.options.touchanimation == 'vertical'){ _this.__animateVerticalTouch(direction); } }, swipeStatus:function(event, phase, direction, distance, duration, fingers){ if(_this._animating) return; var active = _this._active, next = null; if(_this.options.touchanimation == 'horizontal'){ if(direction == 'left'){ next = active + 1; if (next === _this.slideList.length) next = 0; _this.slideList.eq(active).css('left', -distance); _this.slideList.eq(next).css('left', _this.slideDimension.w-distance)/*.css('display', 'block')*/; }else if(direction == 'right'){ next = active - 1; if (next < 0) next = _this.slideList.length - 1; _this.slideList.eq(active).css('left', distance); _this.slideList.eq(next).css('left', -_this.slideDimension.w+distance)/*.css('display', 'block')*/; } if(phase=="end"){ reset = []; if(distance < 75){ _this.slideList.eq(active).css('left', 0); if(next !== null) _this.slideList.eq(next).css('left', '-1000%'); } } }else if(_this.options.touchanimation == 'vertical'){ if(direction == 'up'){ next = active + 1; if (next === _this.slideList.length) next = 0; _this.slideList.eq(active).css('top', -distance); _this.slideList.eq(next).css('top', _this.slideDimension.h-distance).css('left', '0')/*.css('display', 'block')*/; }else if(direction == 'down'){ next = active - 1; if (next < 0) next = _this.slideList.length - 1; _this.slideList.eq(active).css('top', distance); _this.slideList.eq(next).css('top', -_this.slideDimension.h+distance).css('left', '0')/*.css('display', 'block')*/; } if(phase=="end"){ reset = []; if(distance < 75){ _this.slideList.eq(active).css('top', 0); if(next !== null) _this.slideList.eq(next).css('left', '-1000%')/*.css('display', 'none')*/; } } } if(next !== null && typeof reset[next] == 'undefined'){ _this.slideList.eq(next).trigger('ssanimatelayerssetinstart'); reset[next] = true; } }, fallbackToMouseEvents: false, allowPageScroll: (_this.options.touchanimation == 'horizontal' ? 'vertical' : 'horizontal') }); if(typeof window.MSGesture !== 'undefined'){ var gesture = new MSGesture(), el = this.$slider.find('> div').get(0), start = { x: 0, y: 0 }; gesture.target = el; if (mode == 'horizontal') { el.style['-ms-touch-action'] = 'pan-x'; el.style['-ms-scroll-chaining'] = 'none'; el.style['touch-action'] = 'pan-x'; el.style['scroll-chaining'] = 'none'; } else if (mode == 'vertical') { el.style['-ms-touch-action'] = 'pan-y'; el.style['-ms-scroll-chaining'] = 'none'; el.style['touch-action'] = 'pan-y'; el.style['scroll-chaining'] = 'none'; } var eventType = ''; if (window.navigator.pointerEnabled) { eventType = "pointerdown"; } else if (window.navigator.msPointerEnabled) { eventType = "MSPointerDown"; } if(eventType){ el.addEventListener(eventType, function (evt) { gesture.addPointer(evt.pointerId); }); } var hOffset = 10, vOffset = 10; el.addEventListener("MSGestureStart", function(e){ start.x = e.offsetX; start.y = e.offsetY; }); el.addEventListener("MSGestureEnd", function(e){ var zoom = document.documentElement.clientWidth / window.innerWidth; if (mode == 'horizontal') { if (start.x-hOffset >= e.offsetX) { _this.next(); } else if (start.x+hOffset <= e.offsetX) { _this.previous(); } } else if (mode == 'vertical') { if (start.y-vOffset >= e.offsetY) { _this.next(); } else if (start.y+vOffset <= e.offsetY) { _this.previous(); } } }); } }, __animateHorizontalTouch: function(direction){ var target = {left: 0}, active = this._active, i = null; if(direction == 'left'){ i = active + 1; if (i === this.slideList.length) i = 0; target = {left: -this.slideDimension.w}; this.__animateTouch(i, active, 'left', target, {left: 0}); }else if(direction == 'right'){ i = active - 1; if (i < 0) i = this.slideList.length - 1; target = {left: this.slideDimension.w}; this.__animateTouch(i, active, 'left', target, {left: 0}); } }, __animateVerticalTouch: function(direction){ var target = 0, active = this._active, i = null; if(direction == 'up'){ i = active + 1; if (i === this.slideList.length) i = 0; target = {top: -this.slideDimension.h}; this.__animateTouch(i, active, 'top', target, {top: 0}); }else if(direction == 'down'){ i = active - 1; if (i < 0) i = this.slideList.length - 1; target = {top: this.slideDimension.h}; this.__animateTouch(i, active, 'top', target, {top: 0}); } }, __animateTouch: function(i, lastActive, prop, target, targetActive){ if (!this.options.syncAnimations) { if (this._lastActive != i) this.slideList.eq(this._lastActive).trigger('ssanimatestop'); this.slideList.eq(this._active).trigger('ssanimatestop'); } var _this = this; this.pauseAutoPlay(true); this._animating = true; this.changeBullet(i); if (this.options.syncAnimations) _this._runningAnimations++; this._nextActive = i; this.changeBullet(i); $(this).trigger('mainanimationstart'); this._active = i; this._lastActive = lastActive; this._runningAnimations++; if (this.options.flux[0]) this.flux.showImage(i); this.slideList.eq(lastActive).animate(target,{ duration: 300, complete: function(){ $(this).css(prop, 0).css('left', '-1000%'); _this.$this.trigger('mainanimationoutend'); _this.mainanimationended(); } }).trigger('ssanimatelayersout'); this.slideList.eq(i).animate(targetActive,{ duration: 300, complete: function(){ $(this).trigger('ssanimatelayersin'); _this.$this.trigger('mainanimationinend'); _this.mainanimationended(); } }); }, randomize: function(){ var sl = this.$slider.find('.smart-slider-canvas'), flux = this.$slider.find('.nextend-flux'), fluximg = flux.find('img'); var p = sl.parent(); if(fluximg.length > 0){ sl.each(function(i){ this._flux = fluximg[i]; }); } sl = this.shuffle(sl); sl.each(function(){ p.append(this); flux.append(this._flux); }); sl.filter('.'+this._parent.slideActive).removeClass(this._parent.slideActive); sl.eq(0).addClass(this._parent.slideActive); } }); })(njQuery, window);/*! jQuery UI - v1.10.2 - 2013-03-14 * http://jqueryui.com * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ (function(e){function t(e){return parseInt(e,10)||0}function i(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("
"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,a,o=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=t(this.helper.css("left")),n=t(this.helper.css("top")),o.containment&&(s+=e(o.containment).scrollLeft()||0,n+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(t){var i,s=this.helper,n={},a=this.originalMousePosition,o=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,u=this.size.height,c=t.pageX-a.left||0,d=t.pageY-a.top||0,p=this._change[o];return p?(i=p.apply(this,[t,c,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==u&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(n)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&e.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,n,a,o,r=this.options;o={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||e)&&(t=o.minHeight*this.aspectRatio,n=o.minWidth/this.aspectRatio,s=o.maxHeight*this.aspectRatio,a=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),n>o.minHeight&&(o.minHeight=n),o.maxWidth>s&&(o.maxWidth=s),o.maxHeight>a&&(o.maxHeight=a)),this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,s=this.size,n=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===n&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"===n&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,s=this.axis,n=i(e.width)&&t.maxWidth&&t.maxWidthe.width,r=i(e.height)&&t.minHeight&&t.minHeight>e.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return o&&(e.width=t.minWidth),r&&(e.height=t.minHeight),n&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),o&&u&&(e.left=h-t.minWidth),n&&u&&(e.left=h-t.maxWidth),r&&c&&(e.top=l-t.minHeight),a&&c&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,i,s,n,a=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(n=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],t=0;i.length>t;t++)this.borderDif[t]=(parseInt(i[t],10)||0)+(parseInt(s[t],10)||0);n.css({height:a.height()-this.borderDif[0]-this.borderDif[2]||0,width:a.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("
"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&e.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,a,o,r,h,l=e(this).data("ui-resizable"),u=l.options,c=l.element,d=u.containment,p=d instanceof e?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(i=e(p),s=[],e(["Top","Right","Left","Bottom"]).each(function(e,n){s[e]=t(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,a=l.containerSize.height,o=l.containerSize.width,r=e.ui.hasScroll(p,"left")?p.scrollWidth:o,h=e.ui.hasScroll(p)?p.scrollHeight:a,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(t){var i,s,n,a,o=e(this).data("ui-resizable"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,c={top:0,left:0},d=o.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-c.left),u&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?h.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),s=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-h.top)+o.sizeDiff.height),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a&&(i-=o.parentData.left),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("ui-resizable"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),i=t.options,s=t.size,n=t.originalSize,a=t.originalPosition,o=t.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,u=Math.round((s.width-n.width)/h)*h,c=Math.round((s.height-n.height)/l)*l,d=n.width+u,p=n.height+c,f=i.maxWidth&&d>i.maxWidth,m=i.maxHeight&&p>i.maxHeight,g=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,g&&(d+=h),v&&(p+=l),f&&(d-=h),m&&(p-=l),/^(se|s|e)$/.test(o)?(t.size.width=d,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.top=a.top-c):/^(sw)$/.test(o)?(t.size.width=d,t.size.height=p,t.position.left=a.left-u):(t.size.width=d,t.size.height=p,t.position.top=a.top-c,t.position.left=a.left-u)}})})(njQuery);/*! * jQuery UI Draggable 1.10.2 * http://jqueryui.com * * Copyright 2013 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/draggable/ * * Depends: * jquery.ui.core.js * jquery.ui.mouse.js * jquery.ui.widget.js */ (function( $, undefined ) { $.widget("ui.draggable", $.ui.mouse, { version: "1.10.2", widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, // callbacks drag: null, start: null, stop: null }, _create: function() { if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) { this.element[0].style.position = "relative"; } if (this.options.addClasses){ this.element.addClass("ui-draggable"); } if (this.options.disabled){ this.element.addClass("ui-draggable-disabled"); } this._mouseInit(); }, _destroy: function() { this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); this._mouseDestroy(); }, _mouseCapture: function(event) { var o = this.options; // among others, prevent a drag on a resizable-handle if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { return false; } //Quit if we're not on a valid handle this.handle = this._getHandle(event); if (!this.handle) { return false; } $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { $("
") .css({ width: this.offsetWidth+"px", height: this.offsetHeight+"px", position: "absolute", opacity: "0.001", zIndex: 1000 }) .css($(this).offset()) .appendTo("body"); }); return true; }, _mouseStart: function(event) { var o = this.options; //Create and append the visible helper this.helper = this._createHelper(event); this.helper.addClass("ui-draggable-dragging"); //Cache the helper size this._cacheHelperProportions(); //If ddmanager is used for droppables, set the global draggable if($.ui.ddmanager) { $.ui.ddmanager.current = this; } /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //Store the helper's css position this.cssPosition = this.helper.css("position"); this.scrollParent = this.helper.scrollParent(); //The element's absolute position on the page minus margins this.offset = this.positionAbs = this.element.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: { //Where the click happened, relative to the element left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper }); //Generate the original position this.originalPosition = this.position = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); //Set a containment if given in the options if(o.containment) { this._setContainment(); } //Trigger event + callbacks if(this._trigger("start", event) === false) { this._clear(); return false; } //Recache the helper size this._cacheHelperProportions(); //Prepare the droppable offsets if ($.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) if ( $.ui.ddmanager ) { $.ui.ddmanager.dragStart(this, event); } return true; }, _mouseDrag: function(event, noPropagation) { //Compute the helpers position this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); //Call plugins and callbacks and use the resulting position if something is returned if (!noPropagation) { var ui = this._uiHash(); if(this._trigger("drag", event, ui) === false) { this._mouseUp({}); return false; } this.position = ui.position; } if(!this.options.axis || this.options.axis !== "y") { this.helper[0].style.left = this.position.left+"px"; } if(!this.options.axis || this.options.axis !== "x") { this.helper[0].style.top = this.position.top+"px"; } if($.ui.ddmanager) { $.ui.ddmanager.drag(this, event); } return false; }, _mouseStop: function(event) { //If we are using droppables, inform the manager about the drop var element, that = this, elementInDom = false, dropped = false; if ($.ui.ddmanager && !this.options.dropBehaviour) { dropped = $.ui.ddmanager.drop(this, event); } //if a drop comes from outside (a sortable) if(this.dropped) { dropped = this.dropped; this.dropped = false; } //if the original element is no longer in the DOM don't bother to continue (see #8269) element = this.element[0]; while ( element && (element = element.parentNode) ) { if (element === document ) { elementInDom = true; } } if ( !elementInDom && this.options.helper === "original" ) { return false; } if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { if(that._trigger("stop", event) !== false) { that._clear(); } }); } else { if(this._trigger("stop", event) !== false) { this._clear(); } } return false; }, _mouseUp: function(event) { //Remove frame helpers $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) if( $.ui.ddmanager ) { $.ui.ddmanager.dragStop(this, event); } return $.ui.mouse.prototype._mouseUp.call(this, event); }, cancel: function() { if(this.helper.is(".ui-draggable-dragging")) { this._mouseUp({}); } else { this._clear(); } return this; }, _getHandle: function(event) { return this.options.handle ? !!$( event.target ).closest( this.element.find( this.options.handle ) ).length : true; }, _createHelper: function(event) { var o = this.options, helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element); if(!helper.parents("body").length) { helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); } if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) { helper.css("position", "absolute"); } return helper; }, _adjustOffsetFromHelper: function(obj) { if (typeof obj === "string") { obj = obj.split(" "); } if ($.isArray(obj)) { obj = {left: +obj[0], top: +obj[1] || 0}; } if ("left" in obj) { this.offset.click.left = obj.left + this.margins.left; } if ("right" in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ("top" in obj) { this.offset.click.top = obj.top + this.margins.top; } if ("bottom" in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _getParentOffset: function() { //Get the offsetParent and cache its position this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); // This is a special case where we need to modify a offset calculated on start, since the following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } //This needs to be actually done for all browsers, since pageX/pageY includes this information //Ugly IE fix if((this.offsetParent[0] === document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { po = { top: 0, left: 0 }; } return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) }; }, _getRelativeOffset: function() { if(this.cssPosition === "relative") { var p = this.element.position(); return { top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() }; } else { return { top: 0, left: 0 }; } }, _cacheMargins: function() { this.margins = { left: (parseInt(this.element.css("marginLeft"),10) || 0), top: (parseInt(this.element.css("marginTop"),10) || 0), right: (parseInt(this.element.css("marginRight"),10) || 0), bottom: (parseInt(this.element.css("marginBottom"),10) || 0) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var over, c, ce, o = this.options; if(o.containment === "parent") { o.containment = this.helper[0].parentNode; } if(o.containment === "document" || o.containment === "window") { this.containment = [ o.containment === "document" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, o.containment === "document" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (o.containment === "document" ? 0 : $(window).scrollLeft()) + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, (o.containment === "document" ? 0 : $(window).scrollTop()) + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; } if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) { c = $(o.containment); ce = c[0]; if(!ce) { return; } over = ($(ce).css("overflow") !== "hidden"); this.containment = [ (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), (over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderRightWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderBottomWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; this.relative_container = c; } else if(o.containment.constructor === Array) { this.containment = o.containment; } }, _convertPositionTo: function(d, pos) { if(!pos) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); return { top: ( pos.top + // The absolute mouse position this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) ), left: ( pos.left + // The absolute mouse position this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) ) }; }, _generatePosition: function(event) { var containment, co, top, left, o = this.options, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName), pageX = event.pageX, pageY = event.pageY; /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ if(this.originalPosition) { //If we are not dragging yet, we won't check for options if(this.containment) { if (this.relative_container){ co = this.relative_container.offset(); containment = [ this.containment[0] + co.left, this.containment[1] + co.top, this.containment[2] + co.left, this.containment[3] + co.top ]; } else { containment = this.containment; } if(event.pageX - this.offset.click.left < containment[0]) { pageX = containment[0] + this.offset.click.left; } if(event.pageY - this.offset.click.top < containment[1]) { pageY = containment[1] + this.offset.click.top; } if(event.pageX - this.offset.click.left > containment[2]) { pageX = containment[2] + this.offset.click.left; } if(event.pageY - this.offset.click.top > containment[3]) { pageY = containment[3] + this.offset.click.top; } } if(o.grid) { //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; } } return { top: ( pageY - // The absolute mouse position this.offset.click.top - // Click offset (relative to the element) this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top + // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) ), left: ( pageX - // The absolute mouse position this.offset.click.left - // Click offset (relative to the element) this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left + // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) ) }; }, _clear: function() { this.helper.removeClass("ui-draggable-dragging"); if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { this.helper.remove(); } this.helper = null; this.cancelHelperRemoval = false; }, // From now on bulk stuff - mainly helpers _trigger: function(type, event, ui) { ui = ui || this._uiHash(); $.ui.plugin.call(this, type, [event, ui]); //The absolute position has to be recalculated after plugins if(type === "drag") { this.positionAbs = this._convertPositionTo("absolute"); } return $.Widget.prototype._trigger.call(this, type, event, ui); }, plugins: {}, _uiHash: function() { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs }; } }); $.ui.plugin.add("draggable", "connectToSortable", { start: function(event, ui) { var inst = $(this).data("ui-draggable"), o = inst.options, uiSortable = $.extend({}, ui, { item: inst.element }); inst.sortables = []; $(o.connectToSortable).each(function() { var sortable = $.data(this, "ui-sortable"); if (sortable && !sortable.options.disabled) { inst.sortables.push({ instance: sortable, shouldRevert: sortable.options.revert }); sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page). sortable._trigger("activate", event, uiSortable); } }); }, stop: function(event, ui) { //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper var inst = $(this).data("ui-draggable"), uiSortable = $.extend({}, ui, { item: inst.element }); $.each(inst.sortables, function() { if(this.instance.isOver) { this.instance.isOver = 0; inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work) //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid" if(this.shouldRevert) { this.instance.options.revert = this.shouldRevert; } //Trigger the stop of the sortable this.instance._mouseStop(event); this.instance.options.helper = this.instance.options._helper; //If the helper has been the original item, restore properties in the sortable if(inst.options.helper === "original") { this.instance.currentItem.css({ top: "auto", left: "auto" }); } } else { this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance this.instance._trigger("deactivate", event, uiSortable); } }); }, drag: function(event, ui) { var inst = $(this).data("ui-draggable"), that = this; $.each(inst.sortables, function() { var innermostIntersecting = false, thisSortable = this; //Copy over some variables to allow calling the sortable's native _intersectsWith this.instance.positionAbs = inst.positionAbs; this.instance.helperProportions = inst.helperProportions; this.instance.offset.click = inst.offset.click; if(this.instance._intersectsWith(this.instance.containerCache)) { innermostIntersecting = true; $.each(inst.sortables, function () { this.instance.positionAbs = inst.positionAbs; this.instance.helperProportions = inst.helperProportions; this.instance.offset.click = inst.offset.click; if (this !== thisSortable && this.instance._intersectsWith(this.instance.containerCache) && $.contains(thisSortable.instance.element[0], this.instance.element[0]) ) { innermostIntersecting = false; } return innermostIntersecting; }); } if(innermostIntersecting) { //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once if(!this.instance.isOver) { this.instance.isOver = 1; //Now we fake the start of dragging for the sortable instance, //by cloning the list group item, appending it to the sortable and using it as inst.currentItem //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true); this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it this.instance.options.helper = function() { return ui.helper[0]; }; event.target = this.instance.currentItem[0]; this.instance._mouseCapture(event, true); this.instance._mouseStart(event, true, true); //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes this.instance.offset.click.top = inst.offset.click.top; this.instance.offset.click.left = inst.offset.click.left; this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; inst._trigger("toSortable", event); inst.dropped = this.instance.element; //draggable revert needs that //hack so receive/update callbacks work (mostly) inst.currentItem = inst.element; this.instance.fromOutside = inst; } //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable if(this.instance.currentItem) { this.instance._mouseDrag(event); } } else { //If it doesn't intersect with the sortable, and it intersected before, //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval if(this.instance.isOver) { this.instance.isOver = 0; this.instance.cancelHelperRemoval = true; //Prevent reverting on this forced stop this.instance.options.revert = false; // The out event needs to be triggered independently this.instance._trigger("out", event, this.instance._uiHash(this.instance)); this.instance._mouseStop(event, true); this.instance.options.helper = this.instance.options._helper; //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size this.instance.currentItem.remove(); if(this.instance.placeholder) { this.instance.placeholder.remove(); } inst._trigger("fromSortable", event); inst.dropped = false; //draggable revert needs that } } }); } }); $.ui.plugin.add("draggable", "cursor", { start: function() { var t = $("body"), o = $(this).data("ui-draggable").options; if (t.css("cursor")) { o._cursor = t.css("cursor"); } t.css("cursor", o.cursor); }, stop: function() { var o = $(this).data("ui-draggable").options; if (o._cursor) { $("body").css("cursor", o._cursor); } } }); $.ui.plugin.add("draggable", "opacity", { start: function(event, ui) { var t = $(ui.helper), o = $(this).data("ui-draggable").options; if(t.css("opacity")) { o._opacity = t.css("opacity"); } t.css("opacity", o.opacity); }, stop: function(event, ui) { var o = $(this).data("ui-draggable").options; if(o._opacity) { $(ui.helper).css("opacity", o._opacity); } } }); $.ui.plugin.add("draggable", "scroll", { start: function() { var i = $(this).data("ui-draggable"); if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { i.overflowOffset = i.scrollParent.offset(); } }, drag: function( event ) { var i = $(this).data("ui-draggable"), o = i.options, scrolled = false; if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { if(!o.axis || o.axis !== "x") { if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; } else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) { i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; } } if(!o.axis || o.axis !== "y") { if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; } else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) { i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; } } } else { if(!o.axis || o.axis !== "x") { if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); } } if(!o.axis || o.axis !== "y") { if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); } } } if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(i, event); } } }); $.ui.plugin.add("draggable", "snap", { start: function() { var i = $(this).data("ui-draggable"), o = i.options; i.snapElements = []; $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { var $t = $(this), $o = $t.offset(); if(this !== i.element[0]) { i.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left }); } }); }, drag: function(event, ui) { var ts, bs, ls, rs, l, r, t, b, i, first, inst = $(this).data("ui-draggable"), o = inst.options, d = o.snapTolerance, x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; for (i = inst.snapElements.length - 1; i >= 0; i--){ l = inst.snapElements[i].left; r = l + inst.snapElements[i].width; t = inst.snapElements[i].top; b = t + inst.snapElements[i].height; //Yes, I know, this is insane ;) if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) { if(inst.snapElements[i].snapping) { (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping = false; continue; } if(o.snapMode !== "inner") { ts = Math.abs(t - y2) <= d; bs = Math.abs(b - y1) <= d; ls = Math.abs(l - x2) <= d; rs = Math.abs(r - x1) <= d; if(ts) { ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; } if(bs) { ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; } if(ls) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; } if(rs) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; } } first = (ts || bs || ls || rs); if(o.snapMode !== "outer") { ts = Math.abs(t - y1) <= d; bs = Math.abs(b - y2) <= d; ls = Math.abs(l - x1) <= d; rs = Math.abs(r - x2) <= d; if(ts) { ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; } if(bs) { ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; } if(ls) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; } if(rs) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; } } if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) { (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping = (ts || bs || ls || rs || first); } } }); $.ui.plugin.add("draggable", "stack", { start: function() { var min, o = this.data("ui-draggable").options, group = $.makeArray($(o.stack)).sort(function(a,b) { return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); }); if (!group.length) { return; } min = parseInt($(group[0]).css("zIndex"), 10) || 0; $(group).each(function(i) { $(this).css("zIndex", min + i); }); this.css("zIndex", (min + group.length)); } }); $.ui.plugin.add("draggable", "zIndex", { start: function(event, ui) { var t = $(ui.helper), o = $(this).data("ui-draggable").options; if(t.css("zIndex")) { o._zIndex = t.css("zIndex"); } t.css("zIndex", o.zIndex); }, stop: function(event, ui) { var o = $(this).data("ui-draggable").options; if(o._zIndex) { $(ui.helper).css("zIndex", o._zIndex); } } }); })(njQuery); /*! jQuery UI - v1.10.2 - 2013-03-14 * http://jqueryui.com * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ (function(e){function t(e,t,i){return e>t&&t+i>e}e.widget("ui.droppable",{version:"1.10.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=0,i=e.ui.ddmanager.droppables[this.options.scope];i.length>t;t++)i[t]===this&&i.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"===t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope===s.options.scope&&t.accept.call(t.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,i,s){if(!i.offset)return!1;var n,a,o=(e.positionAbs||e.position.absolute).left,r=o+e.helperProportions.width,h=(e.positionAbs||e.position.absolute).top,l=h+e.helperProportions.height,u=i.offset.left,c=u+i.proportions.width,d=i.offset.top,p=d+i.proportions.height;switch(s){case"fit":return o>=u&&c>=r&&h>=d&&p>=l;case"intersect":return o+e.helperProportions.width/2>u&&c>r-e.helperProportions.width/2&&h+e.helperProportions.height/2>d&&p>l-e.helperProportions.height/2;case"pointer":return n=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,a=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,t(a,d,i.proportions.height)&&t(n,u,i.proportions.width);case"touch":return(h>=d&&p>=h||l>=d&&p>=l||d>h&&l>p)&&(o>=u&&c>=o||r>=u&&c>=r||u>o&&r>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions.height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions={width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight})}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===n}),a.length&&(s=e.data(a[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(njQuery);/** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } };(function($, undefined) { function isOverAxis(x, reference, size) { return (x > reference) && (x < (reference + size)); } function isFloating(item) { return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); } $.widget("ui.nextendSortable", $.ui.sortable, { _create: function() { $.ui.sortable.prototype._create.apply(this, arguments); $.data(this.element[0], 'ui-sortable', this); }, _intersectsWith: function(item) { var pos = $.ui.sortable.prototype._intersectsWith.apply(this, arguments); return pos; }, _contactContainers: function(event) { var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, innermostContainer = null, innermostIndex = null; // get innermost container that intersects with item for (i = this.containers.length - 1; i >= 0; i--) { // never consider a container that's located within the item itself if ($.contains(this.currentItem[0], this.containers[i].element[0])) { continue; } if (this._intersectsWith(this.containers[i].containerCache)) { // if we've already found a container and it's more "inner" than this, then continue //if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { if (innermostContainer && parseInt(this.containers[i].element.css('zIndex')) < parseInt(innermostContainer.element.css('zIndex'))) { continue; } innermostContainer = this.containers[i]; innermostIndex = i; } else { // container doesn't intersect. trigger "out" event if necessary if (this.containers[i].containerCache.over) { this.containers[i]._trigger("out", event, this._uiHash(this)); this.containers[i].containerCache.over = 0; } } } // if no intersecting containers found, return if (!innermostContainer) { return; } if(typeof event.processed == 'undefined' && innermostContainer != window.dummySortable){ event.processed = true; }else{ innermostContainer = window.dummySortable; innermostIndex = this.containers.indexOf(innermostContainer); } // move the item into the container if it's not there already if (this.containers.length === 1) { if (!this.containers[innermostIndex].containerCache.over) { this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } } else { //When entering a new container, we will find the item with the least distance and append our item near it dist = 10000; itemWithLeastDistance = null; floating = innermostContainer.floating || isFloating(this.currentItem); posProperty = floating ? "left" : "top"; sizeProperty = floating ? "width" : "height"; base = this.positionAbs[posProperty] + this.offset.click[posProperty]; for (j = this.items.length - 1; j >= 0; j--) { if (!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { continue; } if (this.items[j].item[0] === this.currentItem[0]) { continue; } if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { continue; } cur = this.items[j].item.offset()[posProperty]; nearBottom = false; if (Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)) { nearBottom = true; cur += this.items[j][sizeProperty]; } if (Math.abs(cur - base) < dist) { dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; this.direction = nearBottom ? "up" : "down"; } } //Check if dropOnEmpty is enabled if (!itemWithLeastDistance && !this.options.dropOnEmpty) { return; } if (this.currentContainer === this.containers[innermostIndex]) { return; } itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); this._trigger("change", event, this._uiHash()); this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); this.currentContainer = this.containers[innermostIndex]; //Update the placeholder this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } } }); })(njQuery);; (function($, scope, undefined) { scope.ssadminConsoleClass = NClass.extend({ timeout: null, priority: 1, init: function(options) { this.c = options.console[0]; window[options.name] = this; }, set: function(msg, priority, timeout) { priority = typeof priority !== 'undefined' ? priority : 1; if (this.priority > priority) return false; this.priority = priority; timeout = typeof timeout !== 'undefined' ? timeout : 3000; if (this.timeout) clearTimeout(this.timeout); this.c.innerHTML = msg; if (timeout != 0) { var $this = this; this.timeout = setTimeout(function() { $this.c.innerHTML = ''; $this.priority = 1; }, timeout); } } }); $(document).ready(function() { new scope.ssadminConsoleClass({ 'console': $('.smartslider-slide-console'), name: 'slideconsole' }); }); })(njQuery, window);njQuery.fn.ssdata = function (key, value) { if (value === null) { this.removeAttr('data-' + key); return this; } else if (value === undefined) { return this.attr('data-' + key); } else { njQuery(this).data(key, value); this.attr('data-' + key, value); return this; } }; njQuery.fireEvent = function (el, eventName) { var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent(eventName, true, true); } else if (document.createEventObject) {// IE < 9 event = document.createEventObject(); event.eventType = eventName; } event.eventName = eventName; if (el.dispatchEvent) { el.dispatchEvent(event); } else if (el.fireEvent && htmlEvents['on' + eventName]) {// IE < 9 el.fireEvent('on' + event.eventType, event);// can trigger only real event (e.g. 'click') } else if (el[eventName]) { el[eventName](); } else if (el['on' + eventName]) { el['on' + eventName](); } }; window.ssadmin = 1; ; (function ($, scope, undefined) { window.SmartSliderAdminSlide = function (id, active, hidden, layouturl) { scope.adminSlide = new scope.ssadminSlideClass(id, active, hidden, layouturl); }; scope.ssadminSlideClass = NClass.extend({ ss: null, outplayed: false, init: function (id, active, hidden, layouturl) { var $this = this; var ie = this.isIE(); if(ie && ie < 10){ alert(window.ss2lang.The_editor_was_tested_under_Internet_Explorer_10_Firefox_and_Chrome_Please_use_one_of_the_tested_browser); } window.nextendtime = $.now(); window.nextendsave = false; this.hidden = $('#' + hidden); this.$slider = $('#' + id); this.$slide = this.$slider.find('.smart-slider-canvas').eq(active); this.editAndList(); this.ssadminLayers = scope.ssadminLayers = new ssadminLayersClass(this.$slide, this, layouturl); this.initBG(); $('#smartslider-form').submit(function () { if ($this.$slide[0].ssanimation === 0) { $('.smartslider-slide-advanced-layers').remove(); $this.hidden.val(Base64.encode($this.ssadminLayers.getHTML())); window.nextendsave = true; return true; } else { return false; } }); this.initTopbar(); }, isIE: function () { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; }, initBG: function(){ var $this = this, bgimage = this.$slider.find('.nextend-slide-bg'), canvas = this.$slider.find('.smart-slider-bg-colored'); $('#slidebackground').on('change', function(){ var s = this.value.split('|*|'); if(s[1] == ''){ bgimage.css('display', 'none'); }else{ bgimage.css('display', 'block'); bgimage.attr('src', nextendFixRelative($this.ssadminLayers.items.fillItemWithSample(s[1]))); } if(s[0].substr(6,8) == '00'){ canvas.css('background', ''); }else{ canvas.css('background', '#'+s[0].substr(0,6)); canvas.css('background', hex2rgba(s[0])); } }).trigger('change');; }, initTopbar: function () { var $this = this; this.playing = 0; this.playbtn = $('.smartslider-toolbar-play').on('click', function () { $this.switchPlay(); }); this.$slide.on('ssanimationsended', function () { setTimeout(function () { $this.playEnded(); }, 300); }); }, getSS: function () { if (this.ss === null) { this.ss = this.$slider.data('smartslider').slider.mainslider; } return this.ss; }, switchPlay: function () { var $this = this; if (!this.playing && this.$slide[0].ssanimation === 0) { this.playing = 1; slideconsole.set(window.ss2lang.Playing_in_animations_edit_and_save_disabled, 2, 0); this.playbtn.addClass('active'); var layers = this.$slide[0].layers; this.getSS().refreshMode(); layers/*.refresh()*/.setInStart().animateIn(); setTimeout(function () { $this.playEnded(); }, 300); } }, playOut: function () { var $this = this, layers = this.$slide[0].layers; this.outplayed = true; slideconsole.set(window.ss2lang.Playing_out_animations_edit_and_save_disabled, 2, 0); layers.animateOut(); setTimeout(function () { $this.playEnded(); }, 300); }, playEnded: function () { if (this.$slide[0].ssanimation === 0 && this.playbtn.hasClass('active')) { if (this.outplayed === false) { var $this = this; slideconsole.set(window.ss2lang.In_animations_ended_edit_and_save_disabled, 2); setTimeout(function () { $this.playOut(); }, 2000); } else { var layers = this.$slide[0].layers; this.getSS().refreshMode(); layers/*.refresh()*/.resetOut().resetIn(); this.outplayed = false; this.playbtn.removeClass('active'); slideconsole.set(window.ss2lang.Animations_ended_edit_and_save_enabled, 2); this.playing = 0; } } }, editAndList: function () { var $toolbox = $('#smartslider-slide-toolbox'), $list = $('.smartslider-toolbar-list'), $edit = $('.smartslider-toolbar-edit'), classes = ['smartslider-slide-toolbox-sliders-active', 'smartslider-slide-toolbox-slide-active'], extra = 0; if(typeof window.wp != 'undefined'){ extra = 28; } $edit.on('click', function () { $toolbox.addClass(classes[1]).removeClass(classes[0]); }); $list.on('click', function () { $toolbox.addClass(classes[0]).removeClass(classes[1]); }); this.switchToEdit = function () { $toolbox.addClass(classes[1]).removeClass(classes[0]); } var maxOffset = parseInt($('.smartslider-slide-console').siblings('h3').offset().top), minOffset = parseInt($toolbox.offset().top) scrollFn = function () { var st = $(this).scrollTop()+extra; if (st < minOffset) { $toolbox.css('marginTop', 0); } else if (st > maxOffset) { $toolbox.css('marginTop', maxOffset - minOffset); } else { $toolbox.css('marginTop', st - minOffset); } window.nextendsmartslidercolresize(); }; $(window).scroll(scrollFn); scrollFn(); } }); })(njQuery, window); function hex2rgba(hex) { var r = hexdec(hex.substr(0, 2)); var g = hexdec(hex.substr(2, 2)); var b = hexdec(hex.substr(4, 2)); var a = (intval(hexdec(hex.substr(6, 2)))) / 255; a = a.toFixed(3); var color = r + "," + g + "," + b + "," + a; return 'RGBA(' + color + ')'; } function hexdec(hex_string) { hex_string = (hex_string + '').replace(/[^a-f0-9]/gi, ''); return parseInt(hex_string, 16); } function intval(mixed_var, base) { var tmp; var type = typeof(mixed_var); if (type === 'boolean') { return +mixed_var; } else if (type === 'string') { tmp = parseInt(mixed_var, base || 10); return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp; } else if (type === 'number' && isFinite(mixed_var)) { return mixed_var | 0; } else { return 0; } }(function ($, scope, undefined) { scope.ssadminLayersClass = NClass.extend({ active: false, init: function (slide, slideobj, layouturl) { var $this = this; this.slide = slide; this.layercanvas = slide.find('> .smart-slider-canvas-inner'); if (this.layercanvas.length === 0) this.layercanvas = slide; this.parent = slideobj; this.slideSize = { width: slide.width(), height: slide.height() }; this.zindex = []; this.activeLayer = $({}); this.initToolbox(); this.views = $('.smartslider-slide-view'); this.toolboxviews = $('.smartslider-slide-toolbox-view'); this.layerClass = '.smart-slider-layer'; this.refreshLayers(); this.layouts = new ssadminLayoutsClass(this, layouturl); this.items = new ssadminItemsClass(this); this.sortableItems = '> .smart-slider-items, > .smart-slider-item-container'; this.makeDummyLayerSortable(); this.layers.each(function () { $this.makeLayerResizeable(this); $this.makeLayerDraggable(this); $this.makeLayerDeletable(this); $this.makeLayerZindexable(this); $this.makeLayerSortable(this); $this.formAddLayer(this); $this.items.initLayer(this); }); this.refreshSortableConnectWith(); this.views.eq(1).on('click', function () { $this.switchToLayerTab(); }); $('.smartslider-createlayer').on('click', function () { $this.createLayer(); slideconsole.set(window.ss2lang.Layer_created, 2); }); $('#smartslider-slide-toolbox-layer').on('mouseenter',function () { $('#smartslider-admin').addClass('smartslider-layer-highlight-active'); }).on('mouseleave', function () { $('#smartslider-admin').removeClass('smartslider-layer-highlight-active'); }); if (this.getParameterByName('action') == 'create') { this.layouts.switchToLayoutTab(); } else { this.switchToLayerTab(); } this.enableLayerMode(); this.items.enableItemMode(); this.initAdvancedView(); this.initDeviceView(); window.getSlide = function(){ return $this.getHTML.call($this); }; }, getParameterByName: function (name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }, switchToLayerTab: function () { this.views.removeClass('active'); this.views.eq(1).addClass('active'); this.toolboxviews.removeClass('active'); this.toolboxviews.eq(1).addClass('active'); this.toolboxviews.parent().css((window.nextendDir == 'rtl' ? 'marginRight' : 'marginLeft'), '-100%'); this.parent.switchToEdit(); $('#smartslider-admin').removeClass('smartslider-item-mode-active'); $('#smartslider-admin').addClass('smartslider-layer-mode-active'); $(window).trigger('resize'); }, enableLayerMode: function () { if (this.active === true) return; this.active = true; this.layerModeChanged(); }, disableLayerMode: function () { if (this.active === false) return; this.active = false; this.layerModeChanged(); }, layerModeChanged: function () { var $this = this; this.layers.each(function () { if ($this.active) { $(this).draggable("enable"); } else { $(this).draggable("disable"); } }); if (this.active) { this.slide.addClass('smartslider-layer-mode'); } else { this.slide.removeClass('smartslider-layer-mode'); if (this.leaveborder) { this.slide.addClass('smartslider-layer-border-mode'); this.leaveborder = false; } } }, createLayer: function () { var $layer = $('
'), layer = $layer[0]; this.layercanvas.append($layer); this.makeLayerResizeable(layer); this.makeLayerDraggable(layer); this.makeLayerDeletable(layer); this.makeLayerZindexable(layer); this.makeLayerSortable(layer); this.refreshLayers(); this.formAddLayer(layer); this.items.refreshSortableConnect(); this.refreshSortableConnectWith(); this.switchToLayerTab(); this.setActiveLayer($(layer)); var desktop = tablet = phone = 1; switch(this.adminmode){ case 'desktop': tablet = phone = 0; break; case 'tablet': desktop = phone = 0; break; case 'phone': desktop = tablet = 0; break; }; this.form.showfield.val(desktop+'|*|'+tablet+'|*|'+phone); $.fireEvent(this.form.showfield[0], 'change'); }, addLayer: function (node) { var $layer = $(node).clone(), layer = $layer[0]; $layer.find('[class^=ui-]').remove(); $layer.find('.active').removeClass('active'); $layer.find('.ui-resizable').removeClass('ui-resizable'); $layer.find('.ui-draggable').removeClass('ui-draggable'); $layer.find('.ui-sortable').removeClass('ui-sortable'); this.layercanvas.append($layer); this.makeLayerResizeable(layer); this.makeLayerDraggable(layer); this.makeLayerDeletable(layer); this.makeLayerZindexable(layer); this.makeLayerSortable(layer); this.refreshLayers(); this.formAddLayer(layer); this.items.initLayer(layer); this.items.refreshSortableConnect(); this.refreshSortableConnectWith(); return $layer; }, refreshLayers: function () { this.layers = this.slide.find(this.layerClass); }, makeLayerResizeable: function (layer) { var $this = this, $layer = $(layer); $layer.resizable({ /*disabled: !this.active,*/ handles: 'n, e, s, w, ne, se, sw, nw', containment: this.layercanvas, start: function (event, ui) { $('#smartslider-admin').addClass('smartslider-layer-highlight-active-2'); $layer.data('width', $this.covertPxToPercent('width', ui.originalSize.width, $this.slideSize.width) + '%'); $layer.data('height', $this.covertPxToPercent('height', ui.originalSize.height, $this.slideSize.height) + '%'); $layer.data('left', $this.covertPxToPercent('left', ui.originalPosition.left, $this.slideSize.width) + '%'); $layer.data('top', $this.covertPxToPercent('top', ui.originalPosition.top, $this.slideSize.height) + '%'); }, stop: function () { $('#smartslider-admin').removeClass('smartslider-layer-highlight-active-2'); $this.makeLayerToPercent(this, true, true); } }); $layer.find('> .ui-resizable-handle').on('mouseenter',function () { slideconsole.set(window.ss2lang.Resize_layer_drag, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeLayerDeletable: function (layer) { var $this = this; var removeLayer = $('
'); $(layer).append(removeLayer); removeLayer.on('click',function () { if($this.adminmode == 'all'){ $this.deleteLayer(layer); slideconsole.set(window.ss2lang.Layer_deleted, 2); }else{ $this.setActiveLayer($(layer)); var desktop = $this.activeLayer.ssdata('showdesktop'); if(typeof desktop == 'undefined') desktop = 1; var tablet = $this.activeLayer.ssdata('showtablet'); if(typeof tablet == 'undefined') tablet = 1; var phone = $this.activeLayer.ssdata('showphone'); if(typeof phone == 'undefined') phone = 1; switch($this.adminmode){ case 'desktop': desktop = 0; break; case 'tablet': tablet = 0; break; case 'phone': phone = 0; break; } $this.form.showfield.val(desktop+'|*|'+tablet+'|*|'+phone); $.fireEvent($this.form.showfield[0], 'change'); slideconsole.set(window.ss2lang.Layer_hidden_for_this_device_type, 2); } }).on('mouseenter',function () { if($this.adminmode == 'all'){ slideconsole.set(window.ss2lang.Delete_layer_click, 1, 0); } else { slideconsole.set(window.ss2lang.Hide_layer_click, 1, 0); } }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeLayerZindexable: function (layer) { var $this = this, $layer = $(layer), forward = $('
'), backward = $('
'), $zindex = $('
'); var i = parseInt($layer.css('zIndex')); if (!i) { i = this.zindex.length > 0 ? this.zindex.length : 1; } while (this.zindex[i]) { i++; } this.zindex[i] = $layer; $layer.css('zIndex', i); $layer.data('sszIndex', $zindex); $zindex.html(i); $layer.append(forward) .append($zindex) .append(backward); forward.on('click',function () { var i1 = parseInt($layer.css('zIndex')), i2 = i1 + 1, tmp = undefined; if ($this.zindex[i2]) { tmp = $this.zindex[i2]; tmp.css('zIndex', i1); tmp.data('sszIndex').html(i1); } $this.zindex[i2] = $layer; $this.zindex[i1] = tmp; $layer.css('zIndex', i2); $zindex.html(i2); //$this.layers.removeClass('smart-slider-main-layer'); //$($this.zindex[1]).addClass('smart-slider-main-layer'); }).on('mouseenter',function () { $this.slide.addClass('smart-slider-showzindex'); }).on('mouseleave', function () { $this.slide.removeClass('smart-slider-showzindex'); }); backward.on('click',function () { var i1 = parseInt($layer.css('zIndex')), i2 = i1 - 1, tmp = undefined; if (i2 < 1) return; if ($this.zindex[i2]) { tmp = $this.zindex[i2]; tmp.css('zIndex', i1); tmp.data('sszIndex').html(i1); } $this.zindex[i2] = $layer; $this.zindex[i1] = tmp; $layer.css('zIndex', i2); $zindex.html(i2); //$this.layers.removeClass('smart-slider-main-layer'); //$($this.zindex[1]).addClass('smart-slider-main-layer'); }).on('mouseenter',function () { $this.slide.addClass('smart-slider-showzindex'); }).on('mouseleave', function () { $this.slide.removeClass('smart-slider-showzindex'); }); $zindex.on('mouseenter',function () { $this.slide.addClass('smart-slider-showzindex'); }).on('mouseleave', function () { $this.slide.removeClass('smart-slider-showzindex'); }); forward.on('mouseenter',function () { slideconsole.set(window.ss2lang.Increment_z_index_click, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); backward.on('mouseenter',function () { slideconsole.set(window.ss2lang.Decrement_z_index_click, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); $zindex.on('mouseenter',function () { slideconsole.set(window.ss2lang.Current_z_index, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeLayerDraggable: function (layer) { var $this = this, $layer = $(layer), handle = $('
'); if(typeof $layer.data('desktopleft') == 'undefined') $layer.ssdata('desktopleft', layer.style.left); if(typeof $layer.data('desktoptop') == 'undefined') $layer.ssdata('desktoptop', layer.style.top); $layer.draggable({ disabled: !this.active, containment: this.layercanvas, create: function () { $(this).append(handle); }, start: function (event, ui) { $('#smartslider-admin').addClass('smartslider-layer-highlight-active-2'); var pos = ui.helper.position(); $layer.data('left', $this.covertPxToPercent('left', pos.left, $this.slideSize.width) + '%'); $layer.data('top', $this.covertPxToPercent('top', pos.top, $this.slideSize.height) + '%'); }, stop: function () { $('#smartslider-admin').removeClass('smartslider-layer-highlight-active-2'); $this.makeLayerToPercent(this, true); }, handle: '.ui-movable-handle' }); handle.on('mouseenter',function () { slideconsole.set(window.ss2lang.Move_layer_drag, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeLayerToPercent: function (layer, position, size) { var $layer = $(layer); if (position) { this.setPositionField(layer, 'left', this.covertPxToPercent('left', $layer.css('left'), this.slideSize.width) + '%'); this.setPositionField(layer, 'top', this.covertPxToPercent('top', $layer.css('top'), this.slideSize.height) + '%'); //$layer.css('left', (parseFloat($layer.css('left')) / this.slideSize.width * 100).toFixed(3) + '%'); //$layer.css('top', (parseFloat($layer.css('top')) / this.slideSize.height * 100).toFixed(3) + '%'); } if (size) { this.setPositionField(layer, 'width', this.covertPxToPercent('width', $layer.width(), this.slideSize.width) + '%'); this.setPositionField(layer, 'height', this.covertPxToPercent('height', $layer.height(), this.slideSize.height) + '%'); //$layer.width(Math.ceil(1000 * $layer.width() / this.slideSize.width * 100) / 1000 + '%'); //$layer.height(Math.ceil(1000 * $layer.height() / this.slideSize.height * 100) / 1000 + '%'); } this.updatePositionField(layer); }, covertPxToPercent: function(prop, size, parentsize){ if(prop == 'left' || prop == 'top'){ return (parseFloat(size) / parentsize * 100).toFixed(3); }else if(prop == 'width' || prop == 'height'){ return Math.ceil(1000 * size / parentsize * 100) / 1000; } }, makeLayerSortable: function (layer) { var $this = this; $(layer).nextendSortable({ disabled: !this.items.active, items: this.sortableItems, zIndex: 120000, helper: "clone", placeholder: "sortable-placeholder", forcePlaceholderSize: true, tolerance: "pointer", appendTo: this.layercanvas, handle: '.ui-movableitem-handle', update: function (event, ui) { $this.items.updateItem(ui); }, start: function () { $this.slide.addClass('smartslider-layer-border-mode'); slideconsole.set(window.ss2lang.Drop_the_item_into_a_layer, 2, 0); }, stop: function () { $this.slide.removeClass('smartslider-layer-border-mode'); slideconsole.set(window.ss2lang.Item_dropped_into_the_layer, 2); } }); }, makeDummyLayerSortable: function () { var $this = this; this.dummyLayer = $('#smart-slider-layer-dummy'); this.dummyLayer.nextendSortable({ items: this.sortableItems, zIndex: 12, helper: "clone", tolerance: "pointer", appendTo: 'body', handle: '.ui-movableitem-handle', update: function (event, ui) { } }); window.dummySortable = this.dummyLayer.data('ui-sortable'); }, deleteLayers: function () { var $this = this; this.layers.each(function (i, layer) { $this.deleteLayer(layer); }); }, deleteLayer: function (layer) { var $layer = $(layer); //$layer.data('sszIndex'); this.zindex[parseInt($layer.css('zIndex'))] = null; $layer.resizable('destroy'); $layer.draggable('destroy'); $layer.nextendSortable('destroy'); var option = $layer.data('ssoption'), select = option.parent()[0], optgroup = $layer.data('ssoptgroup'), optgroupselect = optgroup.parent()[0]; select.selectedIndex = optgroupselect.selectedIndex = 0; $.fireEvent(optgroupselect, 'change'); $.fireEvent(select, 'change'); option.remove(); optgroup.remove(); $layer.remove(); this.refreshLayers(); this.refreshSortableConnectWith(); this.items.refreshSortableConnect(); }, refreshSortableConnectWith: function () { this.layers.nextendSortable('option', 'connectWith', this.layers.add(this.items.items).add(this.dummyLayer)); }, destroy: function () { /* * Use getHTML instead * */ this.layers.resizable('destroy'); this.layers.draggable('destroy'); this.layers.nextendSortable('destroy'); this.slide.find('[class^=ui-]').remove(); this.slide.find('.active').removeClass('active'); }, getHTML: function () { var savedmode = $('#slideadminmode').val(); if(savedmode != 'all') this.setAllMode(); var slide = this.layercanvas.clone(); slide.find('.smart-slider-layer').css('display', 'block'); slide.find('[class^=ui-]').remove(); slide.find('.active').removeClass('active'); slide.find('.ui-resizable').removeClass('ui-resizable'); slide.find('.ui-draggable').removeClass('ui-draggable'); slide.find('.ui-sortable').removeClass('ui-sortable'); slide.appendTo($('body')); slide.children().removeAttr('aria-disabled'); var items = slide.find('.smart-slider-items'); items.each(function(){ var $this = $(this); var shortcode = '['; shortcode+=$this.data('item'); shortcode+=' values="'+Base64.encode(JSON.stringify($this.data('itemvalues')))+'"'; shortcode+=']'; $this.replaceWith(shortcode); }); var html = slide.html(); slide.remove(); $('#slideadminmode').val(savedmode); return $.trim(html)/*.replace(/\\/g,'\\\\')*/; }, initToolbox: function () { var $this = this; this.toolbox = $('#smartslider-slide-toolbox-layer'); this.form = {}; this.form.tabs = this.toolbox.find('.nextend-tab').slice(1); this.form.layers = $('#layerlayer').on('change', function (e) { $this.changeActiveLayer(e); }); this.form.layersSelect = $(this.form.layers[0].select).css('float', 'left'); var deleteLayer = $(''); var selectparent = this.form.layersSelect.parent(); deleteLayer.css({ float: 'left', marginTop: '2px' }); deleteLayer.appendTo(selectparent); deleteLayer.on('click', function (e) { e.preventDefault(); var si = $this.form.layersSelect[0].selectedIndex; if (si) { if (confirm(window.ss2lang.Are_you_sure_that_you_want_to_delete_the_layer)) { var layer = $($this.form.layersSelect[0].options[si]).data('sslayer'); $this.deleteLayer(layer); } } else { alert(window.ss2lang.Layer_not_selected); } }); var duplicateLayer = $(''); duplicateLayer.css({ float: 'left', marginTop: '2px' }); duplicateLayer.appendTo(selectparent); duplicateLayer.on('click', function (e) { e.preventDefault(); var si = $this.form.layersSelect[0].selectedIndex; if (si) { var $layer = $this.addLayer($($this.form.layersSelect[0].options[si]).data('sslayer')); $this.setActiveLayer($layer); } else { alert(window.ss2lang.Layer_not_selected); } }); this.form.defaults = {}; this.form.fields = this.toolbox.find('[name^="layer"]').slice(1); this.form.positionfields = this.form.fields.slice(1, 5); this.form.positionfields.eq(0).on('change', function () { $this.activeLayer.data('left', $this.activeLayer[0].style.left); $this.setPositionField($this.activeLayer[0], 'left', this.value); }); this.form.positionfields.eq(1).on('change', function () { $this.activeLayer.data('top', $this.activeLayer[0].style.top); $this.setPositionField($this.activeLayer[0], 'top', this.value); }); this.form.positionfields.eq(2).on('change', function () { $this.activeLayer.data('width', $this.activeLayer[0].style.width); $this.setPositionField($this.activeLayer[0], 'width', this.value); }); this.form.positionfields.eq(3).on('change', function () { $this.activeLayer.data('height', $this.activeLayer[0].style.height); $this.setPositionField($this.activeLayer[0], 'height', this.value); }); this.form.fields = this.form.fields.not(this.form.positionfields); this.form.showfield = this.form.fields.eq(1); var mainslider = $this.parent.$slider.data('smartslider').slider.mainslider; this.form.showfield.on('change', function(){ var values = this.value.split('|*|'); if($this.activeLayer.ssdata('showdesktop') != values[0]){ $this.changeActiveLayerData('showdesktop', values[0]); mainslider.refreshMode(); } if($this.activeLayer.ssdata('showtablet') != values[1]){ $this.changeActiveLayerData('showtablet', values[1]); mainslider.refreshMode(); } if($this.activeLayer.ssdata('showphone') != values[2]){ $this.changeActiveLayerData('showphone', values[2]); mainslider.refreshMode(); } }); this.form.fields = this.form.fields.not(this.form.showfield); this.form.fields.each(function () { var $el = $(this); $el.data('name', $el.attr('name').match(/layer\[(.*?)\]/)[1]); }); this.form.fields.slice(1).each(function () { var $el = $(this), $name = $el.data('name'); $this.form.defaults[$name] = $el.val(); $el.on('change', function () { $this.changeActiveLayerData($name, $el.val()); }); }); this.form.fields.filter('#layerlayerbackgroundcolor').on('change', function(){ var alpha = this.value.substr(6,2), color = 'transparent'; $this.activeLayer.css('background-color', ''); if(alpha != '00'){ $this.activeLayer.attr('style', $this.activeLayer[0].style.cssText+'background-color:#'+this.value.substr(0,6)+';background-color:'+hex2rgba(this.value)+';'); } }); this.form.fields.eq(0).on('change keyup', function (e) { var name = e.currentTarget.value, option = $this.activeLayer.data('ssoption')[0], $options = $($this.form.layersSelect[0]).find('option'), namecheckfn = function () { if (this.value == name && this != option) { name += ' - ' + window.ss2lang.copy; $options.each(namecheckfn); return false; } }; if (name == '') name = window.ss2lang.empty; $options.each(namecheckfn); e.currentTarget.value = name; $this.changeActiveLayerName(e.currentTarget.value); }); this.form.layers.trigger('change'); }, formAddLayer: function (layer) { var $layer = $(layer); if ($layer.ssdata('name') === undefined) { $layer.ssdata('name', window.ss2lang.Layer + ' #' + (this.form.layersSelect[0].options.length)); } var name = $layer.ssdata('name'), $options = $(this.form.layersSelect[0].options), namecheckfn = function () { if (this.value == name) { name += ' - ' + window.ss2lang.copy; $layer.ssdata('name', name); $options.each(namecheckfn); return false; } }; $options.each(namecheckfn); var $option = $(''); this.form.layersSelect.append($option); $layer.data('ssoption', $option); $option.data('sslayer', $layer); var $optgroup = $(''); this.items.form.select.append($optgroup); $layer.data('ssoptgroup', $optgroup); $optgroup.data('sslayer', $layer); this.makeLayerActivable($layer); }, makeLayerActivable: function ($layer) { var $this = this; $layer.on('mousedown', function (e) { $this.setActiveLayer($layer, e); slideconsole.set(window.ss2lang.Layer_selected, 1); }); }, changeActiveLayer: function (e) { var select = e.currentTarget.select; if (select.selectedIndex === 0) { this.form.tabs.css('display', 'none'); this.activeLayer.removeClass(window.ss2lang.active); this.activeLayer = $({}); this.form.fields.eq(0).val(window.ss2lang.Choose_a_layer); } else { this.setActiveLayer($(select.options[select.selectedIndex]).data('sslayer'), e); this.form.tabs.css('display', 'block'); $(window).trigger('resize'); } }, setActiveLayer: function ($layer, e) { if (e) { if (e.type === 'change' && !this.active) { return; } else if (!this.items.clicked) { this.switchToLayerTab(); } } if ($layer === this.activeLayer) return; var $form = this.form, $this = this, layer = $layer[0]; this.activeLayer.removeClass('active'); this.activeLayer = $layer; this.activeLayer.addClass('active'); var option = $layer.data('ssoption'); if (option.val() !== $form.layers.val()) { $form.layers.val(option.val()); $.fireEvent($form.layers[0], 'change'); } this.updatePositionField(layer); this.form.fields.each(function () { var $el = $(this), name = $el.data('name'); $this.changeFormValueFromData($el, name, $layer); }); }, updatePositionField: function (layer) { this.form.positionfields.eq(0).val(layer.style.left); this.form.positionfields.eq(1).val(layer.style.top); this.form.positionfields.eq(2).val(layer.style.width); this.form.positionfields.eq(3).val(layer.style.height); var desktop = this.activeLayer.ssdata('showdesktop'); if(typeof desktop == 'undefined') desktop = 1; var tablet = this.activeLayer.ssdata('showtablet'); if(typeof tablet == 'undefined') tablet = 1; var phone = this.activeLayer.ssdata('showphone'); if(typeof phone == 'undefined') phone = 1; this.form.showfield.val(desktop+'|*|'+tablet+'|*|'+phone); $.fireEvent(this.form.showfield[0], 'change'); }, setPositionField: function (layer, prop, v) { var s = layer.style; if (v.match(/^[0-9]*\.?[0-9]*%$/) !== null) { this.dimensionFieldPreChanged(layer, prop, v); s[prop] = v; } else if (v.match(/^[0-9]*px$/) !== null) { s[prop] = v; this.makeLayerToPercent(layer, (prop === 'top' || prop === 'left'), (prop === 'width' || prop === 'height')); } else if (parseInt(v) === 0) { this.dimensionFieldPreChanged(layer, prop, '0%'); s[prop] = '0%'; } return s[prop]; }, dimensionFieldPreChanged: function(layer, prop, newval){ var $layer = $(layer); if(this.adminmode == 'all' || this.adminmode == 'desktop'){ $layer.ssdata('desktop'+prop, newval); }else{ if(typeof $layer.ssdata('desktop'+prop) == 'undefined'){ $layer.ssdata('desktop'+prop, $layer.data(prop)); } $layer.ssdata(this.adminmode+prop, newval); } }, changeFormValueFromData: function ($el, name, $layer) { var layerValue = $layer.ssdata(name); if (layerValue === undefined) { $layer.ssdata(name, this.form.defaults[name]); layerValue = this.form.defaults[name]; } if ($el.val() !== layerValue) { $el.val(layerValue); $.fireEvent($el[0], 'change'); } }, changeActiveLayerName: function (name) { if (this.activeLayer.length === 0) return; this.activeLayer.ssdata('name', name).data('ssoption').val(name).text(name); this.activeLayer.data('ssoptgroup').attr('label', name); this.form.layers.val(name); }, changeActiveLayerData: function (name, value) { this.activeLayer.ssdata(name, value); }, initAdvancedView: function () { var $this = this, $admin = $('#smartslider-admin'), options = $('.smartslider-advanced-layers .smartslider-toolbar-options'), classes = ['smartslider-advanced-layers-simple-active', 'smartslider-advanced-layers-advanced-active'], tableContainer = $('.smartslider-slide-advanced-layers').css('display', 'none'); table = $('
 
' + window.ss2lang.Layer_name + '' + window.ss2lang.Left + '
' + window.ss2lang.Top + '
' + window.ss2lang.Width + '
' + window.ss2lang.Height + '
' + window.ss2lang.Animation + '' + window.ss2lang.Duration + '' + window.ss2lang.Easing + '' + window.ss2lang.Delay + '' + window.ss2lang.Parallax + '' + window.ss2lang.Play_out + '
') tbody = table.find('tbody'); tableContainer.append(table); options.eq(0).on('click', function () { $admin.addClass(classes[0]).removeClass(classes[1]); tableContainer.css('display', 'none'); $('.ui-layer-overlay').remove(); tbody.children().remove(); $(window).trigger('resize'); }); options.eq(1).on('click', function () { var activeTRs = $([]); $admin.addClass(classes[1]).removeClass(classes[0]); var select = $this.form.layersSelect; select[0].selectedIndex = 0; NfireEvent(select[0], 'change'); var animationSelect = $($this.form.fields.get(2).select).clone().removeAttr('id'), easingSelect = $($this.form.fields.get(4).select).clone().removeAttr('id'), msInput = $this.form.fields.eq(3).parent().clone(), onoff = $this.form.fields.eq(7).parent().clone(); msInput.find('input').removeAttr('id'); onoff.find('input').removeAttr('id'); var layers = $this.layers; layers.each(function (i) { var layer = this, $el = $(this), $tr = $(''), $tr2 = $(''); $el.append($('
').on('click', function(){ activeTRs.removeClass('active'); activeTRs = $.merge($tr, $tr2).addClass('active'); })); $tr.append($('' + '
' + '' + '
' + '')); $tr.append($('' + '
' + '' + '
' + '')); $tr2.append($('' + '
' + '' + '
' + '')); $tr.append($('' + '
' + '' + '
' + '')); $tr2.append($('' + '
' + '' + '
' + '')); $tr.append($('' + window.ss2lang.In + '')); $tr2.append($('' + window.ss2lang.Out + '')); $tr.append($('').append(animationSelect.clone().attr('name', 'row-' + i + '-animationin').val($el.data('animationin')))); $tr2.append($('').append(animationSelect.clone().attr('name', 'row-' + i + '-animationout').val($el.data('animationout')))); var ms = msInput.clone(); ms.find('input').attr('name', 'row-' + i + '-durationin').val($el.data('durationin')); $tr.append($('').append(ms)); var ms = msInput.clone(); ms.find('input').attr('name', 'row-' + i + '-durationout').val($el.data('durationout')); $tr2.append($('').append(ms)); $tr.append($('').append(easingSelect.clone().attr('name', 'row-' + i + '-easingin').val($el.data('easingin')))); $tr2.append($('').append(easingSelect.clone().attr('name', 'row-' + i + '-easingout').val($el.data('easingout')))); var ms = msInput.clone(); ms.find('input').attr('name', 'row-' + i + '-delayin').val($el.data('delayin')); $tr.append($('').append(ms)); var ms = msInput.clone(); ms.find('input').attr('name', 'row-' + i + '-delayout').val($el.data('delayout')); $tr2.append($('').append(ms)); $tr.append($('' + '
' + '' + '
' + '')); $tr2.append($('' + '
' + '' + '
' + '')); var playoutid = 'row-' + i + '-playoutafter'; var playout = onoff.clone(); playout.find('input').attr('id', playoutid).attr('name', 'row-' + i + '-playoutafter').val($el.data('playoutafter')); $tr.append($('').append(playout)); $tr2.append($('')); tbody.append($tr); tbody.append($tr2); new NextendElementOnoff({ hidden: playoutid }); }); tbody.find('input, select').on('change', function () { var $el = $(this), field = $el.attr('name').match(/row-([0-9]+)-(.*)/); if (field.length == 3) { field[1] = parseInt(field[1]); var $layer = $this.layers.eq(field[1]); switch (field[2]) { case 'left': case 'top': case 'width': case 'height': $layer.data(field[2], $layer[0].style[field[2]]); $el.val($this.setPositionField($layer[0], field[2], $el.val())); break; case 'name': var name = $el.val(), option = $layer.data('ssoption')[0], $options = $($this.form.layersSelect[0]).find('option'), namecheckfn = function () { if (this.value == name && this != option) { name += ' - ' + window.ss2lang.copy; $options.each(namecheckfn); return false; } }; if (name == '') name = window.ss2lang.empty; $options.each(namecheckfn); $this.setActiveLayer($layer); $this.changeActiveLayerName(name); select[0].selectedIndex = 0; NfireEvent(select[0], 'change'); $el.val(name); break; default: $layer.ssdata(field[2], $el.val()); break; } } }); tableContainer.css('display', 'block'); $(window).trigger('resize'); }); }, initDeviceView: function(){ var $this = this, savedmode = $('#slideadminmode').val(), mainslider = $this.parent.$slider.data('smartslider').slider.mainslider, ratios = mainslider.options.responsive.ratios, $admin = $('#smartslider-admin'), options = $('.smartslider-device-switch .smartslider-toolbar-options'), classes = ['smartslider-device-all-active', 'smartslider-device-desktop-active', 'smartslider-device-tablet-active', 'smartslider-device-phone-active'], currentclass = classes[0], switchfn = function(i){ $('#slideadminmode').val($this.adminmode); if(classes[i] != currentclass){ $admin.addClass(classes[i]).removeClass(currentclass); currentclass = classes[i]; } mainslider.onResize(ratios[i]); $this.slideSize.width = mainslider.slideDimension.w; $this.slideSize.height = mainslider.slideDimension.h; }, positionTab = $('#smartslider-slide-toolbox-layer .smartslider-toolbar-options.first'), resettodesktop = $('#layerresettodesktop'), layerresettodesktopTR = resettodesktop.closest('tr'); $this.adminmode = mainslider.adminmode = 'all'; mainslider.refreshMode = function(){ this._currentmode = this.adminmode; for (var i = 0; i < this.slideList.length; i++) { var slide = this.slideList[i]; slide.layers.refresh(); slide.layers.changeMode(this.adminmode); } if($admin.hasClass('smartslider-advanced-layers-advanced-active')){ $this.layers.each(function(i){ $("[name='"+'row-' + i + '-left'+"']").val(this.style.left); $("[name='"+'row-' + i + '-top'+"']").val(this.style.top); $("[name='"+'row-' + i + '-width'+"']").val(this.style.width); $("[name='"+'row-' + i + '-height'+"']").val(this.style.height); }); }else{ var layer = $this.activeLayer[0]; if(!jQuery.isEmptyObject(layer)){ $('#layerleft').val(layer.style.left); $('#layertop').val(layer.style.top); $('#layerwidth').val(layer.style.width); $('#layerheight').val(layer.style.height); } } return true; }; switchfn(0); layerresettodesktopTR.css('display', 'none'); this.setAllMode = function () { $this.adminmode = mainslider.adminmode = 'all'; switchfn(0); layerresettodesktopTR.css('display', 'none'); }; options.eq(0).on('click', this.setAllMode); options.eq(1).on('click', function () { $this.adminmode = mainslider.adminmode = 'desktop'; switchfn(1); positionTab.trigger('click'); layerresettodesktopTR.css('display', 'none'); }); options.eq(2).on('click', function () { $this.adminmode = mainslider.adminmode = 'tablet'; switchfn(2); positionTab.trigger('click'); layerresettodesktopTR.css('display', ''); }); options.eq(3).on('click', function () { $this.adminmode = mainslider.adminmode = 'phone'; switchfn(3); positionTab.trigger('click'); layerresettodesktopTR.css('display', ''); }); if(savedmode != $this.adminmode){ switch(savedmode){ case 'desktop': options.eq(1).trigger('click'); break; case 'tablet': options.eq(2).trigger('click'); break; case 'phone': options.eq(3).trigger('click'); break; } } resettodesktop.on('click', function(){ //Here comes the reset if($this.adminmode == 'tablet' || $this.adminmode == 'phone'){ $this.activeLayer.each(function(){ $(this).removeData($this.adminmode+'left'); this.removeAttribute('data-'+$this.adminmode+'left'); $(this).removeData($this.adminmode+'top'); this.removeAttribute('data-'+$this.adminmode+'top'); $(this).removeData($this.adminmode+'width'); this.removeAttribute('data-'+$this.adminmode+'width'); $(this).removeData($this.adminmode+'height'); this.removeAttribute('data-'+$this.adminmode+'height'); }); mainslider.refreshMode(); } }); } }); function hex2rgba(hex) { var r = hexdec(hex.substr(0, 2)); var g = hexdec(hex.substr(2, 2)); var b = hexdec(hex.substr(4, 2)); var a = (intval(hexdec(hex.substr(6, 2)))) / 255; a = a.toFixed(3); var color = r + "," + g + "," + b + "," + a; return 'RGBA(' + color + ')'; } function hexdec(hex_string) { hex_string = (hex_string + '').replace(/[^a-f0-9]/gi, ''); return parseInt(hex_string, 16); } function intval(mixed_var, base) { var tmp; var type = typeof(mixed_var); if (type === 'boolean') { return +mixed_var; } else if (type === 'string') { tmp = parseInt(mixed_var, base || 10); return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp; } else if (type === 'number' && isFinite(mixed_var)) { return mixed_var | 0; } else { return 0; } } })(njQuery, window);(function ($, scope, undefined) { scope.ssadminItemsClass = NClass.extend({ active: false, init: function (layers) { var $this = this; this.layers = layers; this.slide = layers.slide; if(typeof window.samplegeneratordata !== 'undefined'){ this.fillItemWithSample = this._fillItemWithSample; } this.activeItem = $({}); this.activeItemType = ''; this.dummyitem = $('
').ssdata('itemvalues', JSON.stringify({})); this.form = {}; this.form.select = $('#itemitems_select').on('change', function () { $this.changeActiveItem(); }).css('float', 'left'); ndojo.disconnect(this.form.select[0].dojohandle); var deleteItem = $(''); var selectparent = this.form.select.parent(); deleteItem.css({ float: 'left', marginTop: '2px' }); deleteItem.appendTo(selectparent); deleteItem.on('click', function (e) { e.preventDefault(); var si = $this.form.select[0].selectedIndex; if (si) { if (confirm(window.ss2lang.Are_you_sure_that_you_want_to_delete_the_item)) { var item = $($this.form.select[0].options[si]).data('ssitem'); $this.deleteItem(item[0]); } }else{ alert(window.ss2lang.Item_not_selected); } }); var duplicateItem = $(''); duplicateItem.css({ float: 'left', marginTop: '2px' }); duplicateItem.appendTo(selectparent); duplicateItem.on('click', function (e) { e.preventDefault(); var si = $this.form.select[0].selectedIndex; if (si) { var $curr = $($this.form.select[0].options[si]).data('ssitem'), $item = $curr.clone(); $item.find('[class^=ui-]').remove(); $item.removeClass('active'); $item.appendTo($curr.parent()); $this.makeItemRemovable($item[0]); $this.makeItemMovable($item[0]); $this.makeItemActivable($item[0]); $this.setActiveItem($item[0]); }else{ alert(window.ss2lang.Item_not_selected); } }); this.items = $('#draggableitems .smart-slider-item-container'); this.items.qtip({ content: { text: window.ss2lang.Drag_the_item_and_drop_into_a_layer }, show: { event: 'mousedown' }, position: { my: "bottom left", at: "top center" } }); this.items.draggable({ cursor: 'pointer', helper: 'clone', zIndex: 12, opacity: 0.5, connectToSortable: this.layers.layers.add(this.layers.dummyLayer), appendTo: $('#smartslider-form'), start: function () { window.ssdrag = true; $this.slide.addClass('smartslider-layer-border-mode'); slideconsole.set(window.ss2lang.Drop_the_item_into_a_layer, 2, 0); }, stop: function () { window.ssdrag = false; $this.layers.leaveborder = false; $this.slide.removeClass('smartslider-layer-border-mode'); slideconsole.set(window.ss2lang.Item_dropped_into_the_layer, 2); } }).on('mousedown', function () { $this.layers.leaveborder = true; }); this.views = this.layers.views; this.toolboxviews = this.layers.toolboxviews; this.views.eq(2).on('click', function () { $this.switchToItemTab(); }); }, refreshSortableConnect: function () { this.items.draggable("option", "connectToSortable", this.layers.layers.add(this.layers.dummyLayer)); }, switchToItemTab: function () { this.views.removeClass('active'); this.views.eq(2).addClass('active'); this.toolboxviews.removeClass('active'); this.toolboxviews.eq(2).addClass('active'); this.toolboxviews.parent().css((window.nextendDir == 'rtl' ? 'marginRight' : 'marginLeft'), (window.nextendDir == 'rtl' ? '0' : '-200%')); this.layers.parent.switchToEdit(); $('#smartslider-admin').removeClass('smartslider-layer-mode-active'); $('#smartslider-admin').addClass('smartslider-item-mode-active'); $(window).trigger('resize'); }, enableItemMode: function () { if (this.active === true) return; this.active = true; this.itemModeChanged(); }, disableItemMode: function () { if (this.active === false) return; this.active = false; this.itemModeChanged(); }, itemModeChanged: function () { var $this = this; if ($this.active) { this.layers.layers.nextendSortable('enable'); $this.slide.addClass('smartslider-item-mode'); } else { this.layers.layers.nextendSortable('disable'); $this.slide.removeClass('smartslider-item-mode'); } }, initLayer: function (layer) { var $layer = $(layer), $this = this; $layer.find('.smart-slider-items').each(function () { $this.makeItemRemovable(this); $this.makeItemMovable(this); $this.makeItemActivable(this); }); }, updateItem: function (ui) { if (ui.item.parent()[0] === this.layers.dummyLayer[0]) { ui.item.remove(); return; } var addeditem = ui.item.find('.smart-slider-items').css('display', ''); if (addeditem.length > 0) { // item add from outside ui.item.replaceWith(addeditem); this.makeItemRemovable(addeditem); this.makeItemMovable(addeditem); this.makeItemActivable(addeditem); this.setActiveItem(addeditem); } else { var item = ui.item, next = item.next('.smart-slider-items'); if (next.length === 1) { next.data('ssoption').before(ui.item.data('ssoption')); } else if(ui.item.parent().length){ ui.item.closest('.smart-slider-layer').data('ssoptgroup').append(ui.item.data('ssoption')); }else{ ui.item.remove(); } } }, deleteItem: function (item) { $(item).data('ssoption').remove(); this.changeActiveItem(); $(item).remove(); slideconsole.set(window.ss2lang.Item_deleted, 2); }, makeItemRemovable: function (item) { var $this = this, removeItem = $('
'); $(item).append(removeItem); removeItem.on('click',function () { $this.deleteItem(item); }).on('mouseenter',function () { slideconsole.set(window.ss2lang.Delete_item_click, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeItemMovable: function (item) { var $this = this, moveItem = $('
'); $(item).append(moveItem); moveItem.on('mouseenter',function () { slideconsole.set(window.ss2lang.Move_item_drag_and_drop_into_layers, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); }, makeItemActivable: function (item) { var $this = this, $item = $(item), overlayItem = $('
'); $item.append(overlayItem); overlayItem.on('mouseenter',function () { slideconsole.set(window.ss2lang.Select_item_click, 1, 0); }).on('mouseleave', function () { slideconsole.set('', 1, 0); }); $item.ssdata('item'); var $option = $(''); $item.data('ssoption', $option); $option.data('ssitem', $item); var next = $item.next('.smart-slider-items'); if (next.length === 1 && next.data('ssoption')) { next.data('ssoption').before($option); } else { $item.parent().data('ssoptgroup').append($option); } $item.on('click',function () { $this.setActiveItem(item); slideconsole.set(window.ss2lang.Item_selected, 2); }).on('mousedown', function (e) { $this.clicked = true; setTimeout(function () { $this.clicked = false; }, 200); }); }, changeActiveItem: function () { var select = this.form.select[0], i = select.selectedIndex, item = $(select.options[i]).data('ssitem'); if (item !== undefined) { item.trigger('mousedown').trigger('mouseup').trigger('click'); } else { this.setActiveItem(this.dummyitem[0]); } }, setActiveItem: function (item) { var $this = this, $item = $(item), type = $item.data('item'), values = JSON.parse($item.ssdata('itemvalues')); if (this.form[type] === undefined) { this.form[type] = {}; this.form[type].form = $('#smartslider-slide-toolbox-item-type-' + type); this.form[type].template = this.form[type].form.data('itemtemplate'); this.form[type].fields = this.form[type].form.find('[name^="item_' + type + '"]'); this.form[type].fields.on('change keydown', function () { var timeout = $item.data('timeout'); if (timeout) clearTimeout(timeout); $item.data('timeout', setTimeout(function () { $this.updateCurrentItem(); }, 100)); }); } this.activeItem.removeClass('active'); if (this.activeItemType !== '') this.form[this.activeItemType].form.css('display', 'none'); this.activeItem = $item; this.activeItemType = type; for (key in values) { var el = $('#item_' + type + key); if (el.length > 0) { el.val(values[key]/*.replace(/\\n/g, "\n")*/); $.fireEvent(el[0], 'change'); } } this.form[this.activeItemType].form.css('display', 'block'); this.form.select[0].selectedIndex = this.form.select.find('option').index(this.activeItem.data('ssoption')); this.activeItem.addClass('active'); if (item != this.dummyitem[0]) this.switchToItemTab(); }, updateCurrentItem: function () { var _this = this, data = {}, odata = {}, re = new RegExp('item_' + this.activeItemType + "\\[(.*?)\\]", ""), form = this.form[this.activeItemType], html = form.template, parser = null; if (scope['ssItemParser' + this.activeItemType] !== undefined) { parser = new scope['ssItemParser' + this.activeItemType]; } else { parser = new scope['ssItemParser']; } form.fields.each(function () { var $el = $(this), name = $el.attr('name').match(re)[1]; data[name] = $el.val(); odata[name] = data[name]; data[name] = _this.fillItemWithSample(data[name]); var _data = parser.parse(name, data[name]); for (var k in _data) { var reg = new RegExp('\\{' + k + '\\}', 'g'); html = html.replace(reg, _data[k]); data[k] = _data[k]; } }); var helpers = this.activeItem.find('.ui-helper'); $('
').append(helpers); this.activeItem.html(parser.render($(html .replace(/\{\{id\}\}/g, "nextend-smart-slider-0") .replace(/\{\{uuid\}\}/g, $.fn.uid())), data)); this.activeItem.append(helpers); this.activeItem.ssdata('itemvalues', JSON.stringify(odata)); }, fillItemWithSample: function(value){ return value; }, _fillItemWithSample: function(value){ try{ return value.replace(/(\{nextend\|\|([a-zA-Z0-9,\|\|]+)\()?(\{\|(.*?)\-([0-9]+)\|\})(\)\})?/g, function(){ var i = parseInt(arguments[5])-1; if(typeof window.samplegeneratordata[i] !== 'undefined' && typeof window.samplegeneratordata[i][arguments[4]] !== 'undefined'){ var s = window.samplegeneratordata[i][arguments[4]]; if(arguments[1] == ""){ return s; }else{ var fns = arguments[2].split('||'); for (var i = fns.length - 1; i >= 0; i--) { var fn = fns[i].split(','); switch (fn[0]) { case 'cleanhtml': s = strip_tags(s, '



'); break; case 'removehtml': s = strip_tags(s); break; case 'splitbychars': s = s.substr(fn[1], fn[2]) break; case 'splitbywords': var len = s.length; var pos = fn[2] > len ? len : s.indexOf(' ', fn[2]); if(pos == -1) pos = len; s = s.substr(0, pos); break; case 'findimage': var index = typeof fn[1] != 'undefined' ? parseInt(fn[1]) - 1 : 0; var re = /(]*>)|(background(-image)??\s*?:.*?url\((["|\']?)?(.+?)(["|\']?)?\))/gi, r = [], tmp = null; while(tmp = re.exec(s)){ if(typeof tmp[2] != 'undefined'){ r.push(tmp[2]); }else if(typeof tmp[6] != 'undefined'){ r.push(tmp[6]); } }; if (r.length && typeof r[index] != 'undefined') { s = r[index]; } else { s = ''; } break; } } // Validate not valid HTML var nodes = njQuery.parseHTML('

'+s+'
', document, true); return njQuery(nodes).html(); } } return arguments[0]; }); }catch(e){ return value; } } }); })(njQuery, window); function strip_tags(input, allowed) { allowed = (((allowed || '') + '') .toLowerCase() .match(/<[a-z][a-z0-9]*>/g) || []) .join(''); // making sure the allowed arg is a string containing only tags in lowercase () var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi, commentsAndPhpTags = /|<\?(?:php)?[\s\S]*?\?>/gi; return input.replace(commentsAndPhpTags, '') .replace(tags, function($0, $1) { return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''; }); }(function ($, scope, undefined) { scope.ssadminLayoutsClass = NClass.extend({ active: false, init: function (layers, layouturl) { var $this = this; this.layers = layers; this.slide = layers.slide; this.layouturl = layouturl; this.views = this.layers.views; this.toolboxviews = this.layers.toolboxviews; this.views.eq(0).on('click', function () { $this.switchToLayoutTab(); }); this.defaultAndCustom(); var $dl = $('.smartslider-slide-layout-custom > dl'); $('.smartslider-savelayout').on('click', function (e) { e.preventDefault(); if ($this.slide[0].ssanimation === 0) { var base64HTML = Base64.encode($this.layers.getHTML()), title = $('#slidetitle').val(); if (title == '') { alert(window.ss2lang.Title_is_empty_Save_failed); return; } $.ajax({ type: "POST", url: layouturl, data: { save: 1, ajax: 1, layout: { title: title, slide: base64HTML } }, success: function (layoutdata) { var dts = $dl.find('> dt'); var dt = $('
' + '' + title + '' + '
' + '
'); dt.find('.smartslider-layout-container').html(layoutdata); dt.appendTo($dl); dt.find('.smartslider-load-layout').on('click', function (e) { e.preventDefault(); var layout = $(this).siblings('.smartslider-layout-container'); $this.layers.deleteLayers(); layout.children().each(function (i, layer) { $this.layers.addLayer(layer); }); }); $('.smartslider-layout-custom').trigger('click'); }, fail: function () { alert(window.ss2lang.Unexpected_error_Saving_failed); } }); return true; } }); this.initCustom(); }, switchToLayoutTab: function () { this.views.removeClass('active'); this.views.eq(0).addClass('active'); this.toolboxviews.removeClass('active'); this.toolboxviews.eq(0).addClass('active'); this.toolboxviews.parent().css((window.nextendDir == 'rtl' ? 'marginRight' : 'marginLeft'), (window.nextendDir == 'rtl' ? '-200%' : '0%')); $('#smartslider-admin').removeClass('smartslider-item-mode-active'); $('#smartslider-admin').addClass('smartslider-layer-mode-active'); $(window).trigger('resize'); }, defaultAndCustom: function () { var $toolbox = $('#smartslider-slide-toolbox'), $list = $('.smartslider-layout-default'), $edit = $('.smartslider-layout-custom'), classes = ['smartslider-slide-layout-default-active', 'smartslider-slide-layout-custom-active']; $edit.on('click', function () { $toolbox.addClass(classes[1]).removeClass(classes[0]); }); $list.on('click', function () { $toolbox.addClass(classes[0]).removeClass(classes[1]); }); this.switchToEdit = function () { $toolbox.addClass(classes[1]).removeClass(classes[0]); } }, initCustom: function () { var $this = this; this.customs = $('.smartslider-slide-layout-pane-inner .smartslider-load-layout'); this.customs.on('click', function (e) { e.preventDefault(); var layout = $(this).siblings('.smartslider-layout-container'); $this.layers.deleteLayers(); layout.children().each(function (i, layer) { $this.layers.addLayer(layer); }); $this.layers.parent.$slider.data('smartslider').slider.mainslider.refreshMode(); }); } }); })(njQuery, window);/* Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ /* This is an optimized version of Dojo, built for deployment and not for development. To get sources and documentation, please visit: http://dojotoolkit.org */ ;(function(){ var djConfig = { scopeMap: [ ["dojo", "ndojo"], ["dijit", "ndijit"], ["dojox", "ndojox"] ] }; (function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _7=_1[i];_2+="var "+_7[0]+" = {}; "+_7[1]+" = "+_7[0]+";"+_7[1]+"._scopeName = '"+_7[1]+"';";_3+=(i==0?"":",")+_7[0];_4+=(i==0?"":",")+_7[1];_5[_7[0]]=_7[1];_6[_7[1]]=_7[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(typeof this["loadFirebugConsole"]=="function"){this["loadFirebugConsole"]();}else{this.console=this.console||{};var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _8=tn+"";console[_8]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_8+":");console["log"](a.join(" "));}:function(){};console[_8]._fake=true;})();}}}if(typeof dojo=="undefined"){dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};var _9=typeof djConfig!="undefined"?djConfig:typeof dojoConfig!="undefined"?dojoConfig:null;if(_9){for(var c in _9){d.config[c]=_9[c];}}dojo.locale=d.config.locale;var _a="$Rev: 24595 $".match(/\d+/);dojo.version={major:1,minor:6,patch:1,flag:"",revision:_a?+_a[0]:NaN,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}var _b,_c,_d={};for(var i in {toString:1}){_b=[];break;}dojo._extraNames=_b=_b||["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];_c=_b.length;dojo._mixin=function(_e,_f){var _10,s,i;for(_10 in _f){s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}if(_c&&_f){for(i=0;i<_c;++i){_10=_b[i];s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}}return _e;};dojo.mixin=function(obj,_11){if(!obj){obj={};}for(var i=1,l=arguments.length;i0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(d.config.useXDomain&&d.isOpera)){setTimeout(d.isAIR?function(){d.loaded();}:d._scopeName+".loaded();",0);}else{d.loaded();}};dojo._getModuleSymbols=function(_28){var _29=_28.split(".");for(var i=_29.length;i>0;i--){var _2a=_29.slice(0,i).join(".");if(i==1&&!d._moduleHasPrefix(_2a)){_29[0]="../"+_29[0];}else{var _2b=d._getModulePrefix(_2a);if(_2b!=_2a){_29.splice(0,i,_2b);break;}}}return _29;};dojo._global_omit_module_check=false;dojo.loadInit=function(_2c){_2c();};dojo._loadModule=dojo.require=function(_2d,_2e){_2e=d._global_omit_module_check||_2e;var _2f=d._loadedModules[_2d];if(_2f){return _2f;}var _30=d._getModuleSymbols(_2d).join("/")+".js";var _31=!_2e?_2d:null;var ok=d._loadPath(_30,_31);if(!ok&&!_2e){throw new Error("Could not load '"+_2d+"'; last tried '"+_30+"'");}if(!_2e&&!d._isXDomain){_2f=d._loadedModules[_2d];if(!_2f){throw new Error("symbol '"+_2d+"' is not defined after loading '"+_30+"'");}}return _2f;};dojo.provide=function(_32){_32=_32+"";return (d._loadedModules[_32]=d.getObject(_32,true));};dojo.platformRequire=function(_33){var _34=_33.common||[];var _35=_34.concat(_33[d._name]||_33["default"]||[]);for(var x=0;x<_35.length;x++){var _36=_35[x];if(_36.constructor==Array){d._loadModule.apply(d,_36);}else{d._loadModule(_36);}}};dojo.requireIf=function(_37,_38){if(_37===true){var _39=[];for(var i=1;i0&&!(j==1&&_44[0]=="")&&_44[j]==".."&&_44[j-1]!=".."){if(j==(_44.length-1)){_44.splice(j,1);_44[j-1]="";}else{_44.splice(j-1,2);j-=2;}}}}_41.path=_44.join("/");}}}}uri=[];if(_41.scheme){uri.push(_41.scheme,":");}if(_41.authority){uri.push("//",_41.authority);}uri.push(_41.path);if(_41.query){uri.push("?",_41.query);}if(_41.fragment){uri.push("#",_41.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_45,url){var loc=d._getModuleSymbols(_45).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _46=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_46==-1||_46>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _47=document.getElementsByTagName("script");var _48=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_47.length;i++){var src=_47[i].getAttribute("src");if(!src){continue;}var m=src.match(_48);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=(_47[i].getAttribute("djConfig")||_47[i].getAttribute("data-dojo-config"));if(cfg){var _49=eval("({ "+cfg+" })");for(var x in _49){dojo.config[x]=_49[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}d.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:0;d.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;d.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;d.isMac=dav.indexOf("Macintosh")>=0;var _4a=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_4a&&!dojo.isChrome){d.isSafari=parseFloat(dav.split("Version/")[1]);if(!d.isSafari||parseFloat(dav.substr(_4a+7))<=419.3){d.isSafari=2;}}if(dua.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var _4b=document.documentMode;if(_4b&&_4b!=5&&Math.floor(d.isIE)!=_4b){d.isIE=_4b;}}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}d.isQuirks=document.compatMode=="BackCompat";d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _4c,_4d;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_4c=new XMLHttpRequest();}catch(e){}}if(!_4c){for(var i=0;i<3;++i){var _4e=d._XMLHTTP_PROGIDS[i];try{_4c=new ActiveXObject(_4e);}catch(e){_4d=e;}if(_4c){d._XMLHTTP_PROGIDS=[_4e];break;}}}if(!_4c){throw new Error("XMLHTTP not available: "+_4d);}return _4c;};d._isDocumentOk=function(_4f){var _50=_4f.status||0,lp=location.protocol;return (_50>=200&&_50<300)||_50==304||_50==1223||(!_50&&(lp=="file:"||lp=="chrome:"||lp=="chrome-extension:"||lp=="app:"));};var _51=window.location+"";var _52=document.getElementsByTagName("base");var _53=(_52&&_52.length>0);d._getText=function(uri,_54){var _55=d._xhrObj();if(!_53&&dojo._Url){uri=(new dojo._Url(_51,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_55.open("GET",uri,false);try{_55.send(null);if(!d._isDocumentOk(_55)){var err=Error("Unable to load "+uri+" status:"+_55.status);err.status=_55.status;err.responseText=_55.responseText;throw err;}}catch(e){if(_54){return null;}throw e;}return _55.responseText;};var _56=window;var _57=function(_58,fp){var _59=_56.attachEvent||_56.addEventListener;_58=_56.attachEvent?_58:_58.substring(2);_59(_58,function(){fp.apply(_56,arguments);},false);};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=d._windowUnloaders;while(mll.length){(mll.pop())();}d=null;};var _5a=0;d.addOnWindowUnload=function(obj,_5b){d._onto(d._windowUnloaders,obj,_5b);if(!_5a){_5a=1;_57("onunload",d.windowUnloaded);}};var _5c=0;d.addOnUnload=function(obj,_5d){d._onto(d._unloaders,obj,_5d);if(!_5c){_5c=1;_57("onbeforeunload",dojo.unloaded);}};})();dojo._initFired=false;dojo._loadInit=function(e){if(dojo._scrollIntervalId){clearInterval(dojo._scrollIntervalId);dojo._scrollIntervalId=0;}if(!dojo._initFired){dojo._initFired=true;if(!dojo.config.afterOnLoad&&window.detachEvent){window.detachEvent("onload",dojo._loadInit);}if(dojo._inFlightCount==0){dojo._modulesLoaded();}}};if(!dojo.config.afterOnLoad){if(document.addEventListener){document.addEventListener("DOMContentLoaded",dojo._loadInit,false);window.addEventListener("load",dojo._loadInit,false);}else{if(window.attachEvent){window.attachEvent("onload",dojo._loadInit);if(!dojo.config.skipIeDomLoaded&&self===self.top){dojo._scrollIntervalId=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");dojo._loadInit();}}catch(e){}},30);}}}}if(dojo.isIE){try{(function(){document.namespaces.add("v","urn:schemas-microsoft-com:vml");var _5e=["*","group","roundrect","oval","shape","rect","imagedata","path","textpath","text"],i=0,l=1,s=document.createStyleSheet();if(dojo.isIE>=8){i=1;l=_5e.length;}for(;i2){return d._hitchArgs.apply(d,arguments);}if(!_68){_68=_67;_67=null;}if(d.isString(_68)){_67=_67||d.global;if(!_67[_68]){throw (["dojo.hitch: scope[\"",_68,"\"] is null (scope=\"",_67,"\")"].join(""));}return function(){return _67[_68].apply(_67,arguments||[]);};}return !_67?_68:function(){return _68.apply(_67,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_69){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_69){d._mixin(tmp,_69);}return tmp;};})();var _6a=function(obj,_6b,_6c){return (_6c||[]).concat(Array.prototype.slice.call(obj,_6b||0));};var _6d=function(obj,_6e,_6f){var arr=_6f||[];for(var x=_6e||0;xend)||i=0;--j){_a3=lin[j].prototype;if(!_a3.hasOwnProperty("declaredClass")){_a3.declaredClass="uniqName_"+(_99++);}_a4=_a3.declaredClass;if(!_a0.hasOwnProperty(_a4)){_a0[_a4]={count:0,refs:[],cls:lin[j]};++_a1;}rec=_a0[_a4];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_9f[0].refs.push(top);}while(_9f.length){top=_9f.pop();_9e.push(top.cls);--_a1;while(_a5=top.refs,_a5.length==1){top=_a5[0];if(!top||--top.count){top=0;break;}_9e.push(top.cls);--_a1;}if(top){for(i=0,l=_a5.length;i=0;--i){f=_c0[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_c3?_c3[i]:a);}}f=this.postscript;if(f){f.apply(this,_c2);}};};function _c5(_c6,_c7){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _c4(a);}if(_c7){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(_c6){_c6.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _c8(_c9){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _c4(a);}for(;f=_c9[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _ca(_cb,_cc,_cd){return function(){var b,m,f,i=0,_ce=1;if(_cd){i=_cc.length-1;_ce=-1;}for(;b=_cc[i];i+=_ce){m=b._meta;f=(m?m.hidden:b.prototype)[_cb];if(f){f.apply(this,arguments);}}};};function _cf(_d0){_98.prototype=_d0.prototype;var t=new _98;_98.prototype=null;return t;};function _c4(_d1){var _d2=_d1.callee,t=_cf(_d2);_d2.apply(t,_d1);return t;};d.declare=function(_d3,_d4,_d5){if(typeof _d3!="string"){_d5=_d4;_d4=_d3;_d3="";}_d5=_d5||{};var _d6,i,t,_d7,_d8,_d9,_da,_db=1,_dc=_d4;if(_97.call(_d4)=="[object Array]"){_d9=_9b(_d4,_d3);t=_d9[0];_db=_d9.length-t;_d4=_d9[_db];}else{_d9=[0];if(_d4){if(_97.call(_d4)=="[object Function]"){t=_d4._meta;_d9=_d9.concat(t?t.bases:_d4);}else{err("base class is not a callable constructor.",_d3);}}else{if(_d4!==null){err("unknown base class. Did you use dojo.require to pull it in?",_d3);}}}if(_d4){for(i=_db-1;;--i){_d6=_cf(_d4);if(!i){break;}t=_d9[i];(t._meta?_b5:mix)(_d6,t.prototype);_d7=new Function;_d7.superclass=_d4;_d7.prototype=_d6;_d4=_d6.constructor=_d7;}}else{_d6={};}_b9(_d6,_d5);t=_d5.constructor;if(t!==op.constructor){t.nom=_9a;_d6.constructor=t;}for(i=_db-1;i;--i){t=_d9[i]._meta;if(t&&t.chains){_da=mix(_da||{},t.chains);}}if(_d6["-chains-"]){_da=mix(_da||{},_d6["-chains-"]);}t=!_da||!_da.hasOwnProperty(_9a);_d9[0]=_d7=(_da&&_da.constructor==="manual")?_c8(_d9):(_d9.length==1?_c5(_d5.constructor,t):_bf(_d9,t));_d7._meta={bases:_d9,hidden:_d5,chains:_da,parents:_dc,ctor:_d5.constructor};_d7.superclass=_d4&&_d4.prototype;_d7.extend=_bd;_d7.prototype=_d6;_d6.constructor=_d7;_d6.getInherited=_b0;_d6.inherited=_a6;_d6.isInstanceOf=_b3;if(_d3){_d6.declaredClass=_d3;d.setObject(_d3,_d7);}if(_da){for(_d8 in _da){if(_d6[_d8]&&typeof _da[_d8]=="string"&&_d8!=_9a){t=_d6[_d8]=_ca(_d8,_d9,_da[_d8]==="after");t.nom=_d8;}}}return _d7;};d.safeMixin=_b9;})();}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target,r=t&&t.apply(this,arguments),i,lls=[].concat(ls);for(i in lls){if(!(i in ap)){lls[i].apply(this,arguments);}}return r;};},add:function(_dd,_de,_df){_dd=_dd||dojo.global;var f=_dd[_de];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_dd[_de]=d;}return f._listeners.push(_df);},remove:function(_e0,_e1,_e2){var f=(_e0||dojo.global)[_e1];if(f&&f._listeners&&_e2--){delete f._listeners[_e2];}}};dojo.connect=function(obj,_e3,_e4,_e5,_e6){var a=arguments,_e7=[],i=0;_e7.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];_e7.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new d.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=d.Color.named[str];return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);};})();}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_12d,_12e){dojo.global=_12d;dojo.doc=_12e;};dojo.withGlobal=function(_12f,_130,_131,_132){var _133=dojo.global;try{dojo.global=_12f;return dojo.withDoc.call(null,_12f.document,_130,_131,_132);}finally{dojo.global=_133;}};dojo.withDoc=function(_134,_135,_136,_137){var _138=dojo.doc,_139=dojo._bodyLtr,oldQ=dojo.isQuirks;try{dojo.doc=_134;delete dojo._bodyLtr;dojo.isQuirks=dojo.doc.compatMode=="BackCompat";if(_136&&typeof _135=="string"){_135=_136[_135];}return _135.apply(_136,_137||[]);}finally{dojo.doc=_138;delete dojo._bodyLtr;if(_139!==undefined){dojo._bodyLtr=_139;}dojo.isQuirks=oldQ;}};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_13a,_13b){if(node){_13a=del._normalizeEventName(_13a);if(!dojo.isIE&&(_13a=="mouseenter"||_13a=="mouseleave")){_13a=(_13a=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_13a,_13b,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_13c){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode>=32?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_13d){return del._fixEvent(evt,_13d);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _13e=dojo._listener;dojo._connect=function(obj,_13f,_140,_141,_142){var _143=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=_143?(_142?2:1):0,l=[dojo._listener,del,_13e][lid];var h=l.add(obj,_13f,dojo.hitch(_140,_141));return [obj,_13f,h,lid];};dojo._disconnect=function(obj,_144,_145,_146){([dojo._listener,del,_13e][_146]).remove(obj,_144,_145);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17};var _147=dojo.isMac?"metaKey":"ctrlKey";dojo.isCopyKey=function(e){return e[_147];};if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_148){return e.button&_148;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_149){return e.button==_149;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}if(dojo.isIE){var _14a=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _14b=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");if(!dojo.config._allow_leaks){_13e=iel=dojo._ie_listener={handlers:[],add:function(_14c,_14d,_14e){_14c=_14c||dojo.global;var f=_14c[_14d];if(!f||!f[_14b]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_14b]=[];f=_14c[_14d]=d;}return f[_14b].push(ieh.push(_14e)-1);},remove:function(_14f,_150,_151){var f=(_14f||dojo.global)[_150],l=f&&f[_14b];if(f&&l&&_151--){delete ieh[l[_151]];delete l[_151];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_152,fp){if(!node){return;}_152=del._normalizeEventName(_152);if(_152=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_14b]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_152,del._fixCallback(fp));},remove:function(node,_153,_154){_153=del._normalizeEventName(_153);iel.remove(node,_153,_154);if(_153=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_155){return _155.slice(0,2)!="on"?"on"+_155:_155;},_nop:function(){},_fixEvent:function(evt,_156){if(!evt){var w=_156&&(_156.ownerDocument||_156.document||_156).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_156||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _157=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _158=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_157.scrollLeft||0)-_158.x;evt.pageY=evt.clientY+(_157.scrollTop||0)-_158.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(dojo.isIE<9||dojo.isQuirks){evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;}return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_14b]){return;}var k=evt.keyCode;var _159=(k!=13||(dojo.isIE>=9&&!dojo.isQuirks))&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_159||evt.ctrlKey){var c=_159?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){evt.cancelBubble=faux.cancelBubble;}evt.returnValue=faux.returnValue;_14a(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_14a(this,0);}this.returnValue=false;}});dojo.stopEvent=(dojo.isIE<9||dojo.isQuirks)?function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);}:dojo.stopEvent;}del._synthesizeEvent=function(evt,_15a){var faux=dojo.mixin({},evt,_15a);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_15b){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=c<41&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isWebKit){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_15c,fp){if(!node){return;}var _15d=del._add(node,_15c,fp);if(del._normalizeEventName(_15c)=="keypress"){_15d._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _15e=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_15e||evt.ctrlKey){var c=_15e?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if(!evt.shiftKey&&c>=65&&c<=90){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _15d;},remove:function(node,_15f,_160){if(node){if(_160._stealthKeyDownHandle){del._remove(node,"keydown",_160._stealthKeyDownHandle);}del._remove(node,_15f,_160);}},_fixEvent:function(evt,_161){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_162){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_162,args);var lls=[].concat(ls);for(var i in lls){var f=h[lls[i]];if(!(i in ap)&&f){f.apply(_162,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE){dojo.byId=function(id,doc){if(typeof id!="string"){return id;}var _163=doc||dojo.doc,te=_163.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_163.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dojo.byId=function(id,doc){return ((typeof id=="string")?(doc||dojo.doc).getElementById(id):id)||null;};}(function(){var d=dojo;var byId=d.byId;var _164=null,_165;d.addOnWindowUnload(function(){_164=null;});dojo._destroyElement=dojo.destroy=function(node){node=byId(node);try{var doc=node.ownerDocument;if(!_164||_165!=doc){_164=doc.createElement("div");_165=doc;}_164.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_164.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_166){try{node=byId(node);_166=byId(_166);while(node){if(node==_166){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_167){node=byId(node);if(d.isMozilla){node.style.MozUserSelect=_167?"":"none";}else{if(d.isKhtml||d.isWebKit){node.style.KhtmlUserSelect=_167?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_167?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _168=function(node,ref){var _169=ref.parentNode;if(_169){_169.insertBefore(node,ref);}};var _16a=function(node,ref){var _16b=ref.parentNode;if(_16b){if(_16b.lastChild==ref){_16b.appendChild(node);}else{_16b.insertBefore(node,ref.nextSibling);}}};dojo.place=function(node,_16c,_16d){_16c=byId(_16c);if(typeof node=="string"){node=/^\s* td",node).forEach(function(i){d._setOpacity(i,_174);});}return _174;}:function(node,_176){return node.style.opacity=_176;};var _177={left:true,top:true};var _178=/margin|padding|width|height|max|min|offset/;var _179=function(node,type,_17a){type=type.toLowerCase();if(d.isIE){if(_17a=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_17a){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _177)){_177[type]=_178.test(type);}return _177[type]?px(node,_17a):_17a;};var _17b=d.isIE?"styleFloat":"cssFloat",_17c={"cssFloat":_17b,"styleFloat":_17b,"float":_17b};dojo.style=function(node,_17d,_17e){var n=byId(node),args=arguments.length,op=(_17d=="opacity");_17d=_17c[_17d]||_17d;if(args==3){return op?d._setOpacity(n,_17e):n.style[_17d]=_17e;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&typeof _17d!="string"){for(var x in _17d){d.style(node,x,_17d[x]);}return s;}return (args==1)?s:_179(n,_17d,s[_17d]||n.style[_17d]);};dojo._getPadExtents=function(n,_17f){var s=_17f||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_180){var ne="none",s=_180||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_181){var s=_181||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_182){var s=_182||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isWebKit&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_183){var s=_183||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera||(d.isIE>7&&!d.isQuirks)){if(p){be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getMarginSize=function(node,_184){node=byId(node);var me=d._getMarginExtents(node,_184||gcs(node));var size=node.getBoundingClientRect();return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};dojo._getContentBox=function(node,_185){var s=_185||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_186){var s=_186||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&(node.getAttribute("type")||"").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(node);};dojo._setContentSize=function(node,_187,_188,_189){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_189);if(_187>=0){_187+=pb.w;}if(_188>=0){_188+=pb.h;}}d._setBox(node,NaN,NaN,_187,_188);};dojo._setMarginBox=function(node,_18a,_18b,_18c,_18d,_18e){var s=_18e||gcs(node),bb=d._usesBorderBox(node),pb=bb?_18f:d._getPadBorderExtents(node,s);if(d.isWebKit){if(d._isButtonTag(node)){var ns=node.style;if(_18c>=0&&!ns.width){ns.width="4px";}if(_18d>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_18c>=0){_18c=Math.max(_18c-pb.w-mb.w,0);}if(_18d>=0){_18d=Math.max(_18d-pb.h-mb.h,0);}d._setBox(node,_18a,_18b,_18c,_18d);};var _18f={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _190=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_191=0,_192=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_191+=val-0;if(node==_192){break;}}node=node.parentNode;}return _191;};dojo._docScroll=function(){var n=d.global;return "pageXOffset" in n?{x:n.pageXOffset,y:n.pageYOffset}:(n=d.isQuirks?d.doc.body:d.doc.documentElement,{x:d._fixIeBiDiScrollLeft(n.scrollLeft||0),y:n.scrollTop||0});};dojo._isBodyLtr=function(){return "_bodyLtr" in d?d._bodyLtr:d._bodyLtr=(d.body().dir||d.doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;if(d.isIE<8){var r=de.getBoundingClientRect();var l=r.left,t=r.top;if(d.isIE<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};dojo._fixIeBiDiScrollLeft=function(_193){var ie=d.isIE;if(ie&&!d._isBodyLtr()){var qk=d.isQuirks,de=qk?d.doc.body:d.doc.documentElement;if(ie==6&&!qk&&d.global.frameElement&&de.scrollHeight>de.clientHeight){_193+=de.clientLeft;}return (ie<8||qk)?(_193+de.clientWidth-de.scrollWidth):-_193;}return _193;};dojo._abs=dojo.position=function(node,_194){node=byId(node);var db=d.body(),dh=db.parentNode,ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(d.isIE){var _195=d._getIeDocumentElementOffset();ret.x-=_195.x+(d.isQuirks?db.clientLeft+db.offsetLeft:0);ret.y-=_195.y+(d.isQuirks?db.clientTop+db.offsetTop:0);}else{if(d.isFF==3){var cs=gcs(dh);ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);}}if(_194){var _196=d._docScroll();ret.x+=_196.x;ret.y+=_196.y;}return ret;};dojo.coords=function(node,_197){var n=byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d.position(n,_197);mb.x=abs.x;mb.y=abs.y;return mb;};var _198={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"},_199={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"},_19a={innerHTML:1,className:1,htmlFor:d.isIE,value:1};var _19b=function(name){return _199[name.toLowerCase()]||name;};var _19c=function(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return attr&&attr.specified;};dojo.hasAttr=function(node,name){var lc=name.toLowerCase();return _19a[_198[lc]||name]||_19c(byId(node),_199[lc]||name);};var _19d={},_19e=0,_19f=dojo._scopeName+"attrid",_1a0={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};dojo.attr=function(node,name,_1a1){node=byId(node);var args=arguments.length,prop;if(args==2&&typeof name!="string"){for(var x in name){d.attr(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_1a2=_198[lc]||name,_1a3=_19a[_1a2],_1a4=_199[lc]||name;if(args==3){do{if(_1a2=="style"&&typeof _1a1!="string"){d.style(node,_1a1);break;}if(_1a2=="innerHTML"){if(d.isIE&&node.tagName.toLowerCase() in _1a0){d.empty(node);node.appendChild(d._toDom(_1a1,node.ownerDocument));}else{node[_1a2]=_1a1;}break;}if(d.isFunction(_1a1)){var _1a5=d.attr(node,_19f);if(!_1a5){_1a5=_19e++;d.attr(node,_19f,_1a5);}if(!_19d[_1a5]){_19d[_1a5]={};}var h=_19d[_1a5][_1a2];if(h){d.disconnect(h);}else{try{delete node[_1a2];}catch(e){}}_19d[_1a5][_1a2]=d.connect(node,_1a2,_1a1);break;}if(_1a3||typeof _1a1=="boolean"){node[_1a2]=_1a1;break;}node.setAttribute(_1a4,_1a1);}while(false);return node;}_1a1=node[_1a2];if(_1a3&&typeof _1a1!="undefined"){return _1a1;}if(_1a2!="href"&&(typeof _1a1=="boolean"||d.isFunction(_1a1))){return _1a1;}return _19c(node,_1a4)?node.getAttribute(_1a4):null;};dojo.removeAttr=function(node,name){byId(node).removeAttribute(_19b(name));};dojo.getNodeProp=function(node,name){node=byId(node);var lc=name.toLowerCase(),_1a6=_198[lc]||name;if((_1a6 in node)&&_1a6!="href"){return node[_1a6];}var _1a7=_199[lc]||name;return _19c(node,_1a7)?node.getAttribute(_1a7):null;};dojo.create=function(tag,_1a8,_1a9,pos){var doc=d.doc;if(_1a9){_1a9=byId(_1a9);doc=_1a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_1a8){d.attr(tag,_1a8);}if(_1a9){d.place(tag,_1a9,pos);}return tag;};d.empty=d.isIE?function(node){node=byId(node);for(var c;c=node.lastChild;){d.destroy(c);}}:function(node){byId(node).innerHTML="";};var _1aa={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_1ab=/<\s*([\w\:]+)/,_1ac={},_1ad=0,_1ae="__"+d._scopeName+"ToDomId";for(var _1af in _1aa){if(_1aa.hasOwnProperty(_1af)){var tw=_1aa[_1af];tw.pre=_1af=="option"?"